Förstå arbetsflöden

Fullbordad

Arbetsflöden är automatiserade processer som du definierar för att skapa, testa, paketera, släppa eller distribuera projektet. De består av ett eller flera jobb som körs som svar på specifika händelser på din lagringsplats.

Arbetsflödesstruktur

Varje arbetsflöde innehåller följande nyckelkomponenter:

Utlösare (händelser)

Definiera när arbetsflödet ska köras – vid push-, pull-begäran, schema eller manuell utlösare.

Jobb

En uppsättning steg som körs på samma löpare. Jobb körs parallellt som standard men kan konfigureras att köras sekventiellt.

Steg

Enskilda uppgifter i ett jobb som kan köra kommandon, konfigurera uppgifter eller använda åtgärder.

Löpare

Beräkningsmiljön där dina jobb körs – antingen GitHub-värdbaserad eller lokalt installerad.

Arbetsflödesplats och namngivning

Arbetsflöden lagras som YAML-filer i katalogen på .github/workflows din lagringsplats. Filnamnet blir arbetsflödesidentifieraren i GitHub-användargränssnittet.

Exempel på modernt arbetsflöde

Här är ett omfattande exempel med aktuella metodtips:

# .github/workflows/ci.yml
name: CI Pipeline

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]
  schedule:
    - cron: "0 2 * * 0" # Weekly dependency check

env:
  NODE_VERSION: "20"

jobs:
  test:
    name: Test and Lint
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Run linting
        run: npm run lint

      - name: Run tests with coverage
        run: npm run test:coverage

      - name: Upload coverage reports
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  build:
    name: Build Application
    runs-on: ubuntu-latest
    needs: test

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Build application
        run: npm run build

      - name: Upload build artifacts
        uses: actions/upload-artifact@v4
        with:
          name: build-files
          path: dist/

Viktiga förbättringar i moderna arbetsflöden

Det här exemplet visar aktuella metodtips:

  • Senaste åtgärdsversioner: Använda @v4 versioner av populära åtgärder
  • Cachelagring av beroenden: Påskyndar arbetsflödeskörning
  • Miljövariabler: Centraliserad konfigurationshantering
  • Jobbberoenden: build jobbet körs endast efter att test lyckas
  • Artefakthantering: Korrekt lagring och delning av byggutdata
  • Säkerhet: Använda hemligheter för känsliga data som token

Ytterligare resurser

Utforska dessa resurser för att förbättra dina arbetsflödeskunskaper: