Ubuntu Docker 安装和配置 GitLab CI 持续集成
相关文章:
目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runner,搭建 GitLab CI 持续集成环境。
服务器版本 Ubuntu 16.04 LTS。
安装命令:
$ 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
参数说明:
--d
: 设置容器后台运行--name
:容器名称--restart always
:每次启动容器就重启 gitlab-runner--v
: 共享目录挂载(如果是 Mac OSX 系统,需要把/srv
改为/Users/Shared
)
安装好之后,可以使用docker ps
查看容器是否在运行,接着我们进入容器:
$ docker exec -it gitlab-runner gitlab-runner register
gitlab-runner register
是进入gitlab-runner
容器的执行命令,用于注册和初始化gitlab-runner
。
下面是我的示例配置:
我们也可以编辑vim /srv/gitlab-runner/config/config.toml
,手动修改配置:
concurrent = 1
check_interval = 0
[[runners]]
name = "my-runner"
url = "http://40.125.206.47"
token = "b6ac044b57cbb22073b95dd384e517"
executor = "docker"
[runners.docker]
tls_verify = false
image = "microsoft/dotnet:latest"
privileged = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]
gitlab-ci token
需要用root
账号登陆 GitLab,才能看到(/admin/runners
):
配置好之后,我们就可以在 GitLab 中看到 GitLab Runner 了,示例:
然后点击修改,添加我们需要应用 GitLab Runner 的 Project 项目,示例(点击Enable
启用):
下面我们就可以为hwapp
项目(hwapp
使用 ASP.NET Core 2.0 创建),添加.gitlab-ci.yml
配置文件了(用于执行 CI 的脚本文件),简单配置(用于还原程序包和构建项目):
stages:
- build
build_job:
stage: build
script:
- dotnet restore
- dotnet build
关于.gitlab-ci.yml
的语法,可以看一下之前的文章,或者查看:
把.gitlab-ci.yml
提交到 GitLab,然后我们就可以看到执行结果了:
执行是失败的,我们点击进入详情,就可以看到整个的执行过程:
microsoft/dotnet:latest
是我们一开始配置 GitLab Runner 填写的 Docker Image,并且 Runner executor 选择的是docker
,也就是说 GitLab Runner 的构建环境是docker
,并且默认使用的镜像是microsoft/dotnet:latest
,由此再进行创建相应容器,并在其容器中执行 CI 脚本,从上面的执行过程,我们就可以看出来了。
需要注意的是,GitLab Runner 配置的 Docker Image,最好是我们自定义构建的 Image 镜像,这样我们执行 CI 脚本环境,会更加丰富。
根据错误信息,我们修改下对应代码,重新提交到 GitLab,可以看到这次是构建成功的:
大概就记录这些,接下来还需要继续完善,比如:
- GitLab CI & ASP.NET Core 2.0 发布和部署:使用 CI 脚本编译程序,然后将编译后的文件传输到服务器上,最后运行程序,完成发布和部署。
- GitLab CI & ASP.NET Core 2.0 & Docker 发布和部署:项目中添加
Dockerfile
文件,使用 CI 脚本构建自定义镜像,然后在服务器上拉取并创建相应容器,最后启动容器,完成发布和部署。
参考资料:
- 用 GitLab CI 进行持续集成(推荐)
- 使用 GitLab-CI 来自动创建 Docker 镜像
- 使用 Gitlab CI & Docker 搭建 CI 环境(推荐)
- Run GitLab Runner in a container(官方)
- Registering Runners(官方)
- Getting started with GitLab CI(官方)
Ubuntu Docker 安装和配置 GitLab CI 持续集成的更多相关文章
- docker安装与配置gitlab详细过程
docker安装与配置gitlab详细过程 1.打开网易镜像中心 https://c.163yun.com/hub#/m/home/ 2.搜索gitlab,获取下载地址.例如:docker pull ...
- Gitlab CI 持续集成的完整实践
Gitlab CI 持续集成的完整实践 本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持 ...
- Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务
Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...
- GitLab CI持续集成配置方案
目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解 ...
- Gitlab CI持续集成 - GitLab Runner 安装与注册
GitLab Runner安装 需要添加gitlab官方库: # For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/ ...
- GitLab CI持续集成配置方案(补)
上篇文章介绍了GitLab CI的持续集成配置方法,本篇文章将主要介绍NUnit的持续集成和遇到的一些坑 1.NUnit单元测试持续集成 下载NUnit.3.4.1.msi,https://githu ...
- Ubuntu 简单安装和配置 GitLab
使用的 Ubuntu Server 16.04 LTS 版本,服务器托管在 Azure 上,用的 1 元试用 1 个月服务器订阅(1500 元额度). 安装命令(推荐使用): curl -sS htt ...
- ubuntu 安装和配置 GitLab
一.概述 GitLab 是一个基于 Web 的开源 Git 软件仓库管理器,用 Ruby 编写,包括 wiki,问题管理,代码审查,监控以及持续集成和部署.它使开发人员能够创建,审查和部署他们的项目. ...
- Jenkins+Gitlab搭建持续集成(CI)环境
利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...
随机推荐
- nodejs抓取网络图片转换为base64编码的图片
抓取网络图片需要加载http模块 //假定这是index.js文件 var http = require('http'); var url = 'http://p0.meituan.net/tuanp ...
- 迭代器 Iterator
迭代器 Iterator 2016-5-7 可以这样说,迭代器统一了对容器的访问方式. 考虑这样的情景:原本是对着List编码,但是后来发现需要把相同的代码用于Set.我们需要一种不关心容器类型 而能 ...
- Python基础之内置函数和递归
一.内置函数 下面简单介绍几个: 1.abs() 求绝对值 2.all() 如果 iterable 的所有元素都为真(或者如果可迭代为空),则返回 True 3.any() 如果 iterable 的 ...
- React-native初体验(安卓篇)
本篇文章主要包括两方面,如何从0开始把RN(react-native)项目整合进入现有Android项目,以及我们做的第一个RN的上线项目遇到的一些坑. 初次做RN项目,我们选择做了一个逻辑相对简单的 ...
- android 7.0 多渠道打包 - 美团开源工具Walle 命令行打包
在Android 7.0(Nougat)推出了新的应用签名方案APK Signature Scheme v2后,之前快速生成渠道包的方式(美团Android自动化之旅-生成渠道包)已经行不通了,对此美 ...
- 扩展entity framework core 实现默认字符串长度,decimal精度,entity自动注册和配置
报道越短,事情越严重!文章越短,内容越精悍! 文章以efcore 2.0.0-preview2.测试验证通过.其他版本不保证使用,但是思路不会差太远.源代码 目标: 1.实现entity的自动发现和m ...
- (转)递归算法的时间复杂度终结篇与Master method
开篇前言:为什么写这篇文章?笔者目前在学习各种各样的算法,在这个过程中,频繁地碰到到递归思想和分治思想,惊讶于这两种的思想的伟大与奇妙的同时,经常要面对的一个问题就是,对于一个给定的递归算法或者用分治 ...
- (转)Java多线程之Lock的使用 (待整理)
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util ...
- webIDE 第二篇博文
这是我做webIDE过程中的第二篇博文,之所以隔了这么长时间没更,因为确实是没有啥进度啊,没什么可写的,现在虽然依然没啥进度,但中途遇到很多坑,这些坑还是有记录下来的必要的. 因个人水平问题,可能有的 ...
- storm从入门到放弃(二),任务分配过程-核心机密
背景:目前就职于国内最大的IT咨询公司,恰巧又是毕业季,所在部门招了100多个应届毕业生,本人要跟部门新人进行为期一个月的大数据入职培训,特此将整理的文档分享出来. 原文和作者一起讨论:http:// ...