在生産中,經常會遇到比如我們一個項目又多個環境,測試,預發,正式等不同的環境,如果一個項目建立一個,會比較麻煩,是以需要用到分支
jenkins需要安裝插件
Git Parameter

Blue Ocean
這個插件也安裝一下
開始建立一個項目
接下來我們在看看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"
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 '''
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
name: tomcat-service
ports:
- port: 8080
targetPort: 8080
nodePort: 31305
type: NodePort
kubectl set image deployment/tomcat-deployment tomcat=$REPOSITORY -n kube-ops
'''
}
stage('rollout') {
echo "是否需要快速復原?"
message: '是否需要快速復原?',
name: '復原?'
sh "kubectl rollout undo deployment tomcat-deployment -n kube-ops"
}
}
}
接下來我們可以開始建構一下
比如進入dev環境
都可以使用這裡使用blue ocean
這樣dev環境就釋出了,其他環境釋出也時類似操作,比較友善