为什么要在 Github Actions 中分离作业而不是添加步骤?

Lou*_*let 10 firebase github-actions

在此 Github Actions 部署脚本示例中,作者将构建和部署分为不同的作业。
鉴于:

  • 这些作业按顺序运行(需要:构建)
  • 并在同一个运行器上(运行:ubuntu-latest)

分成两个作业而不是简单地在部署作业中插入构建步骤有什么好处?

这是示例:

name: Build and Deploy
on:
  push:
    branches:
      - master

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build-prod
      - name: Archive Production Artifact
        uses: actions/upload-artifact@master
        with:
          name: dist
          path: dist
  deploy:
    name: Deploy
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Download Artifact
        uses: actions/download-artifact@master
        with:
          name: dist
          path: dist
      - name: Deploy to Firebase
        uses: w9jds/firebase-action@master
        with:
          args: deploy --only hosting
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

Run Code Online (Sandbox Code Playgroud)

Krz*_*tof 1

对我来说最重要的是 reson id CD 部分。当您想要部署到环境时,您可能想控制它。因此可能会因环境而异。使用多个作业,您可以拥有一项作业 = 环境,如果您将所有内容都放入一项作业中,这是不可能的,因为这样您就拥有开发环境或测试环境,但不能同时拥有两者。

请检查这里为您提供的环境。

另一个有用的事情是重试。您可能想重试失败阶段,如果这是部署,则没有必要重试整个构建过程。