Все работает отлично, кроме одного.У меня есть сценарий развертывания с именем deploy.sh, описанный ниже.Я запускаю сборку внутри док-контейнера узла и запускаю этот скрипт в конце сборки.Сценарий развертывания работает хорошо до тех пор, пока не будет создан файл production-build.sh.Иногда происходит сбой со следующей ошибкой:
Traceback (most recent call last):
File "bin/docker-compose", line 6, in <module>
File "compose/cli/main.py", line 71, in main
File "compose/cli/main.py", line 127, in perform_command
File "compose/cli/main.py", line 282, in build
File "compose/project.py", line 373, in build
File "compose/service.py", line 1027, in build
File "site-packages/docker/api/build.py", line 154, in build
File "site-packages/docker/utils/build.py", line 31, in tar
File "site-packages/docker/utils/build.py", line 162, in create_archive
File "tarfile.py", line 1803, in gettarinfo
FileNotFoundError: [Errno 2] No such file or directory:
'/home/application/api/jenkins-data/logs/sse-events/job'
[26943] Failed to execute script docker-compose
Это не происходит постоянно.Например, развертывание прошло успешно после непосредственного нажатия на master, и эта ошибка появилась при объединении из запроса на извлечение (приняв объединение).
Кто-нибудь знает, откуда он взялся?
Файл Deploy.sh
ssh -tt -o StrictHostKeyChecking=no root@application.com <<EOF
echo '**** Change directory to project...'
cd /home/application/api
echo '**** Getting latest changes from git repo...'
git pull
echo '**** Installing node modules...'
npm install --production
bash -c "./bash/production-build.sh"
bash -c "./bash/production-api-up.sh"
exit
EOF
Файл Дженкинса
#!groovy
pipeline {
agent {
docker {
image 'node:carbon'
args '-v /root/.ssh:/root/.ssh'
}
}
stages {
stage('Prepare') {
steps {
sh 'npm install'
sh 'npm install -g typescript && npm install -g tslint'
}
}
stage('Build') {
steps {
sh 'tsc'
}
}
stage('Lint') {
steps {
sh 'npm run lint'
}
}
stage('Unit Test') {
steps {
sh 'npm run test'
}
}
stage('Deploy') {
steps {
sh '/var/jenkins_home/api/bash/deploy.sh'
}
}
}
}
РЕДАКТИРОВАТЬ: Производство-сценарий build.sh
#!/bin/bash
# API & MongoDB services
echo '**** Restarting api...'
bash -c "docker-compose -f docker-compose.production.yaml build"
РЕДАКТИРОВАТЬ 2:
Я нажал непосредственно на мастер и развертывание сработало.Я объединил запрос на получение, и он сразу же потерпел неудачу.После этого снова попробовал прямой толчок с терминала, и это сработало (снова)!