Jenkins自动化部署之编写Pipeline的Groovy脚本

前言

目前项目的自动化部署越来越简便和成熟,项目开发过程中对前端项目的自动化部署做一下总结。通过Jenkins运行Groovy脚本实现对项目的自动化构建和部署。

Jenkins的Config配置

Jenkins的Config配置

脚本示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
def CDN_DIR = '/srv/dev/react'
node() {
stage('Checkout'){
sh "echo PROJECT = ${params.PROJECT}"
sh "echo INSTALL = ${params.INSTALL}"
sh "echo ENV = ${params.ENV}"
sh "echo FORCE = ${params.FORCE}"
sh "echo INIT = ${params.INIT}"

sh "echo WORKSPACE = $WORKSPACE"
sh "echo BUILD_ID = $BUILD_ID"

sh 'pwd'

sh "echo BUILD_NUMBER = $BUILD_NUMBER"
sh "echo JOB_NAME = $JOB_NAME"
sh "echo JOB_BASE_NAME = $JOB_BASE_NAME"
sh "echo BUILD_TAG = $BUILD_TAG"
sh "echo EXECUTOR_NUMBER = $EXECUTOR_NUMBER"
sh "echo NODE_NAME = $NODE_NAME"
sh "echo NODE_LABELS = $NODE_LABELS"
sh "echo JENKINS_HOME = $JENKINS_HOME"
sh "echo JENKINS_URL = $JENKINS_URL"
sh "echo BUILD_URL = $BUILD_URL"
sh "echo JOB_URL = $JOB_URL"

git branch: 'dev-server', url: 'ssh://git@******/******.git'
sh 'git status'
sh 'git branch'

}

stage('Initialize'){
if (params.INSTALL){
sh "rm -rf node_modules"
sh "npm i"
}
}

stage('build'){
sh "npm run build"
}

stage('Results') {
sh "mkdir -p ${WORKSPACE}/archive"
sh "mkdir -p ${WORKSPACE}/archive/${BUILD_ID}"
sh "zip -r ${WORKSPACE}/archive/${BUILD_ID}/${JOB_NAME}-${BUILD_ID}.zip ${WORKSPACE}/dist/*"
archiveArtifacts artifacts: 'archive/**/*.zip', onlyIfSuccessful: true
}

stage('Publish') {
sh "mkdir -p /srv"
sh "mkdir -p ${CDN_DIR}/${params.PROJECT}"
sh "cp -r ${WORKSPACE}/dist/. ${CDN_DIR}/${params.PROJECT}/"
}
}

分析上述代码:
其中每个stage代表的是Jenkins中status的Stage View的每一块进度,脚本执行过程中按照顺序一次进行,如下图:

Stage View

其中红框中圈出的部分即是脚本中依次书写的stage