Jenkins管道-Shell命令杀死压缩大目录

时间:2019-04-06 07:44:01

标签: shell jenkins zip jenkins-groovy

我有Jenkins Groovy Pipeline,我在其中压缩一个大目录(大约200 MB)。但是,shell命令因以下错误而被杀死:

./package-code-to-s3.sh: line 18: 20091 Killed 

OR

line x: 28026 Killed

OR

./package-code-to-s3.sh: line 13:  7162 Killed   

以下是我在该阶段的管道代码:

stage ("Package") {
      sh """#!/bin/bash
      set -e
      echo "Packging"
      chmod +x package-code-to-s3.sh
      ./package-code-to-s3.sh ${S3_BUCKET}

      aws s3 cp packaged.yaml s3://builds/Templates/${env.JOB_NAME}/${env.BUILD_NUMBER}-packaged.yaml

      """ 
    }

以及以下是 package-code-to-s3.sh 的代码:

     #!/bin/bash
      set -e
      S3_BUCKET_NAME=$1
      FILE_NAME_UUID=`python -c 'import uuid; print str(uuid.uuid1())'`
      echo "UUID: $FILE_NAME_UUID"
      ZIP="`pwd`/$FILE_NAME_UUID"
      echo "ZIP FILE : $ZIP"

      cd .aws-sam/build/LambdaHandlers/
      echo "Executing zip  -fz  -q -r $ZIP"
      nohup zip  -fz  -q -r $ZIP . > log.output 2>&1 &
      ls -las
      cd ../../../
      ls -las
      ls -las 
      mv "$FILE_NAME_UUID.zip" $FILE_NAME_UUID
      CODE_URI="s3://$S3_BUCKET_NAME/$FILE_NAME_UUID"
      aws s3 cp $FILE_NAME_UUID $CODE_URI

如果我从命令行运行相同的命令,则可以正常运行。

对我来说,这似乎是缓冲区或堆内存的问题,或者是在管道中运行zip的问题。

我的Jenkins实例仅运行一项任务(该任务),而Jenkins机器具有足够的内存,因此RAM不会成为问题。

感谢任何帮助/建议。

编辑

问题已解决

由于日志中没有任何帮助,对我来说这似乎是一个内存问题。我将package-code-to-s3.sh的代码复制到我的Jenkinsfile程序包阶段,然后重新启动我的Jenkins实例。听起来很奇怪,这样做可以为我解决问题。

谢谢

1 个答案:

答案 0 :(得分:0)

问题已解决

由于日志中没有任何帮助,对我来说这似乎是一个内存问题。 我尝试了以下方法:

  • 我将package-code-to-s3.sh的代码复制到了我的Jenkinsfile package stage
  • 在结帐之前添加了工作区清理功能(只是为了确保工作区干净)
  • 重新启动我的Jenkins实例(计算机)。

听起来很奇怪,这样做可以为我解决问题。