k8s配合Jenkins-pipline做多分支构建24
Posted tty之星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s配合Jenkins-pipline做多分支构建24相关的知识,希望对你有一定的参考价值。
在生产中,经常会遇到比如我们一个项目又多个环境,测试,预发,正式等不同的环境,如果一个项目创建一个,会比较麻烦,所以需要用到分支
jenkins需要安装插件
这个插件也安装一下
开始创建一个项目
接下来我们在看看gitlab的分支内容我们有三个分支,再看看jenkinsfile的内容
完成之后我们通过多分支来探测gitlab的分支自动会拉下来
接下来就可以进入不同的分支进行构建了
jenkinsfile内容如下
node(\'haimaxy-jnlp\'){
stage(\'Clone\') {
echo "1.Clone Stage"
checkout scm
script {
//获取comment id
env.imageTag = sh (script: \'git rev-parse --short HEAD ${GIT_COMMIT}\', returnStdout: true).trim()
}
}
stage(\'build\') {
echo "2.mvn clean"
sh "cd /home/jenkins/agent/workspace/bbs/solo-master && mvn clean -Dmaven.test.skip=true install -s /home/jenkins/settings/settings.xml"
}
stage(\'build dockerfile\') {
echo "3.build dockerfile"
sh \'\'\'
cd /home/jenkins/agent/workspace/bbs/solo-master/target
REPOSITORY=10.4.7.52/cnych/jenkins-lxf:${imageTag}
cat >> Dockerfile << EOF
FROM tomcat:7
RUN mkdir /usr/local/tomcat/webapps/ROOT
ADD ./solo.war /usr/local/tomcat/webapps/ROOT
USER root
EOF
docker build -t $REPOSITORY .
\'\'\'
}
stage(\'docker push \') {
echo "docker run"
sh \'\'\'
REPOSITORY=10.4.7.52/cnych/jenkins-lxf:${imageTag}
docker login http://10.4.7.52 -u admin -p Harbor12345
docker push $REPOSITORY
\'\'\'
}
stage(\'kubectl apply\'){
echo "kubectl apply"
echo "是否需要需要升级?"
def userInput = input(
id: \'userInput\',
message: \'是否需要升级?\',
parameters: [
[
$class: \'ChoiceParameterDefinition\',
choices: "N\\nY",
name: \'升级?\'
]
]
)
if (userInput == "Y") {
sh \'\'\'
REPOSITORY=10.4.7.52/cnych/jenkins-lxf:${imageTag}
cat >> tomcat.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deployment
labels:
app: tomcat
spec:
replicas: 3
selector:
matchLabels:
app: tomcat
minReadySeconds: 5
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: \\$REPOSITORY
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: tomcat-service
labels:
app: tomcat
spec:
ports:
- port: 8080
targetPort: 8080
nodePort: 31305
selector:
app: tomcat
type: NodePort
EOF
kubectl set image deployment/tomcat-deployment tomcat=$REPOSITORY -n kube-ops
\'\'\'
}
}
stage(\'rollout\') {
echo "是否需要快速回滚?"
def userInput = input(
id: \'userInput\',
message: \'是否需要快速回滚?\',
parameters: [
[
$class: \'ChoiceParameterDefinition\',
choices: "N\\nY",
name: \'回滚?\'
]
]
)
if (userInput == "Y") {
sh "kubectl rollout undo deployment tomcat-deployment -n kube-ops"
}
}
}
接下来我们可以开始构建一下
比如进入dev环境
都可以使用这里使用blue ocean
这样dev环境就发布了,其他环境发布也时类似操作,比较方便
以上是关于k8s配合Jenkins-pipline做多分支构建24的主要内容,如果未能解决你的问题,请参考以下文章
[k8s]k8s的控制层kubelet+docker配合调度机制(k8架构)
nginx配置静态资源缓存, 同时配合k8s的SVC(core dns)实现负载均衡