-
Notifications
You must be signed in to change notification settings - Fork 186
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(ci): create new workflow for report CI results (#5631)
После #5561 потеряли возможность создавать отчёты для PR из форк-репозиторий. Поэтому по мотивам статьи [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/), создаём новый воркфлоу, который срабатывает на `worflow_run`. В таком воркфлоу будет доступ к кредам. h2. Что было сделано? - Вынес из `.github/workflows/pull_request_packages.yml` и из `.github/workflows/reusable_workflow_test.yml` шаги, где нужны креды, в отдельный воркфлоу `.github/workflows/pull_request_packages_deploy.yml`. Тем самым у `.github/workflows/branch_test_coverage.yml` появился шаг с выгрузкой отчёта в Codecov. - Вынес из `.github/workflows/pr_close.yml` шаг, где нужны креды, в отдельный воркфлоу `.github/workflows/pr_close_undeploy.yml` - Расширил `VKCOM/gh-actions/VKUI/reporter` параметром `prNumber` (VKCOM/gh-actions#135). - Использую условие `${{ !cancelled() && (success() || failure()) }}` вместо `${{ always() }}`, т.к. последний не учитывает отмену воркфлоу (см. https://github.com/orgs/community/discussions/26303). > **Note** > `success()` и `failure()` нужны, чтобы исключить состояние `skipped`. - Чтобы иметь доступ к артефактам из другого воркфлоу, используем кастомный экшен `VKCOM/gh-actions/shared/download-workflow-artifact` (VKCOM/gh-actions#142). - ~Для джобы `Analyze bundle size` пробуем дать разрешение на запись в PR, чтобы была возможность добавить комментарий.~ **UPD** не сработало. Пока оставляем как есть. `permissions` оставил для **Dependabot**. ## Нюансы Логи воркфлоу, запущенные `workflow_run`, не сыпятся в сам PR. Их можно найти на странице **Actions**. <img width="480" alt="image" src="https://github.com/VKCOM/VKUI/assets/5850354/65023f1f-b98d-4646-bd7f-b5dad4f234c9"> _Пример. Формирую названия на основе **заголовка PR** + **названия ветки** + **`run_id`** (привязан к PR, который вызвал `pull_request_package.yml`)._ h2. Тест Так как воркфлоу с `worflow_run` работает только если файл находится в базовой ветке, то тестировал на своём форке https://github.com/inomdzhon/VKUI. А чтобы тестировать PR из форк реп, создал аккаунт, в котором форкнул свой форк https://github.com/inomdzhon-clone/VKUI :) Ключи для S3 использовал свои. <details><summary>Скриншоты результатов</summary> <p> <img width="320" alt="image" src="https://github.com/VKCOM/VKUI/assets/5850354/bcd556db-fe62-4b22-b00b-366fcb9b75cc"> _1) Изменили `docs/ADAPTIVITY_GUIDE.md`, как и предполагается, запутилось только воркфлоу **Pull Request / Common** – **Pull Request / Packages: Deploy** на него не реагирует_ <img width="320" alt="image" src="https://github.com/VKCOM/VKUI/assets/5850354/e6c5e1aa-a66c-4a1d-b837-d3668199c447"> _2) Изменили `styleguide/pages/adaptivity.md`, чтобы вызвать воркфлоу **Pull Request / Packages** (без запуска e2e) – после окончания воркфлоу, сработал **Pull Request / Packages: Deploy** и мы получили комментарии со ссылками на доки и отчёт Codecov_ <img width="320" alt="image" src="https://github.com/VKCOM/VKUI/assets/5850354/caa7f042-d549-4b5f-bcf8-6b4af1c68629"> _3.1) Затронули `packages/vkui/src/components/Alert/Alert.tsx`, чтобы вызвать воркфлоу **Pull Request / Packages** с запуском e2e – после окончания воркфлоу, сработал **Pull Request / Packages: Deploy** и мы получили комментарий со ссылкой на отчёт Playwright, помимо него, обновились комментарии со ссылками на доку и отчёт Codecov_ <img width="320" alt="image" src="https://github.com/VKCOM/VKUI/assets/5850354/f57f08c4-2e4b-41de-84e6-5cb2fb408629"> <img width="320" alt="image" src="https://github.com/VKCOM/VKUI/assets/5850354/631d18b2-0a45-412e-9180-f49fcc3d1644"> _3.2) Специально сломали `packages/vkui/src/components/Alert/Alert.tsx`, убедиться, что `VKCOM/gh-actions/VKUI/reporter` работает_ <img width="320" alt="image" src="https://github.com/VKCOM/VKUI/assets/5850354/1755595d-bd96-4d15-b855-5b6e18a5b3c9"> _4) Проверил, что **Pull Request / Packages: Deploy** нормально срабатывает и в случаях, когда PR не в `master` ветку (специально сломал e2e тест)_ <img width="320" alt="image" src="https://github.com/VKCOM/VKUI/assets/5850354/28847144-5f2c-4373-be75-386d65c01b33"> <img width="320" alt="image" src="https://github.com/VKCOM/VKUI/assets/5850354/02fd5cd2-395d-4e56-9f5d-b53295718f6b"> _5) Мержим PR – как видим, запустился **Close Pull Request: Undeploy** и очистил S3. </p> </details> h2. Чеклист перед релизом - [x] Добавить `vars.AWS_BUCKET` в [настройки репозитория](https://github.com/VKCOM/VKUI/settings/variables/actions) - [x] Добавить `vars. AWS_ENDPOINT ` в [настройки репозитория](https://github.com/VKCOM/VKUI/settings/variables/actions) --- - caused by #5561
- Loading branch information
Showing
8 changed files
with
369 additions
and
160 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
name: 'Close Pull Request: Undeploy' | ||
# Note: display_title не задокументирован | ||
run-name: '${{ github.event.workflow_run.display_title }} • ${{ github.event.workflow_run.head_branch }} • ${{ github.event.workflow_run.id }}' | ||
|
||
on: | ||
workflow_run: | ||
workflows: ['Close Pull Request'] | ||
types: [completed] | ||
|
||
jobs: | ||
pr_workflow_payload: | ||
name: Call reusable workflow | ||
uses: ./.github/workflows/reusable_workflow_pr_worfklow_payload.yml | ||
with: | ||
action: download | ||
|
||
undeploy_s3: | ||
needs: pr_workflow_payload | ||
if: ${{ needs.pr_workflow_payload.outputs.status == 'success' }} | ||
runs-on: ubuntu-latest | ||
name: Undeploy S3 | ||
steps: | ||
- name: Delete from S3 | ||
uses: VKCOM/gh-actions/VKUI/s3@main | ||
with: | ||
awsAccessKeyId: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
awsSecretAccessKey: ${{ secrets.AWS_SECRET_KEY }} | ||
awsBucket: ${{ vars.AWS_BUCKET }} | ||
awsEndpoint: https://${{ vars.AWS_ENDPOINT }} | ||
command: delete | ||
commandDeletePrefix: pull/${{ needs.pr_workflow_payload.outputs.pr_number }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.