Рубрики
Uncategorized

GitHub Композитные действия — перестаньте тратить время и создавать многоразовые действия

При работе на CICD мы хотим выполнить различные сценарии и команды на разных языках и … Помечено GitHub, DevOps, Automation, действия.

При работе на 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 И оставаться настроенными, так что вы не будете скучать по ним.

Дайте мне знать в разделе «Комментарий» ниже того, что вы думаете об этой новой функции, и если у вас есть какие-либо вопросы об этом.

Ссылки и ссылки

Вроде, поделиться и следуй за мной 🚀 Для получения дополнительной информации:

📽 YouTube ☕. Купи мне кофе 💖 Парреон 🌐 Веб-сайт CODERDAVE.IO 👕 Merch 👦🏻 Страница в Facebook 🐱💻 Github 👲🏻 Twitter 👴🏻 LinkedIn 🔉 Подкас

Оригинал: «https://dev.to/n3wt0n/github-composite-actions-nest-actions-within-actions-3e5l»