# CICD

CI:持续集成

CD:持续交付

CD:持续部署

# 上线流程

发布上线流程举例:git 上传,开始跑测试,进行打包,使用 docker 容器化镜像打包,推送到 dev 开发环境,部署到 staging 测试环境,最后部署到 production 生产环境

# pipeline

一次 pipeline 就相当于一次构建任务,里面可以包含多个流程,如:安装依赖,跑测试代码,eslint 校验,编译,部署测试服务器,部署生产服务器等流程,任何提交或者 Merge Request 的合并都可以触发 Pipeline。

# runner

一个 runner 就相当于一个打工仔,可以下载 gitlab runner 之后注册多个 runner,并且指定对应的 runner 执行任务。

# .gitlab-ci.yml 文件

# 一项代表一个 pipeline 作业
helloworld:
  stage: linter
  script:
    - echo "hello world,Gitlab!"
    - chmod +x ./run.sh # 将 run.sh 文件添加可执行权限
    - ./run.sh # 将执行过程提取成可执行文件进行执行
# 私密使用(不想暴露到代码中)的环境变量,可以在平台上进行设置
variables: # 全局的环境变量,还有一些内置的环境变量,例如:$CI_PIPELINE_SOURCE 详见文档
  my_password: "全局的配置变量"
run_unit_tests:
  variables: # 任务中配置变量,使用时加上 $ 符号
    my_password: "iamsomepassword..."
  stage: testing
  script:
    - echo "执行单元测试"
# 配置运行的容器镜像
image: alpine:latest
before_script:
  image: node:3.1.2-alpine3.16 # 配置单项作业运行的容器镜像
  stage: build
  needs: # 同一个 stage 中,通过 needs 来指定工作的相依性
    - bad_job
  script:
    - echo "安装套件"
    - echo "设定资料链接"
workflow: # 配置工作流
  rules: # 当 main 分支 commit 时,才启动工作流程
    - if: $CI_COMMIT_BRANCH == "main" # $CI_COMMIT_BRANCH 是内置的环境变量
      when: always
    - when: never
after_script:
  stage: deplpy
  script:
    - echo "删除不必要的文件"
build_docker_image:
  only: # 指定只有推送到 main 分支上才会执行,指定哪些分支不执行使用:except
    - main
  state: build
  script:
    - echo "building docker image"
bad_job: # 假设错误的任务,则会中断当前工作的执行,每个工作独立执行
  tags: # 指定 runner (打工仔) 进行执行,在注册 runner 时会创建一个 tags
    - runner_tags
    - uname # 验证当前在 runner 中执行
  stage: build
  script: script:no_script
# 建立舞台,使得工作按照指定先后顺序执行
stages:
  - linter
  - testing
  - build
  - deploy
# 服务端去官网安装 gitlab runner,使用 runner(打工仔)分配工作
# 接着启动服务
# 然后将这个服务进行注册(配置在 gitlab runner 的配置中)
# runner 分为:shared runner、 group runners 和 specific runners 三种
# 可以为某个群组设置 runner,例如在群组中设置 runner 配置,服务中注册一个 runner 进行配置
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

dmq 微信支付

微信支付

dmq 支付宝

支付宝