Jenkinsfile 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  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. hostPathVolume(mountPath: '/root/.docker/config.json', hostPath: '/root/.docker/config.json')
  10. ], yaml: """
  11. spec:
  12. nodeSelector:
  13. kubernetes.io/hostname: 10.138.130.97
  14. tolerations:
  15. - key: "node-role.kubernetes.io/master"
  16. operator: "Equal"
  17. value: "true"
  18. effect: "NoSchedule"
  19. """
  20. ) {
  21. node(label) {
  22. stage('构建 Docker 镜像') {
  23. // checkout([$class: 'GitSCM',
  24. // branches: [[name: '*/integration']],
  25. // userRemoteConfigs: [[credentialsId: '775e81f5-3243-4e23-9d1f-01b7e62597d4', url: 'http://10.138.130.21:8001/ai_repos/aihub-backend.git']]])
  26. // sleep 30
  27. // }
  28. git url: 'http://10.138.130.21:8001/aihub/aihub-backend-new.git', branch: 'integration'
  29. container('docker') {
  30. echo "构建 Docker 镜像阶段"
  31. sh "echo 'nameserver 114.114.114.114' >> /etc/resolv.conf"
  32. retry(2) { sh "docker build --target image-idcprod -t registry.cn-hangzhou.aliyuncs.com/sxtest/datax-admin:idcprod --output type=docker ." }
  33. echo "build success"
  34. }
  35. }
  36. stage('Docker Push 镜像') {
  37. container('docker') {
  38. retry(2) { sh "docker push registry.cn-hangzhou.aliyuncs.com/sxtest/datax-admin:idcprod" }
  39. echo "Push success"
  40. }
  41. }
  42. stage('运行 Kubectl') {
  43. container('kubectl') {
  44. echo "重启 pod"
  45. sh "kubectl rollout restart deployments/aihub-dag-backend -n ns-aihub-dag"
  46. }
  47. }
  48. }
  49. }
  50. //
  51. // pipeline {
  52. // agent { label 'jnlp-slave'}
  53. //
  54. // options {
  55. // buildDiscarder(logRotator(numToKeepStr: '10'))
  56. // disableConcurrentBuilds()
  57. // timeout(time: 20, unit: 'MINUTES')
  58. // gitLabConnection('gitlab')
  59. // }
  60. //
  61. // environment {
  62. // IMAGE_REPO = "112.29.146.236:5000/demo/myblog"
  63. // DINGTALK_CREDS = credentials('dingTalk')
  64. // TAB_STR = "\n \n "
  65. // }
  66. //
  67. // stages {
  68. // stage('git-log') {
  69. // steps {
  70. // script{
  71. // sh "git log --oneline -n 1 > gitlog.file"
  72. // env.GIT_LOG = readFile("gitlog.file").trim()
  73. // }
  74. // sh 'printenv'
  75. // }
  76. // }
  77. // stage('checkout') {
  78. // steps {
  79. // container('tools') {
  80. // checkout scm
  81. // }
  82. // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
  83. // script{
  84. // env.BUILD_TASKS = env.STAGE_NAME + "√..." + env.TAB_STR
  85. // }
  86. // }
  87. // }
  88. // stage('CI'){
  89. // failFast true
  90. // parallel {
  91. // stage('Unit Test') {
  92. // steps {
  93. // echo "Unit Test Stage Skip..."
  94. // }
  95. // }
  96. // stage('Code Scan') {
  97. // steps {
  98. // container('tools') {
  99. // withSonarQubeEnv('sonarqube') {
  100. // sh 'sonar-scanner -X'
  101. // sleep 3
  102. // }
  103. // script {
  104. // timeout(1) {
  105. // def qg = waitForQualityGate('sonarqube')
  106. // if (qg.status != 'OK') {
  107. // error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}"
  108. // }
  109. // }
  110. // }
  111. // }
  112. // }
  113. // }
  114. // }
  115. // }
  116. // stage('build-image') {
  117. // steps {
  118. // container('tools') {
  119. // retry(2) { sh 'docker build . -t ${IMAGE_REPO}:${GIT_COMMIT}'}
  120. // }
  121. // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
  122. // script{
  123. // env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
  124. // }
  125. // }
  126. // }
  127. // stage('push-image') {
  128. // steps {
  129. // container('tools') {
  130. // retry(2) { sh 'docker push ${IMAGE_REPO}:${GIT_COMMIT}'}
  131. // }
  132. // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
  133. // script{
  134. // env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
  135. // }
  136. // }
  137. // }
  138. // stage('deploy') {
  139. // steps {
  140. // container('tools') {
  141. // sh "sed -i 's#{{IMAGE_URL}}#${IMAGE_REPO}:${GIT_COMMIT}#g' deploy/*"
  142. // timeout(time: 1, unit: 'MINUTES') {
  143. // sh "kubectl apply -f deploy/"
  144. // }
  145. // }
  146. // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
  147. // script{
  148. // env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
  149. // }
  150. // }
  151. // }
  152. // }
  153. // post {
  154. // success {
  155. // echo 'Congratulations!'
  156. // sh """
  157. // curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \
  158. // -H 'Content-Type: application/json' \
  159. // -d '{
  160. // "msgtype": "markdown",
  161. // "markdown": {
  162. // "title":"myblog",
  163. // "text": "😄👍 构建成功 👍😄 \n**项目名称**:jairmir \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}"
  164. // }
  165. // }'
  166. // """
  167. // }
  168. // failure {
  169. // echo 'Oh no!'
  170. // sh """
  171. // curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \
  172. // -H 'Content-Type: application/json' \
  173. // -d '{
  174. // "msgtype": "markdown",
  175. // "markdown": {
  176. // "title":"myblog",
  177. // "text": "😖❌ 构建失败 ❌😖 \n**项目名称**:jairmir \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}"
  178. // }
  179. // }'
  180. // """
  181. // }
  182. // always {
  183. // echo 'I will always say Hello again!'
  184. // }
  185. // }
  186. // }