Повторно используемые действия GitHub
Параметр workflow_call
позволяет создавать повторно используемые рабочие процессы, которые можно вызывать из других рабочих процессов в том же или разных репозиториях.
Не будем тянуть время и перейдем сразу к примерам.
Создание повторно используемого рабочего процесса
Повторно используемый рабочий процесс, который принимает входные данные и секреты, создается следующим образом (код для файла .github/workflows/action_file_name.yml
):
name: Повторно используемый рабочий процесс
on:
workflow_call:
inputs:
username:
required: true
type: string
secrets:
secret_token:
required: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "Привет, ${{ inputs.username }}!"
- run: echo "Используется секрет: ${{ secrets.secret_token }}."
Документация для workflow_call
Эта тема достаточно обширная, и вам может понадобиться дополнительная информация о том, как работает workflow_call
и какие параметры он принимает.
Вызов повторно используемого рабочего процесса
Теперь вы можете вызвать созданный рабочий процесс из другого процесса, передавая данные и секреты следующим образом:
name: Вызов повторно используемого рабочего процесса
on:
push:
branches:
- main
jobs:
invoke_reusable_workflow:
uses: ./.github/workflows/reusable.yml
with:
username: 'JohnDoe'
secrets:
secret_token: ${{ secrets.MY_SECRET }}
Вызов из другого репозитория
Вы также можете вызывать повторно используемый рабочий процесс из другого репозитория:
jobs:
invoke_reusable_workflow:
uses: my-org/my-repo/.github/workflows/reusable.yml@main
with:
username: 'JaneDoe'
secrets:
secret_token: ${{ secrets.MY_SECRET }}
Входные данные и секреты
Для повторно используемого рабочего процесса необходимо определить входные данные и секреты:
on:
workflow_call:
inputs:
username:
required: true
type: string
secrets:
api_token:
required: true
Использование выходных данных
Рабочий процесс устанавливает выходные данные, которые могут быть использованы вызывающим рабочим процессом.
on:
workflow_call:
jobs:
calculate:
runs-on: ubuntu-latest
outputs:
result: ${{ steps.calculate_output.outputs.result }}
steps:
- id: calculate_output
run: echo "::set-output name=result::42"
Вызывающий рабочий процесс ��спользует выходные данные повторно используемого рабочего процесса.
jobs:
use_output:
uses: ./.github/workflows/reusable.yml
outputs:
result: ${{ steps.calculate_output.outputs.result }}
runs-on: ubuntu-latest
steps:
- run: echo "Результат: ${{ result }}"
Заключение
В этой статье мы рассмотрели использование workflow_call
в GitHub Actions для создания повторно используемых рабочих процессов. Использование таких рабочих процессов упрощает автоматизацию, повышает эффективность, уменьшает дублирование кода и обеспечивает соответствие принципу DRY (Don't Repeat Yourself).
Повторно используемые рабочие процессы могут быть определены в одном репозитории и затем вызваны из других рабочих процессов в том же или в разных репозиториях. Мы также обсудили, как передавать входные данные и секреты таким рабочим процессам, а также как использовать выходные данные. Эти примеры и советы помогут вам настроить процессы CI/CD в GitHub Actions для автоматизации и стандартизации работы над проектами. Использование GitHub Actions и workflow_call
— это мощный способ повысить поддержку и масштабируемость вашего проекта, особенно при управлении большим числом репозиториев и процессов.