关于流水线

Jenkins 从 2.0 开始逐渐从一个 CI 工具转变成为 CD 工具,Pipeline 在其中扮演着至关重要的角色。配置由界面选择逐渐脚本化(采用 Groovy 脚本),我们可以将配置连同代码一起存放在代码仓库,实现版本控制。一次编写,到处运行。
在 Pipeline 中有两个主要关键字需要先简单的了解,可能有些地方还能见到 Step 关键字:
1. Stage:阶段,这其实就是我们将任务细分为多个过程。
2. Node:节点,前面提到过,Jenkins 是可以分布式的,Node 标记着具体在 Master 还是 Slave 运行这个构建。

安装Pipeline插件

新建 Pipeline 任务

image.png

编写Pipeline script(流水线脚本)

1、体验效果

image.png

  1. # node 在Jenkins环境中分配一个执行器和工作空间。
  2. node {
  3. stage("拉取代码"){
  4. echo 'STEP 1:clone code'
  5. }
  6. stage("打包代码"){
  7. echo 'STEP 2:code package'
  8. }
  9. stage("上线发布"){
  10. echo 'STEP 3:deploy package'
  11. }
  12. }

image.png

2、编写真正的项目流水线脚本

点击“流水线语法”
image.png
1、git: Git
拉取代码脚本
image.png
2、sh: Shell Script
打包脚本
3、sshPublisher: send build artifacts over SSH
image.png

  1. node {
  2. stage("拉取代码"){
  3. echo 'STEP 1:clone code'
  4. git credentialsId: 'xxxx-xxxx-xxxx-xxxx-xxxx', url: 'git@xxxxxxxx.git'
  5. }
  6. stage("打包代码"){
  7. echo 'STEP 2:code package'
  8. sh '''pwd
  9. ls
  10. node -v
  11. npm -v
  12. git --version
  13. echo \'构建的版本号:\'${BUILD_NUMBER}
  14. rm -rf node_modules
  15. rm -rf package-lock.json
  16. rm -rf yarn.lock
  17. cnpm install
  18. npm run build
  19. pwd'''
  20. }
  21. stage("上线发布"){
  22. echo 'STEP 3:deploy package'
  23. 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)])
  24. }
  25. }