使用Docker 搭建Gitlab-Runner持续集成平台

前言

本文介绍搭建Gitlab-Runner和集成到Gitlab的操作步骤.

需要先搭建Gitlab,Nexus,Registry

传送门:Gitlab搭建与基本使用(编写中...)

传送门:Nexus搭建与基本使用(如果不需要私人依赖可以不搭建,编写中...)

传送门:Registry搭建与基本使用 (编写中...)

搭建Gitlab-Runner

1. 安装环境准备

runner
    ├── docker-compose.yml
    └── environment
         ├── daemon.json
         ├── Dockerfile
         └── jdk-8u152-linux-x64.tar.gz
  • 创建构建目录 /usr/local/docker/runner/environment
  • 下载 jdk-8u152-linux-x64.tar.gz 并复制到 /usr/local/docker/runner/environment
  • /usr/local/docker/runner/environment目录下创建daemon.json
{
  "registry-mirrors": [
    "http://aad0405c.m.daocloud.io"
  ],
  "insecure-registries": [
    "192.168.75.131:5000"
  ]
}

registry-mirrors: docker镜像地址

insecure-registries: Registry镜像私服地址

  • /usr/local/docker/runner/environment目录下创建Dockerfile
FROM gitlab/gitlab-runner:v11.0.2
MAINTAINER Lusifer 

# 修改软件源
RUN echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse' > /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse' >> /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse' >> /etc/apt/sources.list && \
    echo 'deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse' >> /etc/apt/sources.list && \
    apt-get update -y && \
    apt-get clean

# 安装 Docker
RUN apt-get -y install apt-transport-https ca-certificates curl software-properties-common && \
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - && \
    add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && \
    apt-get update -y && \
    apt-get install -y docker-ce
COPY daemon.json /etc/docker/daemon.json

# 安装 Docker Compose
WORKDIR /usr/local/bin
RUN wget https://raw.githubusercontent.com/topsale/resources/master/docker/docker-compose
RUN chmod +x docker-compose

# 安装 Java
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk-8u152-linux-x64.tar.gz /usr/local/java
RUN tar -zxvf jdk-8u152-linux-x64.tar.gz && \
    rm -fr jdk-8u152-linux-x64.tar.gz

# 安装 Maven
RUN mkdir -p /usr/local/maven
WORKDIR /usr/local/maven
RUN wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz
# COPY apache-maven-3.5.3-bin.tar.gz /usr/local/maven
RUN tar -zxvf apache-maven-3.5.3-bin.tar.gz && \
    rm -fr apache-maven-3.5.3-bin.tar.gz
# COPY settings.xml /usr/local/maven/apache-maven-3.5.3/conf/settings.xml

# 配置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_152
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.5.3
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

WORKDIR /
  • /usr/local/docker/runner目录下创建docker-compose.yml
version: '3.1'
services:
  gitlab-runner:
    build: environment
    restart: always
    container_name: gitlab-runner
    privileged: true
    volumes:
      - /usr/local/docker/runner/config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock

2. 运行并注册Runner

  • /usr/local/docker/runner目录下运行
docker-compose up -d
  • 打开Gitlab要持续集成的仓库,打开设置->CI/CD->Runner

Setup a specific Runner manually下获取仓库地址和注册令牌备用

地址和令牌
  • 输入注册命令
docker exec -it gitlab-runner gitlab-runner register
  • 根据提示输入刚才获得的地址和令牌,进行注册
# 输入 GitLab 地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.75.146:8080/

# 输入 GitLab Token
Please enter the gitlab-ci token for this runner:
1Lxq_f1NRfCfeNbE5WRh

# 输入 Runner 的说明
Please enter the gitlab-ci description for this runner:
可以为空

# 设置 Tag,可以用于指定在构建规定的 tag 时触发 ci
Please enter the gitlab-ci tags for this runner (comma separated):
deploy(也可以为空)

# 选择 runner 执行器,这里我们选择的是 shell
Please enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:
shell
  • 绑定成功


    绑定成功

3.代码的持续集成

  • 在代码中编写.gitlab-ci.yml以及需要用到的docker-compose.ymlDockerfile
  • 推送代码的时候就会在Gitlab的页面中看到持续集成的作业进度

详细集成代码可以到下面的帖子查看.

传送门: 使用Gitlab-Runner持续集成代码(编写中...)

参考文献: 千锋教育-李卫民 使用 GitLab 持续集成

你可能感兴趣的:(使用Docker 搭建Gitlab-Runner持续集成平台)