更新 'Jenkinsfile'

main
newrain001 9 months ago
parent d1c7674119
commit 8067acb1fd
  1. 160
      Jenkinsfile

160
Jenkinsfile vendored

@ -5,67 +5,66 @@ pipeline {
HARBOR_HOST = "registry.cn-hangzhou.aliyuncs.com" HARBOR_HOST = "registry.cn-hangzhou.aliyuncs.com"
NAMESPACE_NAME = "newrain_wang" NAMESPACE_NAME = "newrain_wang"
REPOSITORY_NAME = "my-web-app" REPOSITORY_NAME = "my-web-app"
TAG = "v3.0" TAG = "v2.0"
REPLICAS = 4 REPLICAS = 4
YAML_PATH = "k8s/" YAML_PATH = "k8s/"
DEPLOYMENT_NAME = "deploy.yml" DEPLOYMENT_NAME = "deploy.yml"
STATUS_URL = "http://qf.jenkins.vip:30210/job/test/${BUILD_NUMBER}" STATUS_URL = "http://qf.jenkins.vip:30210/job/test/${BUILD_NUMBER}"
CONSOLE_URL = "http://qf.jenkins.vip:30210/job/test/${BUILD_NUMBER}/console" CONSOLE_URL = "http://qf.jenkins.vip:30210/job/test/${BUILD_NUMBER}/console"
status = "${currentBuild.result}"
} }
agent { agent {
kubernetes { kubernetes {
cloud "kubernetes" cloud "kubernetes"
yaml """ yaml """
apiVersion: v1 apiVersion: v1
kind: Pod kind: Pod
spec: spec:
containers: containers:
- name: jnlp - name: jnlp
image: jenkins/inbound-agent:3107.v665000b_51092-15 image: jenkins/inbound-agent:3107.v665000b_51092-15
args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)'] args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
volumeMounts: volumeMounts:
- mountPath: "/etc/localtime" - mountPath: "/etc/localtime"
name: "volume-2" name: "volume-2"
readOnly: false readOnly: false
- name: kubectl - name: kubectl
image: kubesphere/kubectl:v1.22.0 image: kubesphere/kubectl:v1.22.0
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
tty: true tty: true
command: ["cat"] command: ["cat"]
volumeMounts: volumeMounts:
- mountPath: "/etc/localtime" - mountPath: "/etc/localtime"
name: "volume-2" name: "volume-2"
readOnly: false readOnly: false
- mountPath: "/var/run/docker.sock" - mountPath: "/var/run/docker.sock"
name: "volume-docker" name: "volume-docker"
readOnly: false readOnly: false
- mountPath: "/root/.kube/config" - mountPath: "/root/.kube/config"
subPath: config subPath: config
name: "kubeconfig" name: "kubeconfig"
readOnly: false readOnly: false
- name: docker - name: docker
image: docker:19.03.15-git image: docker:19.03.15-git
command: ['cat'] command: ['cat']
tty: true tty: true
volumeMounts: volumeMounts:
- mountPath: "/var/run/docker.sock" - mountPath: "/var/run/docker.sock"
name: "volume-docker" name: "volume-docker"
readOnly: false readOnly: false
volumes: volumes:
- name: volume-2 - name: volume-2
hostPath: hostPath:
path: "/usr/share/zoneinfo/Asia/Shanghai" path: "/usr/share/zoneinfo/Asia/Shanghai"
- name: volume-docker - name: volume-docker
hostPath: hostPath:
path: "/var/run/docker.sock" path: "/var/run/docker.sock"
- name: kubeconfig - name: kubeconfig
secret: secret:
secretName: kubeconfig secretName: kubeconfig
items: items:
- key: config - key: config
path: config path: config
""" """
} }
} }
@ -83,52 +82,85 @@ spec:
} }
} }
post { post {
always { success {
dingtalk ( dingtalk (
robot: '4eabbd09-a21a-40a9-84db-6440c0daebec', robot: '4eabbd09-a21a-40a9-84db-6440c0daebec',
type: 'MARKDOWN', type: 'MARKDOWN',
title: '镜像推送 ${PROJECT_NAME}', title: '镜像构建成功 ${PROJECT_NAME}',
text: [ text: [
'### 项目 ${PROJECT_NAME}', '### 项目 ${PROJECT_NAME}',
'---', '---',
'- 状态:<font color=#FF0000 >、$(currentBuild.result) \${currentBuild.result} ${env.status}</font>', '- 状态:<font color=#00FF00 >成功</font>',
'- 阶段:构建镜像',
'- 版本:${BUILD_NUMBER}', '- 版本:${BUILD_NUMBER}',
'- [查看部署详情](${STATUS_URL})', '- [查看部署详情](${STATUS_URL})',
'- [查看日志Console](${CONSOLE_URL})' '- [查看日志Console](${CONSOLE_URL})'
], ],
at: [ at: ['17694993496']
'17694993496' )
] }
failure {
dingtalk (
robot: '4eabbd09-a21a-40a9-84db-6440c0daebec',
type: 'MARKDOWN',
title: '镜像构建失败 ${PROJECT_NAME}',
text: [
'### 项目 ${PROJECT_NAME}',
'---',
'- 状态:<font color=#FF0000 >失败</font>',
'- 阶段:构建镜像',
'- 版本:${BUILD_NUMBER}',
'- [查看部署详情](${STATUS_URL})',
'- [查看日志Console](${CONSOLE_URL})'
],
at: ['17694993496']
) )
} }
} }
} }
stage('部署到kubernetes') { stage('部署到kubernetes') {
steps { steps {
container('kubectl') { container('kubectl') {
sh """ 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} 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} kubectl apply -f ${env.YAML_PATH}${env.DEPLOYMENT_NAME}
""" """
} }
} }
post { post {
always { success {
dingtalk (
robot: '4eabbd09-a21a-40a9-84db-6440c0daebec',
type: 'MARKDOWN',
title: '部署成功 ${PROJECT_NAME}',
text: [
'### 项目 ${PROJECT_NAME}',
'---',
'- 状态:<font color=#00FF00 >成功</font>',
'- 阶段:部署到kubernetes',
'- 版本:${BUILD_NUMBER}',
'- [查看部署详情](${STATUS_URL})',
'- [查看日志Console](${CONSOLE_URL})'
],
at: ['17694993496']
)
}
failure {
dingtalk ( dingtalk (
robot: '4eabbd09-a21a-40a9-84db-6440c0daebec', robot: '4eabbd09-a21a-40a9-84db-6440c0daebec',
type: 'MARKDOWN', type: 'MARKDOWN',
title: '项目部署 ${PROJECT_NAME}', title: '部署失败 ${PROJECT_NAME}',
text: [ text: [
'### 项目 ${PROJECT_NAME}', '### 项目 ${PROJECT_NAME}',
'---', '---',
'- 状态:<font color=#FF0000 >${currentBuild.result}</font>', '- 状态:<font color=#FF0000 >失败</font>',
'- 阶段:部署到kubernetes',
'- 版本:${BUILD_NUMBER}', '- 版本:${BUILD_NUMBER}',
'- [查看部署详情](${STATUS_URL})', '- [查看部署详情](${STATUS_URL})',
'- [查看日志Console](${CONSOLE_URL})' '- [查看日志Console](${CONSOLE_URL})'
], ],
at: [ at: ['17694993496']
'17694993496'
]
) )
} }
} }

Loading…
Cancel
Save