JavaLinux 运维技术学习

Gitlab-Runner注册

2021-11-01  本文已影响0人  TZX_0710
Gitlab-Runner使用教程

GitLab-Runner是什么?

GitLab-Runner是Gitlab提供的持续集成工具

GitLab-Runner安装注册流程

在所需要运行jar的环境安装

  1. apache-maven (gitlab-runner运行完成打包依赖maven下载jar),maven配置参考上一篇 Maven 中 Nexus 使用规范、向导

  2. jdk(1.8)

  3. git安装

    1. 安装过程中可能存在的问题

      #zlibc 缺少zlib.h:没有那个文件或目录
      yum install zlib
      # make && make install 报错提示:
      #make[1]: *** [perl.mak] Error 2
      #make: *** [perl/perl.mak] Error 2
      yum install perl-ExtUtils-MakeMaker package
      
  4. gitlab-runner 可执行文件gitlab-runner下载地址

#1.采用winscp上传gitlab-runner可执行文件 
#2.sudo chmod +x gitlab-runner 
#3.创建gitlab-runner CI用户
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
mv gitlab-runner /usr/local/bin/
#注册register
gitlab-runner register
#运行gitlab-runner 
gitlab-runner run   #采用该命令是属于前台运行 当关闭之后 gitlab-runner也就离线了
#采用服务形式运行gitlab-runner
install、uninstall、start、stop、restart、status这6个命令就是和服务相关的。
#查看option参数
gitlab-runner install --help
#安装服务
sudo ./gitlab-Runner install --config "/usr/local/gitlabRunner/config/config.tomal" --syslog --user=userName
#启动gitlab-runner服务
systemctl start gitlab-Runner
#关闭
systemctl stop gitlab-Runenr
#重启
systemctl restart gitlab-Runner
#删除所有runner
gitlab-runner unregister --all-runners


###常用gitlab-runner指令
gitlab-runner register  #默认交互模式下使用,非交互模式添加 --non-interactive
gitlab-runner list      #此命令列出了保存在配置文件中的所有运行程序
**gitlab-runner verify    #此命令检查注册的runner是否可以连接,但不验证GitLab服务是否正在使用runne**r。 --delete 删除
gitlab-runner unregister   #该命令使用GitLab取消已注册的runner。
#使用令牌注销
gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n
#使用名称注销(同名删除第一个)
gitlab-runner unregister --name test-runner
#注销所有
gitlab-runner unregister --all-runners

gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
# --user指定将用于执行构建的用户
#`--working-directory  指定将使用**Shell** executor 运行构建时所有数据将存储在其中的根目录
gitlab-runner uninstall #该命令停止运行并从服务中卸载GitLab Runner。
gitlab-runner start     #该命令启动GitLab Runner服务。
gitlab-runner stop      #该命令停止GitLab Runner服务。
gitlab-runner restart   #该命令将停止,然后启动GitLab Runner服务。
gitlab-runner status #此命令显示GitLab Runner服务的状态。当服务正在运行时,退出代码为零;而当服务未运行时,退出代码为非零。

注册runner

采用shell 指令注册runner容器

根据文档提示按照步骤注册gitlab-runner

  1. 输入gitlab的服务URL 也就是截图当中的URL地址

  2. 输入gitlab-ci的token,获取在项目当中的settings中的子菜单CI/CD 中的Runners Tab模块

  3. 关于集成服务中对于这个runner的描述

  4. 给这个gitlab-runner输入一个标记,这个tag非常重要,在后续的使用过程中需要使用这个tag来指定gitlab-runner

  5. 是否运行在没有tag的build上面。在配置gitlab-ci的时候,会有很多job,每个job可以通过tags属性来选择runner。这里为true表示如果job没有配置tags,也执行

  6. 是否锁定runner到当前项目

  7. 选择执行器,shell,docker,等

    执行完成就可以看到一个绿色的runner容器

如果遇到注册 之后面板还是未激活的采用如下指令重新启动加载

gitlab-runner verify  
gitlab-runner restart
使用GitlabRunner 进行CI/CD
  1. 在项目的根目录下面创建.gitlab-ci.yml文件
  2. gitlab-ci.tyml示例参考地址
  3. 推送到gitlab分支 在 项目当中的CI/CD菜单查看执行结果
  4. 配置参数参考地址
####示例脚本
# define job variables at job level
variables:
 MAVEN_CLI_OPTS: "-s /home/glab.aesc/apps/apache-maven-3.8.3/conf/settings.xml --batch-mode"
 MAVEN_OPTS: "-Dmaven.repo.local=/home/glab.aesc/.m2/repository"
# define list of files that should be cached
cache:
 paths:
   - /home/glab.aesc/.m2/repository
   - target/
#定义ci/cd 执行流程 分别是 build,package,deploy
stages:
 - build
 - package
 - deploy
# 编译阶段执行的操作命令
build:
 stage: build
 script:
   - echo "======== start build ========"
   - mvn $MAVEN_CLI_OPTS compile
# 打包阶段执行的shell操作
package:
 stage: package
 script:
   - echo "======== start package ========"
   - mvn $MAVEN_CLI_OPTS -Dmaven.test.skip=true package
# 发布脚步
deploy:
 stage: deploy
 script:
   - echo "======== start deploy ========" 
   - mvn $MAVEN_CLI_OPTS deploy
 only:
   - master  #针对master分支有效.也就是master分支更新会自动触发该ci/cd流程
执行过程
注册runner

首先注册runner,输入url、token、tag等信息,注册时会向GitLab发送一个请求。
GitLab接收到请求后会返回一个token给runner,runner之后和GitLab的请求通讯都会带上这个token

查询job

注册成功后runner会向GitLab轮询请求,查看是否要执行任务。

查询到job后构建执行

某位开发者push了代码,代码更新了,这时候流水线pipeline启动,并将第一个stage设置为pending状态。
在步骤3完成没多久,runner的下一次请求已经到达了,这时候会把pending状态的stage发送到runner处,之后runner开始干活,执行gitlab-ci.yml中的脚本

Job Trace日志信息发送给GitLab Server

当执行完了脚本后,runner会发送最终的执行结果,如果完成则为passed,失败则为failed

问题集锦

Job一直挂起,没有Runner来处理

首先考虑的是不是Runner没有激活
2)还可能是tags没有匹配到, Runner注册时是要填写绑定tags的,如果你在YML里面编写Job没有带上tags是不会有自定义Runner来处理。解决方法:给Job加tags。
3)最后一种可能:你连续注册了多个Runner,这些Runner冲突了,或者是新注册的Runner和旧Runner使用了同一个token,这时候的解决方法如下:
先删掉本地其他旧的Runner。
sudo gitlab-runner unregister --all-runners
然后重置Token,并使用更新后的Token重新注册一个Runne

Runner未激活问题

有时候管理员注册共享runner后,查看面板上的Runner信息,可能会发现Runner处在未激活状态。

运行以下命令重新启动Runner。
gitlab-runner verify
gitlab-runner restart

上一篇 下一篇

猜你喜欢

热点阅读