Как я могу заставить этот конвейер работать для нескольких прогонов одновременно? - PullRequest
0 голосов
/ 08 апреля 2019

В настоящее время он создает сетевое имя "denpal_default" и выдает следующее сообщение:

[1BRemoving network denpal_default
Network denpal_default not found.
Network test-network is external, skipping

Я еще не тестировал его, но я предполагаю, что если он создает сеть denpal_default и удаляет ее, онне может запустить несколько сборок одновременно.

Я думал о решении, которое могло бы создать случайное COMPOSE_PROJECT_NAME = "denpal-randomnumber" и построить на его основе.

Но как мне использоватьпеременная, установленная на этапе «Сборка Docker» на этапе «Проверка» позже?

stage('Docker Build') {
  steps {
    sh '''
    docker-compose config -q
    docker network prune -f && docker network inspect test-network >/dev/null || docker network create test-network
    COMPOSE_PROJECT_NAME=denpal docker-compose down
    COMPOSE_PROJECT_NAME=denpal docker-compose up -d --build "$@"
    '''
  }
}
stage('Verification') {
  steps {
    sh '''
    docker-compose exec -T cli curl http://nginx:8080 -v
    COMPOSE_PROJECT_NAME=denpal docker-compose down
    '''
  }
}

1 Ответ

0 голосов
/ 08 апреля 2019

вы можете использовать переменные в командах sh в конвейере, так как в основном это строка и использовать groovy gstring (http://groovy -lang.org / syntax.html )

пример для сценариевконвейер, для декларативного использования env vars

def random = UUID.randomUUID().toString()
sh '''
   echo "hello ${random}"
'''

две распространенные ловушки, вы должны использовать двойные кавычки (gstring, одинарная кавычка - обычная строка), а "stage" ограничен, поэтому определите, что var является глобальнымили на той же стадии.

...