#github #github-actions
#github #github-действия
Вопрос:
Я не смог найти много информации о том, возможно ли «отменить публикацию» действия GitHub с Marketplace по состоянию на декабрь 2020 года.
Существует много документов, касающихся «как опубликовать«, но не удалось найти ничего о неопубликовании.
Я использую неверное ключевое слово? Правильно ли я понимаю, как работает публикация? Я предполагал, что опубликованные действия отличаются от общедоступных действий, доступных непосредственно на GitHub, но я больше не уверен.
Кроме того, я прочитал https://julienrenaux.fr/2019/12/20/github-actions-security-risk / , который в основном утверждает, что существует огромная проблема безопасности из-за слепого использования чего-то вроде peter-evans/create-or-update-comment@v1
без использования определенного хэша. Но я пока нигде не видел использования хэшей.
Вот пример кода, который мы фактически используем в нашей компании, в нашем действии на GitHub:
# On E2E success, add a comment to the PR, if there is an open PR for the current branch
- name: Comment PR (E2E success)
uses: peter-evans/create-or-update-comment@v1
if: steps.pr_id_finder.outputs.number amp;amp; success()
with:
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ steps.pr_id_finder.outputs.number }}
body: |
:white_check_mark:amp;nbsp; E2E tests **SUCCESS** for commit ${{ github.sha }} previously deployed at [${{ env.VERCEL_DEPLOYMENT_URL }}](${{ env.VERCEL_DEPLOYMENT_URL }})
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
По сути, в приведенной выше статье говорится, что использование peter-evans/create-or-update-comment@v1
опасно, потому что любой может опубликовать против v1
тега и обновить v1
версию, которую мы используем, а мы даже не заметим такого изменения. (И отсюда возникают всевозможные опасные мысли, такие как кража секретов)
Статье 1 год, может быть, с тех пор что-то изменилось? Трудно поверить, что GitHub оставил бы такую дыру в безопасности в основе своего Actions Marketplace. Я никогда не слышал об этом раньше, и я очень шокирован / обеспокоен этим.
Комментарии:
1. Я только что нашел docs.github.com/en/free-pro-team@latest/actions /… в котором упоминается использование SHAs.
"If you need more reliable versioning, you should use the SHA value associated with the version of the action. SHAs are immutable and therefore more reliable than tags or branches. However this approach means you will not automatically receive updates for an action, including important bug fixes and security updates."
2. Итак, короче говоря, GitHub Actions Marketplace имеет совсем другую цель по сравнению с NPM. Я предполагал, что они похожи, но не совсем. Торговая площадка предназначена только для ссылок на действия, а не для размещения какого-либо кода или предоставления каких-либо мер безопасности. Я написал немного больше о своих выводах на github.com/UnlyEd/next-right-now/issues/224
3. Это отвечает только на часть вопроса, я еще не выяснил, как «отменить публикацию», или я должен сказать «деиндексировать» с торговой площадки. Но хороший момент.
4. Это должно объяснить, как отменить публикацию: docs.github.com/en/free-pro-team@latest/actions /…
Ответ №1:
Итак, под рукой было 2 вопроса:
- Какова роль рынка действий GitHub?
- Как отменить публикацию действия, опубликованного в GitHub Actions Marketplace?
О 1), в отличие от того, что я предполагал, роль Marketplace ограничивается индексацией действий GitHub, чтобы их было легче найти. Это сильно отличается от NPM, который заключается в защите опубликованных пакетов, чтобы никто не мог с ними справиться.
Поскольку ссылки на действия указаны с использованием их пути к GitHub, автор может в любое время уничтожить свое собственное действие. Удаление их репозитория или пометка его закрытым — это действия, которые сразу же нарушат все существующие интеграции.
- Короткая история: разветвление и ссылки на действия, которые вы используете, используя их хэш / SHA, — это единственный способ создать устойчивые действия, которые не нарушат ваш CI, когда кто-то изменит свою ветку / тег или удалит / скроет свой репозиторий GitHub.
- Длинная история: смотрите https://github.com/UnlyEd/next-right-now/discussions/223
О 2), «отменяя публикацию» действия с торговой площадки, вы на самом деле «деиндексируете» его, вот и все. Вы ничего не уничтожаете и не нарушаете рабочий процесс, вы только удаляете его из marketplace, и он больше не будет отображаться.
Вы можете сделать это, отредактировав свои релизы (на GitHub) и сняв флажок «Опубликовать это действие на GitHub Marketplace».