概述
在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后在项目即将结束进行时,而这往往会花费大量的时间和精力。而持续集成是一种将集成阶段放在软件开发阶段的做法,以便更加有规律地构建,测试和集成代码。
“持续集成并不能消除 Bug,而是让它们非常容易发现和改正。”
持续集成可以在开发人员提交了新代码后,立刻进行构建、单元测试。从而我们可以根据测试结果以确定新的代码或者环境配置与原来的以及其他开发人员的代码或者环境配置能否正确地集成在一起。
GitLab CI 就已经集成在 GitLab 中,我们只需要在项目中添加一个 .gitlab-ci.yml 文件,然后添加一个 Runner,即可进行持续集成。而且随着 GitLab 的升级,GitLab 也变得越来越强大。
CI 的准备工作
docs.gitlab.com/runner/inst…CI 操作需要安装 GitLab Runner
, 以上链接包含了多种安装方式,本文介绍docker 安装方式
docker pull gitlab/gitlab-runner:latest docker run -d --name gitlab-runner --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ gitlab/gitlab-runner:latest 复制代码
docker exec gitlab-runner -it bash
进入其中,安装 java 和maven
容器内安装 Java 和 Maven
wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz tar -zxvf jdk-8u201-linux-x64.tar.gz mv jdk1.8.0_201 tar -xvf apache-maven-3.6.3-bin.tar.gz 复制代码
配置环境变量
vim /etc/profile export JAVA_HOME=/opt/jdk1.8.0_201 export MAVEN_HOME=/opt/apache-maven-3.6.3 export PATH=${JAVA_HOME}/bin:${MAVEN_HOME}/bin:${PATH} export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 复制代码
重新加载系统配置文件:source /etc/profile
root@a9431b/e9ea2:/home/gitab-runner/bullds/1aAWVY02/0/11angpeng/gitlab-monitor# root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor# ootea0431b7o0oa2:/home/gitlabrunner/builds/iaAwVYo2/0/jiangpeng/gitlab-monitor# mvn -v pache Maven 3.6.3(cecedd343002696d0abb50b32b541b8a6ba2883f) laven home:/opt/apache-maven-3.6.3 ava version: 1.8.0 201, vendor:Oracle Corporation, runtime: /opt/jdk1.8.0 201/jre efault locale: en us, platfonm encoding: ANSI X3.4-1968 S nama: "linly" version:"31AA-693.21.1.el7.x86 64", arch: "amd64", family: "unix" root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor# java -version ava version "1.8.0 201" Java(TM) sE Runtime Environment (build 1.8.0 201-b09) Java HotSpot(TM)64-Bit Server vM (build 25.201-b09, mixed mode) root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor#
项目如何使用CI
.gtilab-ci.yml
文件存放与项目于仓库的根目录,用以来定义 GitLab CI/CD
中的 Pipeline。其实无非是一个配置文件,理解起来挺简单的,我们主要是需要了解 Pipeline 的概念以及如何配置一个 .gitlab-ci.yml
给项目创建.gitlab-ci.yml
文件,内容如下
build: script: "pwd && mvn install" 复制代码
如果运行提示permission denied
,或者提示找不到mvn
命令, 原因是自己maven安装在自己创建的目录下,安装路径有问题。 主要是因为gitlab-runner
配置文件.gitlab-ci.yml
中的script脚本的执行用户是gitlab-runner
该用户只能访问/home/gitlab-runner
文件夹下的东西,如果在其他位置执行一些命令,可以通过修改docker里的/etc/gitlab-runner/config.toml
解决
vi /etc/gitlab-runner/config.toml ## 追加内容 [runners.docker] tls_verify = false image = "latest" privileged = true disable_cache = false volumes = ["/cache"] 复制代码
root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor# /etc/gitlab-runner/config.toml concurrent =1 check interval =日 [session server] session timeout =1800 [[runners]] name = "docker p^H^H^H" url ="http://git.scm.ppmoney.com/' token="iaAWVYo2-xZ62Lg66BFU' executor = "shell" runners.custom build dir][runners.docker] tls verify = false image = "latest" privileged = true disable cache = false volumes = ["/cache".[runners.cache] [runners.cache.s3][runners.cache.gcs]
GitLab 配置运行 CI 的runner
从下图可以看到有4种方式,这里选择手动设置
因为选择了Docker方式安装,需要进入docker执行如下命名,设置图片中第2、3项的链接和token,
gitlab-ci-multi-runner register 复制代码
根据提示输入对应2 、3中的url和token
root@a9431b7e9ea2:/home/gitlab-runner/builds/iaAWVYo2/0/jiangpeng/gitlab-monitor#gitlab-cimulti-runner register Runtime platform arch=amd64 0s=linux p1d=344 revision=4c96e5ad version=12.9.0 Running in system-mode. Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
设置成功可以看到
通过api触发 CI
复制最后的crul 命令即可执行自动构建的操作。 当有新代码提交时同样会触发CI操作。
效果
拓展阅读
gitlab ci shell script permission denied