如何使用 GitLab CI/CD 快速实现自动化构建与发布
目录
背景
现在每次开发完成代码之后,都需要到生产服务器手动编译、打包、运行
我希望能够提交代码之后,自动执行编译、打包、重启运行的流程
这个时候就可以接入 CI/CD 流水线,常见的 CI/CD 流水线有:
- Github Action
- Jenkins
- Gitlab
我用的 Gitlab 的 Saas 版,如果有条件可以自己部署 gitlab,官方有开源代码
见:https://about.gitlab.com/
注册 Gitlab
从官方 https://about.gitlab.com/ 注册,即可使用 Saas 版本
⚠️:gitlab 处于某些原因,现在似乎不对中国用户免费开放了……
创建项目
进入 Saas 版 gitlab 之后,创建一个 git 仓库,基本和 github 操作一致,然后提交自己的代码
创建 GitLab Runner
在你服务器下部署 gitlab runner,然后注册到 gitlab 上
创建 CI/CD 流水线
在自己的项目下创建 .gitlab-ci.yml
文件
模版文件如下:
stages: # 执行的步骤
# - test
- build
# - push
- deploy
before_script:
- date
after_script:
- echo "Job finished at $(date)"
variables: # 环境变量
GIT_DEPTH: 3 # 抓取代码的深度,如设置 3 ,则 只抓取或克隆最后的3次commits
GIT_BRANCH: ${CI_COMMIT_REF_NAME} # 内置变量,用于获取当前Git commit所在的分支或标签的名称
GIT_TAG: ${CI_COMMIT_TAG} # 内置变量,用于获取当前Git commit所在的标签的名称。如果当前Git commit不是一个标签,则${CI_COMMIT_TAG}的值为空字符串。
GIT_COMMIT: ${CI_COMMIT_SHORT_SHA} # 置变量,用于获取当前Git commit的短哈希值(默认为7位)
VERSION: ${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA}
CICD_SVC_IMAGE: test-cicd-${VERSION}
# ----------------------------------- test-cicd -------------------------------------
## 1. 单元测试 、golangcli-lint
test-test-cicd:
stage: test
tags:
- master
script:
- echo '正在执行单元测试......'
rules:
- changes:
- test-cicd/**/*.*
lint-test-cicd:
stage: test
tags:
- master
script:
- echo '正在执行 golangci-lint ......'
rules:
- changes:
- test-cicd/**/*.*
然后提交代码,gitlab 就会自动执行 流水线