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 实例(机器)。
听起来可能很奇怪,通过这样做我的问题得到了解决。
我有 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 实例(机器)。
听起来可能很奇怪,通过这样做我的问题得到了解决。