Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2024-07-09. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

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

В этом руководстве приведены инструкции по созданию составного действия.

Platform navigation

Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.

Введение

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

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

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

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

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

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

Перед началом работы вы создадите репозиторий на ваш экземпляр GitHub Enterprise Server.

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

  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 и добавьте следующий пример кода. Дополнительные сведения об этом синтаксисе см. в разделе "Синтаксис метаданных для GitHub Actions".

    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 Actions".

    Дополнительные сведения об использовании 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, сделанное в autoTITLE.

Скопируйте код рабочего процесса в файл .github/workflows/main.yml в другом репозитории, но замените actions/hello-world-composite-action@v1 репозиторием и тегом, который вы создали. Вы также можете заменить входное поле 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: actions/hello-world-composite-action@v1
        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 и случайное число.

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

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