GitLab-CI 来自动创建 Docker 镜像
2024-09-01 04:15:29
1.what is gitlab-ci docker image
CI/CD 自动化集成,自动化部署。简单的说就是把代码提交到gitlab管理的同时部署到指定的server,打成docker image方便部署。部署的时候只需要将image run container便可以运行。
传统做法,代码commit 到gitlab后,login in server执行git pull同步新提交的代码。每次更新代码都需要做这样的操作,本人很懒不喜欢浪费很多时间做重复的事情,所以看到gitlab 8.x集成了ci决定尝试一下。
2.CI env主要构成包括代码版本库 Gitlab,CI服务 Gitlab CI,CI运行器 GitLab Runner-docker。
3.持续集成相关概念
1.pipeline
一次 Pipeline 其实相当于一次构建任务,里面可以包含多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程。
任何提交或者 Merge Request 的合并都可以触发 Pipeline,如下图所示:
+------------------+ +----------------+
| | trigger | |
| Commit / MR +---------->+ Pipeline |
| | | |
+------------------+ +----------------+
|
2.stages
Stages 表示构建阶段,说白了就是上面提到的流程。
我们可以在一次 Pipeline 中定义多个 Stages,这些 Stages 会有以下特点:
- 所有 Stages 会按照顺序运行,即当一个 Stage 完成后,下一个 Stage 才会开始
- 只有当所有 Stages 完成后,该构建任务 (Pipeline) 才会成功
- 如果任何一个 Stage 失败,那么后面的 Stages 不会执行,该构建任务 (Pipeline) 失败
因此,Stages 和 Pipeline 的关系就是:
+--------------------------------------------------------+
| |
| Pipeline |
| |
| +-----------+ +------------+ +------------+ |
| | Stage 1 |---->| Stage 2 |----->| Stage 3 | |
| +-----------+ +------------+ +------------+ |
| |
+--------------------------------------------------------+
|
3.jobs
Jobs 表示构建工作,表示某个 Stage 里面执行的工作。
我们可以在 Stages 里面定义多个 Jobs,这些 Jobs 会有以下特点:
- 相同 Stage 中的 Jobs 会并行执行
- 相同 Stage 中的 Jobs 都执行成功时,该 Stage 才会成功
- 如果任何一个 Job 失败,那么该 Stage 失败,即该构建任务 (Pipeline) 失败
所以,Jobs 和 Stage 的关系图就是:
+------------------------------------------+
| |
| Stage 1 |
| |
| +---------+ +---------+ +---------+ |
| | Job 1 | | Job 2 | | Job 3 | |
| +---------+ +---------+ +---------+ |
| |
+------------------------------------------+
|
4.搭建过程中的主要步骤:
- 在Gitlab上添加代码库(这个不多说了,不清楚的可以看我的git使用)
- 把代码库添加到Gitlab CI中(project中添加一个
.gitlab-ci.yml
文件,然后添加一个 Runner,即可进行持续集成) - 安装docker(参见 Docker官方文档)
- 搭建基础 docker image
- 设置Gitlab Runner-docker
- 编写测试脚本
- 编写构建脚本
- 优化过程
- 完成一个简单够用的持续集成环境
最新文章
- Android中的内存储、外存储概念、文件操作与PC端的有些不同
- jQuery 插件编程精讲与技巧
- c# 小数取整
- jQuery的如何捕捉回车键,改变事件标签
- 【转】cocos2d-x 3x Sprite3D
- UFLDL实验报告2:Sparse Autoencoder
- 开心菜鸟系列学习笔记------------javascript(6)
- JAVA读、写EXCEL文件
- [推荐] 查看网站使用的JS框架
- 新CCIE笔记-路由器的配置
- Struts2学习笔记整理(一)
- Java中的Calendar方法
- SQL Server中存储过程的创建命令
- Linux operating system basic knowleadge
- 浏览器UI多线程及JavaScript单线程运行机制的理解
- (转) java 通过 jdbc 链接 ms sql server 中出现 ";no suitable driver for ...";
- Properties类学习笔记
- 【虚拟机ubuntu设置ssh】ssh连不上问题解决方法
- 《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本
- hue, saturation, and brightness:色调、饱和度和亮度
热门文章
- Tuxera NTFS 2018 for Mac中文破解版 U盘读写软件-让你的Mac支持NTFS
- kafka笔记2
- RocketMQ(5)---RocketMQ重试机制
- 使用Core Audio实现VoIP通用音频模块
- java多线程死锁
- 系统学习 Java IO (十四)----字符读写缓存和回退 BufferedReader/BufferedWriter &; PushbackReader
- 系统学习 Java IO (十一)----打印流 PrintStream
- 超级实用的表格树控件--QtTreePropertyBrowser
- [乐意黎原创]Centos 7里apache(httpd)自启动
- Python笔记【5】_字符串&;列表&;元组&;字典之间转换学习