#github-actions
#github-действия
Вопрос:
Я замечаю, что в GitHub marketplace есть много действий, которые делают то же самое. Вот один из примеров: https://github.com/marketplace/actions/copy-file
Есть ли какая-либо польза от использования действия GitHub marketplace вместо простых команд bash? Есть ли у нас рекомендации по рекомендуемым методам, которые помогают решить, использовать ли мне действия на рынке, а не обычный bash или командную строку
Комментарии:
1. Примечание:
cp
это команда операционной системы, а не команда bash. Вы используетеcp
внутри / через bash.2. @Rob, спасибо за помощь. Когда я должен использовать эти действия? Я предполагаю, что люди потратили время на создание стольких действий не просто так?
3. Я не уверен, почему существуют эти, казалось бы, простые действия, я бы сам отнесся к ним с подозрением и просто использовал
cp
4. @AnthonySottile, проблема не только в «cp», и есть много подобных примеров. Есть ли какие-либо официальные рекомендации, когда не следует использовать действия и использовать простые команды bash?
5. @AllanXu нет никакой реальной причины использовать действия Marketplace, кроме удобства. Некоторые действия Marketplace могут обеспечить некоторую большую стабильность в разных операционных системах Workflow runner. Например,
cp
они могут быть недоступны или вести себя одинаково в каждой операционной системе. Однако я согласен с @Anthony Sottile — если вы используете эти действия Marketplace в частном репозитории с конфиденциальным содержимым, вы потенциально непреднамеренно раскрываете это содержимое.
Ответ №1:
Эти действия, похоже, не имеют никакой реальной ценности в моих глазах…
Кроме этого, они выполняются в docker и не нужны cp
wget
или curl
должны быть доступны на хосте, и они гарантируют, что используется согласованная версия их инструментов. Если вам повезет, эти действия также выполняются одинаково одинаково в Windows, Linux и Mac, где, поскольку ваши сценарии bash могут не выполняться в Windows. Но автор действия должен был бы обеспечить это, это не то, что поставляется по умолчанию.
Одна вещь, которая может быть причиной использования этих действий из marketplace, заключается в том, что они могут выполняться как пост-шаг, чего run: script/bash/pwsh
не могут шаги.
Они не более стабильны или безопасны, если вы не привязываете действия к хэшу коммита или не разветвляете его, владелец действия может изменить поведение действия в любое время. Итак, вы доверяете оригинальному автору.
Многие действия предоставляют удобные функции, такие как улучшение ведения журнала или выходных переменных или возможность безопасной передачи учетных данных, но эти задачи кажутся скорее упражнением в создании действия автором, и они на самом деле не служат большой цели.
Документация, прилагаемая к каждому из этих действий, не дает четкой причины для использования этих действий, действия не соответствуют предпочтительной схеме управления версиями… Я бы не стал их использовать.
Итак, когда бы вы использовали действие из marketplace …? В общих действиях, таких как определенные cli, предусмотрена определенная цель, и действие должно содержать все, что ему нужно для запуска.
Действие может содержать сложный набор шагов, обеспечивать правильную обработку аргументов, выдавать специальные команды ведения журнала, чтобы сделать вывод более понятным для человека, или обновлять среду для задач, выполняемых дальше в рабочем процессе.
Действие, которое добавляет эту дополнительную функциональность поверх существующих cli, упрощает передачу данных от одного действия к другому или даже от одного задания к другому.
Действие также проще повторно использовать в разных репозиториях, поэтому, если вы используете одни и те же сценарии в нескольких репозиториях, вы можете обернуть их в действие и легко ссылаться на них из этого одного места вместо дублирования сценария в каждом рабочем процессе действия или добавления сценария в каждый репозиторий.
GitHub дает мало указаний о том, когда использовать действие или когда автор должен опубликовать действие на marketplace или нет. В принципе, любой может опубликовать в marketplace все, что соответствует минимальным требованиям к метаданным для marketplace.
GitHub предоставляет рекомендации по управлению версиями для авторов, хорошие действия должны создавать теги, к которым пользователь может прикрепить. Авторы должны практиковать семантическое управление версиями, чтобы предотвратить случайное нарушение их пользователей. Действия, которые указывают ветку, подобную main
или master
в их документах, являются подозрительными в моих глазах, и я бы не стал их использовать, их реализация может измениться из-под вас в любое время.
Как пользователь любого действия, вы должны знать о последствиях использования любых действий для безопасности. Кроме этого, у автора в его учетной записи включен 2FA, GitHub практически не проверяет любые действия, которые они сами не выполняют. Теоретически любой автор мог бы заменить их реализацию вымогателями или майнером биткойнов. Итак, для действий, которые вы не установили доверительные отношения с их автором, рекомендуется перенести действие на свою учетную запись или организацию и проверить содержимое перед их запуском в вашем runner, особенно если это частный runner с доступом к защищенным средам. Мой коллега Роб Бос глубоко изучил эту тему и часто говорил на эту тему на конференциях, подкастах и прямых трансляциях.
Комментарии:
1. Спасибо, я удалю свой вопрос, поскольку он является дубликатом. Не могли бы вы привести пример случая, когда вы использовали бы действие market place, и почему эти действия отличаются от тех, которые вы бы использовали? Кроме того, можно ли найти какой-нибудь авторитетный источник, описывающий наилучшую практику в этом случае?