Повторно используемые действия GitHub: создание, вызов и использование

Повторно используемые действия 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 — это мощный способ повысить поддержку и масштабируемость вашего проекта, особенно при управлении большим числом репозиториев и процессов.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *