已解决pipeline { agent any environment { GIT_REPOSITORY="xxx" K8S_YAML="k8s/test-xxx-webapp.yaml" POD_NAME="test-xxx-webapp" DOCKER_USERNAME="xxx" DOCKER_PWD="xxx ALIYUN_DOCKER_HOST = 'xxx' ALIYUN_DOCKER_NAMESPACE="com-xxx" ALIYUN_DOCKER_REPOSITORY_NAME="webapp-test" K8S_CONFIG = credentials('test-xxx-k8s-config-text') } stages { stage("Clone") { agent any steps { echo "1.Clone Stage" // 删除文件夹 deleteDir() git branch: 'test', credentialsId: 'xxx', url: "${GIT_REPOSITORY}" script { // 获取git代码tag为docker仓库tag // GIT_TAG = sh(returnStdout: true,script: 'git describe --tags --always').trim() // 获取git提交hash做为docker仓库tag GIT_TAG = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim() DOCKER_REPOSITORY = "${ALIYUN_DOCKER_HOST}/${ALIYUN_DOCKER_NAMESPACE}/${ALIYUN_DOCKER_REPOSITORY_NAME}" // docker 阿里镜像仓库 DOCKER_REPOSITORY_TAG = "${DOCKER_REPOSITORY}:${GIT_TAG}" } } } stage("Test") { agent any steps { echo "2.Test Stage" } } stage("Build") { agent any steps { echo "3.Build Docker Image Stage" sh "docker build -t ${DOCKER_REPOSITORY_TAG} -f docker/Dockerfile ." } } stage("Push") { agent any steps { echo "4.Push Docker Image Stage" //推送Docker镜像,username 跟 password 为 阿里云容器镜像服务的账号密码 sh "docker login --username=${DOCKER_USERNAME} --password=${DOCKER_PWD} ${ALIYUN_DOCKER_HOST}" // 开始推送镜像 sh "docker push ${DOCKER_REPOSITORY_TAG}" // 删除生成的image //sh "docker rmi ${DOCKER_IMG_HOST}/${DOCKER_IMG_PATH}:${GIT_TAG}" // 删除jenkins生成的image sh ''' docker images | grep seaurl | awk '{print $3}' | xargs docker rmi -f ''' } } stage("Deploy") { agent { docker { image 'lwolf/helm-kubectl-docker' } } steps { echo "5.发布镜像" sh "mkdir -p ~/.kube" sh "echo ${K8S_CONFIG} | base64 -d > ~/.kube/config" sh "sed -i 's#<imagename>#${DOCKER_REPOSITORY_TAG}#g;s#<podname>#${POD_NAME}#g' ${K8S_YAML}" sh "kubectl apply -f ${K8S_YAML} -n xxx" } } } }
已解决