前不久使用docker部署好了自己的gitlab服务,简直香惨了。
上集传送门:记录一次使用Docker安装gitlab-ce的过程(含配置交换内存)
现在,gitlab-runner终于可以来了!
一句话概括有多香:成功安装gitlab-runner后,就可以流水线部署项目了,毕竟“懒惰”是程序员的三大美德之一。
首先,在服务器上新建一个名为gitlab-runner
的目录。
然后在里面新建docker-compose.yml文件。
内容参考:
version: '3.8'
services:
gitlab-runner:
image: gitlab/gitlab-runner:latest
container_name: gitlab-runner
restart: always
volumes:
- ./config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock # 这一行是固定写法 不要随便改
在docker-compose.yml目录下,分别运行命令:
# 先拉取镜像
docker-compose pull
# 拉取完成后,启动镜像
docker-compose up -d
# 查看启动日志
docker-compose logs -f
查看日志的时候,会发现许多报错信息:
不慌,这是正常现象。
这是因为runner没有注册,可以理解成runner容器需要和gitlab-ce容器绑定才能使用。
注册时需要填写一些字段,先到gitlab里准备好。
登录gitlab进入设置界面(管理员登录更佳)
找到CI/CD下的Runner条目,在“新建Runner”旁有3个小点,点击。
拿到url和令牌:
# 进入容器内部并执行注册操作
docker exec -it gitlab-runner gitlab-runner register # 第一个gitlab-runner是容器名称 根据实际情况填写
中间需要填写一些信息
# 01 首先,会要求填写url
> Enter the GitLab instance URL (for example, https://gitlab.com/):
# 填刚才拿到的url
# 02 然后,要求填写令牌
> Enter the registration token:
# 填刚才拿到的token
# 03 填写描述
> Enter a description for the runner:
# 随便写,之后可以到设置页面更改
# 04 填写标签 ,分隔
> Enter tags for the runner (comma-separated):
default_runner # 这个要填一个标签名,之后可以修改
# 05 填写可选说明
> Enter optional maintenance note for the runner:
# 随便写或不写 之后可改
# 06 选择执行器 如果不会选 就选docker
> Enter an executor: custom, docker, shell, ssh, virtualbox, docker-autoscaler, docker+machine, instance, docker-windows, parallels, kubernetes:
docker # 输入docker并回车
# 07 选择默认镜像(docker选项会有这一步,默认镜像仅当.gitlab-ci.yml没有指定时才生效)
> Enter the default Docker image (for example, ruby:2.7):
alpine:latest # 我写了个alpine 供参考
# 提示创建成功!
> Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
作为测试,我新建了一个项目,写了一个index.html页面。
编写.gitlab-ci.yml
文件
pages:
stage: deploy
script:
- mkdir .public
- cp -r ./* .public
- rm -rf public
- mv .public public
artifacts:
paths:
- public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
新建一个流水线:
运行时遇到问题:
因为我的runner设置了标签,要求作业也要设置对应的标签才行,一种方案是在.gitlab-ci.yml
中新增标签。
我这里偷个懒,勾选支持无标签运行。
重新部署: