CICD的概念:
CI,持续集成指的是,频繁地(一天多次)将代码集成到主干。
作用:
(1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成
目的:持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量
CD
持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境
image.png
区别:连续交付管道会自动测试应用程序,但会将部署决策保留为手动步骤
通过前两篇的部署,我们基本已经得到一个比较完善的环境,今天我们就来为这个项目部署jenkins和gitlab
首先我们的总的docker-compose.yaml插入两条:
gitlab:
image: git
restart: always
hostname: 'gitlab.king.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://10.0.122.100:9280'
unicorn['worker_timeout'] = 60
unicorn['worker_processes'] = 3 # worker进程数
unicorn['worker_memory_limit_min'] = "200 * 1 << 20" # worker最小内存
unicorn['worker_memory_limit_max'] = "300 * 1 << 20" # worker最大内存
sidekiq['concurrency'] = 10
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 8
networks:
- jumpserver-test
ports:
- '9280:9280'
volumes:
- './gitlab/config:/etc/gitlab'
- './gitlab/logs:/var/log/gitlab'
- './gitlab/data:/var/opt/gitlab'
container_name: "gitlab_server"
jenkins:
image: jenkins_blue
restart: always
privileged: true
user: root
volumes:
- type: bind
source: ./jenkins/jenkins_home
target: /var/jenkins_home
- type: bind
source: /Volumes/data/com.docker.docker/Data/docker.sock
target: /var/run/docker.sock
read_only: "yes"
networks:
- jumpserver-test
ports:
- "9980:8080"
container_name: "jenkins_server"
为了避免麻烦,此处的镜像为事先构建,jenkins的推荐插件已经安装完成,详情请看之前的文章 jenkins部署
此时目录为:
起了容器之后我们就可以分别访问jenkins(本机IP:9980)和gitlab(本机IP:9280)
1.进入jenkins_server容器生成公钥,获取公钥放到gitlab上
2.进入jenkins,新建任务,连接gitlab
image.png
配置触发器:
image.png
将得到的这个地址
http://jenkins_server:9980/project/webhook-cndb,映射端口记得改一下,改为容器的端口,8080
放到gitlab的
image.png
image.png
提交不成就修改下列文件
Admin Area(小扳手的图标)/settings/network
image.png
然后点击测试
image.png
最好定义一个简单shell命令易于显示结果
3.这样可以实现用webhook检测gitlab上提交文件的变化,其他更多功能的灵活应用可自行定义脚本,周期性任务等
网友评论