GitLab CI + Docker 持续集成操作手册

简介: GitLab CI + Docker 持续集成操作手册

概述

在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后在项目即将结束进行时,而这往往会花费大量的时间和精力。而持续集成是一种将集成阶段放在软件开发阶段的做法,以便更加有规律地构建,测试和集成代码。

“持续集成并不能消除 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文件,内容如下

3d13d768317732df84ca4a436689153.png

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

53beb1466e0aecc9a91b3fe8bd37780.png

从下图可以看到有4种方式,这里选择手动设置

fd642c0080801508dc0e8ee2663c0ac.png

因为选择了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/):

设置成功可以看到

858021e2b5f4bd3b50c748c494a21f0.png

通过api触发 CI

6f38d35a7a816332c870953768c93a3.png

cad6b5572f94d927cb5adc8e30c508d.png

复制最后的crul 命令即可执行自动构建的操作。 当有新代码提交时同样会触发CI操作。

效果

f521d039d85dbfac4dadc093f991516.png

f16b53c08841166a3aa855dc40502dd.png

拓展阅读

maven 配置多个仓库

gitlab ci shell script permission denied

Triggering pipelines through the API

Install GitLab Runner

GitLab CI + Docker 实现持续集成

相关文章
|
2月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
2月前
|
Kubernetes Devops 持续交付
DevOps实践:使用Docker和Kubernetes实现持续集成和部署网络安全的守护盾:加密技术与安全意识的重要性
【8月更文挑战第27天】本文将引导读者理解并应用DevOps的核心理念,通过Docker和Kubernetes的实战案例,深入探讨如何在现代软件开发中实现自动化的持续集成和部署。文章不仅提供理论知识,还结合真实示例,旨在帮助开发者提升效率,优化工作流程。
|
2月前
|
数据可视化 jenkins 测试技术
GitLab CI/CD 和 Jenkins对比
8月更文挑战第25天
75 5
|
2月前
CI/CD笔记.Gitlab系列:设置GitLab导入源
CI/CD笔记.Gitlab系列:设置GitLab导入源
124 2
|
1月前
|
Docker 容器
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
Docker安装Gitlab和Gitlab-Runner并实现项目CICD
|
2月前
|
数据安全/隐私保护
CI/CD笔记.Gitlab系列.新用户管理
CI/CD笔记.Gitlab系列.新用户管理
29 1
|
2月前
|
安全 Shell 数据安全/隐私保护
CI/CD笔记.Gitlab系列:控制台强制修改root用户密码
CI/CD笔记.Gitlab系列:控制台强制修改root用户密码
60 1
|
2月前
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!
|
2月前
|
jenkins 持续交付 开发工具
Jenkins 与 Docker 集成的最佳实践
【8月更文第31天】随着容器技术的兴起,越来越多的团队开始采用 Docker 来构建和部署应用。Docker 提供了一种轻量级的虚拟化方法,使得应用可以在任何地方以相同的方式运行,这极大地提高了开发效率和部署的一致性。与此同时,Jenkins 作为一种广泛使用的持续集成/持续交付(CI/CD)工具,可以帮助团队自动化构建、测试和部署流程。本文将探讨如何将 Docker 与 Jenkins 集成,以简化开发环境的搭建和维护。
163 0
|
2月前
|
安全 jenkins 持续交付
jenkins学习笔记之八:jenkins认证集成gitlab
jenkins学习笔记之八:jenkins认证集成gitlab
下一篇
无影云桌面