基于GitLab 的持续集成环境

一.技术基础

Gitlab: 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务

GitRunner:用于运行您的作业并将结果发送回GitLab。它与GitLab CI一起使用,GitLab CI是GitLab随附的开源持续集成服务,用于协调作业

CI/CD: 持续集成(CD)是指不断整合项目更改并进行相应的测试. 持续部署(CD):整个流程链,它自动监测源代码变更并通过构建、测试、打包和相关操作运行它们以生成可部署的版本,基本上没有任何人为干预

Docker:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化

portainer:是一个轻量级的管理 UI ,可让你轻松管理不同的 Docker 环境(Docker 主机或 Swarm 群集)。

Harhor:以 Docker 公司开源的 Registry 为基础,提供了图形管理 UI 、基于角色的访问控制(Role Based AccessControl) 、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能

Kubernetes(K8S):是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制

二.CI/CD流程图

1. 总体流程图

2. CI/CD流程图

三.操作步骤

安装配置

git、gitlab、gitrunner、 docker、 portainer、nodejs 、maven 安装配置省略

注册git-runner

>> gitlab-runner register

url:gitlab所在的测试服务器地址

token:项目的token,用于关联runner和项目

name:runner的名字,用于区分runner

tags:用于匹配任务(jobs)和执行任务的设备(runners)

executor:执行环境

编写 .gitlab-ci.yaml

stages关键字 :定义了pipeline中各任务的执行顺序

only/except 关键字:控制任务的触发条件

tags 关键字:指定使用哪个Runner(哪个机器)去执行任务,注意与上文only关键字的tags进行区分

cache关键字:指定了需要缓存的文件夹或者文件,目的是为了加快执行速度

artifacts关键字:和cache类似,也可以缓存文件或文件夹,不同的是,这些文件可以在Gitlab的UI界面中下载。

allow_failure关键字:允许任务失败,任务失败将不会影响pipeline失败。

dependencies关键字:定义了任务的依赖关系,比如依赖其他的项目、库、工具、任务等。

variables关键字:定义局部变量(只在当前的任务中生效)

when关键字:可以手动修改stage原有的执行规则。一共有五个值

官网demo参考:GitLab CI/CD examples | GitLab

编写 Dockerfile

镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是Dockerfile。

指令包括:FROM、MAINTAINER、COPY、ADD、WORKDIR、VOLUME、EXPOSE、ENV、RUN、CMD、ENTRYPOINT、HEALTHCHECK、ONBUILD、USER、ARG、SHELL、STOPSIGNAL

Dockerfile一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,'#'为Dockerfile中的注释。以下的dockerfile是uj-mini项目最简单的制作命令

四.Docker容器可视化管理

Portainer 是一个轻量级的管理 UI ,可让你轻松管理不同的 Docker 环境(Docker 主机或 Swarm 群集)。

Portainer 由一个可以在任何 Docker 引擎上运行的单一容器组成(可以部署为 Linux 容器或 Windows 本地容器,也支持其他平台)。Portainer 允许你管理所有的 Docker 资源(容器、镜像、卷、网络等等)。它与独立的 Docker 引擎和 Docker Swarm 模式兼容

相关推荐
极小狐4 小时前
极狐GitLab Git LFS 速率限制如何设置?
运维·git·ssh·gitlab·github
极小狐4 小时前
如何解决极狐GitLab 合并冲突?
人工智能·git·机器学习·gitlab
量子位20 小时前
无需数据标注!测试时强化学习,模型数学能力暴增 | 清华 & 上海 AI Lab
人工智能·gitlab·aigc
weisian1511 天前
云原生--CNCF-3-核心工具介绍(容器和编排、服务网格和通信、监控和日志、运行时和资源管理,安全和存储、CI/CD等)
安全·ci/cd·云原生
rider1891 天前
【3】CICD持续集成-k8s集群中安装Jenkins-agent(主从架构)
ci/cd·kubernetes·jenkins
梁萌2 天前
10-DevOps-Jenkins参数化构建实现多版本发布
运维·gitlab·jenkins·devops·tag
午后书香2 天前
入职前你需要知道的git操作大指南
前端·git·gitlab
亮学长2 天前
GitLab 提交权限校验脚本
gitlab
极小狐2 天前
极狐GitLab 自定义实例级项目模板功能介绍
运维·git·安全·gitlab·极狐gitlab
会写诗的猫3 天前
gitlab-runner 独立服务器部署
gitlab