概念介绍
GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发:
- Continuous Integration (CI) 持续集成
- Continuous Delivery (CD) 持续交付
- Continuous Deployment (CD) 持续部署
持续集成的工作原理是将小的代码块推送到Git仓库中托管的应用程序代码库中,并且每次推送时,都要运行一系列脚本来构建、测试和验证代码更改,然后再将其合并到主分支中。
持续交付和部署相当于更进一步的CI,可以在每次推送到仓库默认分支的同时将应用程序部署到生产环境。
这些方法使得可以在开发周期的早期发现bugs和errors,从而确保部署到生产环境的所有代码都符合为应用程序建立的代码标准。
GitLab的CI/CD使用文件.gitlab-ci.yml文件配置并放在repo的root directory。文件中定义要运行的脚本并由GitLab Runner执行。Pipeline中的script按job进行分组,为yaml文件格式。
构建working CI的条件:
- 添加.gitlab-ci.yml文件;
- 配置runner;
这样,之后的每次push都会触发pipeline。
1. Gitlab CI/CD工作流程
1.1 基本CI/CD工作流程
1.2 深入CI/CD基本工作流程
如果我们深入研究基本工作流程,则可以在DevOps生命周期的每个阶段看到GitLab中可用的功能,如下图所示:
2. 创建.gitlab-ci.yml文件
variables: # 定义全局变量
PROJECT_IMAGES: "irweb:$CI_COMMIT_TAG" # gitlab系统变量,获取提交tag的信息
stages: # 声明阶段
- build
- docker
- test
- deploy
yarn-build-job:
stage: build # 阶段标签
image: node:18.0.0 # 基于docker镜像
tags: # 此处为选择gitlab-runner服务的标签
- 203web
script: # 执行脚本命令
- echo "开始构建打包"
- yarn install
- yarn build
- echo "构建完成"
artifacts: # 使用artifacts关键词可以将当前作业的一些文件存储起来,以便后边job使用
paths:
- build/ # 此处我们缓存了yarn build打包生成的文件,以便后续docker build的时候使用
only: # 此处定义只有git push tag的时候才会触发此job
- tags
docker-build-job:
stage: docker
tags:
- 203web
script:
- echo "开始docker build"
- echo $PROJECT_IMAGES
- docker build -t $PROJECT_IMAGES .
- echo "构建完成"
needs: # 此处声明依赖于yarn-build-job,确保不会找不到build文件夹
- job: yarn-build-job
artifacts: true
only:
- tags
lint-test-job:
stage: test
tags:
- 203web
script:
- echo "查看镜像"
- docker images
only:
- tags
deploy-job:
stage: deploy
tags:
- 203web
script:
- echo "开始部署"
- echo "Application successfully deployed." # 此处替换为docker run的执行命令即可,在此处可以优化,例如 docker stop容器,然后docker rm删除容器,然后启动本次跟新的容器 - echo "部署成功"
rules: # 跟only一个意思
- if: $CI_COMMIT_TAG
注意:YAML文件中使用spaces,不要使用tabs。
更多内容参考Gitlab官方文档:CI/CD YAML syntax reference | GitLab