k8s前端部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
//前端项目打包构建;支持多环境
pipeline {
agent any
environment {
//GIT路径
GIT_PATH = "threegene/dev/zproduct/server/demo.git"
//项目名称, 使用Job名称作为项目名称
PROJECT_NAME = "${JOB_NAME}"
//自定义项目名称
//PROJECT_NAME = "threegene-livex-center-html"
//镜像分组,如果空则采用服务名前缀作为分组
//IMAGE_GROUP = ""
}
 
stages {
stage('Init') {
steps {
script{
dev_imgFile = ""
prd_imgFile = ""
_imageTagForTest = ""
_imageTag = ""
_imageGroup = env.IMAGE_GROUP
_dockerFile = "nginx_dockerfile"
_envs = ["prod","test"]
_envTexts = [prod:'生产环境',test:'测试环境']
 
//if(!params.build_prd){
// _envs = ["test"]
//}
 
if(_imageGroup==null || _imageGroup==""){
_imageGroup = "${PROJECT_NAME.split('-')[0]}"
}
}
}
}
stage('Checkout') {
steps {
echo "git: ${GIT_PATH}"
echo "branche: ${branch_or_tag}"
 
// https://plugins.jenkins.io/git-parameter/
checkout([$class: 'GitSCM',
branches: [[name: "${branch_or_tag}"]],
extensions: [],
userRemoteConfigs: [[credentialsId: 'gitlab-ssh', url: "${GIT_HOST}:${GIT_PATH}"]]
])
 
echo "code checkout completed"
}
}
stage('构建&生成镜像') {
when { expression { params.branch_or_tag != "" } }
steps {
script{
//nodejs('node10.16.0') {}
nodejs('node14.17.3') {}
def workDic = "${WORKSPACE}"
def imgName = "/${_imageGroup}/${PROJECT_NAME}"
 
sh "npm install"
//sh "npm --registry https://registry.npmmirror.com install express"
// sh "npm --registry http://oss.npmmirror.com install express"
for(env in _envs){
echo "build: ${env}"
if(env=="test"){
sh "npm run build:${env}"
}else{
sh "npm run build"
}
def imageTag = sh(script:"date '+%Y%m%d%H%M%S'", returnStdout: true).replace("\n","")
def imgFile = "${IMAGE_HOST_TEST}${imgName}:${imageTag}"
 
if(env=="test"){
_imageTagForTest = imageTag
dev_imgFile = "${IMAGE_HOST_TEST}${imgName}:${_imageTagForTest}"
dir("${workDic}/"){
sh "docker build . -f ${JENKINS_HOME}/${_dockerFile} -t ${dev_imgFile}"
sh "docker push ${dev_imgFile}"
sh "docker rmi ${dev_imgFile}"
}
}else{
_imageTag = imageTag
prd_imgFile = "${IMAGE_HOST_PRD}${imgName}:${_imageTag}"
dir("${workDic}/"){
sh "docker build . -f ${JENKINS_HOME}/${_dockerFile} -t ${prd_imgFile}"
//sh "docker push ${prd_imgFile}"
}
}
 
def envText = _envTexts[env]
echo "${envText}镜像标签: ${imageTag}"
echo "${envText}镜像: ${imgFile}"
}
}
}
}
stage('部署测试环境') {
when { expression { _imageTagForTest != "" } }
steps {
script{
def k8sConf = "k8s-deploy-scripts/test-${PROJECT_NAME}.yaml"
sh "sed -i '/${IMAGE_HOST_TEST}/s/[0-9]\\{14\\}/${_imageTagForTest}/' /opt/${k8sConf}"
sh(script: "ssh ${K8S_HOST} kubectl apply -f /data/${k8sConf}")
//echo "部署镜像标签: ${_imageTagForTest}"
}
}
}
stage('确认上传线上包') {
when { allOf { expression { params.branch_or_tag == 'origin/release' }; expression { prd_imgFile != "" } } }
stages {
stage('input') {
input {
message '请选择是否发布线上环境,勾选isUpload提交表示发布线上,不勾选反之'
id 'upload-package'
ok '提交'
parameters {
booleanParam defaultValue: false, description: '', name: 'isUpload'
}
}
steps {
script{
if(isUpload == 'false'){
echo "上传线上仓库?: ${isUpload}"
sh "docker rmi ${prd_imgFile}"
echo "测试镜像版本 :${dev_imgFile}"
}else{
echo "上传线上仓库?: ${isUpload}"
sh "docker push ${prd_imgFile}"
sh "docker rmi ${prd_imgFile}"
echo "线上镜像版本 :${prd_imgFile}"
}
}
}
}
}
}
}
}

  

posted @   我是小菜鸡丫丫  阅读(206)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示