gitlab+runner+docker实现CI 持续集成

准备工作

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功能。

有问题欢迎讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker Compose 是 Docker 容器编排工具,可以将多个 Docker 容器组合在一起,以便一次性启动、关闭和管理多个容器。GitLab Runner 是一种程序,它与 GitLab CI/CD 集成,用于执行 GitLab CI/CD 作业。在本文中,我们将讨论如何在 Docker Compose 中安装 GitLab Runner。 首先,我们需要在 GitLab 上创建一个新的 Runner。进入 GitLab 网站的个人账户页面,点击左侧菜单栏的 “Runner” -> “设置” 进入设置页面。依次选择 Runner 引擎类型、 Runner TAG、 Runner 选项、 Runner 要使用的镜像、Runner 要运行的命令等。选择完成后,点击 “注册 Runner” 完成 Runner 的创建。 接着,在 Docker Compose 中配置 GitLab Runner。可以使用像下面这样的配置文件: ``` version: '3' services: my-runner: image: gitlab/gitlab-runner restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - ./my-runner-config:/etc/gitlab-runner environment: - CI_SERVER_URL=https://gitlab.example.com - RUNNER_TOKEN=xxxxxxxxxx - RUNNER_EXECUTOR=docker ``` 该配置文件定义了一个名为“my-runner”的服务,使用了 GitLab 的官方 Runner 镜像。该服务将始终启动,并将 Docker 守护程序套接字文件 /var/run/docker.sock 和 GitLab Runner 配置文件挂载到容器中的 /etc/gitlab-runner 目录下。在环境变量中,设置了 CI_SERVER_URL、RUNNER_TOKEN 和 RUNNER_EXECUTOR,它们是 GitLab Runner 执行所需的数据。 最后,我们使用命令 `docker-compose up -d` 在 Docker Compose 中启动 GitLab Runner 服务。现在,GitLab Runner 已安装并准备好执行 CI/CD 作业了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值