使用 gitlab-runner 持续集成
gitlab-runner 是 Gitlab 推出的与 Gitlab CI 配合使用的持续集成工具。当开发人员在 Gitlab 上更新代码之后,Gitlab CI 服务能够检测到代码更新,此时可以触发一些动作,比如代码测试、编译和部署等,下图简单示意了这个流程。

那么,Gitlab 触发动作的时候是怎么找到对应的工作机的呢,这时 gitlab-runner 就出场了。我们需要在工作机上用 gitlab-runner 配置好与之对应的 Gitlab 服务。
首先需要在工作机上安装 gitlab-runner,这里以 Ubuntu 操作系统为例。
# 下载
curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb
# 安装
dpkg -i gitlab-runner_amd64.deb
安装完成之后就可以在工作机上注册 Gitlab。
gitlab-runner register
按照提示,填入 gitlab url 和 token。

在 gitlab 项目页面依次点击 「Settings」->「CI/CD」->「Runners Expand」,就可以看到需要填入的 gitlab url 和 token 了。


至此,就在工作机上完成了 Gitlab 的注册,那么 Gitlab 服务器就能找到对应的工作机了。至于 Gitlab 服务器会触发工作机执行哪些动作,需要在项目的根目录下配置 .gitlab-ci.yml 文件,说明具体的执行命令。配置规则可以参考官方文档,下面是一个简单的例子,当 master 分支上有代码更新的时候会在工作机上打印执行当前命令的用户名。
stages:
- test
job_test:
stage: test
script:
- echo '开始测试...'
- whoami
- echo '测试完成'
only:
- master
如果按照上述步骤操作之后,更新代码依然不能触发工作机执行动作,有可能是下面两个原因:
一、gitlab-runner 注册的 CI 服务默认不处理没有打 tag 的 commit。
更新代码之后 CI 就一直处于 pending 状态,并提示「This job is stuck, because the project doesn't have any runners online assigned to it.」这时需要在 Gitlab 项目页面修改一下 Runner 的配置。


二、以普通用户身份注册的 Gitlab 服务不会在后台运行,此时需要手动执行 gitlab-runner run 命令
如果是超级用户用 sudo gitlab-runner register 注册的服务,会在后台运行,不需要执行上述命令。
使用 gitlab-runner 持续集成的更多相关文章
- Ubuntu Docker 安装和配置 GitLab CI 持续集成
相关文章: Ubuntu Docker 简单安装 GitLab 劈荆斩棘:Gitlab 部署 CI 持续集成 目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runne ...
- Gitlab CI 持续集成的完整实践
Gitlab CI 持续集成的完整实践 本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持 ...
- Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务
Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...
- Jenkins+Gitlab搭建持续集成(CI)环境
利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...
- CentOS 7 Gitlab+Jenkins持续集成+自动化部署
基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...
- 持续集成之Jenkins+Gitlab实现持续集成 [二]
持续集成之Jenkins+Gitlab实现持续集成 [二] 项目:使用git+jenkins实现持续集成 开始构建 General 源码管理 我们安装的是Git插件,还可以安装svn插件 我们将 ...
- Jekens 配置多项目SCM GitLab+Jenkins持续集成环境
参考: 搭建GitLab+Jenkins持续集成环境图文教程 https://blog.csdn.net/ruangong1203/article/details/73065410 Jenkins中配 ...
- ubuntu 16.04.2 源码安装gitlab并且利用runner持续集成
参考原档:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md#using-https 本章只 ...
- Gitlab CI持续集成 - GitLab Runner 安装与注册
GitLab Runner安装 需要添加gitlab官方库: # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/ ...
- GitLab CI持续集成配置方案
目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解 ...
随机推荐
- 4. 上新了Spring,全新一代类型转换机制
目录 ✍前言 版本约定 ✍正文 PropertyEditor设计缺陷 新一代类型转换 Converter 代码示例 不足 ConverterFactory 代码示例 不足 GenericConvert ...
- 同学你会hello world吗? 给我讲清楚点
少点代码,多点头发 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles 面试官超级喜欢问hello ...
- slice切片函数
clc;clear all;close all; [X,Y,Z,V] = flow;x1 = min(min(min(X)));x2 = max(max(max(X)));y1 = min(min(m ...
- Kubernetes应用管理器OpenKruise之CloneSet
OpenKruise OpenKruise 是 Kubernetes 的一个标准扩展,它可以配合原生 Kubernetes 使用,并为管理应用容器.sidecar.镜像分发等方面提供更加强大和高效的能 ...
- Ubuntu使用Nginx 部署你的静态网页
首先使用Putty 登录填写名称 unbutu 然后获取管理员权限 sudo -i 首先更新APT库sudo apt-get updatesudo apt-get upgrade 安装 git,su ...
- Raft算法系列教程3:日志复制
1.日志复制的过程 Leader选出后,就开始接收客户端的请求.Leader把请求作为日志条目(Log entries)加入到它的日志中,然后并行的向其他服务器发起 AppendEntries RPC ...
- 解决 Idea 下 Lombok 无法使用
解决: 第一步,项目导入 Lombok 依赖 <dependency> <groupId>org.projectlombok</groupId> <ar ...
- 多维数组遍历.php
$a=array('fruits'=>array('a'=>'orange','b'=>'grape','c'=>'apple'), 'numbers'=>arr ...
- JavaDailyReports10_18
学习内容:HTML基本知识 1.通常标记具有默认属性,当一个标记中只有标记名时,使用默认属性. 2.HTML标记有两种:单标记和双标记,单标记的语法格式: <标记名称/> 3.不同的属性 ...
- linux零基础之--常用命令
linux: 用户命令 linux 目录切换命令 linux文件命令 linux : vi编辑器 linux:打包压缩