Gitlab-Runner注册
Gitlab-Runner使用教程
GitLab-Runner是什么?
GitLab-Runner是Gitlab提供的持续集成工具
GitLab-Runner安装注册流程
在所需要运行jar的环境安装
apache-maven (gitlab-runner运行完成打包依赖maven下载jar),maven配置参考上一篇
Maven 中 Nexus 使用规范、向导jdk(1.8)
git安装
安装过程中可能存在的问题
#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 packagegitlab-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
输入gitlab的服务URL 也就是截图当中的URL地址
输入gitlab-ci的token,获取在项目当中的settings中的子菜单CI/CD 中的Runners Tab模块
关于集成服务中对于这个runner的描述
给这个gitlab-runner输入一个标记,这个tag非常重要,在后续的使用过程中需要使用这个tag来指定gitlab-runner
是否运行在没有tag的build上面。在配置gitlab-ci的时候,会有很多job,每个job可以通过tags属性来选择runner。这里为true表示如果job没有配置tags,也执行
是否锁定runner到当前项目
选择执行器,shell,docker,等
执行完成就可以看到一个绿色的runner容器
如果遇到注册 之后面板还是未激活的采用如下指令重新启动加载
gitlab-runner verify gitlab-runner restart
使用GitlabRunner 进行CI/CD
- 在项目的根目录下面创建
.gitlab-ci.yml文件- gitlab-ci.tyml示例参考地址
- 推送到gitlab分支 在 项目当中的CI/CD菜单查看执行结果
- 配置参数参考地址
####示例脚本 # 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重新注册一个RunneRunner未激活问题
有时候管理员注册共享runner后,查看面板上的Runner信息,可能会发现Runner处在未激活状态。
运行以下命令重新启动Runner。
gitlab-runner verify
gitlab-runner restart