Костылик для GitHub Action
Вот читаете вы про Statoscope, например, и видите в статье готовое решение, как прикрутить его в GitHub Actions. Чтобы полный отчёт грузился на S3, а краткий — прямо в комментарии к пулл-реквесту.
Вот, такой вот yml для воркфлоу https://github.com/statoscope/statoscope.tech/blob/main/.github/workflows/ci.yml . И вот есть в нём большой подвох, если вы прикрутите это к публичному репозиторию — в случае PR из форков GitHub не даст вам доступа к секретам. И пермишенов на публикацию комментариев не даст. Связано это с тем, что в GitHub actions в триггере
весь код для воркфлоу берётся из текущей ветки, а, следовательно, он может быть изменён и креды утекут. Я не нашёл способа изменить поведение и заставить GitHub Actions всегда брать воркфлоу-файл из main-ветки. Получается, нужен костылик.
Костылик получается такой:
1 На пулл-реквест мы делаем нужные дела в ветке (например, собираем отчёт статоскопа)
2 Паблишим отчёт и информацию о пул-реквесте в артефакты гитхаба
3 Создаём ещё один воркфлоу. Триггером будет
4 Выкачиваем наш артефакт
5 Этот воркфлоу запущен из main и у него есть доступ к секретам. Паблишим в S3 и пишем ссылку в комменты PR.
Дополнительно — в исходном решении избыточным выглядит mustache, достаточно взять обычныйсоветский темплейт литерал. А для публикации отчёта в комменты PR удобно использовать https://github.com/marocchino/sticky-pull-request-comment
Ещё раз:
На пул-реквесте собираем артефакт и сохраняем его
https://github.com/datalens-tech/datalens-ui/blob/main/.github/workflows/statoscope_tests.yml#L38
На main ветке распаковываем артефакт и паблишим в S3 и комменты PR
https://github.com/datalens-tech/datalens-ui/blob/main/.github/workflows/statoscope_tests_report.yml#L19
Вот читаете вы про Statoscope, например, и видите в статье готовое решение, как прикрутить его в GitHub Actions. Чтобы полный отчёт грузился на S3, а краткий — прямо в комментарии к пулл-реквесту.
Вот, такой вот yml для воркфлоу https://github.com/statoscope/statoscope.tech/blob/main/.github/workflows/ci.yml . И вот есть в нём большой подвох, если вы прикрутите это к публичному репозиторию — в случае PR из форков GitHub не даст вам доступа к секретам. И пермишенов на публикацию комментариев не даст. Связано это с тем, что в GitHub actions в триггере
on:
pull_request:
весь код для воркфлоу берётся из текущей ветки, а, следовательно, он может быть изменён и креды утекут. Я не нашёл способа изменить поведение и заставить GitHub Actions всегда брать воркфлоу-файл из main-ветки. Получается, нужен костылик.
Костылик получается такой:
1 На пулл-реквест мы делаем нужные дела в ветке (например, собираем отчёт статоскопа)
2 Паблишим отчёт и информацию о пул-реквесте в артефакты гитхаба
3 Создаём ещё один воркфлоу. Триггером будет
on:
workflow_run:
workflows: [Наш первый воркфлоу]
types:
- completed
4 Выкачиваем наш артефакт
- name: Download Artifacts
uses: dawidd6/action-download-artifact@v3
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
run_id: ${{ github.event.workflow_run.id }}
5 Этот воркфлоу запущен из main и у него есть доступ к секретам. Паблишим в S3 и пишем ссылку в комменты PR.
Дополнительно — в исходном решении избыточным выглядит mustache, достаточно взять обычный
Ещё раз:
На пул-реквесте собираем артефакт и сохраняем его
https://github.com/datalens-tech/datalens-ui/blob/main/.github/workflows/statoscope_tests.yml#L38
На main ветке распаковываем артефакт и паблишим в S3 и комменты PR
https://github.com/datalens-tech/datalens-ui/blob/main/.github/workflows/statoscope_tests_report.yml#L19