【GitLab CI/CD 实践】从 0 到 1 搭建高效自动化部署流程
大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。
图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:极星会首批签约作者
文章目录
- 摘要
- 引言
- GitLab CI/CD 基本概念
- 配置 .gitlab-ci.yml
- GitLab Runner 的使用
- 安装 Runner(Linux 示例)
- 注册 Runner
- 使用 Artifacts 进行构件管理
- QA 环节
- 总结
- 参考资料
摘要
GitLab CI/CD 是 GitLab 内置的持续集成和持续部署(CI/CD)工具,它可以帮助开发团队自动化代码测试、构建和部署。本指南将介绍如何使用 GitLab CI/CD 搭建完整的自动化部署流程,包括 .gitlab-ci.yml
配置文件的编写、Stages、Jobs、Artifacts 以及 Runner 的使用。
引言
在现代软件开发中,自动化部署成为提高开发效率和稳定性的关键环节。相比 GitHub Actions 和 Jenkins,GitLab CI/CD 具有与 GitLab 无缝集成的优势,但许多开发者仍然对其使用方式不太熟悉。本指南将提供详细的讲解和示例代码,帮助开发团队高效使用 GitLab CI/CD。
GitLab CI/CD 基本概念
- Pipeline:GitLab CI/CD 的核心,由多个 Stage 组成。
- Stage:定义 CI/CD 的不同阶段,如
build
、test
和deploy
。 - Job:具体执行的任务,例如编译代码或运行测试。
- Runner:GitLab CI/CD 运行 Job 的环境,可以是共享 Runner 或自托管 Runner。
配置 .gitlab-ci.yml
.gitlab-ci.yml
是 GitLab CI/CD 的核心配置文件,以下是一个基本的 .gitlab-ci.yml
示例:
stages:
- build
- test
- deploy
job_build:
stage: build
script:
- echo "Building the application..."
- mvn package
artifacts:
paths:
- target/*.jar
job_test:
stage: test
script:
- echo "Running tests..."
- mvn test
job_deploy:
stage: deploy
script:
- echo "Deploying the application..."
- scp target/*.jar user@server:/deploy/path
解析:
stages
定义了 CI/CD 流程的阶段(build
→test
→deploy
)。job_build
任务构建应用,并保存target/*.jar
产物(Artifacts)。job_test
任务执行单元测试,确保代码质量。job_deploy
任务自动化部署,将产物上传至服务器。
GitLab Runner 的使用
GitLab CI/CD 依赖 Runner 执行 Job,可以使用 GitLab 提供的共享 Runner,或者自己托管 Runner。
安装 Runner(Linux 示例)
curl -L --output gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
chmod +x gitlab-runner
sudo mv gitlab-runner /usr/local/bin/
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
注册 Runner
sudo gitlab-runner register \
--url https://gitlab.com/ \
--registration-token YOUR_TOKEN \
--executor shell \
--description "My Runner" \
--tag-list "ci,deploy" \
--run-untagged=false \
--locked=false
说明:
--executor shell
选择 Shell 作为执行环境(可换为docker
、kubernetes
)。--tag-list "ci,deploy"
设定 Runner 适用的 CI/CD 任务。
使用 Artifacts 进行构件管理
Artifacts 用于存储和共享 Job 产生的文件,例如构建产物。
artifacts:
paths:
- target/*.jar
expire_in: 1 hour
paths
:指定要保存的文件路径。expire_in
:设置过期时间,默认 30 天。
QA 环节
Q1: GitLab CI/CD 和 Jenkins 有什么区别?
- GitLab CI/CD 集成在 GitLab 中,使用 YAML 文件配置,而 Jenkins 需要单独安装和维护。
Q2: 如何在 GitLab CI/CD 中使用环境变量?
- 可以在 GitLab 项目的
Settings > CI/CD > Variables
添加环境变量,然后在.gitlab-ci.yml
文件中使用$VAR_NAME
。
总结
GitLab CI/CD 提供了一种高效的自动化部署方式,能够帮助团队提高开发效率和代码质量。本文介绍了 GitLab CI/CD 的基本概念、.gitlab-ci.yml
配置、Runner 的使用以及 Artifacts 处理方式。
未来,我们可以进一步探索 GitLab CI/CD 的进阶功能,如:
- 使用 Docker 进行容器化部署
- 结合 Kubernetes 进行自动化运维
- 监控和优化 CI/CD 运行效率
参考资料
- GitLab 官方文档
- GitLab CI/CD 示例