Gitlab-CI/CD

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 

#安装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文件来管理自动构建任务,实现项目的本地推送自动触发构建任务功能。

 

相关推荐