Jenkinsfile 6.8 KB

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