Gitlab Runner

Runner

  • Gitlab与Runner架构
  • 云服务器上安装Runner
  • Docker 安装Runner
    • 直接起容器
    • 进入容器添加认证
    • 在之前gitlab创建的edu-java项目中配置gitlab-ci
    • 配置user的权限
    • 测试验证
  • 关于Gitlab Runners界面访问新添加的runner时报错

Gitlab与Runner架构

理论上gitlab 与Runner不安装在同一台服务器上,我这里自己做测试就在同一台机器装了
另外需要注意的点,runner一般在docker上跑,或者K8S上跑,隔离性还好

Gitlab Runner_第1张图片

云服务器上安装Runner

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash  #下载网络源
yum list gitlab-runner --showduplicates |sort -r  #查看runner包版本,尽量于gitlab一致
yum list all | grep gitlab  #发现我gitlab版本低了
yum update gitlab-ce.x86_64  #对gitlab进行升级,这步要慎重,我的两核4G服务器更新的时候,内存,CPU爆满,没开swap,不过最后还是跑起来了
yum install -y gitlab-runner-14.5.0-1 #安装指定版本runner

Gitlab Runner_第2张图片
Gitlab Runner_第3张图片

Docker 安装Runner

直接起容器

sudo docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

进入容器添加认证

docker exec -it gitlab-runner /bin/bash

根据你的gitlab的CI/CD里的认证,更改下面的url 和registration-token,

Gitlab Runner_第4张图片

gitlab-runner register \
  --non-interactive \
  --url "http://10.100.129.113:8090" \
  --registration-token "S1Erstg39-nh1xQVMtBN" \
  --executor "docker" \
  --docker-image maven:latest \
  --description "160runner " \
  --tag-list "160" \
  --run-untagged \
  --locked="false"
重要参数说明:
    url和token参考上图,在runner需要对接的gitlab中获得;
    executor是runner中pipeline以什么方式运行,这里选择的是docker方式,其实还支持shell等其它方式。
    docker-image是runner中pipelne以哪个image为基础来执行executor。
    tag-list是runner的tag,在gitlab的project中关于ci的配置文件中会引用得到。
Runner注册成功后就会在gitlab的CI/CD页面看到下图中的红框内容:

Gitlab Runner_第5张图片

如果出现灰色的runner说明runner虽然注册上来但是不可用,当gitlab与runner安装在同一台机器时就会出现这种情况,所以请尽量分开

在之前gitlab创建的edu-java项目中配置gitlab-ci

在项目根目录下添加.gitlab-ci.yml文件,gitlab-ci很强大,本质就是以yml的格式定义了一个pipeline,与jenkins存在功能重叠的部分,自己改的有问题,直接引用官方的。

.gitlab-ci.yml内容如下:

image: busybox:latest

before_script:
  - echo "Before script section"
  - echo "For example you might run an update here or install a build dependency"
  - echo "Or perhaps you might print out some debugging details"

after_script:
  - echo "After script section"
  - echo "For example you might do some cleanup here"

build1:
  stage: build
  script:
    - echo "Do your build here"

test1:
  stage: test
  script:
    - echo "Do a test here"
    - echo "For example run a test suite"

test2:
  stage: test
  script:
    - echo "Do another parallel test here"
    - echo "For example run a lint test"

deploy1:
  stage: deploy
  script:
    - echo "Do your deploy here"

因为我项目克隆在了opt下所以在这个项目里创建.gitlab-ci.yml

配置user的权限

在项目的设定中的Repository Settings 中的保护分支:Protected branches
限制只有maintainers才可以push和merge项目的dev版本

Gitlab Runner_第6张图片

测试验证

git clone git@github.com:yejingtao/runproject.git
cd /opt  #进入到gitlab项目的家目录下
cp -r  runproject/ edu-java/   #递归复制到edu-java项目下
cd /opt/edu-java/runproject    #进入大佬的项目
vim .gitlab-ci.yml   #根据上面写的修改成自己的
cp  .gitlab-ci.yml  /opt/edu-java #复制大佬的CI文件到自己的项目里
cd /opt/edu-java  #准备push到自己的gitlab上
git add .   # 添加当前目录下的所有文件和子目录加入到Git的索引中
git config --global user.email "[email protected]"
git config --global user.name "dev01"
git commit -m "first commit"
git push  #推送到gitlab的 edu-java项目

终端上提交或者在web界面更改 .gitlab-ci.yml都可以
在项目里就可以看到跑成功了

Gitlab Runner_第7张图片
Gitlab Runner_第8张图片

关于Gitlab Runners界面访问新添加的runner时报错

Gitlab Runner_第9张图片

Gitlab Runner_第10张图片

报错信息

fatal: unable to access 'http://vm-0-5-centos/edu-java/edu-java.git': Could not resolve host: vm-0-5-centos

当点击以上界面,网页会重定向到http://hostname/admin/runners/2
这个是无法识别的,你的runner运行job也会报错

需要你在Gitlab server更改配置文件

vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
  gitlab:
    ## Web server settings (note: host is the FQDN, do not include http://)
    #    host: VM-0-5-centos   #之前是主机名,所以会自动跳转到http://VM-0-5-centos/admin/runners/2
    host: 你的IP或者域名
    port: 80
    https: false
gitlab-ctl restart   #重启就可以正常访问了,job也能正常运行了

转载于:https://blog.csdn.net/yejingtao703/article/details/83065591

你可能感兴趣的:(持续集成,elasticsearch,elk,javascript)