gitlab-runner 安装使用
gitlab-runner 安装使用
- gitlab-runner 是一个开源的与 gitlab CI 配合使用的项目,用于运行任务,并将结果返回 gitlab
- 本文通过
docker in docker
的方式,即在具有特权模式的 Docker 中使用 Docker,通过 gitlab-runner 使用 docker 的来构建项目,完成打包,测试,发布等任务。这样 gitlab-runner 只是需要 Dockerfile 即可,可方便日后使用其他 CI/CD 工具。同时本地调试也十分方便 - 文档地址:https://docs.gitlab.com/runner
安装
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
注册
- 安装好 gitlab-runner 后,需要进行注册,gitlab 才会出现 runner 列表。注册前需要准备好地址和 token,管理员进入管理中心>概览>Runner可查看 runner 列表、url 和注册令牌
- 如果想要为某群组或者项目设置 runner,可在对应群组或者项目的设置>CI/CD>Runner获取 url 和 token
- 首先进入容器交互模式
docker exec -it gitlab-runner bash
- 输入命令
gitlab-runner register
进行注册,按照提示和文档说明一步步填写即可 - 也可一条命令完成注册
sudo gitlab-runner register \
--non-interactive \
--url "https://gitlab.com/" \
--registration-token "PROJECT_REGISTRATION_TOKEN" \
--executor "docker" \
--docker-image alpine:latest \
--description "docker-runner" \
--tag-list "docker,aws" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
- 注册 runner 参考:https://docs.gitlab.com/runner/register/index.html#docker
- docker 执行者:https://docs.gitlab.com/runner/executors/docker.html
配置
- 在配置文件
/etc/gitlab-runner/config.toml
中添加 privileged 标记,这样可以在容器中使用 docker 的一些功能 - 参考:https://docs.gitlab.com/runner/executors/docker.html#use-docker-in-docker-with-privileged-mode
- 其它命令:https://docs.gitlab.com/runner/commands/README.html
[[runners]]
executor = "docker"
[runners.docker]
privileged = true
- 完整的例子
[[runners]]
name = "docker-runner"
url = "http://192.168.99.100:8900/"
token = "zLBu8yXEFPGKaaasZopn"
executor = "docker"
clone_url = "http://192.168.99.100:8900/"
[runners.custom_build_dir]
[runners.docker]
tls_verify = false
image = "apline:latest"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
环境变量
通过设置环境变量,让 runner 执行的时候读取,避免在源码中记录敏感信息
在群组或者项目的设置中依次点击设置>CI/CD>变量
在
.gitlab-ci.yml
文件中使用方式Shell Usage bash/sh $variable windows batch %variable% PowerShell $env:variable 参考https://docs.gitlab.com/ce/ci/variables/README.html#via-the-ui
Dockerfile 中使用变量参考:https://docs.docker.com/engine/reference/builder/#arg
添加 Dockerfile
- 文档参考:https://docs.docker.com/engine/reference/builder/
- 项目中添加 Dockerfile,接收 Source、AppKey 两个参数,并将其推送至 nuget 服务器
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch
ARG AppKey
ARG Source
WORKDIR /src
COPY ["A1/A1.csproj", "A1/"]
RUN dotnet restore "A1/A1.csproj"
COPY . .
WORKDIR /src/A1
RUN dotnet pack "A1" -c Release -o /app
WORKDIR /app
RUN dotnet nuget push *.nupkg -k ${AppKey} -s ${Source}
添加 .gitlab-ci.yml
- 项目中添加 CI/CD 配置,在 gitlab 中新建可选择模板,选择 docker 模板
- 文档参考:https://docs.gitlab.com/ee/ci/yaml/README.html#validate-the-gitlab-ciyml
# This file is a template, and might need editing before it works on your project.
build-master:
# Official docker image.
image: docker:latest
stage: build
services:
- docker:dind
before_script:
# - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker --version
- echo $NugetAppKey
- echo $NugetSource
script:
- docker build --build-arg AppKey=$NugetAppKey --build-arg Source=$NugetSource -t A1:latest .
only:
- master
问题
- 执行 docker build 的时候报错:
time="2019-07-19T01:20:27Z" level=error msg="failed to dial gRPC: cannot connect to the Docker daemon. Is 'docker daemon' running on this host?: dial tcp: lookup docker on 100.100.2.136:53: no such host"
,这个需要配置 runner,让容器跑在privileged
模式,参考 https://docs.gitlab.com/runner/executors/docker.html#use-docker-in-docker-with-privileged-mode - runner 执行的时候需要拉取代码,但是拉取的链接由于种种原因在容器内很难访问,需要另外的设置或者代理才行。但是高级设置有个参数可以设置拉取代码的链接:
clone_url
。文档:https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-runners-section 示例:
[[runners]]
name = "ruby-2.1-docker"
url = "https://CI/"
token = "TOKEN"
limit = 0
executor = "docker"
builds_dir = ""
shell = ""
environment = ["ENV=value", "LC_ALL=en_US.UTF-8"]
clone_url = "http://gitlab.example.local"
总结
- 安装过程也没什么难点,有什么不对的多试几次即可
- gitlab 的文档还是挺齐全的,如果能够把相关的文档先大概浏览一遍,将会有事半功倍的效果,省去不少麻烦
gitlab-runner 安装使用的更多相关文章
- Gitlab CI持续集成 - GitLab Runner 安装与注册
GitLab Runner安装 需要添加gitlab官方库: # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/ ...
- gitlab runner安装与使用
今天来讲一下如何使用gitlab-runner 下载runner,根据自己对应服务器的型号自行选择下载: # Linux x86- sudo wget -O /usr/local/bin/gitlab ...
- docker-Gitlab、GitLab Runner安装
以下操作均在CentOs下操作 1.Gitlab install ① 启动gitlab docker run --detach \ --hostname 115.30.149.35 \ --publi ...
- [转] Gitlab 8.x runner安装与配置
[From]http://muchstudy.com/2018/07/13/Gitlab-8-x-runner%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE ...
- Ubuntu安装Gitlab Runner
第一步: 添加GitLab的官方存储库: curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runne ...
- 使用gitlab runner 进行CI(二):gitlab runner的安装与配置
参考 https://docs.gitlab.com/runner/install/index.html,可以选择与gitlab相同的版本. gitlab runner可以通过安装binary包或do ...
- gitlab一键安装 (转)
原文地址:http://www.2cto.com/os/201411/353292.html 0 简介bitnami和gitlab bitnami BitNami是一个开源项目,该项目产生的开源软件包 ...
- 超详细Gitlab Runner环境配置中文教程
配置GitlabRunner环境 GitLab Runner 是一个开源项目, 它用来运行你定制的任务(jobs)并把结果返回给 GitLab. GitLab Runner 配合GitLab CI(G ...
- 基础架构之Gitlab Runner
基础架构之Gitlab Runner也是常用的基础设施,我们接着GitLab操作,具体使用GitlabRunner,如果不熟悉可以见官方详细介绍https://docs.gitlab.com/runn ...
- gitlab一键安装 笔记
0 简单介绍bitnami和gitlab bitnami BitNami是一个开源项目,该项目产生的开源软件包安装 Web应用程序和解决方式堆栈.以及虚拟设备. bitnami主办Bitrock公司成 ...
随机推荐
- 洛谷 P3183 [HAOI2016]食物链 题解
P3183 [HAOI2016]食物链 题目描述 如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数.物种的名称为从1到n编号M条能量流动关系形 ...
- GoCN每日新闻(2019-10-20)
GoCN每日新闻(2019-10-20) slakc是如何构建共享频道的 https://slack.engineering/how-slack-built-shared-channels-8d42c ...
- GoCN每日新闻(2019-10-01)
GoCN每日新闻(2019-10-01) GoCN每日新闻(2019-10-01) 1. 我依然爱着 GOPATH https://divan.dev/posts/gopath/ 2. Go 代码注释 ...
- Java-根据经纬度计算距离(百度地图距离)
最近碰到一个需求,需要根据两个点的经纬度查询两点的距离.感觉以后还会用到,所以小记一波. 第一步:添加Maven依赖. <dependency> <groupId>org.ga ...
- 无法定位程序输入点到xxx.dll
Q:安装pytorch时报错无法定位程序输入点到Anaconda3\Library\bin\libssl-1_1-x64.dll A:下载libssl-1_1-x64.dll覆盖bin下的文件 下载地 ...
- 刷题记录:[0CTF 2016]piapiapia
目录 刷题记录:[0CTF 2016]piapiapia 一.涉及知识点 1.数组绕过正则及相关 2.改变序列化字符串长度导致反序列化漏洞 二.解题方法 刷题记录:[0CTF 2016]piapiap ...
- #C++初学记录(算法效率与度量)
时间性能 算法复杂性函数: \[ f(n)=n^2 +1000n+\log_{10}n+1000 \] 当n的数据规模逐渐增大时,f(n)的增长趋势: 当n增大到一定值以后,计算公式中影响最大的就是n ...
- 创业小记:ALL IN才是迈出创业第一步的关键
对于创业而言,能卖出这创业第一步的,大多都经过了长期反复的心理拷问与折磨. 因为当你迈出创业的那一步,你可能需要面对的是毫无收入保障的生活,以及后果自负的结局. ALL IN才是迈出创业第一步的关键( ...
- Linux:读取文件,每行拆分,并比较拆分数组长度
读取文件,每行拆分,并比较拆分数组长度 #!/bin/bash FILENAME=./.txt function While_read_LINE(){ cat $FILENAME | while re ...
- ProxyFactoryBean与AopProxy介绍
1.ProxyFactoryBean的典型配置 2.进入getObject方法 /** * Return a proxy. Invoked when clients obtain beans from ...