|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- def JOB_NAME = "${env.JOB_NAME}"
- def BUILD_NUMBER = "${env.BUILD_NUMBER}"
- def label = "jenkins-${JOB_NAME}-${BUILD_NUMBER}-${UUID.randomUUID().toString()}"
-
- def code_path = "api"
- def project_name = "pcm-coordinator-api"
-
- podTemplate(label: label, containers: [
- containerTemplate(name: 'golang', image: 'golang:1.20.2-alpine3.17', command: 'cat', ttyEnabled: true),
- containerTemplate(name: 'docker', image: 'docker:latest', command: 'cat', ttyEnabled: true),
- containerTemplate(name: 'kubectl', image: 'jcce/kubectl:1.23.7', command: 'cat', ttyEnabled: true)
- ], serviceAccount: 'jenkins', volumes: [
- hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')
- ]) {
- node(label) {
- // 镜像仓库地址
- // def registryUrl = "registry.cn-hangzhou.aliyuncs.com"
- def imageEndpoint = "jcce/${project_name}"
- stage('拉取代码') {
- checkout scmGit(branches: [[name: "*/${branches}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlink-zj', url: 'https://gitlink.org.cn/JointCloud/pcm-coordinator.git']])
- echo "获取commit_id 作为镜像标签"
- script {
- env.imageTag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
- env.image = "${registryUrl}/${imageEndpoint}:${imageTag}"
- env.imageLatest = "${registryUrl}/${imageEndpoint}:latest"
- }
- }
- // stage('代码编译打包') {
- // try {
- // container('golang') {
- // echo "代码编译打包阶段"
- // sh """
- // cd ${code_path}
- // export GOPROXY=https://goproxy.cn
- // CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ${project_name} ./pcm.go
- // """
- // }
- // } catch (exc) {
- // println "构建失败 - ${currentBuild.fullDisplayName}"
- // throw(exc)
- // }
- // }
- stage('构建 Docker 镜像') {
- withCredentials([[
- $class: 'UsernamePasswordMultiBinding',
- credentialsId: 'docker-auth',
- usernameVariable: 'DOCKER_USER',
- passwordVariable: 'DOCKER_PASSWORD'
- ]]) {
- container('docker') {
- echo "构建 Docker 镜像阶段"
- sh """
- docker login ${registryUrl} -u ${DOCKER_USER} -p ${DOCKER_PASSWORD}
- docker build -t ${image} -t ${imageLatest} -f ${code_path}/Dockerfile .
- docker push ${image}
- docker push ${imageLatest}
- docker rmi -f ${image} ${imageLatest}
- """
- }
- }
- }
- stage('运行 Kubectl 部署到k8s平台') {
- withCredentials([file(credentialsId: 'kubeconfig', variable: 'KUBECONFIG')]) {
- container('kubectl') {
- echo "部署应用"
- sh """
- mkdir -p ~/.kube && cp ${KUBECONFIG} ~/.kube/config
- cd ${code_path}
- sed -i 's#image_name#${image}#' ${project_name}.yaml
- sed -i 's#secret_name#${secret_name}#' ${project_name}.yaml
- sed -i 's#nacos_host#${nacos_host}#' ${project_name}.yaml
- cat ${project_name}.yaml
- kubectl apply -f ${project_name}.yaml
- """
- }
- }
- }
- stage('清理镜像') {
- container('docker') {
- sh """
- docker rmi -f ${image} ${imageLatest}
- """
- // cleanWs notFailBuild: true
- }
- }
- }
- }
|