Jenkins
约 1471 字大约 5 分钟
2025-04-18
账号 | 密码 |
---|---|
readonly | FishnetReadonly0. |
流水线配置
fishnet-mall-admin-api
// Uses Declarative syntax to run commands inside a container.
pipeline {
agent {
kubernetes {
// Rather than inline YAML, in a multibranch Pipeline you could use: yamlFile 'jenkins-pod.yaml'
// Or, to avoid YAML:
// containerTemplate {
// name 'shell'
// image 'ubuntu'
// command 'sleep'
// args 'infinity'
// }
yaml '''
apiVersion: v1
kind: Pod
metadata:
name: fishnet-mall-admin-jenkins-pipeline
namespace: fishnet-prod
spec:
imagePullSecrets:
- name: harbor-secret
containers:
- name: maven
image: harbor.fishnet.top/fishnet-prod/fishnet-mall-package:1.0
command: ["sleep"]
args: ["infinity"]
volumeMounts:
- name: master-jenkins-fishnet-prod-ssh-id-rsa
mountPath: /root/.ssh/jenkins-fishnet-prod-id-rsa-backup
subPath: jenkins-fishnet-prod-id-rsa-backup
- name: fishnet-storage
mountPath: /fishnet-storage
- name: kubectl
image: harbor.fishnet.top/fishnet-prod/fishnet-kubectl:1.0
command: ["sleep"]
args: ["infinity"]
volumeMounts:
- name: admin-kube-config
mountPath: /root/.kube
readOnly: true
- name: fishnet-storage
mountPath: /fishnet-storage
volumes:
- name: admin-kube-config
configMap:
name: admin-kube-config
items:
- key: config
path: config
- name: master-jenkins-fishnet-prod-ssh-id-rsa
configMap:
name: master-jenkins-fishnet-prod-ssh-id-rsa
items:
- key: id_rsa
path: jenkins-fishnet-prod-id-rsa-backup
- name: fishnet-storage
persistentVolumeClaim:
claimName: fishnet-storage
'''
// Can also wrap individual steps:
// container('shell') {
// sh 'hostname'
// }
defaultContainer 'maven'
retries 2
}
}
environment {
HTTPS_PROXY = 'http://192.168.31.128:7890'
}
stages {
stage('Package') {
steps {
// 配置代理&拉取代码
sh '''
export https_proxy=$HTTPS_PROXY
export http_proxy=$HTTPS_PROXY
git config --global https.proxy $HTTPS_PROXY
git config --global http.proxy $HTTPS_PROXY
git clone https://github.com/YuJingQwQ/fishnet-mall.git
cd fishnet-mall
git checkout v1
'''
// 配置 ssh
// sh 'chmod 600 ~/.ssh/jenkins-fishnet-prod-id-rsa'
// 替换正式配置
sh '''
cd fishnet-mall
sed -i "s|dev|prod|g" mall-admin/src/main/resources/application.yml
sed -i "s|dev|prod|g" mall-portal/src/main/resources/application.yml
sed -i "s|dev|prod|g" mall-search/src/main/resources/application.yml
cp /root/.ssh/jenkins-fishnet-prod-id-rsa-backup /root/.ssh/jenkins-fishnet-prod-id-rsa
chmod 600 /root/.ssh/jenkins-fishnet-prod-id-rsa
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-admin/application-prod:1.0.yml mall-admin/src/main/resources/application-prod.yml
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-portal/application-prod:1.0.yml mall-portal/src/main/resources/application-prod.yml
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-search/application-prod:1.0.yml mall-search/src/main/resources/application-prod.yml
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-common/logback-spring.xml mall-common/src/main/resources/logback-spring.xml
'''
// 编译打包
sh '''
cd fishnet-mall
mvn clean package -DskipTests
mvn package -DskipTests
'''
// 将打包内容传递到longhorn分布式存储
sh '''
cd fishnet-mall
mkdir -p /fishnet-storage/fishnet-mall-admin/mall-admin
mv mall-admin/target/mall-admin-1.0-SNAPSHOT.jar /fishnet-storage/fishnet-mall-admin/mall-admin/
'''
}
}
stage('Deploy') {
steps {
container('kubectl') {
sh '''
kubectl rollout restart deploy api-admin-mall-fishnet-top -n fishnet-prod
'''
}
}
}
}
}
fishnet-mall-admin-api v1
// Uses Declarative syntax to run commands inside a container.
pipeline {
agent {
kubernetes {
// Rather than inline YAML, in a multibranch Pipeline you could use: yamlFile 'jenkins-pod.yaml'
// Or, to avoid YAML:
// containerTemplate {
// name 'shell'
// image 'ubuntu'
// command 'sleep'
// args 'infinity'
// }
yaml '''
apiVersion: v1
kind: Pod
metadata:
name: fishnet-mall-admin-jenkins-pipeline
namespace: fishnet-prod
spec:
imagePullSecrets:
- name: harbor-secret
containers:
- name: maven
image: harbor.fishnet.top/fishnet-prod/fishnet-mall-package:1.0
command: ["sleep"]
args: ["infinity"]
volumeMounts:
- name: master-jenkins-fishnet-prod-ssh-id-rsa
mountPath: /root/.ssh/jenkins-fishnet-prod-id-rsa-backup
subPath: jenkins-fishnet-prod-id-rsa-backup
- name: fishnet-storage
mountPath: /fishnet-storage
- name: kubectl
image: harbor.fishnet.top/fishnet-prod/fishnet-kubectl:1.0
command: ["sleep"]
args: ["infinity"]
volumeMounts:
- name: admin-kube-config
mountPath: /root/.kube
readOnly: true
- name: fishnet-storage
mountPath: /fishnet-storage
volumes:
- name: admin-kube-config
configMap:
name: admin-kube-config
items:
- key: config
path: config
- name: master-jenkins-fishnet-prod-ssh-id-rsa
configMap:
name: master-jenkins-fishnet-prod-ssh-id-rsa
items:
- key: id_rsa
path: jenkins-fishnet-prod-id-rsa-backup
- name: fishnet-storage
persistentVolumeClaim:
claimName: fishnet-storage
'''
// Can also wrap individual steps:
// container('shell') {
// sh 'hostname'
// }
defaultContainer 'maven'
retries 2
}
}
environment {
HTTPS_PROXY = 'http://192.168.31.128:7890'
}
stages {
stage('Package') {
steps {
// 配置代理&拉取代码
sh '''
export https_proxy=$HTTPS_PROXY
export http_proxy=$HTTPS_PROXY
git config --global https.proxy $HTTPS_PROXY
git config --global http.proxy $HTTPS_PROXY
git clone https://github.com/YuJingQwQ/fishnet-mall.git
cd fishnet-mall
git checkout v1
'''
// 配置 ssh
// sh 'chmod 600 ~/.ssh/jenkins-fishnet-prod-id-rsa'
// 替换正式配置
sh '''
cd fishnet-mall
sed -i "s|dev|prod|g" mall-admin/src/main/resources/application.yml
sed -i "s|dev|prod|g" mall-portal/src/main/resources/application.yml
sed -i "s|dev|prod|g" mall-search/src/main/resources/application.yml
cp /root/.ssh/jenkins-fishnet-prod-id-rsa-backup /root/.ssh/jenkins-fishnet-prod-id-rsa
chmod 600 /root/.ssh/jenkins-fishnet-prod-id-rsa
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-admin/application-prod:1.0.yml mall-admin/src/main/resources/application-prod.yml
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-portal/application-prod:1.0.yml mall-portal/src/main/resources/application-prod.yml
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-search/application-prod:1.0.yml mall-search/src/main/resources/application-prod.yml
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-common/logback-spring.xml mall-common/src/main/resources/logback-spring.xml
'''
// 编译打包
sh '''
cd fishnet-mall
mvn clean package -DskipTests
mvn package -DskipTests
'''
// 将打包内容传递到longhorn分布式存储
sh '''
cd fishnet-mall
mkdir -p /fishnet-storage/fishnet-mall-admin/mall-admin
mv mall-admin/target/mall-admin-1.0-SNAPSHOT.jar /fishnet-storage/fishnet-mall-admin/mall-admin/mall-admin-1.0-SNAPSHOT-v1.jar
'''
}
}
stage('Deploy') {
steps {
container('kubectl') {
sh '''
kubectl rollout restart deploy api-admin-mall-fishnet-top-v1 -n fishnet-prod
'''
}
}
}
}
}
fishnet-mall-portal-api
// Uses Declarative syntax to run commands inside a container.
pipeline {
agent {
kubernetes {
// Rather than inline YAML, in a multibranch Pipeline you could use: yamlFile 'jenkins-pod.yaml'
// Or, to avoid YAML:
// containerTemplate {
// name 'shell'
// image 'ubuntu'
// command 'sleep'
// args 'infinity'
// }
yaml '''
apiVersion: v1
kind: Pod
metadata:
name: fishnet-mall-admin-jenkins-pipeline
namespace: fishnet-prod
spec:
imagePullSecrets:
- name: harbor-secret
containers:
- name: maven
image: harbor.fishnet.top/fishnet-prod/fishnet-mall-package:1.0
command: ["sleep"]
args: ["infinity"]
volumeMounts:
- name: master-jenkins-fishnet-prod-ssh-id-rsa
mountPath: /root/.ssh/jenkins-fishnet-prod-id-rsa-backup
subPath: jenkins-fishnet-prod-id-rsa-backup
- name: fishnet-storage
mountPath: /fishnet-storage
- name: kubectl
image: harbor.fishnet.top/fishnet-prod/fishnet-kubectl:1.0
command: ["sleep"]
args: ["infinity"]
volumeMounts:
- name: admin-kube-config
mountPath: /root/.kube
readOnly: true
- name: fishnet-storage
mountPath: /fishnet-storage
volumes:
- name: admin-kube-config
configMap:
name: admin-kube-config
items:
- key: config
path: config
- name: master-jenkins-fishnet-prod-ssh-id-rsa
configMap:
name: master-jenkins-fishnet-prod-ssh-id-rsa
items:
- key: id_rsa
path: jenkins-fishnet-prod-id-rsa-backup
- name: fishnet-storage
persistentVolumeClaim:
claimName: fishnet-storage
'''
// Can also wrap individual steps:
// container('shell') {
// sh 'hostname'
// }
defaultContainer 'maven'
retries 2
}
}
environment {
HTTPS_PROXY = 'http://192.168.31.128:7890'
}
stages {
stage('Package') {
steps {
// 配置代理&拉取代码
sh '''
export https_proxy=$HTTPS_PROXY
export http_proxy=$HTTPS_PROXY
git config --global https.proxy $HTTPS_PROXY
git config --global http.proxy $HTTPS_PROXY
git clone https://github.com/YuJingQwQ/fishnet-mall.git
cd fishnet-mall
git checkout v1
'''
// 配置 ssh
// sh 'chmod 600 ~/.ssh/jenkins-fishnet-prod-id-rsa'
// 替换正式配置
sh '''
cd fishnet-mall
sed -i "s|dev|prod|g" mall-admin/src/main/resources/application.yml
sed -i "s|dev|prod|g" mall-portal/src/main/resources/application.yml
sed -i "s|dev|prod|g" mall-search/src/main/resources/application.yml
cp /root/.ssh/jenkins-fishnet-prod-id-rsa-backup /root/.ssh/jenkins-fishnet-prod-id-rsa
chmod 600 /root/.ssh/jenkins-fishnet-prod-id-rsa
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-admin/application-prod:1.0.yml mall-admin/src/main/resources/application-prod.yml
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-portal/application-prod:1.0.yml mall-portal/src/main/resources/application-prod.yml
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-search/application-prod:1.0.yml mall-search/src/main/resources/application-prod.yml
scp -i /root/.ssh/jenkins-fishnet-prod-id-rsa -o StrictHostKeyChecking=no jenkins-fishnet-prod@192.168.31.128:~/fishnet-mall-admin/mall-common/logback-spring.xml mall-common/src/main/resources/logback-spring.xml
'''
// 编译打包
sh '''
cd fishnet-mall
mvn clean package -DskipTests
mvn package -DskipTests
'''
// 将打包内容传递到longhorn分布式存储
sh '''
cd fishnet-mall
mkdir -p /fishnet-storage/fishnet-mall-admin/mall-portal
mv mall-portal/target/mall-portal-1.0-SNAPSHOT.jar /fishnet-storage/fishnet-mall-admin/mall-portal/
'''
}
}
stage('Deploy') {
steps {
container('kubectl') {
sh '''
kubectl rollout restart deploy api-portal-mall-fishnet-top -n fishnet-prod
'''
}
}
}
}
}