前言
目前项目的自动化部署越来越简便和成熟,项目开发过程中对前端项目的自动化部署做一下总结。通过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