Day08-gitlab job 的工作流

Job

昨天的范例终究是一个 Job

每一个 Job 是最小的单位

但是如果我们写多个 Job 的时候 会一次全部执行

就像我们在写前端的时候

所有的非同步都会同时动作

这样的状况有点失控

我们需要一些步骤来设计一下部署的工作流

工作流

基本的工作流可以分为可以同时处理的事情 和顺序性的事情

所以要针对同时进行的 Job 做群组跟排序

这时候就需要使用到 Stages

Stage - 阶段

每一个 Job 都可以设定他是在哪一个 阶段进行的工作

这样就可以做到把每一个 Job 群组归类

再针对阶段进行顺序排序

范例

先将基本的打包流程分为三个阶段

  • Prepare
    • 处理环境设定党
    • 处理 submodule 或是 sub repo
    • 安装依赖档案
  • Build
    • 打包
    • 压缩
  • Deploy
    • 将打包完成的压缩党传送到 Server 或是 平台

https://ithelp.ithome.com.tw/upload/images/20210923/20140956uQAEQNfUZn.png

这样就可以设计出适合每一个专案的部署流程

中间也可以插入测试 或是在最後加入通知

https://ithelp.ithome.com.tw/upload/images/20210923/201409560uDfai6wAq.png

  • rules - 增加一些规则 规范工作流
  • when - 当条件成立时执行 (有一个是成功会发送成功的讯息, 一个是失败会发送失败的讯息)
stages:
  - Prepare
  - Build
  - Deploy
  - Notification

Prepare:Env:
  stage: Prepare
  script:
    - echo "AAA=BBB" > .env 

Prepare:submodule:
  stage: Prepare
  script:
    - echo 'clone sub repo or submodule' 

Prepare:Packages:
  stage: Prepare
  script:
    - echo 'yarn install'

Build:DevResult:
  stage: Build
  script:
    - echo 'yarn build'

Deploy:CopyToServer:
  stage: Deploy
  script:
    - echo 'scp to server'

Notification:SendSuccessMessage:
  stage: Notification
  rules:
    - when: on_success
  script:
    - echo 'node SendSuccessMessage.js'

Notification:SendErrorMessage:
  stage: Notification
  rules:
    - when: on_failure
  script:
    - echo 'node SendErrorMessage.js'

了解这些之後就可以初步来规划我们的部署


<<:  第 07 天 不断尝试直到成功( leetcode 106 )

>>:  [Day 08] 原形设计的样板参考

[Day-27] cin深入练习(一)

今天要来练习的是cin的更多应用 综合之前所学的方法以及加上不同cin的写法 再稍微介绍今天练习的程...

【PHP Telegram Bot】Day22 - ReplyKeyboardMarkup:让输入框下方出现按钮区域

今天的东东是个超多层的阵列,足以让脑袋死机,请做好心理准备再服用 前置作业 又回到 apiRequ...

XACML 可扩展存取控制标记语言

-示例 XACML 实现 XACML主要用於授权而不是身份验证。可以实施 PKI 以支持相互身份验...

Day 14 - swift一些重要的细节

这几天差不多基本的都说完了。 所以今天我来给大家带一点一些很重要,但前面没讲到的细节。 错误处理 -...

[Day28] - Django-REST-Framework API 期末专案实作 (三)

上一篇我们编写了 Serializers, Views,以及修改了urls.py,完成了基本的菜单查...