这篇文章上次修改于 300 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
1. 仓库配置
根目录下增加 .gitlab-ci.yml文件,示例:
stages:          # 作业分组列表及分组执行顺序
  - build
  - test
  - deploy
build-job:
  stage: build   # 这个作业运行在build分组
  script:
    - cd /home && ls -la
    - whoami
    - echo "Compiling the code..."
    - echo "Compile complete."
unit-test-job:
  stage: test   # 这个作业运行在test分组,只有build分组执行成功后才能执行
  script:
    - echo "Running unit tests... This will take about 60 seconds."
    - sleep 60
    - echo "Code coverage is 90%"
lint-test-job:
  stage: test    # 这个作业运行也在test分组,配置了多个runner或单个runner的concurrent>1时可与unit-test-job作业并行执行
  script:
    - echo "Linting code... This will take about 10 seconds."
    - sleep 10
    - echo "No lint issues found."
deploy-job:
  stage: deploy  # 这个作业运行在deploy分组,只有test分组执行成功后才能执行
  environment: production
  script:
    - echo "Deploying application..."
    - echo "Application successfully deployed."常用字段:
stages:定义所有可用的作业分组(阶段),分组内的作业并行执行(需多个Runner),各分组顺序执行。 常用stage有:.pre(特殊阶段,在所有阶段之前运行)、build、test、deploy、.post(特殊阶段,在所有阶段之后运行)。deploy-doc-job:一条作业stage:作业所属的分组,如果作业没有指定 stage,它会被分配到 test 分组variables:作业级变量,将覆盖全局变量script:作业要执行的命令或脚本,除了“触发作业”之外的所有作业都需要一个scriptdependencies:作业依赖的其他作业的timeout:作业的超时时间tags:运行作业的 Runner(见下文)标签rules:指定何时运行或跳过作业,过时的only和except仍受支持,但不能在同一作业中与rules一起使用
更详细的说明见官方文档。
2. Gitlab创建Runner
GitLab Runner 是 GitLab CI/CD 的核心组件之一,负责执行 GitLab CI/CD 流水线中的作业。
- 网页中打开仓库,设置-->CI/CD-->Runner-->新建项目Runner
 选择Runner平台(Linux为例)等信息
注意:运行未打标签的作业选项未启用时,Runner只能够执行标签*选项中配置的作业,无标签或标签不在列表中的作业将无法执行。
- 确认后转入runner配置页面,包含安装、注册Runner的方法。
 
2.1 安装Runner服务
首次安装可参考如何安装 Runner?中的提示在运行脚本的Linux主机上安装Runner,主要步骤:
# 下载gitlab-runner
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
# 赋予执行权限(确保/usr/local/bin在PATH中)
sudo chmod +x /usr/local/bin/gitlab-runner
# 创建gitlab-runner用户
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
# 安装并启动gitlab-runner服务
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner startgitlab-runner help 可查看帮助根据官方文档,需要检查 /home/gitlab-runner/.bash_logout,如果该文件存在且其中含有如下脚本时:
if [ "$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi将其注释掉,否则在执行shell作业时会报错(Job failed: prepare environment: exit status 1.)。
2.2 注册Runner
同样在该主机上,执行网页中的提供注册命令。推荐使用sudo执行,以普通用户注册的需要手动运行 gitlab-runner run并保持运行,否则作业无法执行;以root用户注册的runner自动由系统服务执行。
sudo gitlab-runner register  --url http://xx.xx.xx.xx:25153  --token xx-xxx--xx-根据提示,输入Runner的参数,其中 Enter an executor使用shell。
配置完成后配置信息存储在 config.toml 中,以普通用户注册的路径为 ~/.gitlab-runner/config.toml,root用户为 /etc/gitlab-runner/config.toml。
命令执行完成后,gitlab网页中将显示注册成功信息,并可在Runner页查看到状态:

绿色圆形标识代表Runner注册正确,下方为该runner处理的任务标签列表。
3. 执行作业
至此,Gitlab即可执行 gitlab-ci.yml中定义的作业,作业在流水线中执行:
- 推送后自动执行,分支、标签等,可在yml中定义更多规则
 - 手动执行:项目-->构建-->流水线-->运行流水线
 
可通过项目-->构建-->作业查看作业状态。

没有评论
博主关闭了评论...