gitlab-runner 注册执行器与踩坑
前言
上一篇已经讲了 gitlab-runner 的部署方法,这一篇我们来讲一下如何注册 gitlab-runner 执行器并创建作业
一、添加 .gitlab-ci.yml 配置文件
在需要注册 CI/CD 的项目中,增加一个 .gitlab-ci.yml
的配置文件
基本模板配置如下:
stages: - build - test - deploy build-job: stage: build script: - echo "Compiling the code..." - echo "Compile complete." unit-test-job: stage: test script: - echo "Running unit tests... This will take about 60 seconds." - sleep 60 - echo "Code coverage is 90%" lint-test-job: stage: test script: - echo "Linting code... This will take about 10 seconds." - sleep 10 - echo "No lint issues found." deploy-job: stage: deploy script: - echo "Deploying application..." - echo "Application successfully deployed."
二、为项目注册 Runner
1. 打开 gitlab 中的需要注册 Runner 的项目
进入 设置 - CI/CD -Runner
: 拿到 URL 和 token
2. 在部署 gitlab-runner 的服务器上执行注册指令
gitlab-runner register
- 配置步骤详解
# 在gitlab的组或项目中的设置-cicd-runner或获取:GitLab 地址 Enter the GitLab instance URL (for example, https://gitlab.com/): > 输入gitlab的服务URL # 输入 GitLab Token Enter the registration token: > 输入令牌,参考图中绿色部分所示 # 输入 Runner 的描述 Enter a description for the runner: > 这里的描述也是 runner 的名称 # 设置 Tag,可以用于指定在构建规定的 tag 时触发 ci Enter tags for the runner (comma-separated) > test # 输入可选维护说明 Enter optional maintenance note for the runner: > runner 的描述内容,随便写 # 选择 runner 执行器,通常选择 shell Enter an executor: docker+machine, docker-ssh+machine, custom, docker-windows, docker-ssh, ssh, kubernetes, docker, parallels, shell, virtualbox: > shell # 回车结束,安装gitlab-runner文件夹下会自动生成config.toml
三、为项目添加执行器
1. runner 注册成功后返回仓库
- 此时页面会新增一条可用的指定 Runner
- 如果此时指示灯是绿色则表示正常
2. 修改设置
- 点击编辑按钮
- 选中 运行未标记的作业
- 确认 启用、未标记的作业、锁定到当前项目都被选中后保存修改
如果不选中 运行未标记的作业, CI/CD 任务会一直被阻塞挂起
此时,即可运行 CI/CD 的作业了。
四、常见问题
1. git clone 地址不正确
这是因为 gitlab 私服部署时会默认使用主机名作为地址
这里需要修改 gitlab URL 的配置,重启后即可生效
2. git clone 连接超时
这里需要检查 gitlab 私服配置的 DNS / IP 地址 / 端口号 是否和外网请求地址一致
这里将上面的 git 仓库地址在浏览器上看看是否能直接打开,即可确认是否是地址有问题
3. 未找到 xxx 命令
这是因为所使用的命令在 runner 服务器上不存在,如:java , node , npm , maven 等
在部署 gitlab-runner 的服务器中安装好开发环境即可。
4. 权限不足
这是因为 gitlab-runner 安装时默认将用户设置为: gitlab-runner
该设置会使编写的 .gitlab-ci.yml 脚本在命令上受到权限限制问题.
- 可以通过对 gitlab-runner 用户授权 sudo 的方式解决,但是还会有一个问题,就是需要启动服务时显性指定 gitlab-runner 用户,否则 CI/CD 任务不会执行,会一直处队列中。
- 避免麻烦,这里选择使用将 root 用户作为 gitlab-runner 的执行用户
-
查看gitlab-runner进程:
ps aux | grep gitlab-runner
可以查看到 gitlab-runner 的工作目录和默认用户等一系列相关信息。
-
卸载 gitlab-runner 默认用户:
gitlab-runner uninstall
-
将用户设置为root:
gitlab-runner install --working-directory /home/gitlab-runner --user roott
-
重启服务:
gitlab-runner restart
-
再次查看gitlab-runner进程:
ps aux | grep gitlab-runner
5. docker 中自动化部署build报错
- 检查 docker 是否已经启动
systemctl status docker
- 如果 docker 已启动可能是没有权限导致的,给 docker.sock 增加执行权限
sudo chmod 777 /var/run/docker.sock
6. docker apline temporary error (try again later) 错误
这是因为没有 DNS 导致的
在本机系统上创建daemon文件添加dns,然后重启docker
vim /etc/docker/daemon.json { "dns": ["8.8.8.8"] } sudo service docker restart
本文来自博客园,作者:子洋丶,转载请注明原文链接:https://www.cnblogs.com/zi-yang/p/17604369.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!