一开始是打算给自己博客整个CI然后自动部署,搞定的差不多之后就开始手痒,打算给公司的一个golang的项目也给CI/CD了, 然后就踏上了GitLab - CI/CD 的不归路。
其实安装过程的教程官网有:GitLab,就几条命令而已 。
Installation 安装
下载,根据linux的类型自行选择。
1 | # Linux x86-64 |
然后给运行权限给 gitlab-runner
1 | sudo chmod +x /usr/local/bin/gitlab-runner |
然后创建 gitlab-runner
的用户
1 | sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash |
安装gitlab-runner
的服务,然后跑起来
1 | sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner |
Service registration 服务注册
然后给项目注册 gitlab-runner
, 这时候需要一个url
地址和一串token
,一句废话,这个url
必须可以让 gitlab-runner
访问到 , 不然连不通的。 这个地址在项目的 gitlab.com/username/project/settings/ci_cd
页面的CI/CD
的选项卡内 (本博客懒得找图床)。同时也有给k8s
装gitlab-runner
的选项,会看我博客的人用不上,用的上的人不会看我的博客,所以略过。
获得这俩值后开始注册 gitlab-runner
1 | sudo gitlab-runner register #注册 |
Configuration File 配置文件
给项目加上.gitlab-ci.yml
文件 , 以下是golang
的示范文件 。
我的环境时shell
, 也就是说下面文件所有的运行环境都是在bin/sh
输入command而已。
1 | before_script: |
太明显的就懒得讲了,主要讲三个 , 一个是 tags
, 这个对应的是 gitlab-runner
的tag
. 而 only
代表这一 stages
只有该分支需要运行 。还有一个 except
, 也就是说这一阶段除了这一分支都需要运行 。
如果你打算用 docker
来当运行器的话, 接下来的就可以略过了,节省时间。
一个坑
当在使用shell 环境的时候,默认的gitlab-runner
使用的账户会经常碰到 permission denied
的问题 , 临时解决方法是当你需要跑ci的时候上服务器
1 | sudo gitlab-runner run |
而一劳永逸的方法就是 , 给gitlab-runner
的账号提权。
方法一
1
useradd gitlab-runner --shell /bin/bash -g root -G root #直接在创建的时候给root权限就完事了。
方法二
1
usermod -g root gitlab-runner #修改分组
方法三
1
2
3
4
5#vim /etc/sudoers
修改:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
gitlab-runner ALL=(ALL) ALL方法四
1
2
3
4# vim /etc/passwd
gitlab-runner:x:500:500:gitlab-runner:/home/gitlab-runner:/bin/bash
#修改成⬇️
gitlab-runner:x:0:500:gitlab-runner:/home/gitlab-runner:/bin/bash以上四个方法来自 linux 技术屋