У меня есть Jenkins Groovy Pipeline, куда я архивирую большой каталог (около 200 МБ). Тем не менее, команда оболочки убивается с ошибками вроде:
./package-code-to-s3.sh: line 18: 20091 Killed
ИЛИ
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 достаточно памяти, поэтому проблема с ОЗУ не должна быть.
Любая помощь / предложение приветствуется.
EDIT
Устранена проблема
Поскольку в логах не было ничего полезного, это выглядело как проблема с памятью. Я скопировал код package-code-to-s3.sh
на стадию пакета Jenkinsfile и перезапустил свой экземпляр Jenkins. Как ни странно, проблема была решена для меня, сделав это.
Спасибо