【GitLab】GitLab-CI(shell方式)入门配置
【GitLab】GitLab-CI(shell方式)入门配置
1. 仓库配置
根目录下增加 .gitlab-ci.yml
文件,示例:
stages: # 作业分组列表及分组执行顺序- build- test- deploybuild-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: productionscript:- 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 start
gitlab-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注册正确,下方为该runner处理的任务标签列表。
3. 执行作业
至此,Gitlab即可执行 gitlab-ci.yml
中定义的作业,作业在流水线中执行:
- 推送后自动执行,分支、标签等,可在yml中定义更多规则
- 手动执行:项目–>构建–>流水线–>运行流水线
可通过项目-->构建-->作业
查看作业状态。
作业执行日志