#jenkins #jenkins-pipeline
#дженкинс #конвейер Дженкинса
Вопрос:
У меня есть отдельный build
конвейер, который используется jenkinsfile
для сборки кода. Я запускаю его из deploy
конвейера и хочу получить результаты сборки.
Причина этого в том, что разработчики могут определять этапы сборки, но развертывание находится вне контроля.
Вот пример кода в jenkins job builder
:
- job:
name: Build and Deploy
project-type: pipeline
dsl: |
node {
stage('Build') {
# that job does stash inside a jenkinsfile
build job: "Build"
sh 'cp -rv "../Build/dist/" ./' # this is a workaround
stash includes: 'dist/*.zip', name: 'archive'
}
stage('Deploy') {
unstash 'archive'
sh "..."
}
}
Итак, как я могу unstash
редактировать код stash
в подзадаче?
PS: есть также обходной путь с артефактами:
В подзадаче:
archiveArtifacts artifacts: '*.zip', fingerprint: true
основной DSL:
dsl: |
node {
def build_job_number = 0
def JENKINS = "http://127.0.0.1:8080"
stage('Build') {
def build_job = build job: "Build"
build_job_number = build_job.getNumber()
}
stage('Deploy') {
sh "wget -c --http-user=${USER} --http-password=${TOKEN} --auth-no-challenge ${JENKINS}/job/Build/${build_job_number}/artifact/name.zip"
sh "..."
}
}
Проблема здесь в том, что требуется токен API.
Ответ №1:
Если вы пойдете с archiveArtifacts
ним, вы можете использовать copyArtifacts
его в качестве дополнения.
Насколько я знаю stash
unstash
, они работают только в рамках одного и того же задания, поэтому другим вашим вариантом было бы поставить галочку Preserve stashes from completed builds
в конфигурации конвейера, чтобы вы могли использовать их повторно.