jenkins pipeline流水线部署项目
Jenkins pipeline方式与jenkins maven项目构建相比,更为复杂一些。但有许多优势:
- 可以根据tag标签进行代码部署和回滚部署
- 全部的部署过程通过
jenkinsfile
定义完成,jenkinsfile
可以纳入到Git进行版本管理,保证了每次项目部署的一致性,避免手工操作的失误。
jenkinsfile
的demo
#!/usr/bin/env groovy
def tag = "1.8"
pipeline {
agent any
tools {
maven 'maven3'
}
stages {
stage("maven 编译") {
steps {
echo 'Building..'
sh 'mvn clean package -Dmaven.test.skip'
}
}
stage('镜像编译') {
steps {
echo 'image build'
sh 'docker build -f ./src/main/docker/Dockerfile -t tangweiyang/springbootdemo:${tag} . '
}
}
stage('镜像发布') {
steps {
echo 'image push docker hub'
sh 'docker push tangweiyang/springbootdemo:${tag} '
}
}
stage('停止旧容器') {
steps {
sh '''
docker rm -f springbootdemo &> /dev/null
'''
}
}
stage('部署') {
steps {
echo 'deloy'
sh 'docker run -it -d -p 8081:80 --name springbootdemo tangweiyang/springbootdemo:${tag}'
}
}
}
}
Jenkins配置如下
启动时选择远程仓库代码的tag标签