Skip to main content

Создание составного действия

В этом руководстве вы узнаете, как создать составное действие.

Platform navigation

Введение

В этом руководстве вы узнаете об основных компонентах, необходимых для создания и использования упакованного составного действия. Чтобы сосредоточиться в этом руководстве на компонентах, необходимых для упаковки действия, функциональные возможности кода действия будут минимальны. Действие выведет текст Hello World, а затем — Goodbye, или, если вы укажете пользовательское имя, оно выведет Hello [who-to-greet], а затем — Goodbye. Действие также сопоставляет случайное число с выходной переменной random-number и запускает сценарий с именем goodbye.sh.

Завершив этот проект, вы узнаете, как создать собственное составное действие и протестировать его в рабочем процессе.

Предупреждение

При создании рабочих процессов и действий следует всегда учитывать, может ли код выполнять ненадежные входные данные от возможных злоумышленников. Некоторые контексты следует считать непроверенными, так как злоумышленники могут вставить собственное вредоносное содержимое. Дополнительные сведения см. в разделе Справочник по безопасному использованию.

Составные действия и многократно используемые рабочие процессы

Составные действия позволяют собирать ряд шагов задания рабочего процесса в одно действие, которое затем можно запустить как один шаг задания в нескольких рабочих процессах. Повторно используемые рабочие процессы позволяют избежать дублирования, позволяя выполнять полный рабочий процесс из других рабочих процессов. Дополнительные сведения см. в разделе Рабочие процессы с возможностью повторного использования.

Необходимые компоненты

Примечание.

В этом примере объясняется, как создать составное действие в отдельном репозитории. Однако можно создать составное действие в одном репозитории. Дополнительные сведения см. в разделе Создание составного действия.

Перед началом работы вы создадите репозиторий на GitHub.

  1. Создайте новую общедоступный репозиторий на GitHub. Вы можете выбрать любое имя репозитория или использовать следующий пример: hello-world-composite-action. Эти файлы можно добавить после отправки проекта в GitHub. Дополнительные сведения см. в разделе Создание репозитория.

  2. Клонируйте репозиторий на ваш компьютер. Дополнительные сведения см. в разделе Клонирование репозитория.

  3. В окне терминала перейдите в новый репозиторий.

    Shell
    cd hello-world-composite-action
    
  4. В репозитории hello-world-composite-action создайте новый файл goodbye.sh с примером кода:

    Shell
    echo "echo Goodbye" > goodbye.sh
    
  5. В окне терминала сделайте goodbye.sh исполняемым файлом.

Shell
git add --chmod=+x -- goodbye.sh
  1. В окне терминала зарегистрируйте файл goodbye.sh.

    Shell
    git add goodbye.sh
    git commit -m "Add goodbye script"
    git push
    
Shell
git add goodbye.sh
git commit -m "Add goodbye script"
git push
Shell
git commit -m "Add goodbye script"
git push

Создание файла метаданных действия

  1. В репозитории hello-world-composite-action создайте файл под названием action.yml и добавьте следующий пример кода. Дополнительные сведения об этом синтаксисе см. в разделе Справочник по синтаксису метаданных.

    YAML
    name: 'Hello World'
    description: 'Greet someone'
    inputs:
      who-to-greet:  # id of input
        description: 'Who to greet'
        required: true
        default: 'World'
    outputs:
      random-number:
        description: "Random number"
        value: ${{ steps.random-number-generator.outputs.random-number }}
    runs:
      using: "composite"
      steps:
        - name: Set Greeting
          run: echo "Hello $INPUT_WHO_TO_GREET."
          shell: bash
          env:
            INPUT_WHO_TO_GREET: ${{ inputs.who-to-greet }}
    
        - name: Random Number Generator
          id: random-number-generator
          run: echo "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUT
          shell: bash
    
        - name: Set GitHub Path
          run: echo "$GITHUB_ACTION_PATH" >> $GITHUB_PATH
          shell: bash
          env:
            GITHUB_ACTION_PATH: ${{ github.action_path }}
    
        - name: Run goodbye.sh
          run: goodbye.sh
          shell: bash
    
    

    Этот файл определяет входные данные, сопоставляет who-to-greet случайно созданное число с random-number выходной переменной, добавляет путь действия к системному пути runner (чтобы найти goodbye.sh скрипт во время выполнения) и запускает goodbye.sh скрипт.

    Дополнительные сведения об управлении выходными данными см. в разделе Справочник по синтаксису метаданных.

    Дополнительные сведения об использовании github.action_pathсм. в разделе Справочник по контекстам.

  2. В окне терминала зарегистрируйте файл action.yml.

    Shell
    git add action.yml
    git commit -m "Add action"
    git push
    
  3. В окне терминала добавьте тег. В этом примере используется тег под названием v1. Дополнительные сведения см. в разделе Сведения о настраиваемых действиях.

    Shell
    git tag -a -m "Description of this release" v1
    git push --follow-tags
    

Тестирование действия в рабочем процессе

В следующем коде рабочего процесса используется завершенное действие hello world, которое вы сделали в Создание составного действия.

Скопируйте код .github/workflows/main.yml рабочего процесса в файл в другом репозитории, заменив OWNER владельца SHA репозитория и SHA фиксации, которую вы хотите использовать соответственно. Вы также можете заменить входное поле who-to-greet на свое имя.

YAML
on: [push]

jobs:
  hello_world_job:
    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - uses: actions/checkout@v4
      - id: foo
        uses: OWNER/hello-world-composite-action@SHA
        with:
          who-to-greet: 'Mona the Octocat'
      - run: echo random-number "$RANDOM_NUMBER"
        shell: bash
        env:
          RANDOM_NUMBER: ${{ steps.foo.outputs.random-number }}

В репозитории перейдите на вкладку Действия и выберите последний запуск рабочего процесса. Выходные данные должны включать: Hello Mona the Octocat, результат сценария Goodbye и случайное число.

Создание составного действия в одном репозитории

  1. Создайте новую вложенную папку, которая называется, она может быть помещена в любую вложенную папку hello-world-composite-actionв репозитории. Однако рекомендуется поместить его в вложенную .github/actions папку, чтобы упростить организацию.

  2. В папке hello-world-composite-action выполните те же действия, чтобы создать goodbye.sh скрипт

    Shell
    echo "echo Goodbye" > goodbye.sh
    
Shell
git add --chmod=+x -- goodbye.sh
Shell
git add goodbye.sh
git commit -m "Add goodbye script"
git push
Shell
git add goodbye.sh
git commit -m "Add goodbye script"
git push
Shell
git commit -m "Add goodbye script"
git push
  1. В папке hello-world-composite-action создайте action.yml файл на основе шагов в Создание составного действия.
  2. При использовании действия используйте относительный путь к папке, в которой находится файл составного действия action.yml в uses ключе. В приведенном ниже примере предполагается, что он находится в папке .github/actions/hello-world-composite-action .
YAML
on: [push]

jobs:
  hello_world_job:
    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - uses: actions/checkout@v4
      - id: foo
        uses: ./.github/actions/hello-world-composite-action
        with:
          who-to-greet: 'Mona the Octocat'
      - run: echo random-number "$RANDOM_NUMBER"
        shell: bash
        env:
          RANDOM_NUMBER: ${{ steps.foo.outputs.random-number }}

Пример составных действий на GitHub

Вы можете найти множество примеров составных действий на GitHub.

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy