Введение
В этом руководстве вы узнаете об основных компонентах, необходимых для создания и использования упакованного составного действия. Чтобы сосредоточиться в этом руководстве на компонентах, необходимых для упаковки действия, функциональные возможности кода действия будут минимальны. Действие выведет текст Hello World, а затем — Goodbye, или, если вы укажете пользовательское имя, оно выведет Hello [who-to-greet], а затем — Goodbye. Действие также сопоставляет случайное число с выходной переменной random-number
и запускает сценарий с именем goodbye.sh
.
Завершив этот проект, вы узнаете, как создать собственное составное действие и протестировать его в рабочем процессе.
Предупреждение. Во время создания рабочих процессов и действий необходимо учитывать, будет ли код использовать непроверенные входные данные от возможных злоумышленников. Некоторые контексты следует считать непроверенными, так как злоумышленники могут вставить собственное вредоносное содержимое. Дополнительные сведения см. в разделе «AUTOTITLE».
Необходимые компоненты
Прежде чем приступить к работе, вы создадите репозиторий для GitHub.com.
-
Создайте новую общедоступный репозиторий для GitHub.com. Вы можете выбрать любое имя репозитория или использовать следующий пример:
hello-world-composite-action
. Эти файлы можно добавить после отправки проекта в GitHub Enterprise Cloud. Дополнительные сведения см. в разделе «AUTOTITLE». -
Клонируйте репозиторий на ваш компьютер. Дополнительные сведения см. в разделе «AUTOTITLE».
-
В окне терминала перейдите в новый репозиторий.
Shell cd hello-world-composite-action
cd hello-world-composite-action
-
В репозитории
hello-world-composite-action
создайте файл под названиемgoodbye.sh
и добавьте следующий пример кода:Bash echo "Goodbye"
echo "Goodbye"
-
В окне терминала сделайте
goodbye.sh
исполняемым файлом.Shell chmod +x goodbye.sh
chmod +x goodbye.sh
-
В окне терминала зарегистрируйте файл
goodbye.sh
.Shell git add goodbye.sh git commit -m "Add goodbye script" git push
git add goodbye.sh git commit -m "Add goodbye script" git push
Создание файла метаданных действия
-
В репозитории
hello-world-composite-action
создайте файл под названиемaction.yml
и добавьте следующий пример кода. Дополнительные сведения об этом синтаксисе см. в разделе "Синтаксис метаданных для GitHub Actions".
action.yml
```yaml copy
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:
- run: echo Hello ${{ inputs.who-to-greet }}.
shell: bash
- id: random-number-generator
run: echo "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUT
shell: bash
- run: echo "${{ github.action_path }}" >> $GITHUB_PATH
shell: bash
- run: goodbye.sh
shell: bash
```
Этот файл определяет входные данные, сопоставляет who-to-greet
случайно созданное число с random-number
выходной переменной, добавляет путь действия к системному пути runner (чтобы найти goodbye.sh
скрипт во время выполнения) и запускает goodbye.sh
скрипт.
Дополнительные сведения об управлении выходными данными см. в разделе "[AUTOTITLE](/actions/creating-actions/metadata-syntax-for-github-actions#outputs-for-composite-actions)".
Дополнительные сведения об использовании `github.action_path`см. в разделе "[AUTOTITLE](/actions/learn-github-actions/contexts#github-context)".
-
В окне терминала зарегистрируйте файл
action.yml
.Shell git add action.yml git commit -m "Add action" git push
git add action.yml git commit -m "Add action" git push
-
В окне терминала добавьте тег. В этом примере используется тег под названием
v1
. Дополнительные сведения см. в разделе «AUTOTITLE».Shell git tag -a -m "Description of this release" v1 git push --follow-tags
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
на свое имя.
.github/workflows/main.yml
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 ${{ steps.foo.outputs.random-number }} shell: bash
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 ${{ steps.foo.outputs.random-number }}
shell: bash
В репозитории перейдите на вкладку Действия и выберите последний запуск рабочего процесса. Выходные данные должны включать: Hello Mona the Octocat, результат сценария Goodbye и случайное число.
Пример составных действий для GitHub.com
Вы можете найти множество примеров составных действий на GitHub.com.