1 Jenkinsfile概念

Jenkinsfile 使用两种语法进行编写,分别是声明式和脚本式。
声明式和脚本式的流水线从根本上是不同的。
声明式是 jenkins 流水线更友好的特性。
脚本式的流水线语法,提供更丰富的语法特性。
声明式流水线使编写和读取流水线代码更容易设计

2 Pipeline概念

Jenkins 的 Pipeline 通过 Jenkinsfile 进行描述(类似于 Dockerfile)
Jenkinsfile 是 Jenkins 的特性(pipeline as code)
Pipeline 是 Jenkins 的核心功能,提供一组可扩展的工具。
通过 Pipeline 的 DSL 语法可以完成从简单到复杂的交付流水线实现。

流水线组成:
1 Pipeline 流水线,整个构建过程
2 Agent 节点或代理,是一个机器, Jenkins环境的一部分
3 Stage 阶段,一般是不同子集,构建、测试、发布
4 Step 步骤,单一任务,用的较少
5 Post 运行后处理

  1. pipeline{
  2. //指定运行此流水线的节点
  3. agent { node { label "build"}}
  4. //流水线的阶段
  5. stages{
  6. //阶段 1 获取代码
  7. stage("CheckOut"){
  8. steps{
  9. script{
  10. println("获取代码")
  11. }
  12. }
  13. }
  14. stage("Build"){
  15. steps{
  16. script{
  17. println("运行构建")
  18. }
  19. }
  20. }
  21. }
  22. post {
  23. always{
  24. script{
  25. println("流水线结束后,经常做的事情")
  26. }
  27. }
  28. success{
  29. script{
  30. println("流水线成功后,要做的事情")
  31. }
  32. }
  33. failure{
  34. script{
  35. println("流水线失败后,要做的事情")
  36. }
  37. }
  38. aborted{
  39. script{
  40. println("流水线取消后,要做的事情")
  41. }
  42. }
  43. }
  44. }

声明式 Pipleine 是官方推荐的语法,声明式语法更加简洁,在声明式 Pipeline 中的基本语句和表达式遵循 Groovy 的语法。但是有以下例外:

  • 流水线顶层必须是一个块,特别是 pipeline{}。
  • 不需要分号作为分割符,是按照行分割的。
  • 语句块只能由阶段、指令、步骤、赋值语句组成

3 Jenkins 流水线语法

  • agent 代理
  • post 运行后处理
  • stages 阶段
  • environment 环境变量
  • options 运行选项
  • parameters 参数
  • trigger 触发器
  • tool 构建工具
  • input 交互输入
  • when 条件判断
  • parallel 并行
  • script 脚本标签

流水线核心语法

Jenkinsfile 内置变量

  1. BUILD_NUMBER //构建号
  2. BUILD_ID //构建号
  3. BUILD_DISPLAY_NAME //构建显示名称
  4. JOB_NAME //项目名称
  5. EXECUTOR_NUMBER //执行器数量
  6. NODE_NAME //构建节点名称
  7. WORKSPACE //工作目录
  8. JENKINS_HOME //Jenkins home
  9. JENKINS_URL //Jenkins地址
  10. BUILD_URL //构建地址
  11. JOB_URL //项目地址

4 Jenkins扩展-ShareLibrary

共享库这并不是一个全新的概念,其实具有编程能力的同学应该清楚一些。例如在编程语言 Python 中,我们可以将 Python 代码写到一个文件中,当代码数量增加,我们可以将代码打包成模块然后再以 import 的方式使用此模块中的方法。

在 Jenkins 中使用 Groovy 语法,共享库中存储的每个文件都是一个 groovy 的类,每个文件(类)中包含一个或多个方法。每个方法包含 groovy 语句块

5 Groovy 基础语法

  • 数据类型
  • 字符串 string
  • 列表 list
  • 映射 map
  • 条件语句
  • if 语句
  • switch 语句
  • 循环语句
  • for 循环语句
  • while 循环语句
  • 函数

https://www.jenkins.io/doc/book/pipeline

  1. pipeline {
  2. agent {
  3. node {
  4. label 'maven'
  5. }
  6. }
  7. parameters {
  8. string(name:'TAG_NAME',defaultValue: '',description:'')
  9. }
  10. options{
  11. buildDiscarder(logRotator(numToKeepStr: '5'))
  12. quietPeriod(15)
  13. }
  14. environment {
  15. APP_NAME = 'scp-job'
  16. NAMESPACE = 'scp-pre'
  17. CONTAINER_PORT = '8210'
  18. JAVA_OPTS = '-Xmx1024m'
  19. KUBECONFIG_CREDENTIAL_ID = 'pipeline-kubeconfig'
  20. HARBOR_HOST = 'hw-harbor.ur.com.cn'
  21. HARBOR_NAMESPACE = 'scp-pre'
  22. HARBOR_CREDENTIAL_ID = 'pipeline-user-harbor'
  23. NACOS_HOST = 'nacos-hs.infrastructure-pre:8848'
  24. NACOS_NAMESPACE = 'd9b32e8c-a835-4df7-a287-f4514ce3f1df'
  25. NACOS_GROUP = 'scp'
  26. SW_BACKEND = 'skywalking-oap.infrastructure-pre:11800'
  27. HEALTH_PATH = '/health/check'
  28. }
  29. stages {
  30. stage ('checkout scm') {
  31. steps {
  32. checkout(scm)
  33. script {
  34. sh 'wget http://192.168.13.78/pipeline-user/pipeline/-/raw/master/docker/maven/Dockerfile'
  35. sh 'wget http://192.168.13.78/pipeline-user/pipeline/-/raw/master/maven/setting/settings.xml'
  36. sh 'wget http://192.168.13.78/pipeline-user/pipeline/-/raw/master/deploy/maven/pre/deployment.yaml'
  37. }
  38. }
  39. }
  40. stage ('build & push') {
  41. steps {
  42. container ('maven') {
  43. sh 'mvn -Dmaven.test.skip=true -gs `pwd`/settings.xml clean package'
  44. sh 'docker build -f `pwd`/Dockerfile -t $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .'
  45. withCredentials([usernamePassword(credentialsId : "$HARBOR_CREDENTIAL_ID" ,passwordVariable : 'HARBOR_PASSWORD' ,usernameVariable : 'HARBOR_USERNAME' ,)]) {
  46. sh 'echo "$HARBOR_PASSWORD" | docker login $HARBOR_HOST -u "$HARBOR_USERNAME" --password-stdin'
  47. sh 'docker push $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER'
  48. }
  49. }
  50. }
  51. }
  52. stage('deploy to develop') {
  53. when{
  54. branch 'develop'
  55. }
  56. steps {
  57. container ('maven') {
  58. withCredentials([
  59. kubeconfigFile(
  60. credentialsId: env.KUBECONFIG_CREDENTIAL_ID,
  61. variable: 'KUBECONFIG')
  62. ]) {
  63. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  64. }
  65. }
  66. }
  67. }
  68. stage('deploy to pre') {
  69. when{
  70. branch 'pre'
  71. }
  72. steps {
  73. container ('maven') {
  74. withCredentials([
  75. kubeconfigFile(
  76. credentialsId: env.KUBECONFIG_CREDENTIAL_ID,
  77. variable: 'KUBECONFIG')
  78. ]) {
  79. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  80. }
  81. }
  82. }
  83. }
  84. }
  85. }
  1. pipeline {
  2. agent {
  3. node {
  4. label 'maven'
  5. }
  6. }
  7. parameters {
  8. string(name:'TAG_NAME',defaultValue: '',description:'')
  9. }
  10. options{
  11. buildDiscarder(logRotator(numToKeepStr: '5'))
  12. quietPeriod(5)
  13. }
  14. environment {
  15. KUBECONFIG_CREDENTIAL_ID = 'pipeline-user-kubeconfig'
  16. HARBOR_CREDENTIAL_ID = 'pipeline-user-harbor'
  17. APP_NAME = 'ufm-center-basic-service'
  18. CONTAINER_PORT = '8080'
  19. HEALTH_PATH = '/health/check'
  20. }
  21. stages {
  22. stage ('checkout scm') {
  23. steps {
  24. checkout(scm)
  25. script {
  26. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/docker/ufm/maven/Dockerfile'
  27. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/maven/setting/settings.xml'
  28. }
  29. }
  30. }
  31. stage ('build develop') {
  32. when{
  33. branch 'develop'
  34. }
  35. environment {
  36. HARBOR_HOST = 'bytest-harbor.ur.com.cn'
  37. HARBOR_NAMESPACE = 'ufm-dev'
  38. }
  39. steps {
  40. container ('maven') {
  41. sh 'mvn -U -Dmaven.test.skip=true -gs `pwd`/settings.xml clean package'
  42. sh 'docker build -f `pwd`/Dockerfile -t $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .'
  43. withCredentials([usernamePassword(credentialsId : "$HARBOR_CREDENTIAL_ID" ,passwordVariable : 'HARBOR_PASSWORD' ,usernameVariable : 'HARBOR_USERNAME' ,)]) {
  44. sh 'echo "$HARBOR_PASSWORD" | docker login $HARBOR_HOST -u "$HARBOR_USERNAME" --password-stdin'
  45. sh 'docker push $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER'
  46. }
  47. }
  48. }
  49. }
  50. stage ('build test') {
  51. when{
  52. branch 'test'
  53. }
  54. environment {
  55. HARBOR_HOST = 'bytest-harbor.ur.com.cn'
  56. HARBOR_NAMESPACE = 'ufm-test'
  57. }
  58. steps {
  59. container ('maven') {
  60. sh 'mvn -U -Dmaven.test.skip=true -gs `pwd`/settings.xml clean package'
  61. sh 'docker build -f `pwd`/Dockerfile -t $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER .'
  62. withCredentials([usernamePassword(credentialsId : "$HARBOR_CREDENTIAL_ID" ,passwordVariable : 'HARBOR_PASSWORD' ,usernameVariable : 'HARBOR_USERNAME' ,)]) {
  63. sh 'echo "$HARBOR_PASSWORD" | docker login $HARBOR_HOST -u "$HARBOR_USERNAME" --password-stdin'
  64. sh 'docker push $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER'
  65. }
  66. }
  67. }
  68. }
  69. stage ('build pre') {
  70. when{
  71. branch 'master'
  72. }
  73. environment {
  74. HARBOR_HOST = 'hw-harbor.ur.com.cn'
  75. HARBOR_NAMESPACE = 'ufm-pre'
  76. }
  77. steps {
  78. container ('maven') {
  79. sh 'mvn -U -Dmaven.test.skip=true -gs `pwd`/settings.xml -Ppre clean package'
  80. sh 'docker build -f `pwd`/Dockerfile -t $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME-$BUILD_NUMBER .'
  81. withCredentials([usernamePassword(credentialsId : "$HARBOR_CREDENTIAL_ID" ,passwordVariable : 'HARBOR_PASSWORD' ,usernameVariable : 'HARBOR_USERNAME' ,)]) {
  82. sh 'echo "$HARBOR_PASSWORD" | docker login $HARBOR_HOST -u "$HARBOR_USERNAME" --password-stdin'
  83. sh 'docker push $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME-$BUILD_NUMBER'
  84. }
  85. }
  86. }
  87. }
  88. stage('bulid release') {
  89. when{
  90. tag "release-*"
  91. }
  92. environment {
  93. HARBOR_HOST = 'hw-harbor.ur.com.cn'
  94. HARBOR_NAMESPACE = 'ufm-prod'
  95. }
  96. steps {
  97. container ('maven') {
  98. sh 'mvn -U -Dmaven.test.skip=true -gs `pwd`/settings.xml -Pprod clean package'
  99. sh 'docker build -f `pwd`/Dockerfile -t $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME-$BUILD_NUMBER .'
  100. withCredentials([usernamePassword(credentialsId : "$HARBOR_CREDENTIAL_ID" ,passwordVariable : 'HARBOR_PASSWORD' ,usernameVariable : 'HARBOR_USERNAME' ,)]) {
  101. sh 'echo "$HARBOR_PASSWORD" | docker login $HARBOR_HOST -u "$HARBOR_USERNAME" --password-stdin'
  102. sh 'docker push $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME-$BUILD_NUMBER'
  103. }
  104. }
  105. }
  106. }
  107. stage('deploy to develop') {
  108. when{
  109. branch 'develop'
  110. }
  111. environment {
  112. NAMESPACE = 'ufm-dev'
  113. HARBOR_HOST = 'bytest-harbor.ur.com.cn'
  114. HARBOR_NAMESPACE = 'ufm-dev'
  115. NACOS_HOST = 'nacos-hs.infrastructure-test:8848'
  116. NACOS_NAMESPACE = 'e3b19280-b268-4b52-b217-8cc0a983574d'
  117. NACOS_GROUP = 'ufm-group'
  118. SW_BACKEND = 'skw-oap.skywalking.svc.devcluster.local:11800'
  119. JAVA_OPTS = '-Dspring.profiles.active=dev -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
  120. }
  121. steps {
  122. container ('maven') {
  123. withCredentials([
  124. kubeconfigFile(
  125. credentialsId: env.KUBECONFIG_CREDENTIAL_ID,
  126. variable: 'KUBECONFIG')
  127. ]) {
  128. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/deploy/ufm/maven/dev/deployment.yaml'
  129. sh 'envsubst < `pwd`/deployment.yaml | cat -'
  130. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  131. }
  132. }
  133. }
  134. }
  135. stage('deploy to test') {
  136. when{
  137. branch 'test'
  138. }
  139. environment {
  140. NAMESPACE = 'ufm-test'
  141. HARBOR_HOST = 'bytest-harbor.ur.com.cn'
  142. HARBOR_NAMESPACE = 'ufm-test'
  143. NACOS_HOST = 'nacos-hs.infrastructure-test:8848'
  144. NACOS_NAMESPACE = 'c4ec1565-2971-4237-bdb6-87a20856c99c'
  145. NACOS_GROUP = 'ufm-group'
  146. SW_BACKEND = 'skw-oap.skywalking.svc.devcluster.local:11800'
  147. JAVA_OPTS = '-Dspring.profiles.active=test -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
  148. }
  149. steps {
  150. container ('maven') {
  151. withCredentials([
  152. kubeconfigFile(
  153. credentialsId: env.KUBECONFIG_CREDENTIAL_ID,
  154. variable: 'KUBECONFIG')
  155. ]) {
  156. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/deploy/ufm/maven/dev/deployment.yaml'
  157. sh 'envsubst < `pwd`/deployment.yaml | cat -'
  158. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  159. }
  160. }
  161. }
  162. }
  163. stage('deploy to pre') {
  164. when{
  165. branch 'master'
  166. }
  167. environment {
  168. NAMESPACE = 'ufm-pre'
  169. HARBOR_HOST = 'hw-harbor.ur.com.cn'
  170. HARBOR_NAMESPACE = 'ufm-pre'
  171. NACOS_HOST = 'nacos-hs.infrastructure-pre:8848'
  172. NACOS_NAMESPACE = 'd9b32e8c-a835-4df7-a287-f4514ce3f1df'
  173. NACOS_GROUP = 'ufm-group'
  174. SW_BACKEND = 'skywalking-oap.infrastructure-pre:11800'
  175. JAVA_OPTS = '-Dspring.profiles.active=pre'
  176. }
  177. steps {
  178. container ('maven') {
  179. withCredentials([
  180. kubeconfigFile(
  181. credentialsId: env.KUBECONFIG_CREDENTIAL_ID,
  182. variable: 'KUBECONFIG')
  183. ]) {
  184. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/deploy/ufm/maven/pre/deployment.yaml'
  185. sh 'envsubst < `pwd`/deployment.yaml | cat -'
  186. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  187. }
  188. }
  189. }
  190. }
  191. stage('deploy release') {
  192. when{
  193. tag "release-*"
  194. }
  195. environment {
  196. NAMESPACE = 'ufm-prod'
  197. HARBOR_HOST = 'hw-harbor.ur.com.cn'
  198. HARBOR_NAMESPACE = 'ufm-prod'
  199. NACOS_HOST = 'nacos-hs.infrastructure-prod:8848'
  200. NACOS_NAMESPACE = '1f8da0a1-929d-42cc-b3d5-239cc068f3e8'
  201. NACOS_GROUP = 'ufm-group'
  202. SW_BACKEND = 'skywalking-oap.infrastructure-prod:11800'
  203. JAVA_OPTS = '-Dspring.profiles.active=prod'
  204. }
  205. steps {
  206. container ('maven') {
  207. withCredentials([
  208. kubeconfigFile(
  209. credentialsId: env.KUBECONFIG_CREDENTIAL_ID,
  210. variable: 'KUBECONFIG')
  211. ]) {
  212. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/deploy/ufm/maven/prod/deployment.yaml'
  213. sh 'envsubst < `pwd`/deployment.yaml | cat -'
  214. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  215. }
  216. }
  217. }
  218. }
  219. }
  220. }
  1. pipeline {
  2. agent {
  3. node {
  4. label 'nodejs'
  5. }
  6. }
  7. parameters {
  8. string(name:'TAG_NAME', defaultValue: '', description:'')
  9. }
  10. options {
  11. buildDiscarder(logRotator(numToKeepStr: '5'))
  12. quietPeriod(5)
  13. }
  14. environment {
  15. HARBOR_CREDENTIAL_ID = 'pipeline-user-harbor'
  16. KUBECONFIG_CREDENTIAL_ID = 'pipeline-user-kubeconfig'
  17. APP_NAME = 'ufm-mgr'
  18. }
  19. stages {
  20. stage ('checkout scm') {
  21. steps {
  22. checkout(scm)
  23. script {
  24. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/docker/vue/Dockerfile'
  25. }
  26. }
  27. }
  28. stage ('build develop') {
  29. when {
  30. branch 'develop'
  31. }
  32. environment {
  33. HARBOR_HOST = 'bytest-harbor.ur.com.cn'
  34. HARBOR_NAMESPACE = 'ufm-dev'
  35. HARBOR_CREDENTIAL_ID = 'pipeline-user-harbor'
  36. }
  37. steps {
  38. container('nodejs') {
  39. sh 'yarn config set ignore-engines true'
  40. sh 'yarn install --frozen-lockfile'
  41. sh 'yarn build:dev'
  42. sh 'docker build -f `pwd`/Dockerfile -t $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME.$TAG_NAME.$BUILD_NUMBER .'
  43. withCredentials([usernamePassword(credentialsId : "$HARBOR_CREDENTIAL_ID" ,passwordVariable : 'HARBOR_PASSWORD' ,usernameVariable : 'HARBOR_USERNAME' ,)]) {
  44. sh 'echo "$HARBOR_PASSWORD" | docker login $HARBOR_HOST -u "$HARBOR_USERNAME" --password-stdin'
  45. sh 'docker push $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME.$TAG_NAME.$BUILD_NUMBER'
  46. }
  47. }
  48. }
  49. }
  50. stage ('build test') {
  51. when {
  52. branch 'test'
  53. }
  54. environment {
  55. HARBOR_HOST = 'bytest-harbor.ur.com.cn'
  56. HARBOR_NAMESPACE = 'ufm-test'
  57. HARBOR_CREDENTIAL_ID = 'pipeline-user-harbor'
  58. }
  59. steps {
  60. container('nodejs') {
  61. sh 'yarn config set ignore-engines true'
  62. sh 'yarn install --frozen-lockfile'
  63. sh 'yarn build:test'
  64. sh 'docker build -f `pwd`/Dockerfile -t $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME.$TAG_NAME.$BUILD_NUMBER .'
  65. withCredentials([usernamePassword(credentialsId : "$HARBOR_CREDENTIAL_ID" ,passwordVariable : 'HARBOR_PASSWORD' ,usernameVariable : 'HARBOR_USERNAME' ,)]) {
  66. sh 'echo "$HARBOR_PASSWORD" | docker login $HARBOR_HOST -u "$HARBOR_USERNAME" --password-stdin'
  67. sh 'docker push $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME.$TAG_NAME.$BUILD_NUMBER'
  68. }
  69. }
  70. }
  71. }
  72. stage ('build pre') {
  73. when {
  74. branch 'pre'
  75. }
  76. environment {
  77. HARBOR_HOST = 'hw-harbor.ur.com.cn'
  78. HARBOR_NAMESPACE = 'ufm-pre'
  79. HARBOR_CREDENTIAL_ID = 'pipeline-user-harbor'
  80. }
  81. steps {
  82. container('nodejs') {
  83. sh 'yarn config set ignore-engines true'
  84. sh 'yarn install --frozen-lockfile'
  85. sh 'yarn build:pre'
  86. sh 'docker build -f `pwd`/Dockerfile -t $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME.$TAG_NAME.$BUILD_NUMBER .'
  87. withCredentials([usernamePassword(credentialsId : "$HARBOR_CREDENTIAL_ID" ,passwordVariable : 'HARBOR_PASSWORD' ,usernameVariable : 'HARBOR_USERNAME' ,)]) {
  88. sh 'echo "$HARBOR_PASSWORD" | docker login $HARBOR_HOST -u "$HARBOR_USERNAME" --password-stdin'
  89. sh 'docker push $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME.$TAG_NAME.$BUILD_NUMBER'
  90. }
  91. }
  92. }
  93. }
  94. stage ('build release') {
  95. when {
  96. tag 'release-*'
  97. }
  98. environment {
  99. HARBOR_HOST = 'hw-harbor.ur.com.cn'
  100. HARBOR_NAMESPACE = 'ufm-prod'
  101. HARBOR_CREDENTIAL_ID = 'pipeline-user-harbor'
  102. }
  103. steps {
  104. container('nodejs') {
  105. sh 'yarn config set ignore-engines true'
  106. sh 'yarn install --frozen-lockfile'
  107. sh 'yarn build:prod'
  108. sh 'docker build -f `pwd`/Dockerfile -t $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME-$BUILD_NUMBER .'
  109. withCredentials([usernamePassword(credentialsId : "$HARBOR_CREDENTIAL_ID" ,passwordVariable : 'HARBOR_PASSWORD' ,usernameVariable : 'HARBOR_USERNAME' ,)]) {
  110. sh 'echo "$HARBOR_PASSWORD" | docker login $HARBOR_HOST -u "$HARBOR_USERNAME" --password-stdin'
  111. sh 'docker push $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME-$BUILD_NUMBER'
  112. }
  113. }
  114. }
  115. }
  116. stage('deploy to develop') {
  117. when {
  118. branch 'develop'
  119. }
  120. environment {
  121. NAMESPACE = 'ufm-dev'
  122. HARBOR_HOST = 'bytest-harbor.ur.com.cn'
  123. HARBOR_NAMESPACE = 'ufm-dev'
  124. }
  125. steps {
  126. container ('nodejs') {
  127. withCredentials([
  128. kubeconfigFile(
  129. credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')])
  130. {
  131. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/deploy/ufm/vue/dev/deployment.yaml'
  132. sh 'envsubst < `pwd`/deployment.yaml | cat -'
  133. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  134. }
  135. }
  136. }
  137. }
  138. stage('deploy to test') {
  139. when {
  140. branch 'test'
  141. }
  142. environment {
  143. NAMESPACE = 'ufm-test'
  144. HARBOR_HOST = 'bytest-harbor.ur.com.cn'
  145. HARBOR_NAMESPACE = 'ufm-test'
  146. }
  147. steps {
  148. container ('nodejs') {
  149. withCredentials([
  150. kubeconfigFile(
  151. credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')])
  152. {
  153. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/deploy/ufm/vue/dev/deployment.yaml'
  154. sh 'envsubst < `pwd`/deployment.yaml | cat -'
  155. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  156. }
  157. }
  158. }
  159. }
  160. stage('deploy to pre') {
  161. when {
  162. branch 'pre'
  163. }
  164. environment {
  165. NAMESPACE = 'ufm-pre'
  166. HARBOR_HOST = 'hw-harbor.ur.com.cn'
  167. HARBOR_NAMESPACE = 'ufm-pre'
  168. }
  169. steps {
  170. container ('nodejs') {
  171. withCredentials([
  172. kubeconfigFile(
  173. credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')])
  174. {
  175. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/deploy/ufm/vue/pre/deployment.yaml'
  176. sh 'envsubst < `pwd`/deployment.yaml | cat -'
  177. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  178. }
  179. }
  180. }
  181. }
  182. stage ('deploy release') {
  183. when {
  184. tag 'release-*'
  185. }
  186. environment {
  187. NAMESPACE = 'ufm-prod'
  188. HARBOR_HOST = 'hw-harbor.ur.com.cn'
  189. HARBOR_NAMESPACE = 'ufm-prod'
  190. }
  191. steps {
  192. container ('nodejs') {
  193. withCredentials([
  194. kubeconfigFile(
  195. credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')])
  196. {
  197. sh 'wget http://192.168.13.78/paas-pub/pipeline/-/raw/master/deploy/ufm/vue/prod/deployment.yaml'
  198. sh 'envsubst < `pwd`/deployment.yaml | cat -'
  199. sh 'envsubst < `pwd`/deployment.yaml | kubectl apply -f -'
  200. }
  201. }
  202. }
  203. }
  204. }
  205. }