def label = "slave-${UUID.randomUUID().toString()}" podTemplate(cloud: 'kubernetes', namespace:'devops',label: label, serviceAccount: 'jenkins',containers: [ containerTemplate(name: 'docker', image: 'docker:latest', command: 'cat', ttyEnabled: true), containerTemplate(name: 'kubectl', image: 'cnych/kubectl', command: 'cat', ttyEnabled: true) ],volumes: [ hostPathVolume(mountPath: '/home/jenkins/.kube', hostPath: '/root/.kube'), hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'), hostPathVolume(mountPath: '/etc/docker/daemon.json', hostPath: '/etc/docker/daemon.json') ], yaml: """ spec: nodeSelector: kubernetes.io/hostname: h249 hostalias: - ip: 192.168.199.31 hostnames: - "SXKJ" """ ) { node(label) { stage('构建 Docker 镜像') { git url: ' http://gogs.soaringnova.com/sxwl_DL/meta_be.git', branch: 'master' container('docker') { echo "构建 Docker 镜像阶段" retry(2) { sh "docker build -t SXKJ:32775/meta-app:latest --output type=docker ." } echo "build success" } } stage('Docker Push 镜像') { container('docker') { retry(2) { sh "docker push SXKJ:32775/meta-app:latest" } echo "Push success" } } stage('运行 Kubectl') { container('kubectl') { echo "重启 pod" sh "kubectl rollout restart deployments/app-be -n meta-demo" } } } } // // pipeline { // agent { label 'jnlp-slave'} // // options { // buildDiscarder(logRotator(numToKeepStr: '10')) // disableConcurrentBuilds() // timeout(time: 20, unit: 'MINUTES') // gitLabConnection('gitlab') // } // // environment { // IMAGE_REPO = "112.29.146.236:5000/demo/myblog" // DINGTALK_CREDS = credentials('dingTalk') // TAB_STR = "\n \n " // } // // stages { // stage('git-log') { // steps { // script{ // sh "git log --oneline -n 1 > gitlog.file" // env.GIT_LOG = readFile("gitlog.file").trim() // } // sh 'printenv' // } // } // stage('checkout') { // steps { // container('tools') { // checkout scm // } // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') // script{ // env.BUILD_TASKS = env.STAGE_NAME + "√..." + env.TAB_STR // } // } // } // stage('CI'){ // failFast true // parallel { // stage('Unit Test') { // steps { // echo "Unit Test Stage Skip..." // } // } // stage('Code Scan') { // steps { // container('tools') { // withSonarQubeEnv('sonarqube') { // sh 'sonar-scanner -X' // sleep 3 // } // script { // timeout(1) { // def qg = waitForQualityGate('sonarqube') // if (qg.status != 'OK') { // error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}" // } // } // } // } // } // } // } // } // stage('build-image') { // steps { // container('tools') { // retry(2) { sh 'docker build . -t ${IMAGE_REPO}:${GIT_COMMIT}'} // } // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') // script{ // env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR // } // } // } // stage('push-image') { // steps { // container('tools') { // retry(2) { sh 'docker push ${IMAGE_REPO}:${GIT_COMMIT}'} // } // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') // script{ // env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR // } // } // } // stage('deploy') { // steps { // container('tools') { // sh "sed -i 's#{{IMAGE_URL}}#${IMAGE_REPO}:${GIT_COMMIT}#g' deploy/*" // timeout(time: 1, unit: 'MINUTES') { // sh "kubectl apply -f deploy/" // } // } // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') // script{ // env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR // } // } // } // } // post { // success { // echo 'Congratulations!' // sh """ // curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \ // -H 'Content-Type: application/json' \ // -d '{ // "msgtype": "markdown", // "markdown": { // "title":"myblog", // "text": "😄👍 构建成功 👍😄 \n**项目名称**:jairmir \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}" // } // }' // """ // } // failure { // echo 'Oh no!' // sh """ // curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \ // -H 'Content-Type: application/json' \ // -d '{ // "msgtype": "markdown", // "markdown": { // "title":"myblog", // "text": "😖❌ 构建失败 ❌😖 \n**项目名称**:jairmir \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}" // } // }' // """ // } // always { // echo 'I will always say Hello again!' // } // } // }