Dict.CN 在线词典, 英语学习, 在线翻译 ------------- MyGitee My腾云code My51cto

Happy_EveryDay

可以平凡 不可以平庸 无爱则无忧,无欲则无求,无怒而无敌,无怨才是佛。所有烦恼,都是放不下的执著 开源技群 328035181 MyGitee

博客园 首页 新随笔 管理

1、私库harbor

 

image

 1.1 Jenkinsfile配置environment 


 

image

 

 

image

 

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

image

 

 

1.3 

image

 

  

 

2、克隆代码

https://gitee.com/smallfa/ruoyi-cloud.git

ls -l

image

 

image

 

image

 image

image

 

image

 

image

 

image

 

image

 

 

 

 

 

 

 

 运行测试

image

 

image

 

 

 

 

 3、项目编译打包

ls -l

mvn package

 

image

 

 

 

  运行测试

image

 

 image

 image

 

 

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 构建

image

 

image

image

 

image

 

 

 运行测试

image

 

image

 

 

 

 

 

 

 

 

 

 

 运行出现问题

 

image

image

 

解决方法 

DOCKER_BUILDKIT=0 docker build -t ruoyi-auth:latest -f ruoyi-auth/dockerfile ruoyi-auth

注:新增容器docker及参数DOCKER_BUILDKIT=0【关闭 Buildx,使用传统 docker 构建】

image

 

image

 

 

 

 

 

 

 

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 构建

 

image

 

运行测试

image

 

image

 

image

 

 

 

 

 

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 构建

image

 

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 构建

 

AN8E3U{5$2K5~3}HT4W_%IT

 

 

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

image

 

 

 

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

 

image

 

 测试运行

 

image

 

image

 

image

 

 

 

5、推送镜像

image

 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

image

 docker pull http要配置 "insecure-registries":["192.168.1.10:5000"]

docker直接推送到http库的,每个node节点都配置/etc/daemon.json 文件

image

 

systemctl daemon-reload
systemctl restart docker

image

 

 

 

 

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}

 

image

 

image

 

image

 

image

 

 

 

 

image

 

运行测试

image

 

image

 

 

image

 

 

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}

 

 

image

 

image

 

image

 测试运行

image

 

image

 

image

 

 

 

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}

 

image

 

 

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}

 

image

 

 

 

 

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}

 

image

 

 

 

 

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}

 

image

 运行测试

image

 

image

 

image

 

image

 

 

 

 

 

6、项目部署

 deploy.yml

image

 kubeconfig凭证

image

 

 

6.1 部署ruoyi-monitor服务

获取kube配置

mkdir -p ~/.kube/

echo "$KUBECONFIG_CONFIG" > ~/.kube/config

envsubst < ruoyi-visual/ruoyi-monitor/deploy/deploy.yml | kubectl apply -f -

 

 

 

image

 

image

 

 

 运行测试

image

 测试结果

 

image

 

image

 

image

 

 

 

 

 

 

 

 

 

 

 6.2 部署ruoyi-system服务

mkdir -p ~/.kube/

echo "$KUBECONFIG_CONFIG" > ~/.kube/config

envsubst < ruoyi-modules/ruoyi-system/deploy/deploy.yml | kubectl apply -f -

 

image

 

 

 

 

 6.3 部署ruoyi-job服务

mkdir -p ~/.kube/

echo "$KUBECONFIG_CONFIG" > ~/.kube/config

envsubst < ruoyi-modules/ruoyi-job/deploy/deploy.yml | kubectl apply -f -

image

 

 

 

 6.4 部署ruoyi-gateway服务

mkdir -p ~/.kube/

echo "$KUBECONFIG_CONFIG" > ~/.kube/config

envsubst < ruoyi-gateway/deploy/deploy.yml | kubectl apply -f -

 

image

 

 6.5 部署ruoyi-file服务

mkdir -p ~/.kube/

echo "$KUBECONFIG_CONFIG" > ~/.kube/config

envsubst < ruoyi-modules/ruoyi-file/deploy/deploy.yml | kubectl apply -f -

image

 

 6.6 部署ruoyi-auth服务

mkdir -p ~/.kube/

echo "$KUBECONFIG_CONFIG" > ~/.kube/config

envsubst < ruoyi-auth/deploy/deploy.yml | kubectl apply -f -

 

image

 运行测试

 

image

 

image

 

image

 

image

 

 

 

 

 

6.7 出现问题1

image

 额外增加一个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

image

 

image

 

找到 JAVA_TOOL_OPTIONS 的 value 末尾,追加:

-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true

-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.USE_BINARY_WRAPPER=true 

image

 

 出现问题3

image

 

image

 

image

 

image

 

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

image

 

image

 

image

 

image

 

image

 

image

 

image

 

 

 

 

8、后端访问

http://192.168.91.166:32147/

image

 9、前端访问

 

 

 

image

 

 

image

 

image

 

 

 

 

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、出现问题

image

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

 

image

 

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

image

 

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

image

 

 

参考:devOps部署(已录制) (wolai.com)

posted on 2026-09-21 16:12  2026cn  阅读(12)  评论(0)    收藏  举报