Tec*_*nch 9 groovy continuous-deployment jenkins cloudbees jenkins-workflow
我正在尝试在Cloudbees上使用Jenkins来自动部署我的软件.我设置我的工作流程如下.
有时候我想重新部署.(假设该阶段采用手动输入参数).我如何在工作流程中这样做?这是我的Groovy脚本.
def src = 'https://git.repo.url/proj.git'
stage 'Build'
node {
env.JAVA_HOME="${tool name: 'Pre-Installed OpenJDK 8 (Latest) on DEV@Cloud nodes', type: 'hudson.model.JDK'}"
sh 'javac -version'
git credentialsId: 'abcdef', url: src
sh 'ant -f build.xml proj.jar report'
}
stage 'Generate Release Version'
input message: 'Create Tar and Push to S3', ok: 'Generate Release'
node {
// TODO
}
stage 'QA Approved'
input message: 'Enter a Tag Name to approve this build and tag in GIT', ok: 'Approve and Tag', parameters: [[$class: 'StringParameterDefinition', defaultValue: '', description: 'Eg: Sprint73', name: 'TAG_NAME']]
node {
// TODO
}
stage 'DevOps - Ansible'
input message: 'Release to Production', ok: 'Release'
node {
// TODO
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用构建管道而不是工作流来使用作业链,以便我可以重复阶段,但那是另一个有太多工作的故事.
假设这是您希望能够重新启动的最后一个(Ansible)阶段,您可以checkpoint在它之前放置一个。
checkpoint 'about to deploy'
stage 'DevOps - Ansible'
input message: 'Release to Production', ok: 'Release'
node {
// TODO
}
Run Code Online (Sandbox Code Playgroud)
如果您想部署到可选择的目标,您可以使用input:
checkpoint 'about to deploy'
stage 'DevOps - Ansible'
def target = input message: 'Where to release?',
parameters: [[$class: 'StringParameterDefinition', name: 'target']]
node {
// TODO
}
Run Code Online (Sandbox Code Playgroud)
更复杂的场景是,您希望在第一次时始终部署到标准目标,但是当从检查点恢复时,您希望向用户询问备用目标。为此,您需要知道何时恢复。目前checkpoint不直接提供此信息(CloudBees 内部问题跟踪器中的 CJP-1620),但有一个解决方法:
def origBuildNumber = env.BUILD_NUMBER
checkpoint 'about to deploy'
stage 'DevOps - Ansible'
def target
if (origBuildNumber == env.BUILD_NUMBER) { // original
target = 'production'
} else { // resumed
target = input message: 'Where to release?',
parameters: [[$class: 'StringParameterDefinition', name: 'target']]
}
node {
// TODO
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8439 次 |
| 最近记录: |