Jenkinsfile.bk 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. def label = "slave-${UUID.randomUUID().toString()}"
  2. podTemplate(cloud: 'kubernetes', namespace:'devops',label: label, serviceAccount: 'jenkins',containers: [
  3. containerTemplate(name: 'docker', image: 'docker:latest', command: 'cat', ttyEnabled: true),
  4. containerTemplate(name: 'kubectl', image: 'cnych/kubectl', command: 'cat', ttyEnabled: true)
  5. ],volumes: [
  6. hostPathVolume(mountPath: '/home/jenkins/.kube', hostPath: '/root/.kube'),
  7. hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),
  8. hostPathVolume(mountPath: '/etc/docker/daemon.json', hostPath: '/etc/docker/daemon.json')
  9. ], yaml: """
  10. spec:
  11. nodeSelector:
  12. kubernetes.io/hostname: h249
  13. hostalias:
  14. - ip: 192.168.199.31
  15. hostnames:
  16. - "SXKJ"
  17. """
  18. ) {
  19. node(label) {
  20. stage('构建 Docker 镜像') {
  21. git url: ' http://gogs.soaringnova.com/sxwl_DL/meta_be.git', branch: 'master'
  22. container('docker') {
  23. echo "构建 Docker 镜像阶段"
  24. retry(2) { sh "docker build -t SXKJ:32775/meta-app:latest --output type=docker ." }
  25. echo "build success"
  26. }
  27. }
  28. stage('Docker Push 镜像') {
  29. container('docker') {
  30. retry(2) { sh "docker push SXKJ:32775/meta-app:latest" }
  31. echo "Push success"
  32. }
  33. }
  34. stage('运行 Kubectl') {
  35. container('kubectl') {
  36. echo "重启 pod"
  37. sh "kubectl rollout restart deployments/app-be -n meta-demo"
  38. }
  39. }
  40. }
  41. }
  42. //
  43. // pipeline {
  44. // agent { label 'jnlp-slave'}
  45. //
  46. // options {
  47. // buildDiscarder(logRotator(numToKeepStr: '10'))
  48. // disableConcurrentBuilds()
  49. // timeout(time: 20, unit: 'MINUTES')
  50. // gitLabConnection('gitlab')
  51. // }
  52. //
  53. // environment {
  54. // IMAGE_REPO = "112.29.146.236:5000/demo/myblog"
  55. // DINGTALK_CREDS = credentials('dingTalk')
  56. // TAB_STR = "\n \n "
  57. // }
  58. //
  59. // stages {
  60. // stage('git-log') {
  61. // steps {
  62. // script{
  63. // sh "git log --oneline -n 1 > gitlog.file"
  64. // env.GIT_LOG = readFile("gitlog.file").trim()
  65. // }
  66. // sh 'printenv'
  67. // }
  68. // }
  69. // stage('checkout') {
  70. // steps {
  71. // container('tools') {
  72. // checkout scm
  73. // }
  74. // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
  75. // script{
  76. // env.BUILD_TASKS = env.STAGE_NAME + "√..." + env.TAB_STR
  77. // }
  78. // }
  79. // }
  80. // stage('CI'){
  81. // failFast true
  82. // parallel {
  83. // stage('Unit Test') {
  84. // steps {
  85. // echo "Unit Test Stage Skip..."
  86. // }
  87. // }
  88. // stage('Code Scan') {
  89. // steps {
  90. // container('tools') {
  91. // withSonarQubeEnv('sonarqube') {
  92. // sh 'sonar-scanner -X'
  93. // sleep 3
  94. // }
  95. // script {
  96. // timeout(1) {
  97. // def qg = waitForQualityGate('sonarqube')
  98. // if (qg.status != 'OK') {
  99. // error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}"
  100. // }
  101. // }
  102. // }
  103. // }
  104. // }
  105. // }
  106. // }
  107. // }
  108. // stage('build-image') {
  109. // steps {
  110. // container('tools') {
  111. // retry(2) { sh 'docker build . -t ${IMAGE_REPO}:${GIT_COMMIT}'}
  112. // }
  113. // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
  114. // script{
  115. // env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
  116. // }
  117. // }
  118. // }
  119. // stage('push-image') {
  120. // steps {
  121. // container('tools') {
  122. // retry(2) { sh 'docker push ${IMAGE_REPO}:${GIT_COMMIT}'}
  123. // }
  124. // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
  125. // script{
  126. // env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
  127. // }
  128. // }
  129. // }
  130. // stage('deploy') {
  131. // steps {
  132. // container('tools') {
  133. // sh "sed -i 's#{{IMAGE_URL}}#${IMAGE_REPO}:${GIT_COMMIT}#g' deploy/*"
  134. // timeout(time: 1, unit: 'MINUTES') {
  135. // sh "kubectl apply -f deploy/"
  136. // }
  137. // }
  138. // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
  139. // script{
  140. // env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
  141. // }
  142. // }
  143. // }
  144. // }
  145. // post {
  146. // success {
  147. // echo 'Congratulations!'
  148. // sh """
  149. // curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \
  150. // -H 'Content-Type: application/json' \
  151. // -d '{
  152. // "msgtype": "markdown",
  153. // "markdown": {
  154. // "title":"myblog",
  155. // "text": "😄👍 构建成功 👍😄 \n**项目名称**:jairmir \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}"
  156. // }
  157. // }'
  158. // """
  159. // }
  160. // failure {
  161. // echo 'Oh no!'
  162. // sh """
  163. // curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \
  164. // -H 'Content-Type: application/json' \
  165. // -d '{
  166. // "msgtype": "markdown",
  167. // "markdown": {
  168. // "title":"myblog",
  169. // "text": "😖❌ 构建失败 ❌😖 \n**项目名称**:jairmir \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}"
  170. // }
  171. // }'
  172. // """
  173. // }
  174. // always {
  175. // echo 'I will always say Hello again!'
  176. // }
  177. // }
  178. // }