При работе на CICD мы хотим выполнить различные сценарии и команды на разных языках и оболочках в одном действии и отображать эти выходы на рабочий процесс действий Github.
Мы также хотим повторно использовать части наших рабочих процессов в другие рабочие процессы.
Эти 2 вещи — Исторически очень сложно сделать в действиях Github. Ну, отчаяние нет, сегодня я показываю вам, как сделать только что, используя новый тип действий GitHub, который только что был выпущен: Композитные шаги Отказ
О Composite Run Steps Действия
Итак, первые вещи первыми: Что такое композитные шаги действий ?
Композитные шаги действий позволяют вам Объедините несколько шагов рабочего процесса в одном действии Отказ Например, вы можете использовать эту функцию для пучок Вместе несколько команд запуска в действие, а затем иметь рабочий процесс, который выполняет вводные команды один шаг, используя это действие.
Проще говоря, это функция, которая позволяет вам Действия гнезда внутри действий Отказ
Почему вы хотите сделать это ?
Наиболее распространенная причина в том, что вы создаете своего рода Шаблон действие И тогда вы можете повторно использовать его где угодно. Еще один очень распространенный, когда у вас есть несколько проектов, и все они должны выполнить те же шаги в рабочем процессе CICD.
Используя композитные шаги запуска, которые вы теперь можете записать эту деталь один раз, сохранить ее где-то и использовать его в любом из ваших действий. И если вам нужно изменить это, может быть, добавление нового шага или изменение некоторых параметров, вы изменить его один раз В центральном расположении и изменения будут применяться ко всем рабочим процессам, которые его используют.
Видео
Если вы Визуальный учащийся Просто предпочитаю смотреть и слушать вместо чтения, или вы хотите увидеть это в действии, здесь у вас есть видео со всем объяснением.
Я бы побудил вас посмотреть, потому что, чтобы быть справедливым, это гораздо более полное, чем этот пост Отказ
Если вы скорее предпочитаете читать, ну … Давайте просто продолжим:)
Поддерживаемые свойства
Для каждого запуска шага в композитном действии это свойства, которые в настоящее время поддерживаются:
name id run env shell working-directory
Кроме того, отображение вход и Выходы На протяжении всего действия также поддерживаются.
Метаданные
Прежде всего, вам нужно создать Файл метаданных Отказ
Я предпочитаю создать новый репозиторий для размещения моих композитных шагов действий, потому что мне нравится держать вещи организованными, и это также оптимизирует использование повторного использования. Но вы можете сохранить композитные действия также в местном хранилище и ссылаться на них оттуда.
Вы должны создать файл с именем Action.yml или Action.yaml Отказ Другие имена файлов — не поддерживается.
Файл может выглядеть так:
name: 'File Copy'
description: 'Pretends to copy some files and return the number of files copied'
inputs:
destinationFolder: # path
description: 'The folder to copy the files to'
required: true
default: '~'
outputs:
copied-files:
description: "Number of files copied"
value: ${{ steps.random-number-generator.outputs.filesNo }}
runs:
using: "composite"
steps:
- run: ${{ github.action_path }}/ExecuteSomething.sh
shell: bash
- id: random-number-generator
run: echo "::set-output name=filesNo::$(echo $RANDOM)"
shell: bash
- run: ${{ github.action_path }}/CopyFiles.sh
shell: bash
В этом файле свойства Имя , Описание и бежит обязательны.
вход и Выходы Разделы, вместо этого являются необязательными и являются тем, как мы можем мутать ввод и выводить из и с помощью рабочего процесса.
Ямл довольно явно объяснил, я просто хочу указать на Использование: «Композит» Часть, потому что это то, что делает эту работу.
Проверьте Видео с полным объяснением Чтобы понять, что означают все детали в YAML.
Сохранить, совершить и подтолкнуть к репо.
Tag Time
Прежде чем мы сможем использовать это «Фрагмент» в наши действия, нам нужно Создать тег и релиз для нашего репо.
Вы можете использовать любой тег, который вам нравится, но это то, что будет идентифицировать ваши композитные шаги запуска, поэтому выберите что-то значимое.
Для этого примера я бы пошел с V1.
Хорошо, теперь у нас есть все, что нам нужно. Давайте создадим композитное действие.
Используйте его в композитных этапах действий
Пойдем на действия и создать новый рабочий процесс. Что-то вроде этого:
# This is an example of using Composite Run Steps Actions
name: Composite Example
on: [workflow_dispatch]
jobs:
copy_files_job:
runs-on: ubuntu-latest
name: A job that copy files
steps:
- uses: actions/checkout@v2
- id: myCompositeAction
uses: n3wt0n/CompositeActionsArchive@v1
with:
destinationFolder: '/whatever/folder'
- run: echo Files copied ${{ steps.myCompositeAction.outputs.copied-files }}
shell: bash
Как видите, это нормальный Действие GitHub. Я использую Ручной триггер ( Проверьте это видео, если вы не знакомы с помощью вручную, запускающие действия GH ), но он может использовать любой триггер, который вы хотите.
Интересная часть — это тот, кто в середине:
- id: myCompositeAction
uses: n3wt0n/CompositeActionsArchive@v1
with:
destinationFolder: '/whatever/folder'
Как вы можете видеть, мы Использование Наш файл метаданных ссылается на это с синтаксис "СЧЕТ/РЕПО @ tag " .
Более или менее то, что вы будете делать, при использовании действия с рынка.
Мы также передаем несколько параметров как вход (Используя с: пункт), и мы получаем вывод из этого (с обычным контекстом, в форме шаги. Your_step_id.outputs. Your_param_name Несомненно
Еще раз проверьте Видео с полным объяснением Чтобы понять, что означают все детали в YAML.
И ты в основном сделан!
Не плохо, верно? Изготовление ломтиков Действия GitHub Действия Рабочие процессы Reurable — это Реальный шанжер игры Отказ
Неподдерживаемые особенности
Некоторые заметки.
Поскольку на момент написания, эта функция была выпущена совсем недавно, есть несколько вещей, которые являются еще не поддерживается Отказ Это включает в себя условные условные, продолжающиеся по ошибке, тайм-аутам и использованию. Хотя команда уже работает над большинством этих функций.
Еще одна вещь, которая не поддерживается, использует секреты на отдельных этапах в композитном действии.
Конечно, вы все равно можете использовать все эти атрибуты в рабочих процессах, которые используют Composite Right Raction Action.
Вывод
Хорошо, вот это за сегодня. У меня будет еще один пост и другое видео, когда действия Composite Run Phays будут более зрелыми и получить больше недостатков функций, поэтому подпишитесь на Мой канал YouTube И оставаться настроенными, так что вы не будете скучать по ним.
Дайте мне знать в разделе «Комментарий» ниже того, что вы думаете об этой новой функции, и если у вас есть какие-либо вопросы об этом.
Ссылки и ссылки
- Видео с полным объяснением о составных действиях GitHub
- Действия GitHub Витрина
- Видео на Действия GitHub для .NET Рамки
Вроде, поделиться и следуй за мной 🚀 Для получения дополнительной информации:
📽 YouTube ☕. Купи мне кофе 💖 Парреон 🌐 Веб-сайт CODERDAVE.IO 👕 Merch 👦🏻 Страница в Facebook 🐱💻 Github 👲🏻 Twitter 👴🏻 LinkedIn 🔉 Подкас
Оригинал: «https://dev.to/n3wt0n/github-composite-actions-nest-actions-within-actions-3e5l»