You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
k8s-test/Jenkinsfile

137 lines
4.6 KiB

9 months ago
pipeline {
environment {
APP_NAME = "RuoYi"
DOCKER_REPOSITORY_CREDENTIAL_ID = "7cc63152-c727-40fc-b177-d8397396f1ba"
HARBOR_HOST = "registry.cn-hangzhou.aliyuncs.com"
NAMESPACE_NAME = "newrain_wang"
REPOSITORY_NAME = "my-web-app"
TAG = "v2.0"
REPLICAS = 4
YAML_PATH = "k8s/"
DEPLOYMENT_NAME = "deploy.yml"
}
agent {
kubernetes {
cloud "kubernetes"
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: jnlp
image: jenkins/inbound-agent:3107.v665000b_51092-15
args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: "/etc/localtime"
name: "volume-2"
readOnly: false
- name: kubectl
image: kubesphere/kubectl:v1.22.0
imagePullPolicy: IfNotPresent
tty: true
command: ["cat"]
volumeMounts:
- mountPath: "/etc/localtime"
name: "volume-2"
readOnly: false
- mountPath: "/var/run/docker.sock"
name: "volume-docker"
readOnly: false
- mountPath: "/root/.kube/config"
subPath: config
name: "kubeconfig"
readOnly: false
- name: docker
image: docker:19.03.15-git
command: ['cat']
tty: true
volumeMounts:
- mountPath: "/var/run/docker.sock"
name: "volume-docker"
readOnly: false
volumes:
- name: volume-2
hostPath:
path: "/usr/share/zoneinfo/Asia/Shanghai"
- name: volume-docker
hostPath:
path: "/var/run/docker.sock"
- name: kubeconfig
secret:
secretName: kubeconfig
items:
- key: config
path: config
"""
}
9 months ago
}
stages {
stage('构建镜像') {
steps {
withCredentials([usernamePassword(credentialsId: env.DOCKER_REPOSITORY_CREDENTIAL_ID, passwordVariable: 'PASSWORD', usernameVariable: 'USERNAME')]) {
container('docker') {
sh """
docker build -t ${env.HARBOR_HOST}/${env.NAMESPACE_NAME}/${env.REPOSITORY_NAME}:${env.TAG} .
docker login ${env.HARBOR_HOST} --username ${env.USERNAME} --password ${env.PASSWORD}
docker push ${env.HARBOR_HOST}/${env.NAMESPACE_NAME}/${env.REPOSITORY_NAME}:${env.TAG}
"""
}
}
}
post {
always {
dingtalk (
robot: '4eabbd09-a21a-40a9-84db-6440c0daebec',
type: 'MARKDOWN',
title: '镜像推送 ${PROJECT_NAME}',
text: [
'### 项目 ${PROJECT_NAME}',
'---',
'- 触发原因: ${CAUSE} ',
'- 状态:<font color=#FF0000 >${BUILD_STATUS}</font>',
'- 版本:${BUILD_NUMBER}',
'- [查看部署详情](${PROJECT_URL})',
'- [查看日志Console](${BUILD_URL})'
],
at: [
'17694993496'
]
)
}
}
}
stage('部署到kubernetes') {
steps {
container('kubectl') {
sh """
sed -i "s/REPLICAS/${env.REPLICAS}/;s/HARBOR_HOST/${env.HARBOR_HOST}/;s/NAMESPACE_NAME/${env.NAMESPACE_NAME}/;s/REPOSITORY_NAME/${env.REPOSITORY_NAME}/;s/TAG/${env.TAG}/" ${env.YAML_PATH}${env.DEPLOYMENT_NAME}
kubectl apply -f ${env.YAML_PATH}
"""
}
}
post {
always {
dingtalk (
robot: '4eabbd09-a21a-40a9-84db-6440c0daebec',
type: 'MARKDOWN',
title: '项目部署 ${PROJECT_NAME}',
text: [
'### 项目 ${PROJECT_NAME}',
'---',
'- 触发原因: ${CAUSE} ',
'- 状态:<font color=#FF0000 >${BUILD_STATUS}</font>',
'- 版本:${BUILD_NUMBER}',
'- [查看部署详情](${PROJECT_URL})',
'- [查看日志Console](${BUILD_URL})'
],
at: [
'17694993496'
]
)
}
}
}
}
}