关于流水线
Jenkins 从 2.0 开始逐渐从一个 CI 工具转变成为 CD 工具,Pipeline 在其中扮演着至关重要的角色。配置由界面选择逐渐脚本化(采用 Groovy 脚本),我们可以将配置连同代码一起存放在代码仓库,实现版本控制。一次编写,到处运行。
在 Pipeline 中有两个主要关键字需要先简单的了解,可能有些地方还能见到 Step 关键字:
1. Stage:阶段,这其实就是我们将任务细分为多个过程。
2. Node:节点,前面提到过,Jenkins 是可以分布式的,Node 标记着具体在 Master 还是 Slave 运行这个构建。
安装Pipeline插件
新建 Pipeline 任务
编写Pipeline script(流水线脚本)
1、体验效果
# node 在Jenkins环境中分配一个执行器和工作空间。
node {
stage("拉取代码"){
echo 'STEP 1:clone code'
}
stage("打包代码"){
echo 'STEP 2:code package'
}
stage("上线发布"){
echo 'STEP 3:deploy package'
}
}
2、编写真正的项目流水线脚本
点击“流水线语法”
1、git: Git
拉取代码脚本
2、sh: Shell Script
打包脚本
3、sshPublisher: send build artifacts over SSH
node {
stage("拉取代码"){
echo 'STEP 1:clone code'
git credentialsId: 'xxxx-xxxx-xxxx-xxxx-xxxx', url: 'git@xxxxxxxx.git'
}
stage("打包代码"){
echo 'STEP 2:code package'
sh '''pwd
ls
node -v
npm -v
git --version
echo \'构建的版本号:\'${BUILD_NUMBER}
rm -rf node_modules
rm -rf package-lock.json
rm -rf yarn.lock
cnpm install
npm run build
pwd'''
}
stage("上线发布"){
echo 'STEP 3:deploy package'
sshPublisher(publishers: [sshPublisherDesc(configName: 'web服务器', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'test-pipeline-01', remoteDirectorySDF: false, removePrefix: 'dist/', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}