一、git–>jenkins–>k8s结合实现自动化部署jenkinsfile文件
说明:jenkins部署及配置请查看此篇文章
https://blog.csdn.net/ljx1528/article/details/103290833
以下为jenkinsfile文件
def label = "jenkins-slave"
podTemplate(label: label, cloud: 'kubernetes')
{
node(label) {
stage('pull code') {
git credentialsId: '732e79e2-7085-4882-ae31-4b50c7f7c4ea', url: 'git@192.168.29.182:demon/java-demon.git'
}
stage('build') {
sh "/usr/bin/mvn clean package -Dmaven.test.skip=ture"
}
stage('SonarQube') {
echo "质量扫描"
}
stage('制作镜像'){
sh '''
cat >Dockerfile <<EOF
FROM 192.168.29.175:9003/demon/tomcat:v1
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/*.war /usr/local/tomcat/webapps/ROOT.war
EOF
'''
}
stage('构建镜像'){
sh '''
docker build -t 192.168.29.175:9003/demon/test-demon:v1 .
'''
}
stage('上传到镜像仓库'){
sh '''
docker login -u admin -p Harbor12345 192.168.29.175:9003
docker push 192.168.29.175:9003/demon/test-demon:v1
'''
}
stage('Deployment Services'){
sh '''
cat > java-demo.yaml <<EOF
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: java-demo
name: java-demo
spec:
replicas: 1
selector:
matchLabels:
app: java-demo
template:
metadata:
labels:
app: java-demo
spec:
containers:
- image: 192.168.29.175:9003/demon/test-demon:v1
name: java-demo
---
apiVersion: v1
kind: Service
metadata:
name: java-demo
spec:
type: NodePort
selector:
app: java-demo
ports:
- protocol: TCP
nodePort: 9006
port: 8080
targetPort: 8080
EOF
'''
}
stage('deploy to k8s'){
sh 'kubectl create -f java-demo.yaml'
}
}
}
执行后流水线