0Pricing
DevOps Bootcamp · Lekcja

Wielokrotnego użytku workflows i Actions

Utworzą Państwo i wykorzystają workflows wielokrotnego użytku oraz niestandardowe actions, aby modularizować potoki i zapewnić spójność między repozytoriami.

Wielokrotnego użytku workflows i Actions to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Wprowadzenie do wielokrotnego używania przepływów pracy

We współczesnym tworzeniu oprogramowania kluczowe znaczenie mają wydajność i spójność. Wraz z rozwojem projektów rosną również potrzeby związane z automatyzacją.

Przepływy pracy wielokrotnego użytku i niestandardowe akcje w GitHub Actions pomagają unikać powtarzania kodu, dzięki czemu potoki CI/CD są łatwiejsze w utrzymaniu i bardziej niezawodne.

Dlaczego warto ponownie używać przepływów pracy?

Wyobraźmy sobie wiele aplikacji, które wymagają tych samych kroków budowania, testowania lub wdrażania. Kopiowanie i wklejanie kodu przepływu pracy prowadzi do:

  • Duplikacji: większej ilości kodu do utrzymania.
  • Braku spójności: łatwo przeoczyć aktualizacje w poszczególnych przepływach pracy.
  • Problemów z utrzymaniem: zmiany wymagają aktualizacji wielu plików.

Wielokrotne używanie przepływów pracy rozwiązuje te problemy!

Definiowanie przepływu pracy wielokrotnego użytku

Przepływ pracy wielokrotnego użytku to kompletny przepływ pracy, który może być wywoływany przez inne przepływy pracy. Jest przechowywany w repozytorium i działa jak szablon.

Aby umożliwić wielokrotne używanie przepływu pracy, należy użyć zdarzenia workflow_call. Informuje ono GitHub Actions, że ten przepływ pracy jest przeznaczony do wywoływania, a nie do uruchamiania przez typowe zdarzenia, takie jak push czy pull_request.

Przykład przepływu pracy wielokrotnego użytku

Oto prosty przepływ pracy wielokrotnego użytku symulujący kompilację. Należy zapisać go w pliku .github/workflows/reusable-build.yml.

Definiuje on element output o nazwie build_id, z którego mogą korzystać przepływy pracy wywołujące.

name: Reusable Build Component

on:
  workflow_call:
    outputs:
      build_id:
        description: "The ID of the build operation"
        value: ${{ jobs.build.outputs.build_id }}

jobs:
  build:
    runs-on: ubuntu-latest
    outputs:
      build_id: ${{ steps.generate_id.outputs.id }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Generate build ID
        id: generate_id
        run: echo "id=$(date +%s)" >> "$GITHUB_OUTPUT"
      - name: Simulate build
        run: echo "Building project with ID ${{ steps.generate_id.outputs.id }}..."

Wywoływanie przepływu pracy wielokrotnego użytku

Aby użyć przepływu pracy wielokrotnego użytku, inny przepływ pracy ("wywołujący") korzysta ze słowa kluczowego uses, podobnie jak w przypadku akcji GitHub.

Należy określić ścieżkę do pliku przepływu pracy wielokrotnego użytku w repozytorium albo wskazać plik z innego repozytorium lub konkretną wersję.

Przykład przepływu pracy wywołującego

Ten przepływ pracy, zapisany jako .github/workflows/main-app-ci.yml, wywołuje nasz przepływ pracy reusable-build.yml.

Warto zwrócić uwagę, że uzyskuje on dostęp do danych wyjściowych build_id wywołanego przepływu pracy za pomocą jobs.call-build.outputs.build_id.

name: Main App CI

on: [push]

jobs:
  call-build:
    uses: ./.github/workflows/reusable-build.yml
    outputs:
      build_id: ${{ jobs.call-build.outputs.build_id }}
  
  deploy:
    needs: call-build
    runs-on: ubuntu-latest
    steps:
      - name: Deploy app
        run: echo "Deploying app built with ID ${{ needs.call-build.outputs.build_id }}"

Przekazywanie danych wejściowych do przepływów pracy wielokrotnego użytku

Przepływy pracy wielokrotnego użytku nie są tylko statycznymi szablonami — mogą przyjmować dane wejściowe, dzięki czemu są bardzo elastyczne.

Oczekiwane dane wejściowe definiuje się w sekcji on: workflow_call: inputs: przepływu pracy wielokrotnego użytku, określając ich typ, to, czy są wymagane, oraz opis. Przepływ pracy wywołujący przekazuje te dane wejściowe za pomocą słowa kluczowego with:.

Przepływ pracy wielokrotnego użytku z danymi wejściowymi

Oto zaktualizowany plik reusable-build.yml, który przyjmuje dane wejściowe target_env. Dzięki temu tę samą logikę kompilacji można dostosować do różnych środowisk.

name: Reusable Build Component with Input

on:
  workflow_call:
    inputs:
      target_env:
        required: true
        type: string
        description: "The target environment for the build"
    outputs:
      build_id:
        description: "The ID of the build operation"
        value: ${{ jobs.build.outputs.build_id }}

jobs:
  build:
    runs-on: ubuntu-latest
    outputs:
      build_id: ${{ steps.generate_id.outputs.id }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Generate build ID
        id: generate_id
        run: echo "id=$(date +%s)" >> "$GITHUB_OUTPUT"
      - name: Simulate build for ${{ inputs.target_env }}
        run: echo "Building project for ${{ inputs.target_env }} with ID ${{ steps.generate_id.outputs.id }}..."

Przykład wywołania z danymi wejściowymi

Teraz główny przepływ pracy CI może dwukrotnie wywołać komponent kompilacji wielokrotnego użytku — raz dla środowiska 'staging', a raz dla środowiska 'production' — przekazując różne wartości target_env.

name: Main App CI with Input

on: [push]

jobs:
  call-build-staging:
    uses: ./.github/workflows/reusable-build-with-input.yml
    with:
      target_env: 'staging'
    outputs:
      build_id: ${{ jobs.call-build-staging.outputs.build_id }}
  
  call-build-prod:
    uses: ./.github/workflows/reusable-build-with-input.yml
    with:
      target_env: 'production'
    outputs:
      build_id: ${{ jobs.call-build-prod.outputs.build_id }}

Przepływy pracy wielokrotnego użytku a akcje niestandardowe

Choć oba rozwiązania promują możliwość ponownego użycia, służą różnym celom:

  • Przepływy pracy wielokrotnego użytku: Koordynują serię zadań. Definiują kompletną strukturę przepływu pracy (np. kompilowanie, testowanie, wdrażanie).
  • Akcje niestandardowe: Wykonują konkretne, pojedyncze zadanie w ramach zadania (np. konfigurują Node.js, publikują pakiet). Są elementami składowymi *wewnątrz* kroków zadania.

Można traktować przepływy pracy jak przepisy, a akcje jak pojedyncze składniki lub kroki.

Szybki test

Jakie są najważniejsze korzyści z używania przepływów pracy wielokrotnego użytku w GitHub Actions?

Podsumowanie: przepływy pracy wielokrotnego użytku i akcje

Przeanalizowaliśmy, jak przepływy pracy wielokrotnego użytku pomagają modularyzować potoki CI/CD.

  • Są definiowane za pomocą workflow_call.
  • Mogą przyjmować inputs i udostępniać outputs.
  • Przepływy pracy wywołujące korzystają ze słowa kluczowego uses.
  • Różnią się od akcji niestandardowych, które są elementami składowymi wykonującymi pojedyncze zadania w ramach zadań.

Wykorzystanie możliwości ponownego użycia prowadzi do wydajniejszej, spójniejszej i łatwiejszej w utrzymaniu automatyzacji w różnych projektach.

Często zadawane pytania

Czy lekcja „Wielokrotnego użytku workflows i Actions” jest bezpłatna?

Tak — pełny tekst „Wielokrotnego użytku workflows i Actions” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Co nauczysz się w „Wielokrotnego użytku workflows i Actions”?

Utworzą Państwo i wykorzystają workflows wielokrotnego użytku oraz niestandardowe actions, aby modularizować potoki i zapewnić spójność między repozytoriami. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Wielokrotnego użytku workflows i Actions”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Kompilacje macierzowe dla wielu środowisk
  2. Buforowanie zależności na rzecz szybkości
  3. Wielokrotnego użytku workflows i Actions
  4. Warunkowe wykonywanie i zależności zadań
← Powrót do DevOps Bootcamp