云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

应用CI/CD工具(如Jenkins,GitLab Cl)实现自动化构建与部署

jxf315 2025-02-13 12:37:05 教程文章 17 ℃

一、CI/CD 工具概述

CI/CD(持续集成与持续部署)是现代软件开发中至关重要的环节,它能够极大地提高开发效率和软件质量。本文将重点介绍 Jenkins 和 GitLab CI 这两款常用的 CI/CD 工具,以及它们如何实现自动化构建与部署。

CI/CD 在软件开发流程中扮演着关键角色,它通过自动化的构建、测试和部署过程,确保软件能够快速、可靠地交付。Jenkins 和 GitLab CI 作为两款广泛应用的工具,各有其特点。

Jenkins 的特点

  • 编译服务和代码仓库分离,耦合度低:Jenkins 的编译服务独立于代码仓库,这使得它在处理不同项目时更加灵活。即使代码仓库发生变化,Jenkins 的编译服务也不会受到直接影响。
  • 插件丰富,支持语言众多:Jenkins 拥有庞大的插件库,可以支持多种编程语言的构建、测试和部署。无论是 Java、Python、C++ 还是其他语言,都能找到相应的插件来满足开发需求。
  • 有统一的 web 管理界面:这个管理界面方便用户进行配置和监控。用户可以通过直观的界面查看构建进度、测试结果和部署状态,轻松管理整个 CI/CD 流程。

然而,Jenkins 也存在一些不足之处。

  • 插件以及自身安装较为复杂:安装和配置 Jenkins 及其插件可能需要一定的技术知识和经验。对于新手来说,可能会遇到一些挑战。
  • 体量较大,不是很适合小型团队:由于其功能丰富,Jenkins 可能会占用较多的系统资源,对于小型团队来说,可能会显得有些臃肿。

GitLab CI 的特点

  • 轻量级,不需要复杂的安装手段:GitLab CI 安装相对简单,无需过多的复杂步骤即可快速搭建起 CI/CD 环境。
  • 配置简单,与 gitlab 可直接适配:它与 GitLab 紧密集成,用户可以直接在 GitLab 中进行配置,无需额外的工具或软件。
  • 实时构建日志十分清晰,UI 交互体验很好:在构建过程中,用户可以实时查看清晰的构建日志,了解构建的进度和状态。同时,其 UI 设计友好,交互体验良好。
  • 使用 YAML 进行配置,任何人都可以很方便的使用:YAML 配置文件易于理解和编辑,即使是非技术人员也能轻松上手。

不过,GitLab CI 也有一些局限性。

  • 没有统一的管理界面,无法统筹管理所有项目:与 Jenkins 不同,GitLab CI 没有一个集中的管理界面来管理多个项目。这可能会给需要同时管理多个项目的用户带来一些不便。
  • 配置依赖于代码仓库,耦合度没有 Jenkins 低:GitLab CI 的配置与代码仓库紧密相关,这在一定程度上增加了耦合度。

总的来说,Jenkins 和 GitLab CI 都有各自的优势和劣势。在选择 CI/CD 工具时,用户需要根据自己的项目需求、团队规模和技术水平来进行综合考虑。如果是多角色团队,职责分明,需要插件丰富且能与代码仓库分离的工具,那么 Jenkins 可能是更好的选择。而对于敏捷开发中的小型团队,开发与运维是同一个人,希望有最便捷的开发方式,那么 GitLab CI 可能更适合。

二、Jenkins 实现自动化构建与部署

1. 安装准备

Jenkins 的安装需要一定的前置条件。首先,需要安装 JDK,确保系统具备 Java 运行环境。如果系统中存在低版本 JDK,应先卸载低版本,以免产生冲突。在安装方式上,可以选择 rpm 安装或者自行下载解压安装。对于不熟悉 Linux 命令行的同学,这里介绍一下命令行修改文件的方法,比如可以使用 vi 命令打开文件进行编辑,保存修改后即可生效。

2. Jenkins 安装

Jenkins 可以通过多种方式进行安装。

  • rpm 安装:首先配置 yum 源,将 jenkins 导入 yum 源,执行命令sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo和sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key,然后下载安装包https://pkg.jenkins.io/redhat-stable/jenkins-2.223.1-1.1.noarch.rpm,使用命令rpm -ivh jenkins-2.223.1-1.1.noarch.rpm进行安装。
  • 自行下载解压安装:从官网下载 Jenkins 的 war 包,将其放置在已安装的 Tomcat 的 webapps 目录下,Tomcat 会自动部署。安装完成后,可以通过查看安装路径下的文件来确认安装是否成功。同时,需要进行启动前配置,比如修改端口可以在/etc/sysconfig/jenkins文件中进行修改,如果端口被占用可以修改为其他未被占用的端口。还可以配置账号名和目录权限等,确保 Jenkins 能够正常启动和运行。

3. 更新配置

在 Jenkins 安装更新时,默认的 check url 可能无法访问,需要将其修改为国内可访问的地址。例如,可以将
/var/lib/jenkins/hudson.model.UpdateCenter.xml文件中的
https://updates.jenkins.io/update-center.json改成
http://mirror.xmission.com/jenkins/updates/update-center.json或清华的镜像
http://updates.jenkins.io/update-center.json或
http://updates.jenkins-ci.org/update-center.json。同时,更新配置的源也建议更换为国内源,以提高下载速度和稳定性。比如可以在 jenkins 的家目录下找到
hudson.model.UpdateCenter.xml,将默认的更新源地址修改为国内的镜像地址。

4. 初始化配置

访问 Jenkins 地址后,根据提示前往指定目录查看密码,一般密码文件位于
/var/lib/jenkins/secrets/initialAdminPassword,使用cat命令可以查看密码内容。输入密码后,注册管理员账号。为了方便地从 github 上拉取代码,还需要进行 SSH Keys 配置。具体步骤如下:

  • 在安装 jenkins 的服务器上生成凭证,输入指令ssh-keygen -t rsa -C “登录 github 的邮箱地址”,会出现让输入两次密码的操作,直接按回车跳过。可以看到 SSH 凭证生成成功,生成的秘钥存储在 “/root/.ssh” 路径下。
  • 将公钥配置到 github,复制id_rsa.pub中的内容,将公钥的内容配置到 GitHub 端菜单:Settings->Account settings->SSH and GPG keys。
  • 将私钥配置到 jenkins,在 jenkins 中设置全局凭证,类型选择 “SSH Username with private key”,将id_rsa文件的内容复制到 Private Key 中,其他都是非必填选项,这里 Username 我们填写 github。在配置任务时选择刚刚配置的凭据即可。

三、GitLab CI 实现自动化构建与部署

1. 配置文件介绍

在使用 GitLab CI 进行自动化构建部署时,关键的一步是新建一个.gitlab-ci.yml配置文件。这个配置文件以 YAML 格式编写,用于管理项目的 runner 任务,定义了项目的自动化构建流程。

.gitlab-ci.yml文件中的保留字段不能被定义为 job 名称,比如image和services。image关键字允许使用一个自定义的 Docker 镜像,services关键字可用于指定一系列的服务,且这两个关键字可在整个 job 周期中使用。

before_script用来定义所有 job 之前运行的命令,包括 deploy(部署)jobs,但在修复 artifacts 之后执行。它可以是一个数组或者多行字符串。after_script则是在所有 job 之后运行的命令,也必须是一个数组或者多行字符串。

stages用于定义可以被 job 调用的 stages,其元素顺序决定了对应 job 的执行顺序。相同 stage 的 job 可以并行执行,下一个 stage 的 job 会在前一个 stage 的 job 成功后开始执行。如果.gitlab-ci.yml中没有定义stages,那么 job 的 stages 会默认定义为 build、test 和 deploy。如果一个 job 没有指定 stage,那么这个任务会分配到 test stage。

variables允许在.gitlab-ci.yml文件中添加变量,并在 job 环境中起作用。这些变量可以存储项目的非敏感配置,并且服务容器也可以使用 YAML 中定义的变量进行调控。变量还可以定义成 job 级别,除了用户自定义的变量外,Runner 也可以定义它自己的变量。

cache用来指定需要在 job 之间缓存的文件或目录,只能使用该项目工作空间内的路径。从 GitLab 9.0 开始,pipelines 和 job 就默认开启了缓存。如果cache定义在 jobs 的作用域之外,那么它就是全局缓存,所有 jobs 都可以使用该缓存。cache:key指令允许我们定义缓存的作用域(亲和性),可以是所有 jobs 的单个缓存,也可以是每个 job、每个分支或者任何合适的地方,能让我们很好地调整缓存。

.gitlab-ci.yml允许指定无限量 jobs,每个 jobs 必须有一个唯一的名字,且不能是上述提到的关键字。job 中stage选定相同场景的 job 并行执行,job 的执行顺序根据stage的定义来决定。script是 Runner 执行的 yaml 脚本,包含一系列执行命令去执行。only给定条件,限定该 job 只在某个条件下执行。tags指定哪个 ci runner 跑该工作。

2. 微信小程序体验版部署

以微信小程序体验版为例,介绍如何使用 GitLab CI 进行自动化构建与部署。首先,在使用 Gitlab CI 进行自动化构建部署时,需要新建一个.gitlab-ci.yml配置文件,里面包含了自动化构建的具体步骤脚本。

在进行微信小程序体验版部署时,可以设置 npm 镜像,执行命令npm config set registry
https://registry.npm.taobao.org。然后安装miniprogram-ci,执行命令npm install -g miniprogram-ci --verbose。接着生成一个版本号,例如PACKAGE_VERSION=$(date "+%m%d.%H%M")。

先上传至测试环境,执行命令miniprogram-ci upload --project-type miniProgram --pp./ --appid 测试环境 appid--uv $PACKAGE_VERSION --robot 8 --enable-es6 true --enable-minify-js true --enable-minify-wxss true --pkp指定 key 文件,如 /root/appid.key`。

之后如果需要替换为生产环境的 appid 和接口地址,可以执行命令sed -i 's/测试环境的 appid/生产环境的 appid/g' project.config.json和sed -i 's/测试环境域名/生产环境域名/g' config.js。

最后上传代码至生产环境的小程序,再次执行miniprogram-ci upload --project-type miniProgram --pp./ --appid 生产环境 appid--uv $PACKAGE_VERSION --robot 8 --enable-es6 true --enable-minify-js true --enable-minify-wxss true --pkp指定 key 文件,如 /root/appid.key`。

一般小程序都有两个版本,一个测试环境的,一个正式环境的,所以这里做了两个上传,第二个是用替换的方式然后再上传。

四、Jenkins 和 GitLab CI 对比

1. 易用性

GitLab 作为一体化平台,为 CI/CD、版本控制、项目管理和协作提供全面解决方案,其用户界面简单直观,使得开发人员能够轻松设置和配置管道。相比之下,Jenkins 是高度可定制的工具,需要一定技术专长来进行设置和配置,学习曲线较陡,新用户可能会觉得上手具有挑战性。正如多篇参考资料中提到的,“GitLab 具有简单直观的用户界面,使开发人员可以轻松设置和配置他们的管道。另一方面,Jenkins 是一个高度可定制的工具,需要一些技术专长来设置和配置。它具有陡峭的学习曲线,新用户可能会发现上手具有挑战性”。

2. 整合性

GitLab 提供与第三方服务的更多原生集成,包括云提供商、部署平台和监控工具等,这让开发人员能更轻松地设置管道并自动化工作流程。而 Jenkins 拥有庞大的插件库,支持与各种工具和服务的集成。例如,参考资料中指出 “GitLab 提供与第三方服务的更多原生集成,包括云提供商、部署平台和监控工具。Jenkins 还有一个庞大的插件库,支持与各种工具和服务的集成”。

3. 性能

GitLab 以快速可靠的性能著称,具有内置的缓存和并行处理功能,使开发人员能够快速高效地运行管道。然而,Jenkins 在运行大型复杂管道时可能会遇到性能问题,需要手动优化以确保可以处理负载。有资料提到 “GitLab 以其快速可靠的性能而闻名。它具有内置的缓存和并行处理功能,使开发人员能够快速高效地运行他们的管道。另一方面,Jenkins 在运行大型复杂管道时可能会遇到性能问题”。

4. 安全性

GitLab 具有内置的安全功能,可确保代码在每个管道阶段都是安全的,提供代码扫描、漏洞管理和容器扫描等功能,帮助开发人员在将代码投入生产之前识别和修复安全问题。而 Jenkins 严重依赖插件来提供安全功能,这使得确保管道安全变得具有挑战性,尤其是在使用第三方插件的情况下。如 “GitLab 具有内置的安全功能,可确保代码在每个管道阶段都是安全的。Jenkins 严重依赖插件来提供安全功能”。

5. 成本

GitLab 提供免费和付费计划,免费计划包括大部分小型团队 CI/CD 所需的功能,付费计划则包括部署监控、审计和合规性等附加功能。Jenkins 是开源免费的工具,但设置和维护需要大量资源,这会增加使用该工具的总体成本。参考资料中也有类似表述 “GitLab 提供免费和付费计划。免费计划包括小型团队 CI/CD 所需的大部分功能。Jenkins 是一个可以免费使用的开源工具。但是,它需要大量资源来设置和维护,这会增加使用该工具的总体成本”。

五、CI/CD 工具自动化构建部署案例

1. Flexus X 实例 Docker+Jenkins+gitee 实现 CI/CD 自动化部署

在 Flexus X 实例上,通过 Docker、Jenkins 和 Gitee 的结合,可以实现 C# Web API 项目的 CI/CD 自动化部署。下面详细介绍其实现步骤。

一、环境准备

本实验沿用了上一个实验,环境是 Flexus X 实例自定义模式,使用了 4vCPUs | 12GiB,镜像是最高版本的 ubuntu,在上一个实验中使用 xshell 连接了服务器,随后在服务器中安装了 git、docker。

二、安装 Portainer

  1. 介绍:Portainer 是一款开源的轻量级管理 UI,旨在简化 Docker 和 Kubernetes 环境的管理。提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作等功能。
  1. 拉取镜像:使用 Docker 命令拉取 Portainer 的 Docker 镜像docker pull portainer/portainer-ce。如果拉取镜像报错,可能需要配置 Docker 以使用国内的镜像源,因为直接访问 Docker Hub 有时可能会很慢或不稳定。
  1. 更换镜像源:在 Linux 系统中,Docker 的配置文件通常位于/etc/docker/daemon.json。如果该文件不存在,则需要手动创建。在文件中输入以下内容:
   {
 "registry-mirrors": [
 "https://gallery.ecr.aws/",
 "https://gitverse.ru/docs/artifactory/gitverse-registry/",
 "https://docker.lmirror.top",
 "https://atomhub.openatom.cn/"
 ]
 }

保存后,重启 docker 服务[root@localhost]# systemctl daemon-reload和[root@localhost]# systemctl restart docker。

4. 启动容器:再次拉取 Portainer 的 Docker 镜像后,执行下面命令运行 Portainer 容器docker run -d -p 9000:9000 --name portainer --restart=always -v
/var/run/docker.sock:/var/run/docker.sock -v
/var/lib/docker/volumes:/var/lib/docker/volumes portainer/portainer-ce。运行容器后,去华为服务器控制台开放 9000 端口,使用服务器 IP 地址 + 端口号,访问可视化界面,第一次访问需要配置账号密码。点击 LiveConnect 打开本地 docker,可以查看宿主机配置信息、查看容器、镜像、网络、卷等相关信息。

三、安装 jenkins

  1. 介绍:Jenkins 是一个开源的持续集成和持续部署(CI/CD)工具,它支持各种编程语言和平台,广泛应用于软件开发和交付过程中。
  1. 拉取镜像:使用docker pull jenkins/jenkins:lts命令拉取 Jenkins 的长期支持(LTS)版本镜像。
  1. 运行容器
    • 在宿主机上创建一个目录,用于存放 Jenkins 的数据mkdir -p /var/jenkins_home。
    • 为了确保 Jenkins 容器能够正常访问该目录,需要设置适当的权限chmod 777 /var/jenkins_home。
    • 启动容器docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock --restart=always jenkins/jenkins:lts。

四、新建流水线项目

  1. Portainer 配置:在 Portainer 中可以对 Docker 环境进行管理和监控,确保 Jenkins 和相关容器的正常运行。
  1. Gitee 配置:将项目代码托管在 Gitee 上,并配置 WebHooks,以便在代码提交时触发 Jenkins 的构建。
  1. 构建:当代码发生变化时,Jenkins 会自动检测到 Gitee 的 WebHooks 触发,并开始构建过程。包括拉取代码、编译、打包等步骤。
  1. 修改代码,自动部署:开发人员修改代码并推送到 Gitee 仓库后,Jenkins 会自动进行构建和部署,实现持续集成和持续部署的自动化流程。

2. GitLab+Docker 搭建 CI/CD 自动化部署

以物联管理平台项目为例,介绍如何使用 GitLab 和 Docker 搭建 CI/CD 自动化部署。

一、安装环境

  1. 安装 docker 和 docker-compose:在两台服务器上安装 docker,可参考相关文档进行安装。
  1. 安装 gitlab:在指定服务器上使用 docker 安装 gitlab,编写docker-compose.yml文件如下:
   version: '3'
 services:
 gitlab:
 image: twang2218/gitlab-ce-zh
 restart: always
 container_name: "gitlab"
 privileged: true
 hostname: "172.26.67.109"
 environment:
 GITLAB_OMNIBUS_CONFIG: |
 external_url 'http://172.26.67.109'
 gitlab_rails["time_zone"] = "Asia/Shanghai"
 gitlab_rails["gitlab_shell_ssh_port"] = 1222
 nginx["listen_port"] = 80
 ports:
 - "80:80"
 - "8443:443"
 - "1222:22"
 volumes:
 -./gitlab/config:/etc/gitlab
 -./gitlab/data:/var/opt/gitlab
 -./gitlab/logs:/var/log/gitlab
 - "/etc/localtime:/etc/localtime:ro"

然后docker-compose up -d运行安装 gitlab,安装后浏览器打开相应地址创建组、用户、项目等。

3. 安装 gitlab-runner:在另一台服务器上使用 docker 安装 gitlab-runner,编写docker-compose.yml文件如下:

   version: '3'
 services:
 gitlab-runner:
 container_name: gitlab-runner
 restart: always
 privileged: true
 image: gitlab/gitlab-runner
 volumes:
 - "/var/run/docker.sock:/var/run/docker.sock"
 - "./gitlab-runner/config:/etc/gitlab-runner"
 - "/etc/localtime:/etc/localtime:ro"

然后docker-compose up -d运行安装 gitlab-runner,接着注册 gitlab-runner 到 gitlab 上,从 gitlab 上获取注册令牌后,执行docker exec -it gitlab-runner gitlab-ci-multi-runner register -n --url http://172.26.67.109/ --registration-token XXXXXXXXXXXS5UDqw --tag-list=dev,uat,prod --description "project_build_runner" --docker-privileged=false --docker-pull-policy="if-not-present" --docker-image "livingobjects/jre8" --docker-volumes
/var/run/docker.sock:/var/run/docker.sock --docker-volumes
/opt/data/gitlab-runner/.m2:/root/.m2 --executor docker进行注册。

二、持续集成和部署

使用 Gitlab 的 CICD,只需要在 Gitlab 的仓库的根目录中添加.gitlab-ci.yml文件。这个文件中,可以定义 CICD 的各个环节,配置每个环节执行的命令,触发方式等。这个配置文件其实就是按照 YAML 规定了一些结构的 shell 脚本,里面的命令会在符合条件时逐一执行。一旦在仓库中添加这个文件,Gitlab 会检测到它并用名为 Gitlab Runner 工具执行它。每次触发的 CICD 会把配置中的脚划分为不同的 job,多个 job 组成一个 pipeline。

例如,最简单的.gitlab-ci.yml文件可以包含:

before_script:
 apt-get install rubygems ruby-dev -y
run-test:
 script:
 - ruby --version

其中before_scripts属性会在执行任一脚本前预装一些需要的依赖,此后名为run-test的脚本会显示当前系统的 ruby 版本。这两个步骤组成了一个 pipeline 会在这个仓库的每次 push 后执行。这行任务的执行情况也可以在 Gitlab 的对应页面上查看,就像在 Terminal 中看日志一样。而每个 pipeline 的 job 的执行情况也可以在页面上查看,如果中途报错了,可以一键回滚。

六、如何用 CI/CD 工具提升效率

1. 自动化构建和测试

使用 CI 工具如 Jenkins 或 GitHub Actions,可极大地提升开发效率并确保代码质量。以 Jenkins 为例,通过配置自动构建触发器,在构建过程中执行单元和集成测试。首先,Jenkins 的编译服务独立于代码仓库,耦合度低,插件丰富支持众多语言,且有统一的 web 管理界面,方便用户进行配置和监控。在安装 Jenkins 后,可以配置各种构建任务,如在 “Source Code Management” 中选择版本控制工具,填写仓库的 URL 和凭证信息,然后在 “Build” 中配置构建过程,使用 Maven 构建项目,执行单元测试等。对于 GitHub Actions,它也是一个强大的 CI/CD 工具,例如在一个 Java SpringBoot 项目中,可以配置工作流来实现自动构建和部署。通过在项目根目录下创建一个名为.github/workflows 的目录,并在其中创建一个 YAML 格式的文件作为 Actions 工作流,当代码被推送至仓库时,工作流将自动运行,包括拉取代码库、安装依赖、运行测试等步骤。

2. 实时监控和警报

集成监控工具对于及时发现问题至关重要。在使用 CI/CD 工具时,可以设置警报,在问题发生时通知开发人员。例如,当 Jenkins 构建过程中出现错误时,可以通过邮件或其他方式通知相关人员。同时,GitHub Actions 也可以通过配置通知渠道,如邮件、Slack 等,监控工作流的状态,及时处理失败或异常情况。

3. 使用版本控制系统

版本控制系统在软件开发中起着关键作用。管理代码更改,为提交创建明确的变更日志和版本标签,使用分支策略审查和批准更改。无论是 Git 还是 SVN,都是常用的版本控制系统。Git 作为目前世界上最先进的分布式版本控制系统,具有强大的分支管理功能。开发人员可以创建不同的分支进行并行开发,如在开发一个版本时有不同功能时,可以在不同分支上进行开发,避免相互干扰。同时,通过查看提交历史、比较不同版本的代码差异等功能,可以方便地回溯和追踪代码变更。SVN 作为一个成熟的集中式版本控制系统,也有其优势,如简单易用的界面和操作方式、强大的社区支持等。在使用版本控制系统时,要注意配置邮箱与姓名,方便区分不同修改者。将工作区的代码提交到暂存区,再提交到版本库,并为提交添加有意义的记录信息。如果同时修改同一个文件出现冲突问题,需要手动解决,选择需要保留的代码。

4. 实战案例

以 PHP 和 C++ 为例,介绍了如何使用 GitHub Actions 和 Jenkins 进行构建和部署,以及如何在 C++ 框架团队中提高协作效率。在 C++ 框架团队中,可以实施建立明确的角色和职责、使用版本控制系统、实施代码风格指南、启用代码审查、使用通信工具、定期举行团队会议、实施持续集成和持续交付等最佳实践。例如,定义清晰的角色和职责,明确每位团队成员的职责范围;使用 Git 等版本控制系统,允许团队成员跟踪和协作修改代码;建立并维护一致的代码风格指南,提高代码的可读性和可维护性;设置代码审查流程,让团队成员审查彼此的代码更改;利用即时消息、电子邮件和视频会议等通信工具,促进团队成员之间的有效沟通;举行定期团队会议,讨论项目进展、问题和协作战略;实施 CI/CD 管道,以自动化代码构建、测试和部署流程。通过这些措施,可以显着提高 C++ 框架团队的协作效率,促进透明度并最终交付更高质量的软件。

七、总结

CI/CD 工具如 Jenkins 和 GitLab CI 在软件开发中发挥着重要作用,它们能够实现自动化构建与部署,提高开发效率和软件质量。

Jenkins 和 GitLab CI 各有特点,在选择工具时,开发团队应根据项目需求、团队规模和技术水平进行综合考虑。

Jenkins 拥有编译服务和代码仓库分离、插件丰富、有统一的 web 管理界面等优点,但也存在插件及自身安装复杂、体量较大不适合小型团队等不足。GitLab CI 则具有轻量级、配置简单、实时构建日志清晰、使用 YAML 进行配置方便等优势,不过没有统一的管理界面,配置依赖代码仓库,耦合度相对较高。

通过对比不同工具的特点和优势,以及实际案例的介绍,可以帮助开发团队选择适合自己的 CI/CD 工具,并充分利用其功能提升开发效率。例如,在 Flexus X 实例上,通过 Docker、Jenkins 和 Gitee 的结合,可以实现 C# Web API 项目的 CI/CD 自动化部署;以物联管理平台项目为例,介绍了如何使用 GitLab 和 Docker 搭建 CI/CD 自动化部署。

此外,还可以根据

最近发表
标签列表