Jenkins 管道 - shell 命令终止压缩一个大目录

Jenkins pipeline - shell command killed zipping a large directory

我有 Jenkins Groovy 管道,我正在其中压缩一个大目录(大约 200 MB)。但是,shell 命令会因以下错误而被终止:

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

line x: 28026 Killed

./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=
      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

如果我 运行 从命令行执行相同的命令,它会工作得很好。

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

我的 Jenkins 实例只有一个作业 运行ning(这个)并且 Jenkins 机器有足够的内存,因此,RAM 应该不是问题。

任何 help/suggestion 不胜感激。

编辑

问题已解决

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

谢谢

问题已解决

因为日志中没有任何帮助,对我来说这看起来像是内存问题。 我尝试了以下方法:

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

听起来可能很奇怪,通过这样做我的问题得到了解决。