gitlab CI/CD系列之使用 GitLab Runner注册和基本环境配置

由于很多时候我们的环境搭建都是在已经在对应的设备上搭建完成,或者是我们直接使用一个配置好的docker容器(开机自动启动)作为ci/cd的运行环境,所以为了便利性这里主要使用的是shell模式

简介

理解了上面的基本概念之后,有没有觉得少了些什么东西 —— 由谁来执行这些构建任务呢?
答案就是 GitLab Runner 了!

想问为什么不是 GitLab CI 来运行那些构建任务?

一般来说,构建任务都会占用很多的系统资源 (譬如编译代码),而 GitLab CI 又是 GitLab 的一部分,如果由 GitLab CI 来运行构建任务的话,在执行构建任务的时候,GitLab 的性能会大幅下降。

GitLab CI 最大的作用是管理各个项目的构建状态,因此,运行构建任务这种浪费资源的事情就交给 GitLab Runner 来做拉!

因为 GitLab Runner 可以安装到不同的机器上,所以在构建任务运行期间并不会影响到 GitLab 的性能

Gitlab CI 配置shell Runner的安装

在目标主机上安装 GitLab Runner,这里的目标主机指你要部署的服务器
Ubuntu 安装脚本:

  1. Installing the Runner
    Important: If you are using or upgrading from a version prior to GitLab Runner 10, read how to upgrade to the new version. If you want to install a version prior to GitLab Runner 10, visit the old docs.
    To install the Runner:

  2. Add GitLab’s official repository:

# For Debian/Ubuntu/Mint
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

# For RHEL/CentOS/Fedora
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

Note: Debian users should use APT pinning.
Install the latest version of GitLab Runner, or skip to the next step to install a specific version:

Note: Debian buster users should disable skel to prevent No such file or directory Job failures
# For Debian/Ubuntu/Mint
sudo apt-get install gitlab-runner

# For RHEL/CentOS/Fedora
sudo yum install gitlab-runner
  1. To install a specific version of GitLab Runner:
# for DEB based systems
apt-cache madison gitlab-runner
sudo apt-get install gitlab-runner=10.0.0

# for RPM based systems
yum list gitlab-runner --showduplicates | sort -r
sudo yum install gitlab-runner-10.0.0-1
  1. Register the Runner,按照下图进入,根据教程即可注册gitlab runner.
    在这里插入图片描述

注册 Runner

安装好 GitLab Runner 之后,我们只要启动 Runner 然后和 GitLab CI 绑定:

[root@iZbp1fmnx8oyubksjdk7leZ gitbook]# sudo gitlab-ci-multi-runner register
Running in system-mode.                            
                                                   
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.75.146:8080/
Please enter the gitlab-ci token for this runner:
1Lxq_f1NRfCfeNbE5WRh
Please enter the gitlab-ci description for this runner:
[iZbp1fmnx8oyubksjdk7leZ]: deploy-gaming
Please enter the gitlab-ci tags for this runner (comma separated):
deploy
Whether to run untagged builds [true/false]:
[false]: true
Whether to lock Runner to current project [true/false]:
[false]: 
Registering runner... succeeded                     runner=P_zfkhTb
Please enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 

说明:

  • gitlab-ci-multi-runner register:执行注册命令
  • Please enter the gitlab-ci coordinator URL:输入 ci 地址
  • Please enter the gitlab-ci token for this runner:输入 ci token
  • Please enter the gitlab-ci description for this runner:输入 runner 名称
  • Please enter the gitlab-ci tags for this runner:设置 tag
  • Whether to run untagged builds:这里选择 true ,代码上传后会能够直接执行
  • Whether to lock Runner to current project:直接回车,不用输入任何口令
  • Please enter the executor:选择 runner 类型,这里我们选择的是 shell

CI 的地址和令牌,在 项目 --> 设置 --> CI/CD --> Runner 设置 或者我们想为项目组添加CI的Runner;

出现New runner. Has not connected yet, 此时必须使用sudo gitlab-runner register 进行注册。
(很大程度上是跟是否使用sudo相关的,因为用户的不同会导致一些权限问题)

重要的其他配置,保证gitlab-runner 账户的权限和编写.gitlab-ci.yml时可以顺利进行测试。

  • 安装完 GitLab Runner 后系统会增加一个 gitlab-runner 账户,我们先给他设置密码:
sudo passwd gitlab-runner
  • 然后将它加进 root 组,这样拥有的权限就可以无限制:
sudo gpasswd -a gitlab-runner root
  • 由于我们的gitlab项目一般都是私密项目,而且 .gitlab-ci.yml 的shell 脚本中有执行 git pull 和git push的命令,我们必须要直接设置以 ssh 方式拉取代码:
su gitlab-runner
ssh-keygen -t rsa -C "你在 GitLab 上的邮箱地址"
cd 
cd .ssh
cat id_rsa.pub
  • 复制 id_rsa.pub 中的秘钥到你的GitLab账号的ssh key中.
  • 在这里插入图片描述
  • 通过 ssh 的方式将代码拉取到本地
  • 这里一定要特别注意,一定要提前进入,测试一次git clone 指令,激活ssh-key
  • 在这里插入图片描述

gitlab-runner一直处于pending状态原因分析

项目触发runner,一直处于pending

初步怀疑是runner卡住了,也有可能是因为服务器资源不足,在服务器上执行gitlab-ci-multi-runner list发现runer还在,

在执行gitlab-ci-multi-runner verify,发现runer还活着,但是就是一直不执行流程

有两个方法解决:

1、执行gitlab-ci-multi-runner run(不推荐使用)

    他会去执行runner任务,但是每次都需要运行次命令才回去执行任务

2、执行 **gitlab-ci-multi-runner restart**

    重启runner,发现他会自动去执行触发runner的任务
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gitlab CI/CD指的是Gitlab提供的持续集成和持续交付的功能。它可以帮助开发团队实现自动化的构建、测试和部署过程,从而提高开发效率和软件质量。 要使用GitLab CI/CD,需要熟悉.gitlab-ci.yml配置文件的语法及其属性。这个配置文件定义了构建和部署流程的步骤、依赖关系和环境变量等信息。你可以根据项目的需求自定义配置文件,GitLab CI/CD会根据配置文件的内容来执行相应的操作。 GitLab CI/CDGitLab中内置的一个功能强大的工具,它可以将连续集成、交付和部署应用于软件项目,而无需依赖第三方应用程序或集成。具体来说,它通过使用GitLab Runner来执行构建和部署作业,可以支持各种不同的项目类型和编程语言。你可以在GitLab的界面上配置、管理和监控CI/CD管道,查看运行结果和日志。 总之,GitLab CI/CD是一个强大的工具,可以帮助开发团队实现持续集成和持续交付,提高软件开发的效率和质量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Gitlab CI/CD 简单介绍](https://blog.csdn.net/wangjiang_qianmo/article/details/122867335)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用GitLab进行CI/CD简介](https://blog.csdn.net/FatTigerx/article/details/103766541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值