1、私库harbor

1.1 Jenkinsfile配置environment


environment {
DOCKER_CREDENTIAL_ID = 'harbor-admin-id' // 你要在KubeSphere凭证里新建【账号密码凭证】,ID填这个
REGISTRY = '192.168.91.164' // Harbor地址,不要带https、不要加端口(默认443)
DOCKERHUB_NAMESPACE = 'ruoyi' // Harbor里提前建好的项目名称
APP_NAME = 'ruoyi-auth'
}
1.2 jdk上传harbor库【192.168.91.164】
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:8-jdk
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openjdk:8-jdk 192.168.91.164/ruoyi/openjdk:8-jdk
#########用户密码#####admin/****ld
docker login 192.168.91.164 -u admin -p ****ld
docker push 192.168.91.164/ruoyi/openjdk:8-jdk

1.3

2、克隆代码
https://gitee.com/smallfa/ruoyi-cloud.git
ls -l









运行测试


3、项目编译打包
ls -l
mvn package

运行测试



4、打包镜像
4.1 构建ruoyi-auth镜像
ls ruoyi-auth -l
docker build -t ruoyi-auth:latest -f ruoyi-auth/dockerfile ruoyi-auth
DOCKER_BUILDKIT=0 docker build -t ruoyi-auth:latest -f ruoyi-auth/dockerfile ruoyi-auth
注:DOCKER_BUILDKIT=0 关闭 Buildx,使用传统 docker 构建




运行测试


运行出现问题


解决方法
DOCKER_BUILDKIT=0 docker build -t ruoyi-auth:latest -f ruoyi-auth/dockerfile ruoyi-auth
注:新增容器docker及参数DOCKER_BUILDKIT=0【关闭 Buildx,使用传统 docker 构建】


4.2 构建ruoyi-file镜像
ls ruoyi-modules/ruoyi-file -l
DOCKER_BUILDKIT=0 docker build -t ruoyi-file:latest -f ruoyi-modules/ruoyi-file/dockerfile ruoyi-modules/ruoyi-file
注:DOCKER_BUILDKIT=0 关闭 Buildx,使用传统 docker 构建

运行测试



4.3 构建ruoyi-gateway镜像
ls ruoyi-gateway -l
DOCKER_BUILDKIT=0 docker build -t ruoyi-gateway:latest -f ruoyi-gateway/dockerfile ruoyi-gateway
注:DOCKER_BUILDKIT=0 关闭 Buildx,使用传统 docker 构建

4.4 构建ruoyi-job镜像
ls ruoyi-modules/ruoyi-job -l
DOCKER_BUILDKIT=0 docker build -t ruoyi-job:latest -f ruoyi-modules/ruoyi-job/dockerfile ruoyi-modules/ruoyi-job
注:DOCKER_BUILDKIT=0 关闭 Buildx,使用传统 docker 构建

4.5 构建ruoyi-monitor镜像
ls ruoyi-visual/ruoyi-monitor -l
DOCKER_BUILDKIT=0 docker build -t ruoyi-monitor:latest -f ruoyi-visual/ruoyi-monitor/dockerfile ruoyi-visual/ruoyi-monitor

4.6 构建ruoyi-system镜像
ls ruoyi-modules/ruoyi-system -l
DOCKER_BUILDKIT=0 docker build -t ruoyi-system:latest -f ruoyi-modules/ruoyi-system/dockerfile ruoyi-modules/ruoyi-system

测试运行



5、推送镜像

environment {
DOCKER_CREDENTIAL_ID = 'harbor-admin-id' // 你要在KubeSphere凭证里新建【账号密码凭证】,ID填这个
REGISTRY = '192.168.91.164' // Harbor地址,不要带https、不要加端口(默认443)
DOCKERHUB_NAMESPACE = 'ruoyi' // Harbor里提前建好的项目名称
APP_NAME = 'ruoyi-auth'
}
$BUILD_NUMBER对应值运行ID

docker pull http要配置 "insecure-registries":["192.168.1.10:5000"]
docker直接推送到http库的,每个node节点都配置/etc/daemon.json 文件

systemctl daemon-reload
systemctl restart docker

5.1 推送ruoyi-auth镜像
###打包tag
docker tag ruoyi-auth:latest $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-auth:SNAPSHOT-$BUILD_NUMBER
####推送ruoyi-auth镜像
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-auth:SNAPSHOT-$BUILD_NUMBER
docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-auth:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-auth:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-auth:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}





运行测试



5.2推送ruoyi-file镜像
###打包tag
docker tag ruoyi-file:latest $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-file:SNAPSHOT-$BUILD_NUMBER
####推送ruoyi-file镜像
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-gateway:SNAPSHOT-$BUILD_NUMBER
docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-file:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-file:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-file:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}



测试运行



5.3、
###打包tag
docker tag ruoyi-gateway:latest $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-gateway:SNAPSHOT-$BUILD_NUMBER
####推送ruoyi-gateway镜像
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-gateway:SNAPSHOT-$BUILD_NUMBER
docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-gateway:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-gateway:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-gateway:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}

5.4
###打包tag
docker tag ruoyi-job:latest $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-job:SNAPSHOT-$BUILD_NUMBER
####推送ruoyi-job镜像
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-job:SNAPSHOT-$BUILD_NUMBER
docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-job:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-job:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-job:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}

5.5
###打包tag
docker tag ruoyi-monitor:latest $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-monitor:SNAPSHOT-$BUILD_NUMBER
####推送ruoyi-monitor镜像
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-monitor:SNAPSHOT-$BUILD_NUMBER
docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-monitor:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-monitor:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-monitor:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}

5.6
###打包tag
docker tag ruoyi-system:latest $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-system:SNAPSHOT-$BUILD_NUMBER
####推送ruoyi-system镜像
docker push $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-system:SNAPSHOT-$BUILD_NUMBER
docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-monitor:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-monitor:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-monitor:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}

运行测试




6、项目部署
deploy.yml

kubeconfig凭证

6.1 部署ruoyi-monitor服务
获取kube配置
mkdir -p ~/.kube/
echo "$KUBECONFIG_CONFIG" > ~/.kube/config
envsubst < ruoyi-visual/ruoyi-monitor/deploy/deploy.yml | kubectl apply -f -


运行测试

测试结果



6.2 部署ruoyi-system服务
mkdir -p ~/.kube/
echo "$KUBECONFIG_CONFIG" > ~/.kube/config
envsubst < ruoyi-modules/ruoyi-system/deploy/deploy.yml | kubectl apply -f -

6.3 部署ruoyi-job服务
mkdir -p ~/.kube/
echo "$KUBECONFIG_CONFIG" > ~/.kube/config
envsubst < ruoyi-modules/ruoyi-job/deploy/deploy.yml | kubectl apply -f -

6.4 部署ruoyi-gateway服务
mkdir -p ~/.kube/
echo "$KUBECONFIG_CONFIG" > ~/.kube/config
envsubst < ruoyi-gateway/deploy/deploy.yml | kubectl apply -f -

6.5 部署ruoyi-file服务
mkdir -p ~/.kube/
echo "$KUBECONFIG_CONFIG" > ~/.kube/config
envsubst < ruoyi-modules/ruoyi-file/deploy/deploy.yml | kubectl apply -f -

6.6 部署ruoyi-auth服务
mkdir -p ~/.kube/
echo "$KUBECONFIG_CONFIG" > ~/.kube/config
envsubst < ruoyi-auth/deploy/deploy.yml | kubectl apply -f -

运行测试




6.7 出现问题1

额外增加一个kubectl容器
agent {
kubernetes {
yaml '''apiVersion: v1
kind: Pod
spec:
containers:
- name: maven
image: maven:3.8-openjdk-11
command: ['cat']
tty: true
- name: docker
image: docker:24.0
command: ['cat']
tty: true
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
# 新增kubectl容器,自带envsubst(kubectl镜像内置gettext)
- name: kubectl
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kubectl:1.28
command: ['cat']
tty: true
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock'''
defaultContainer 'maven'
}
}
出现问题2


找到 JAVA_TOOL_OPTIONS 的 value 末尾,追加:
-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true
-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.USE_BINARY_WRAPPER=true

出现问题3




agent {
kubernetes {
yaml '''apiVersion: v1
kind: Pod
spec:
securityContext: #容器强制以 root 运行
runAsUser: 0
fsGroup: 0
volumes:
- name: workspace-volume
emptyDir: {} # Pod销毁自动清理,多容器之间共享工作目录
- name: docker-sock
hostPath:
path: /var/run/docker.sock
containers:
- name: maven
image: maven:3.8-openjdk-11
command: ['cat']
tty: true
volumeMounts:
- name: workspace-volume
mountPath: /home/jenkins/agent
- name: docker
image: docker:24.0
command: ['sleep', 'infinity']
tty: true
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
- name: workspace-volume
mountPath: /home/jenkins/agent
- name: kubectl
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kubectl:1.28
command: ["/bin/sh"]
args: ["-c", "while true; do sleep 3600; done"]
tty: true
volumeMounts:
# 关键!kubectl容器必须挂载这个共享卷
- name: workspace-volume
mountPath: /home/jenkins/agent
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock'''
defaultContainer 'maven'
}
}
7、ruoyi-gateway-nodeport







8、后端访问
http://192.168.91.166:32147/

9、前端访问



10、流水线编辑
pipeline {
agent {
kubernetes {
yaml '''apiVersion: v1
kind: Pod
spec:
securityContext: #容器强制以 root 运行
runAsUser: 0
fsGroup: 0
volumes:
- name: workspace-volume
emptyDir: {} # Pod销毁自动清理,多容器之间共享工作目录
- name: docker-sock
hostPath:
path: /var/run/docker.sock
containers:
- name: maven
image: maven:3.8-openjdk-11
command: ['cat']
tty: true
resources:
requests:
cpu: 1000m
memory: 2Gi
limits:
cpu: 2000m
memory: 4Gi
volumeMounts:
- name: workspace-volume
mountPath: /home/jenkins/agent
- name: docker
image: docker:24.0
command: ['sleep', 'infinity']
tty: true
resources:
requests:
cpu: 200m
memory: 512Mi
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
- name: workspace-volume
mountPath: /home/jenkins/agent
- name: kubectl
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kubectl:1.28
command: ["/bin/sh"]
args: ["-c", "while true; do sleep 3600; done"]
tty: true
volumeMounts:
# 关键!kubectl容器必须挂载这个共享卷
- name: workspace-volume
mountPath: /home/jenkins/agent
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock'''
defaultContainer 'maven'
}
}
stages {
stage('克隆代码') {
agent none
steps {
container('maven') {
git(url: 'https://gitee.com/smallfa/RuoYi-Cloud.git', credentialsId: '', branch: 'master', changelog: true, poll: false)
sh 'ls -l'
}
}
}
stage('项目编译打包') {
agent none
steps {
container('maven') {
sh 'ls -l'
sh 'mvn package'
}
}
}
stage('d5dptz') {
parallel {
stage('1 构建ruoyi-auth镜像') {
agent none
steps {
container('docker') {
sh 'ls ruoyi-auth -l'
sh 'DOCKER_BUILDKIT=0 docker build -t ruoyi-auth:latest -f ruoyi-auth/dockerfile ruoyi-auth'
}
}
}
stage('2 构建ruoyi-file镜像') {
agent none
steps {
container('docker') {
sh 'ls ruoyi-modules/ruoyi-file -l'
sh 'DOCKER_BUILDKIT=0 docker build -t ruoyi-file:latest -f ruoyi-modules/ruoyi-file/dockerfile ruoyi-modules/ruoyi-file'
}
}
}
stage('3 构建ruoyi-gateway镜像') {
agent none
steps {
container('docker') {
sh 'ls ruoyi-gateway -l'
sh 'DOCKER_BUILDKIT=0 docker build -t ruoyi-gateway:latest -f ruoyi-gateway/dockerfile ruoyi-gateway'
}
}
}
stage('4 构建ruoyi-job镜像') {
agent none
steps {
container('docker') {
sh 'ls ruoyi-modules/ruoyi-job -l'
sh 'DOCKER_BUILDKIT=0 docker build -t ruoyi-job:latest -f ruoyi-modules/ruoyi-job/dockerfile ruoyi-modules/ruoyi-job'
}
}
}
stage('5 构建ruoyi-monitor镜像') {
agent none
steps {
container('docker') {
sh 'ls ruoyi-visual/ruoyi-monitor -l'
sh 'DOCKER_BUILDKIT=0 docker build -t ruoyi-monitor:latest -f ruoyi-visual/ruoyi-monitor/dockerfile ruoyi-visual/ruoyi-monitor'
}
}
}
stage('6 构建ruoyi-system镜像') {
agent none
steps {
container('docker') {
sh 'ls ruoyi-modules/ruoyi-system -l'
sh 'DOCKER_BUILDKIT=0 docker build -t ruoyi-system:latest -f ruoyi-modules/ruoyi-system/dockerfile ruoyi-modules/ruoyi-system'
}
}
}
}
}
stage('8gx6oa') {
parallel {
stage('1.推送ruoyi-auth镜像') {
agent none
steps {
withCredentials([usernamePassword(
credentialsId: 'harbor-admin-id',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PWD'
)]) {
container('docker') {
sh '''
docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-auth:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-auth:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-auth:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}
'''
}
}
}
}
stage('2.推送ruoyi-file镜像') {
agent none
steps {
withCredentials([usernamePassword(
credentialsId: 'harbor-admin-id',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PWD'
)]) {
container('docker') {
sh '''docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-file:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-file:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-file:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}'''
}
}
}
}
stage('3.推送ruoyi-gateway镜像') {
agent none
steps {
withCredentials([usernamePassword(
credentialsId: 'harbor-admin-id',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PWD'
)]) {
container('docker') {
sh '''docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-gateway:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-gateway:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-gateway:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}'''
}
}
}
}
stage('4.推送ruoyi-job镜像') {
agent none
steps {
withCredentials([usernamePassword(
credentialsId: 'harbor-admin-id',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PWD'
)]) {
container('docker') {
sh '''docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-job:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-job:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-job:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}'''
}
}
}
}
stage('5.推送ruoyi-monitor镜像') {
agent none
steps {
withCredentials([usernamePassword(
credentialsId: 'harbor-admin-id',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PWD'
)]) {
container('docker') {
sh '''docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-monitor:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-monitor:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-monitor:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}'''
}
}
}
}
stage('6.推送ruoyi-system镜像') {
agent none
steps {
withCredentials([usernamePassword(
credentialsId: 'harbor-admin-id',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PWD'
)]) {
container('docker') {
sh '''docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PWD}
docker tag ruoyi-system:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-system:SNAPSHOT-${BUILD_NUMBER}
docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-system:SNAPSHOT-${BUILD_NUMBER}
docker logout ${REGISTRY}'''
}
}
}
}
}
}
stage('sw7m1u') {
parallel {
stage('1.部署ruoyi-monitor服务') {
agent none
steps {
container('kubectl') {
withCredentials([kubeconfigContent(credentialsId: 'demo-kubeconfig', variable: 'KUBECONFIG_CONFIG')]) {
sh 'mkdir -p ~/.kube/'
sh 'echo "$KUBECONFIG_CONFIG" > ~/.kube/config'
sh 'envsubst < ruoyi-visual/ruoyi-monitor/deploy/deploy.yml | kubectl apply -f -'
}
}
}
}
stage('2.部署ruoyi-system服务') {
agent none
steps {
container('kubectl') {
withCredentials([kubeconfigContent(credentialsId: 'demo-kubeconfig', variable: 'KUBECONFIG_CONFIG')]) {
sh 'mkdir -p ~/.kube/'
sh 'echo "$KUBECONFIG_CONFIG" > ~/.kube/config'
sh 'envsubst < ruoyi-modules/ruoyi-system/deploy/deploy.yml | kubectl apply -f -'
}
}
}
}
stage('3.部署ruoyi-job服务') {
agent none
steps {
container('kubectl') {
withCredentials([kubeconfigContent(credentialsId: 'demo-kubeconfig', variable: 'KUBECONFIG_CONFIG')]) {
sh 'mkdir -p ~/.kube/'
sh 'echo "$KUBECONFIG_CONFIG" > ~/.kube/config'
sh 'envsubst < ruoyi-modules/ruoyi-job/deploy/deploy.yml | kubectl apply -f -'
}
}
}
}
stage('4.部署ruoyi-gateway服务') {
agent none
steps {
container('kubectl') {
withCredentials([kubeconfigContent(credentialsId: 'demo-kubeconfig', variable: 'KUBECONFIG_CONFIG')]) {
sh 'mkdir -p ~/.kube/'
sh 'echo "$KUBECONFIG_CONFIG" > ~/.kube/config'
sh 'envsubst < ruoyi-gateway/deploy/deploy.yml | kubectl apply -f -'
}
}
}
}
stage('5.部署ruoyi-file服务') {
agent none
steps {
container('kubectl') {
withCredentials([kubeconfigContent(credentialsId: 'demo-kubeconfig', variable: 'KUBECONFIG_CONFIG')]) {
sh 'mkdir -p ~/.kube/'
sh 'echo "$KUBECONFIG_CONFIG" > ~/.kube/config'
sh 'envsubst < ruoyi-modules/ruoyi-file/deploy/deploy.yml | kubectl apply -f -'
}
}
}
}
stage('6.部署ruoyi-auth服务') {
agent none
steps {
container('kubectl') {
withCredentials([kubeconfigContent(credentialsId: 'demo-kubeconfig', variable: 'KUBECONFIG_CONFIG')]) {
sh 'mkdir -p ~/.kube/'
sh 'echo "$KUBECONFIG_CONFIG" > ~/.kube/config'
sh 'envsubst < ruoyi-auth/deploy/deploy.yml | kubectl apply -f -'
}
}
}
}
}
}
stage('deploy to production') {
steps {
container('maven') {
input(id: 'deploy-to-production', message: 'deploy to production?')
withCredentials([kubeconfigContent(credentialsId: 'KUBECONFIG_CREDENTIAL_ID', variable: 'KUBECONFIG_CONFIG', )]) {
sh 'mkdir -p ~/.kube/'
sh 'echo "$KUBECONFIG_CONFIG" > ~/.kube/config'
sh 'envsubst < deploy/prod-ol/deploy.yaml | kubectl apply -f -'
}
}
}
}
}
environment {
DOCKER_CREDENTIAL_ID = 'harbor-admin-id'
REGISTRY = '192.168.91.164'
DOCKERHUB_NAMESPACE = 'ruoyi'
APP_NAME = 'ruoyi-auth'
}
parameters {
string(name: 'TAG_NAME', defaultValue: '', description: '')
}
}
11、出现问题

编辑流水线---》确定后 若如下显示

请点击【编辑Jenkinsfile】后---》再点保存;或保存无效,可以多次【编辑Jenkinsfile】保存

再点保存后,【编辑流水线】可以正常显示

浙公网安备 33010602011771号