Jenkins & Github & NodeJS & Docker проблема со сборкой из скрипта - PullRequest
0 голосов
/ 11 мая 2018

Все работает отлично, кроме одного.У меня есть сценарий развертывания с именем 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:

Я нажал непосредственно на мастер и развертывание сработало.Я объединил запрос на получение, и он сразу же потерпел неудачу.После этого снова попробовал прямой толчок с терминала, и это сработало (снова)!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...