最近一年在做一个比较大的项目,在之前项目的时候,吃过多环境部署的亏,所以这次项目开始之前主动提出了要使用 AutoDevOps 。经过一段时间的接触和使用,发现AutoDevops对于开发人员来说确实是个“枕头”。

stage

基于 GitLab 的 AutoDevOps 主要是通过一个神奇的文件 .gitlab-ci.yml 实现的,语法也非常简单,在这里

而执行这些定义好的 ci jobs 用的也是 GitLab 的同家庭组件 gitlab-ruuner 。官方的 gitlab 仓库默认提供了很多公共的 runner 可以直接使用,只是有次数限制。

所以还是需要了解一下如何安装 gitlab-ruuner 才行。

官方 gitlab-runner 的类型有很多,比较常用的有两种 shelldocker-in-docker 。详细安装方式可以参考官网文档,这里做一下简单记录。

# docker in docker
# 特点: 所有的命令都是在 docker 镜像里执行的,跟宿主机本身没有任何关系。只依赖宿主机硬件资源限制。
# 需求: 宿主机需要安装了 docker ,并且可以下载镜像。
# 1. 先用 docker 生成配置文件。
sudo docker run --rm -t -i -v /Users/Shared/gitlab-runner/did/config/01:/etc/gitlab-runner \
--name gitlab-runner-shared gitlab/gitlab-runner register \
--non-interactive \
--executor "docker" \
--url "https://xxxx/" \
--registration-token "xxxx" \
--description "docker-in-docker-01" \
--tag-list "did-runner" \
--docker-image "docker:stable" \
--docker-privileged
--locked=false
# 2. 在把前面生成的配置挂载到 docker 里面去启动真正的 runner 。
sudo docker run -d --name gitlab-runner-shared-01 --restart always \
-v /Users/Shared/gitlab-runner/did/config/01:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest


# ========= Docker rm stoped containers
docker rm $(docker ps -a -q)
# ========= Docker rm stoped containers


# shell
# 特点: 跟把命令 copy 到机器上执行效果一样。所以可以执行什么样的命令,取决于机器上安装了什么环境。
# 需求: Centos 的话,需要有 root 权限,并且 yum 能正常下载包就行了。
# 1. Add GitLab's official repository:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

# 2. Install the latest version of GitLab Runner
sudo yum install gitlab-runner

# 2.1 Install special version
yum list gitlab-runner --showduplicates | sort -r
sudo yum install gitlab-runner-10.0.0-1

# 2.2 Update gitlab-runner
sudo yum update
sudo yum install gitlab-runner

# 3. Registering Runner
sudo gitlab-runner register \
--non-interactive \
--url "http://xxx/" \
--registration-token "xxx" \
--executor "shell" \
--docker-image alpine:latest \
--description "shell-01" \
--tag-list "shell-runner" \
--run-untagged \
--locked="false" \

# 4. Run runner
gitlab-runner install --user gitlab-runner
# test
gitlab-runner run
# run as service
gitlab-runner start

# 5. UnRegistering Runner
sudo gitlab-runner list
sudo gitlab-runner unregister --name name1

# 6. Uninstall Runner
gitlab-runner uninstall