Jenkins+git+maven+docker cicd部署 四
接下来是开始更新代码编译打包构建环节了
stages {
stage(' 更新代码 '){
steps {
echo "update"
checkout([$class: 'GitSCM', branches: [[name: '*/base']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@xxxxxxx.git']]])
}
}
-----这里用的是阿里云的git仓库,开发人员将代码push到仓库上,我们这里就会拉取一次新版本的代码下来
stage('构建代码'){ steps{ script{ echo "build" sh ''' mvn clean install -Dmaven.test.skip=true ''' } } }
-----这里开始构建代码,因为是java的应用,所以需要利用到maven ,即mvn clean install来编译
stage('镜像构建'){
steps{
script{
echo "build ${build_mode}"
sh '''
if [ "${build_mode}" != "" ];then
/usr/local/bin/docker-compose build ${build_mode}
else
/usr/local/bin/docker-compose build
fi
'''
}
}
}
-----这里是镜像构建,引用了一个值$build_mode,这里是构建的时候需要选择的发布的项目,因项目还有区分到几个子项目,可以对单个项目进行升级。
注意!利用的docker-compose,所以服务器上需要安装好docker-compose。dockerfile文件会在git仓库上拉取下来,就可以直接build了。

stage('容器启动'){
steps{
script{
sh '''
if [ "${build_mode}" != "" ];then
/usr/local/bin/docker-compose stop ${build_mode}
/usr/local/bin/docker-compose rm -f ${build_mode}
/usr/local/bin/docker-compose up -d ${build_mode}
else
/usr/local/bin/docker-compose stop
/usr/local/bin/docker-compose rm -f
/usr/local/bin/docker-compose up -d
fi
'''
}
}
}
-----这里开始利用docker-compose拉起容器了,用到build_mode参数,即构建流水线时,选择的子项目(默认是全部),先删除原有容器,在对应新的镜像拉起容器。

stage('Git Tag'){
steps{
script{
sh '''
if [ "${Tag_Message}" == "" ];then
Tag_Message=${BUILD_NUMBER}
fi
if [ "${Save_Tag_Name}" != "" ];then
/usr/local/git/bin/git tag -a ${Save_Tag_Name} -m "${Tag_Message}"
/usr/local/git/bin/git push origin --tags
else
echo "No Tag Message!NO tag!!!!!"
fi
'''
}
}
}
-----这里就是打个tag方便日后进行回滚动作。基本上就讲完了,当然自己写的也是没这么严谨。如果不介意需要完整pipeline 可以邮箱我,809518385@qq.com
浙公网安备 33010602011771号