1、配置


apiVersion: v1
kind: Pod
spec:
containers:
- name: maven
image: maven:3.8-openjdk-11
command: ['cat']
tty: true
volumeMounts:
- 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: ['sleep', 'infinity']
tty: true
stdin: true
securityContext:
runAsUser: 0 # ← 新增:以 root 运行,保证可写 workspace
resources:
requests:
cpu: 100m
memory: 128Mi
volumeMounts:
- name: workspace-volume
mountPath: /home/jenkins/agent
- name: docker
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/docker:24-cli
command: ['cat']
resources:
requests:
cpu: 200m
memory: 512Mi
tty: true
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
- name: workspace-volume
mountPath: /home/jenkins/agent
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock
- name: workspace-volume
emptyDir: {}
environment {
DOCKER_CREDENTIAL_ID = 'harbor-admin-id'
REGISTRY = '192.168.91.164'
DOCKERHUB_NAMESPACE = 'ruoyi'
APP_NAME = 'ruoyi-auth'
}
2、克隆

3、编译

4、打镜像




6、推镜像




7、部署




8、测试



9、Jenkinsfile
脚本
pipeline {
agent {
kubernetes {
yaml '''apiVersion: v1
kind: Pod
spec:
containers:
- name: maven
image: maven:3.8-openjdk-11
command: ['cat']
tty: true
volumeMounts:
- 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: ['sleep', 'infinity']
tty: true
stdin: true
securityContext:
runAsUser: 0 # ← 新增:以 root 运行,保证可写 workspace
resources:
requests:
cpu: 100m
memory: 128Mi
volumeMounts:
- name: workspace-volume
mountPath: /home/jenkins/agent
- name: docker
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/docker:24-cli
command: ['cat']
resources:
requests:
cpu: 200m
memory: 512Mi
tty: true
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
- name: workspace-volume
mountPath: /home/jenkins/agent
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock
- name: workspace-volume
emptyDir: {}'''
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)
}
}
}
stage('项目编译打包') {
agent none
steps {
container('maven') {
sh 'ls -l'
sh 'mvn package'
}
}
}
stage('xky6j0') {
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('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('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('qn27q1') {
parallel {
stage('1.推送ruoyi-auth镜像') {
agent none
steps {
withCredentials([usernamePassword(credentialsId: 'harbor-admin-id', passwordVariable: 'harbor_pwd', usernameVariable: 'harbor_user')]) {
container('docker') {
sh 'docker login ${REGISTRY} -u ${harbor_user} -p ${harbor_pwd}'
sh 'docker tag ruoyi-auth:latest $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-auth:SNAPSHOT-$BUILD_NUMBER'
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-auth:SNAPSHOT-$BUILD_NUMBER'
sh 'docker logout ${REGISTRY}'
}
}
}
}
stage('3.推送ruoyi-gateway镜像') {
agent none
steps {
withCredentials([usernamePassword(credentialsId: 'harbor-admin-id', passwordVariable: 'harbor_pwd', usernameVariable: 'harbor_user')]) {
container('docker') {
sh 'docker login ${REGISTRY} -u ${harbor_user} -p ${harbor_pwd}'
sh 'docker tag ruoyi-gateway:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-gateway:SNAPSHOT-${BUILD_NUMBER}'
sh 'docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-gateway:SNAPSHOT-${BUILD_NUMBER}'
sh 'docker logout ${REGISTRY}'
}
}
}
}
stage('6.推送ruoyi-system镜像') {
agent none
steps {
withCredentials([usernamePassword(credentialsId: 'harbor-admin-id', passwordVariable: 'harbor_pwd', usernameVariable: 'harbor_user')]) {
container('docker') {
sh 'docker login ${REGISTRY} -u ${harbor_user} -p ${harbor_pwd}'
sh 'docker tag ruoyi-system:latest ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-system:SNAPSHOT-${BUILD_NUMBER}'
sh 'docker push ${REGISTRY}/${DOCKERHUB_NAMESPACE}/ruoyi-system:SNAPSHOT-${BUILD_NUMBER}'
sh 'docker logout ${REGISTRY}'
}
}
}
}
}
}
stage('nfvww6') {
parallel {
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('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('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: '')
}
}
浙公网安备 33010602011771号