微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程

介绍
随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致。基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能快速迭代,更加要求部署的快速化,智能化。因此,传统的人工部署已经心有余而力不足。
持续集成,持续部署,持续交互对于微服务开发来说,是提高团队整体效率不可或缺的一环。合理的使用CI,CD能够极大的提高了生产效率,也提高了产品的交互质量。
流程梳理:

1.开发人员对上线版本在gitLab上打了一个tag
2.jenkins获取tag版本.
3.编写pipeline
3.1 拉取代码 git clone
3.2 maven 构建jar包
3.3 编写dockerfile文件
3.4 创建镜像并推送到本地harbor镜像仓库
3.5 首先删除容器,拉取镜像并启动容器

jenkins准备:(相关插件使用)
1.1 安装插件

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程

1.2.使用Role-Based Strategy插件

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程

1.3 添加全局角色和项目角色

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程

1.4 赋予用户权限

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程

2.master-slave 介绍
2.1解决jenkins单点构建任务多,负载高,性能不足的场景。

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程


2.2 构建项目的时候选择,构建这个项目的时候,就会在192.168.17.7服务器上来执行pipeline中的一系列操作。

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程

jenkins图像化界面设置:
1.设置保留构建历史(个数与天数)

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程


2.参数化构建,选取对应的tag来发版。(一般以日期时间分钟来命名tag版本,便于区分)

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程


3.pipeline编写

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程


详细内容参考:

node() {
stage(' Git clone ') {
git branch: 'test', credentialsId: 'dc404ee2-350e-4934-a668-da4aee1ba535', url: 'git@xx.xx.xx.xx:meiyeyun/backend/xxxx/yx_${service_name}.git'
}

stage('maven buid'){
def mvnhome = '/usr/local/maven/'
def jdkhome = '/usr/local/jdk1.8.0_161'
env.PATH = "${mvnhome}/bin:${jdkhome}/bin:${env.PATH}"
sh "mvn clean package -Dmaven.test.skip=true"
}
stage("Create Dockerfile"){
sh '''cat << EOF > Dockerfile
FROM java
ADD target/${service_name}-0.0.1-SNAPSHOT.jar app.jar
enter ["java","-Djava.library.path=/usr/local/lib -server -XX:ReservedCodeCacheSize=64m -XX:TLABWasteTargetPercent=10 -XX:+UseConcmarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -XX:+UnlockDiagnosticVMOptions -XX:ParallelGCThreads=8 -XX:ConcGCThreads=4 -Xss256k -server -xms2g -Xmx2g -XX:MaxDirectMemorySize=256m -XX:MaxTenuringThreshold=3 -XX:NewRatio=1 -XX:SurvivorRatio=8 -XX:+UnlockDiagnosticVMOptions -XX:ParGCCardsPerStrideChunk=32768 -XX:+AlwaysPretouch","-jar","/app.jar","--spring.profiles.active=test"]
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
'''
sh 'cat Dockerfile'
}
stage("build images and push to harbor"){
sh '''
containerPool=172.10.2.10/myy_test
docker build -t ${service_name}:v1 .
docker tag ${service_name}:v1 ${containerPool}/${service_name}:v1
docker login -u admin -p 124356 172.10.2.10
docker push ${containerPool}/${service_name}:v1
'''
}
stage("pull images and deploy"){
sh '''
containerPool=172.10.2.10/myy_test
ansible myy_test -a "docker rm -f ${service_name}"
ansible myy_test -a "docker login -u admin -p 124356 172.10.2.10"
ansible myy_test -a "docker pull ${containerPool}/${service_name}:v1"
ansible myy_test -a "docker run -d -p 8991:8991 --name ${service_name} -v /data/${service_name}/:/data/ --network=host ${containerPool}/${service_name}:v1"
ansible myy_test -m shell -a "docker ps |grep ${service_name}"
'''
} 
}

注明:

1.172.10.2.10为harbor地址。
2.微服务较多,可以在gitlab定义多个,如yx_oms.git;yx_ums.git; jenkins部署的时候可根据选择来部署。

jenkins+docker+gitlab+harbor+pipeline快速部署发版流程


3.为了达到后端高可用及负载均衡,一般部署在两台上,因此用ansible来管理后端节点,如删除容器,拉取镜像,启动容器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐