gitlab+runner+docker实现CI 持续集成
准备工作1.安装docker(centos7以上版本或内核在3.10以上版本的linux)2.准备docker-compose3.准备jdk和maven tar.gz包4.gitlab的搭建 可参考https://blog.csdn.net/cxy_LG/article/details/1029678045.gitlab runner的镜像(我用的是内网,可选择网络版本)6....
准备工作
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)