Gitlab-Runner自动构建服务器搭建1

这里讲到的gitlab仓库指的是https://gitlab.com/,自建gitlab仓库也基本相同。

项目的构建打包过程相对比较消耗系统性能,所以gitlab将这部分任务都交给了gitlab-runner来做,因为gitlab-runner可以部署到不同的机器上。这样在构建的时候就不会影响gitlab服务器的性能。而gitlab ci仅用来管理项目的构建状态等轻量工作。

gitlab仓库提供了两种Runner自动构建的方案:一种是Specific Runners,另一种是Shared Runners。 在项目的settings/ci_cd页面中展开Runners可以看到两个功能区,分别用来设置不同类型的Runners。

Specific Runners——使用指定的构建服务器进行自动构建任务,通常用于自建Runner服务器。

Shared Runners——使用gitlab官方提供的共享服务器进行自动构建任务。

这里以自建gitlab-runner服务器为例;

基于Docker构建自定义Gitlab-Runner镜像

这里使用的系统是Ubuntu 14.04.5 LTS 。

准备服务器环境

首先登录服务器,确定服务器已经安装docker及docker compose。

执行以下命令查看docker与docker-compose版本信息:

docker -v
Docker version 18.06.3-ce, build d7080c1 docker-compose -v
docker-compose version 1.26.2, build eefe0d31

创建docker-compose.yml文件

创建目录/usr/local/docker/runner,切换当前目录到runner;在当前目录中创建config文件夹和docker-compose.yml文件;config文件夹将会被配置为存储gitlab-runner配置的文件夹。

使用vim创建docker-compose.yml文件:

version: "3.3"
services:
gitlab-runner:
build: environment
container_name: gitlab-runner-compose
restart: always
volumes:
- ./config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock

environment指定了构建镜像的dockerfile文件地址,系统会到指定的文件夹中找到Dockerfile(默认名)文件。

volumes配置了gitlab-runner容器配置文件在宿主机上的存储位置。绑定容器的docker.sock目录到宿主机的对应目录,这样容器在运行时就可以使用宿主机的docker service执行docker命令。

创建Dockerfile文件

官方提供的gitlab-runner镜像只是一个纯净的基础环境,我们需要将项目的依赖环境集成到基础镜像中,下面我们就通过Dockerfile将项目依赖集成到gitlab-runner镜像。

在当前目录创建environment文件夹用于存放依赖文件,切换到/usr/local/docker/runner/environment目录下;

执行vim Dockerfile创建文件:

FROM gitlab/gitlab-runner
MAINTAINER Andy andywanggogogo@gmail.com #安装docker-ce===================
RUN apt-get update -y && apt-get clean
RUN apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \
apt-get update -y && \
apt-get install -y docker-ce
#================================
#切换镜像目录,安装项目依赖node======
WORKDIR /usr/local/node
RUN wget https://nodejs.org/dist/v12.18.2/node-v12.18.2-linux-x64.tar.xz && \
tar xf node-v12.18.2-linux-x64.tar.xz && \
rm -rf node-v12.18.2-linux-x64.tar.xz && \
mv node-v12.18.2-linux-x64 node-v12.18.2 && \
ln -s /usr/local/node/node-v12.18.2/bin/node /usr/bin/node && \
ln -s /usr/local/node/node-v12.18.2/bin/npm /usr/bin/npm
#=================================
WORKDIR /

在Dockerfile文件中做了三件事:

1)引用gitlab/gitlab-runner作为基础镜像;

2)使用RUN命令安装docker,安装命令参考docker官方Install on Ubuntu

3)下载node并解压,使用ln -s命令配置软连接,方便全局访问node和npm。

注意:这里安装的docker只是存在于镜像中的一个docker客户端,用于和宿主机docker service通信。

构建、运行自定义的gitlab-runner镜像

切换到上级目录/usr/local/docker/runner,执行docker-compose up -d命令,系统会按照docker-compose.yml文件的配置执行镜像构建和运行任务,执行docker-compose ps命令可以查看刚刚启动的容器。

到此我们的自定义gitlab-runner镜像就构建完成了,这个镜像构建成功后可以复用给其他的nodejs项目。下一章我们将项目仓库注册到我们的gitlab-runner服务中,编写.gitlab-ci.yml文件来管理自动构建任务,实现项目的本地推送自动触发构建任务功能。

 

Gitlab-CI/CD 1的更多相关文章

  1. [转]GitLab Continuous Integration (GitLab CI/CD)

    本文转自:https://docs.gitlab.com/ee/ci/README.html GitLab Continuous Integration (GitLab CI/CD) The bene ...

  2. 使用 Gitlab CI/CD 实现自动化发布站点到 IIS

    说明 这里先介绍下两个东西 CI/CD.GitLab Runner,当然在此之前你需要对 git 有所了解,关于 git 这里不做说明,可以自行百度. 首先介绍 CI/CD :随着我们开发方式的转变, ...

  3. 前端初探 Gitlab CI/CD

    前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就是其中一项,那么什么是 C ...

  4. .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker

    之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...

  5. GitLab CI/CD持续集成设置

    GitLab CI/CD持续设置 官方文档地址(https://docs.gitlab.com/ee/ci/README.html) GitLab CI.CD功能非常完善,只需要简单几步,就可以完成项 ...

  6. Gitlab CI/CD

    Gitlab CI/CD 前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就 ...

  7. GitLab CI/CD的官译【原】

    CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...

  8. .NetCore 配合 Gitlab CI&CD 实践 - 开篇

    引言 这是一个系列的文章,讲述的是一个中小型开发团队如何从零开始使用搭建基建 GitLab 代码托管平台,以及使用 GitLab Runner 实现 CI/CD 的故事.本系列通过部署一个完整的 .n ...

  9. .NetCore 配合 Gitlab CI&CD 实践 - 单体项目

    前言 上一篇博文 .NetCore 配合 Gitlab CI&CD 实践 - 开篇,主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 ...

  10. GitLab CI/CD 配置

    GitLab CI/CD 配置 概念 持续集成的相关概念,可以看这篇文章 持续集成是什么? - 阮一峰的网络日志 操作示例 创建测试项目 sample-web,然后打开项目的 Runners 配置 找 ...

随机推荐

  1. pandas之数值计算与统计

    数值计算与统计 对于DataFrame来说,求和.最大.最小.平均等统计方法,默认是按列进行统计,即axis = 0,如果添加参数axis = 1则会按照行进行统计. 如果存在空值,在统计时默认会忽略 ...

  2. three.js 制作一个三维的推箱子游戏

    今天郭先生发现大家更喜欢看我发的three.js小作品,今天我就发一个3d版本推箱子的游戏,其实webGL有很多框架,three.js并不合适做游戏引擎,但是可以尝试一些小游戏.在线案例请点击博客原文 ...

  3. PHP ord() 函数

    实例 返回 "h" 的 ASCII值: <?php高佣联盟 www.cgewang.comecho ord("h")."<br>&q ...

  4. luogu P4206 [NOI2005]聪聪与可可 期望dp 记忆化搜索

    LINK:聪聪与可可 这道题的核心是 想到如何统计答案. 如果设f[i][j]表示第i个时刻... 可以发现还需要统计位置信息 以及上一次到底被抓到没有的东西 不太好做. 两者的位置都在变化 所以需要 ...

  5. luogu P4884 多少个1?

    LINK:多少个1? 题目要求:\(\sum_{i=0}^{n-1}10^i \equiv k \mod m\) 最小的n. 看起来很难求的样子 这个同余式 看起来只能暴力枚举. 不过既然是同余 我们 ...

  6. luogu 1587 [NOI2016]循环之美

    LINK:NOI2016循环之美 这道题是 给出n m k 求出\(1\leq i\leq n,1\leq j\leq m\) \(\frac{i}{j}\)在k进制下是一个纯循环的. 由于数值相同的 ...

  7. 【FZYZOJ】数论课堂 题解(约数个数定理)

    前言:想了两个小时orz,最后才想到要用约数个数定理…… ------------- 题目大意: 给定$n,q,A[1],A[2],A[3]$ 现有$A[i]=(A[i-1]+A[i-2]+A[i-3 ...

  8. 《第22条军规》Catch-22

    也许我们能注意到,英语里“军规”和“圈套”是同一个词. <第二十二条军规>是约瑟夫·海勒的代表作,小说以第二次世界大战期间驻扎在皮亚诺扎岛上的一支美国飞行队为背景,描写飞行员约瑟连(YOY ...

  9. IDEA必备插件系列-Rainbow Brackets(彩虹括号)

    Rainbow Brackets ,就是彩虹括号,各种鲜明颜色的括号 这个一个开源的项目: https://github.com/izhangzhihao/intellij-rainbow-brack ...

  10. 前端面试基础题:Ajax原理

    Ajax 的原理简单来说是在⽤户和服务器之间加了—个中间层( AJAX 引擎),通过XmlHttpRequest 对象来向服务器发异步请求,从服务器获得数据,然后⽤ javascrip t 来操作 D ...