我想问一下如何添加另一个步骤,以在我创建的jenkins管道上提取另一个存储库。从jenkins管道设置中可以看到,我已经指定了一个仓库来拉动ui。然后,在构建完成后,我需要为API拉出另一个存储库并将其构建为一个docker映像。我已经尝试过此doc,但是在将ui文件合并到api上时遇到了问题,这是我使用的管道脚本。
pipeline {
agent { label 'slave-jenkins'}
stages {blah blah
}
stage('Workspace Cleanup') {
steps {
step([$class: 'WsCleanup'])
checkout scm
}
}
stage('Download and Build UI Files') {
steps {
sh '''#!/bin/bash
echo "###########################"
echo "PERFORMING NPM INSTALL"
echo "###########################"
npm install
echo "###########################"
echo "PERFORMING NPM RUN BUILD"
echo "###########################"
npm run build
echo "###########################"
echo "Downloading API Repo"
echo "###########################"
**git branch: 'master',**
**credentialsId: 'XXXXXXXXXXXX',**
**url: 'ssh://git@XXXXXXe:7999/~lXXXXXX.git'**
echo ""
'''
}
}
}
答案 0 :(得分:0)
您不应在外壳程序脚本中包含Jenkins Pipeline DSL-例如,这必须是一个单独的步骤
steps {
// first step to run shell script
sh '''#!/bin/bash
echo "###########################"
echo "PERFORMING NPM INSTALL"
echo "###########################"
npm install
echo "###########################"
echo "PERFORMING NPM RUN BUILD"
echo "###########################"
npm run build
echo "###########################"
echo "Downloading API Repo"
echo "###########################"
'''
// second step to checkout git repo
git branch: 'master',
credentialsId: 'XXXXXXXXXXXX',
url: 'ssh://git@XXXXXXe:7999/~lXXXXXX.git'
}
但是在一个工作空间中混合两个仓库(在一项工作中混合两个职责)可能不是一个好主意。如果您将连续交付过程分成多个工作,那就更好了:
,然后链接此作业,以便一个接一个地执行它们,并将构建工件彼此传递。因此,您CD程序的每个部分都将满足以下原则: 单一责任。