准备工作

1.安装docker(centos7以上版本 或内核在3.10以上版本的linux)
2.准备docker-compose
3.准备jdk和maven tar.gz包
4.gitlab的搭建 可参考

https://blog.csdn.net/cxy_LG/article/details/102967804

5.gitlab runner的镜像(我用的是内网,可选择网络版本)
6.一个jdk的镜像
7.远程ssh工具 (个人用的是 FinalShell)

开始搭建

1.新建文件

mkdir /root/runner/environment

在这里插入图片描述
2.将以下文件上传到该目录下
在这里插入图片描述
这两个是私服可选配
daemon.json
settings.xml

3.新建文件

Dockerfile

添加以下内容
(按情况修改)

FROM 10.9.10.232:5000/gitlab/gitlab-runner:latest
# 修改软件源
# 修改软件源
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 update && apt-get install -y gnupg2
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,因为下载不不下来,所以我们本地上传?一份docker-compose到environment?目录
WORKDIR /usr/local/bin
COPY docker-compose docker-compose
RUN chmod +x docker-compose
# 安装 Java
RUN mkdir -p /usr/local/java
WORKDIR /usr/local/java
COPY jdk-8u162-linux-x64.tar.gz /usr/local/java
RUN tar -zxvf jdk-8u162-linux-x64.tar.gz && \
rm -fr jdk-8u162-linux-x64.tar.gz
# 安装 Maven
RUN mkdir -p /usr/local/maven
WORKDIR /usr/local/maven
COPY apache-maven-3.6.2-bin.tar.gz /usr/local/maven
RUN tar -zxvf apache-maven-3.6.2-bin.tar.gz && \
rm -fr apache-maven-3.6.2-bin.tar.gz
COPY settings.xml /usr/local/maven/apache-maven-3.6.2/conf/settings.xml
# 配置环境变量量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_162
ENV MAVEN_HOME /usr/local/maven/apache-maven-3.6.2
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
WORKDIR /

4.退到上级目录

cd ..

新建文件
在这里插入图片描述

touch docker-compose.yml

添加内容

version: '3.1'
services:
  gitlab-runner:
    build: environment
    restart: always
    container_name: gitlab-runner
    privileged: true
    volumes:
      - ./config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock

5.需要执行提权命令:

sudo chown root:root /var/run/docker.sock

6.给gitlab-runner 添加可以访问docker的权限

docker exec -it gitlab-runner usermod -aG root gitlab-runner

6.构建

docker-compose up

此时日志内容如下:不要慌,因为还没注册
在这里插入图片描述
7.远程ssh工具复制连接用来注册

注册

使用普通账号登陆
在这里插入图片描述

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

# 这里选择 true ,可以用于代码上传后直接执行
Whether to run untagged builds [true/false]:
true

# 这里选择 false,可以直接回车,默认为 false
Whether to lock Runner to current project [true/false]:
false

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

刷新页面 成功结果
在这里插入图片描述
编辑
在这里插入图片描述
为了便于测试
在这里插入图片描述
==新建仓库提交以下代码 ==
在这里插入图片描述

要有一个Dockerfile

FROM 10.9.10.232:5000/java:8
COPY testci.jar /usr/local/testci.jar
WORKDIR /usr/local
CMD java -jar testci.jar

一个docker-compose.yml

version: '3.1'
services:
  testci:
    restart: always
    build: docker
    container_name: testci
    ports:
      - 8080:8080

一个.gitlab-ci.yml文件

stages:
  - test
test:
  stage: test
  script:
    - echo CI测试
    - /usr/local/maven/apache-maven-3.6.2/bin/mvn package
    - cp target/testci.jar docker/testci.jar
    - docker-compose down
    - docker-compose up -d --build
#    - docker stop testci
#    - docker rm testci
#    - docker rmi test_testci

pom需要添加插件

    <build>
<!--        <defaultGoal>compile</defaultGoal>-->
        <finalName>testci</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

提交后就会有作业和流水线在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
流程就算提交代码后 runner就会使用maven打包,并将结果通过你给的docker构建文件构建一个测试镜像,并通过docker-compose构建容器在宿主机,实现ci功能。

有问题欢迎讨论

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐