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