微服务项目部署之流水线编写
一、部署微服务项目环境说明
1.1 代码托管到gitee
1.2 镜像托管到dockerhub
powershell
用户名:nextgomsb
密码:abc***.com
1.3 流水线工具 KubeSphere
二、通过KubeSphere部署之拉取代码流水线编写
2.1 准备凭证
2.2 编辑流水线
powershell
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('获取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
}
}
}
}
2.3 测试流水线是否可以拉取项目代码
三、通过KubeSphere部署之参数化构建及环境变量设定
3.1 参数化构建
powershell
在流水线中添加如下内容:
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
powershell
添加后的流水线内容:
pipeline {
agent {
node {
label 'maven'
}
}
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
stages {
stage('获取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
}
}
}
}
测试是否可行
验证在流水线中接收情况
powershell
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('获取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
sh '''echo $PROJECT_NAME
echo $PROJECT_VERSION'''
}
}
}
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
}
创建构建参数选项
3.2 环境变量设定
3.2.1 凭证创建
3.2.1.1 dockerhub-id
3.2.1.2 kubeconfig
3.2.1.3 sonar-qube
sonar-qube部署及使用请参考上面的视频。
powershell
sonar管理员令牌:4f1b3ad13420f738926140bcb110758f96aa5eac 新令牌:d19390c45296be3c44ca2cb902ffda01bd0d8d96
3.2.2 添加环境变量到jenkinsfile
powershell
environment {
DOCKER_CREDENTIAL_ID = 'dockerhub-id'
GITEE_CREDENTIAL_ID = 'gitee-id'
KUBECONFIG_CREDENTIAL_ID= 'sangomall-kubeconfig'
REGISTRY = 'docker.io'
DOCKERHUB_NAMESPACE = 'nextgomsb'
GITEE_ACCOUNT = 'nextgomsb'
SONAR_CREDENTIAL_ID = 'sonar-qube'
}
powershell
添加后的内容:
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('获取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
sh '''echo $PROJECT_NAME
echo $PROJECT_VERSION'''
}
}
}
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
environment {
DOCKER_CREDENTIAL_ID = 'dockerhub-id'
GITEE_CREDENTIAL_ID = 'gitee-id'
KUBECONFIG_CREDENTIAL_ID= 'sangomall-kubeconfig'
REGISTRY = 'docker.io'
DOCKERHUB_NAMESPACE = 'nextgomsb'
GITEE_ACCOUNT = 'nextgomsb'
SONAR_CREDENTIAL_ID = 'sonar-qube'
}
}
四、通过KubeSphere部署之Sonar集成至流水线编写
sonarqube集成可参考前操作步骤实施。
powershell
echo 当前目录 `pwd`
powershell
mvn sonar:sonar -gs `pwd`/mvn_settings.xml -Dsonar.login=$SONAR_TOKEN
powershell
添加sonarqube后流水线内容:
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('获取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
sh '''echo $PROJECT_NAME
echo $PROJECT_VERSION'''
}
}
stage('项目代码分析') {
agent none
steps {
container('maven') {
withCredentials([string(credentialsId : 'sonar-qube' ,variable : 'SONAR_TOKEN' ,)]) {
withSonarQubeEnv('sonar') {
sh 'echo 当前目录 `pwd`'
sh 'mvn clean install -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'mvn sonar:sonar -gs `pwd`/mvn_settings.xml -Dsonar.login=$SONAR_TOKEN'
}
}
timeout(unit: 'HOURS', activity: true, time: 1) {
waitForQualityGate 'true'
}
}
}
}
}
environment {
DOCKER_CREDENTIAL_ID = 'dockerhub-id'
GITEE_CREDENTIAL_ID = 'gitee-id'
KUBECONFIG_CREDENTIAL_ID = 'sangomall-kubeconfig'
REGISTRY = 'docker.io'
DOCKERHUB_NAMESPACE = 'nextgomsb'
GITEE_ACCOUNT = 'nextgomsb'
SONAR_CREDENTIAL_ID = 'sonar-qube'
}
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
}
五、通过KubeSphere部署之单元测试集成至流水线编写
powershell
mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml
powershell
添加单元测试后jenkinsfile内容:
添加sonarqube后流水线内容:
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('获取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
sh '''echo $PROJECT_NAME
echo $PROJECT_VERSION'''
}
}
stage('项目代码分析') {
agent none
steps {
container('maven') {
withCredentials([string(credentialsId : 'sonar-qube' ,variable : 'SONAR_TOKEN' ,)]) {
withSonarQubeEnv('sonar') {
sh 'echo 当前目录 `pwd`'
sh 'mvn clean install -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'mvn sonar:sonar -gs `pwd`/mvn_settings.xml -Dsonar.login=$SONAR_TOKEN'
}
}
timeout(unit: 'HOURS', activity: true, time: 1) {
waitForQualityGate 'true'
}
}
}
}
stage('单元测试') {
agent none
steps {
container('maven') {
sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
}
}
}
}
environment {
DOCKER_CREDENTIAL_ID = 'dockerhub-id'
GITEE_CREDENTIAL_ID = 'gitee-id'
KUBECONFIG_CREDENTIAL_ID = 'sangomall-kubeconfig'
REGISTRY = 'docker.io'
DOCKERHUB_NAMESPACE = 'nextgomsb'
GITEE_ACCOUNT = 'nextgomsb'
SONAR_CREDENTIAL_ID = 'sonar-qube'
}
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
}
六、通过KubeSphere部署之构建项目镜像及推送镜像至dockerhub流水线编写
powershell
mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml
powershell
cd $PROJECT_NAME && docker build -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER .
powershell
echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin
powershell
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER
powershell
添加构建与推送容器镜像后内容如下:
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('获取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
sh '''echo $PROJECT_NAME
echo $PROJECT_VERSION'''
}
}
stage('单元测试') {
agent none
steps {
container('maven') {
sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
}
}
}
stage('项目代码分析') {
agent none
steps {
container('maven') {
withCredentials([string(credentialsId : 'sonar-qube' ,variable : 'SONAR_TOKEN' ,)]) {
withSonarQubeEnv('sonar') {
sh 'echo 当前目录 `pwd`'
sh 'mvn clean install -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'mvn sonar:sonar -gs `pwd`/mvn_settings.xml -Dsonar.login=$SONAR_TOKEN'
}
}
timeout(unit: 'HOURS', activity: true, time: 1) {
waitForQualityGate 'true'
}
}
}
}
stage('构建并推送容器镜像') {
agent none
steps {
container('maven') {
sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'cd $PROJECT_NAME && docker build -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER .'
withCredentials([usernamePassword(credentialsId : 'dockerhub-id' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
sh 'echo $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER'
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER'
}
}
}
}
}
environment {
DOCKER_CREDENTIAL_ID = 'dockerhub-id'
GITEE_CREDENTIAL_ID = 'gitee-id'
KUBECONFIG_CREDENTIAL_ID = 'sangomall-kubeconfig'
REGISTRY = 'docker.io'
DOCKERHUB_NAMESPACE= 'nextgomsb'
GITEE_ACCOUNT = 'nextgomsb'
SONAR_CREDENTIAL_ID = 'sonar-qube'
}
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
}
推送最终容器镜像到DockerHub仓库
powershell
docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest
powershell
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest
powershell
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('获取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
sh '''echo $PROJECT_NAME
echo $PROJECT_VERSION'''
}
}
stage('单元测试') {
agent none
steps {
container('maven') {
sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
}
}
}
stage('项目代码分析') {
agent none
steps {
container('maven') {
withCredentials([string(credentialsId : 'sonar-qube' ,variable : 'SONAR_TOKEN' ,)]) {
withSonarQubeEnv('sonar') {
sh 'echo 当前目录 `pwd`'
sh 'mvn clean install -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'mvn sonar:sonar -gs `pwd`/mvn_settings.xml -Dsonar.login=$SONAR_TOKEN'
}
}
timeout(unit: 'HOURS', activity: true, time: 1) {
waitForQualityGate 'true'
}
}
}
}
stage('构建并推送容器镜像') {
agent none
steps {
container('maven') {
sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'cd $PROJECT_NAME && docker build -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER .'
withCredentials([usernamePassword(credentialsId : 'dockerhub-id' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
sh 'echo $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER'
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER'
sh 'docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
}
}
}
}
}
environment {
DOCKER_CREDENTIAL_ID = 'dockerhub-id'
GITEE_CREDENTIAL_ID = 'gitee-id'
KUBECONFIG_CREDENTIAL_ID = 'sangomall-kubeconfig'
REGISTRY = 'docker.io'
DOCKERHUB_NAMESPACE = 'nextgomsb'
GITEE_ACCOUNT = 'nextgomsb'
SONAR_CREDENTIAL_ID = 'sonar-qube'
}
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
}
七、通过KubeSphere部署之为项目发布准备对应版本的容器镜像
powershell
return params.PROJECT_VERSION =~ /v.*/
添加GITEE设置
powershell
git config --global user.email "nextgo@126.com"
powershell
git config --global user.name "nextgo"
powershell
git tag -a $PROJECT_VERSION -m "$PROJECT_VERSION"
powershell
git push http://$GITEE_USERNAME:$GITEE_PASSWORD@gitee.com/$GITEE_ACCOUNT/sangomall.git --tags --ipv4
添加dockerhub的配置
powershell
docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION
powershell
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION
powershell
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('获取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', branch: 'master', changelog: true, poll: false)
sh '''echo $PROJECT_NAME
echo $PROJECT_VERSION'''
}
}
stage('单元测试') {
agent none
steps {
container('maven') {
sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
}
}
}
stage('项目代码分析') {
agent none
steps {
container('maven') {
withCredentials([string(credentialsId : 'sonar-qube' ,variable : 'SONAR_TOKEN' ,)]) {
withSonarQubeEnv('sonar') {
sh 'echo 当前目录 `pwd`'
sh 'mvn clean install -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'mvn sonar:sonar -gs `pwd`/mvn_settings.xml -Dsonar.login=$SONAR_TOKEN'
}
}
timeout(unit: 'HOURS', activity: true, time: 1) {
waitForQualityGate 'true'
}
}
}
}
stage('构建并推送容器镜像') {
agent none
steps {
container('maven') {
sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'cd $PROJECT_NAME && docker build -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER .'
withCredentials([usernamePassword(credentialsId : 'dockerhub-id' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
sh 'echo $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER'
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER'
sh 'docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
}
}
}
}
stage('准备项目及镜像tag') {
agent none
when {
expression {
return params.PROJECT_VERSION =~ /v.*/
}
}
steps {
container('maven') {
input(message: '''@project-admin
是否提交带有tag的发布版本及容器镜像?''', submitter: 'project-admin')
withCredentials([usernamePassword(credentialsId : 'gitee-id' ,passwordVariable : 'GITEE_PASSWORD' ,usernameVariable : 'GITEE_USERNAME' ,)]) {
sh 'git config --global user.email "nextgo@126.com" '
sh 'git config --global user.name "nextgo"'
sh 'git tag -a $PROJECT_VERSION -m "$PROJECT_VERSION" '
sh 'git push http://$GITEE_USERNAME:$GITEE_PASSWORD@gitee.com/$GITEE_ACCOUNT/sangomall.git --tags --ipv4'
}
sh 'docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION '
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION'
}
}
}
}
environment {
DOCKER_CREDENTIAL_ID = 'dockerhub-id'
GITEE_CREDENTIAL_ID = 'gitee-id'
KUBECONFIG_CREDENTIAL_ID = 'sangomall-kubeconfig'
REGISTRY = 'docker.io'
DOCKERHUB_NAMESPACE = 'nextgomsb'
GITEE_ACCOUNT = 'nextgomsb'
SONAR_CREDENTIAL_ID = 'sonar-qube'
}
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
}
八、通过KubeSphere部署之项目部署流水线编写
powershell
mkdir ~/.kube
echo "$KUBECONFIG_CONTENT" > ~/.kube/config
envsubst < $PROJECT_NAME/deploy/deploy.yaml | kubectl apply -f -
九、创建项目jenkins文件
powershell
pipeline {
agent {
node {
label 'maven'
}
}
parameters {
string(name: 'PROJECT_VERSION', defaultValue: 'v1.0', description: '')
string(name: 'PROJECT_NAME', defaultValue: '', description: '')
}
environment {
DOCKER_CREDENTIAL_ID = 'dockerhub-id'
GITEE_CREDENTIAL_ID = 'gitee-id'
KUBECONFIG_CREDENTIAL_ID = 'sangomall-kubeconfig'
REGISTRY = 'docker.io'
DOCKERHUB_NAMESPACE = 'nextgomsb'
GITEE_ACCOUNT = 'nextgomsb'
SONAR_CREDENTIAL_ID = 'sonar-qube'
}
stages {
stage('拉取项目代码') {
agent none
steps {
git(url: 'https://gitee.com/nextgomsb/sangomall.git', credentialsId: 'gitee-id', changelog: true, poll: false)
}
}
stage('代码质量检查及分析') {
agent none
steps {
container('maven') {
withCredentials([string(credentialsId : 'sonar-qube' ,variable : 'SONAR_TOKEN' ,)]) {
withSonarQubeEnv('sonar') {
sh 'echo 当前目录 `pwd`'
sh 'mvn clean install -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'mvn sonar:sonar -gs `pwd`/mvn_settings.xml -Dsonar.login=$SONAR_TOKEN'
}
}
timeout(unit: 'HOURS', activity: true, time: 1) {
waitForQualityGate 'true'
}
}
}
}
stage('单元测试') {
agent none
steps {
container('maven') {
sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
}
}
}
stage('构建项目容器镜像及推送') {
agent none
steps {
container('maven') {
sh 'mvn clean package -Dmaven.test.skip=true -gs `pwd`/mvn_settings.xml'
sh 'cd $PROJECT_NAME && docker build -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER .'
withCredentials([usernamePassword(credentialsId : 'dockerhub-id' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER'
sh 'docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:latest'
}
}
}
}
stage('创建项目代码及容器镜像的发布版') {
agent none
when {
expression {
return params.PROJECT_VERSION =~ /v.*/
}
}
steps {
container('maven') {
input(message: '''@project-admin
是否允许推送本次项目代码及容器镜像的发布版?''', submitter: 'project-admin')
withCredentials([usernamePassword(credentialsId : 'gitee-id' ,passwordVariable : 'GITEE_PASSWORD' ,usernameVariable : 'GITEE_USERNAME' ,)]) {
sh 'git config --global user.email "nextgo@126.com" '
sh 'git config --global user.name "nextgo" '
sh 'git tag -a $PROJECT_VERSION -m "$PROJECT_VERSION" '
sh 'git push http://$GITEE_USERNAME:$GITEE_PASSWORD@gitee.com/$GITEE_ACCOUNT/sangomall.git --tags --ipv4'
}
sh 'docker tag $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION '
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION'
}
}
}
stage('部署微服务项目到K8S集群') {
agent none
steps {
input(message: '''@project-admin
是否允许发布微服务项目到K8S集群?''', submitter: 'project-admin')
container('maven') {
withCredentials([kubeconfigContent(credentialsId : 'sangomall-kubeconfig' ,variable : 'KUBECONFIG_CONTENT' ,)]) {
sh '''mkdir ~/.kube
echo "$KUBECONFIG_CONTENT" > ~/.kube/config
envsubst < $PROJECT_NAME/deploy/deploy.yaml | kubectl apply -f -'''
}
}
}
}
}
}