Devops---基于Docker实现GitLab企业开发过程全自动化
Devops—基于Docker实现GitLab企业开发过程全自动化
搭建该流程化过程起因
原项目gitlab仓库所在私服磁盘被docker数据占满,无法访问,容器寄掉了。于是自己动手在自己的私服上不想浪费那1TB的磁盘,于是从0开始完整搭建了gitlab仓库(企业用的比较多)、gitlab-runner(实现Devops的关键)、部署的全过程。下图是GitLab官网的介绍:The DevSecOps Platform | GitLab
一、搭建gitlab仓库
首先介绍一下如何搭建gitlab仓库。
1 | 搜索gitlab版本 我一般都用最新版latest |
我没用docker run的命令来启动gitlab,因为我怕忘记命令,所以用的docker-compose.yml文件启动方式。
1 | version: '3.1' |
1 | 启动容器 |
注意:刚启动容器初始化比较慢,可能一直访问不了或者报502错误,不要紧张,等一会儿就行了。可以通过下面的命令来查看容器日志。
1 | docker logs -f [容器id/容器名] |
gitlab默认用户名是root,密码需要我们进入gitlab容器内查看
1 | docker exec -it gitlab cat /etc/gitlab/initial_root_password |
登录之后就可以在设置里面修改密码。
之后就可以完成你想进行的操作了:repo、ci/cd等等。
二、搭建gitlab-runner
同样 docker安装gitlab-runner
1 | docker search gitlab/gitlab-runner |
拉取gitlab-runner镜像
1 | docker pull gitlab/gitlab-runner |
docker-compose.yml启动容器:
1 | version: '3.1' |
启动容器:
1 | docker-compose up -d |
gitlab-runner信息注册关联gitlab仓库
1 | 第一个gitlab-runner是容器名,第二个是image |
记下来就是注册信息 需要注意:最后选择docker版本的时候建议:docker:latest
上图是你的gitlab仓库的某个项目的CI/CD信息,可以看到URL和token,这是注册时需要的信息。注意注册时会有tags标签,这个在gitlab-ci.yml中需要指定,所以尽量不要乱起名字,需要保持一致,后续也可以在gitlab中修改。
gitlab-runner/config关键配置信息修改
在挂载的数据卷目录下:比如gitlab-runner/config下有个config.toml文件,修改她。
1 | vim config.toml |
基本配置如下:
1 | concurrent = 1 |
好了 ,接下来就可以编写你项目的gitlab-ci.yml
文件了。
参考:Docker安装Gitlab和Gitlab-Runner并实现项目的CICD-阿里云开发者社区 (aliyun.com)
三、结合CI/CD执行build、deploy等自动化流程
gitlab-ci.yml 和 Dockerfile 写法注意
我们可以把ci/cd当作一个大的脚本服务,里面可以打包镜像,执行docker build上传镜像,这里建议私有库,比如阿里云。
流程一般如下:
1 | docker build |
在gitlab-ci.yml一般分为多个stage:build、test、deploy、cleanup
根据自己需求编写script。
一般build阶段如上所述,deploy阶段通过类似于ssh ip bash ***.sh
的脚本(前提是将runner所在服务器的ssh公钥放入目标部署服务器的可信公钥) ,这个脚本一般是
1 | docker pull、 |
以上就是大致的整个过程 非常有意思和有意义