Створення повторно використовуваних workflows

Повторно використовувані workflows у GitHub Actions дозволяють вам створювати стандартизовані процеси, які можуть бути використані у різних проектах або репозиторіях. Це значно спрощує управління CI/CD процесами, забезпечуючи єдиний підхід до автоматизації для всіх проектів у вашій організації або команді.

Як створити повторно використовувані workflows?

Для того щоб створити повторно використовуваний workflow, ви створюєте окремий workflow у вашому репозиторії, який потім можна викликати з інших workflows. Цей підхід дозволяє вам стандартизувати процеси, такі як побудова, тестування або розгортання, і повторно використовувати ці процеси у різних проектах.

Приклад:

# .github/workflows/reusable-workflow.yml
name: Reusable Workflow

on: workflow_call

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

Цей workflow називається Reusable Workflow і визначає jobs для побудови, встановлення залежностей та виконання тестів. Інші workflows можуть викликати цей workflow і виконувати ті ж самі jobs, що спрощує повторне використання коду та забезпечує узгодженість у всіх проектах.

Використання вхідних та вихідних даних у повторно використовуваних workflows

Повторно використовувані workflows можуть приймати вхідні дані та повертати вихідні дані, що дозволяє їм бути більш гнучкими та налаштовуваними для конкретних випадків використання.

Як додати вхідні дані?

Вхідні дані дозволяють передавати змінні значення до повторно використовуваного workflow з інших workflows, що викликають його. Це робить workflow більш універсальним і дозволяє використовувати його в різних контекстах.

Приклад:

# .github/workflows/reusable-workflow.yml
name: Reusable Workflow

on: workflow_call

inputs:
  node-version:
    description: 'Node.js version'
    required: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: ${{ inputs.node-version }}

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

В цьому прикладі workflow приймає вхідний параметр node-version, який вказує версію Node.js, яку слід використовувати. Інші workflows можуть передавати значення для цього параметра під час виклику цього повторно використовуваного workflow.

Як використовувати вихідні дані?

Повторно використовувані workflows також можуть повертати вихідні дані, які можуть бути використані в інших workflows або jobs. Це дозволяє побудувати складніші сценарії автоматизації, де результати одного workflow використовуються як вхідні дані для іншого.

Приклад:

# .github/workflows/reusable-workflow.yml
name: Reusable Workflow

on: workflow_call

outputs:
  build-result:
    description: 'The result of the build process'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

      - name: Set build result
        run: echo "::set-output name=build-result::success"

У цьому прикладі workflow повертає результат побудови build-result, який може бути використаний в іншому workflow для прийняття рішень або виконання наступних дій.