-
Notifications
You must be signed in to change notification settings - Fork 176
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a Slack notification job to the CI + CD workflow #1066
Conversation
Size Change: 0 B Total Size: 848 kB ℹ️ View Unchanged
|
Full-stack documentation: https://docs.openverse.org/_preview/1066 Please note that GitHub pages takes a little time to deploy newly pushed code, if the links above don't work or you see old versions, wait 5 minutes and try again. You can check the GitHub pages deployment action list to see the current status of the deployments. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
To clarify my understanding of when this will run: if all the "needs" are skipped, it will still run and tell us? Is that an actionable situation? If the docs and image jobs are skipped on main, does that mean something has gone wrong? I know the deployment jobs can be skipped if there aren't relevant changes, but if that's not context everyone is aware of then it might also be confusing.
Basically: I like this and think the information is delivered clearly and cleanly in slack, I just wonder if there should also be a documentation link that explains what situations are OK and which need to be addressed, at least, assuming there are situations where skips are semi-failures (in that it shouldn't have been skipped).
If I'm wrong about the skips being silent failures then this is moot, but we could skip the job if there are zero failures, in that case.
((needs.get-changes.outputs.frontend == 'true' || needs.get-changes.outputs.documentation == 'true') && needs.emit-docs.result != 'success') || | ||
(needs.determine-images.outputs.do_publish == 'true' && needs.publish-images.result != 'success') || | ||
(needs.get-changes.outputs.frontend == 'true' && needs.deploy-frontend.result != 'success') || | ||
(needs.get-changes.outputs.api == 'true' && needs.deploy-api.result != 'success') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The workflow has the following objectives.
- If the frontend or docs have changed, new docs must be published.
- If there are any images to publish, the
publish-images
job should successfully publish them. - If the frontend or the API have changes, they should be deployed.
Each condition expects a successful outcome of a particular job and if not, the report will be sent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This means that if you see the report in Slack, something's not right and calls for an investigation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! This makes a lot of sense to me, thanks for digging into this 🙏 Having the get-changes explicitly next to each one also makes it easier to understand how the conditions work and the intention of other jobs too. Like the frontend one: are there frontend changes? If so, then these things should have run and been successful. If they weren't then something is wrong.
This is very clear, thank you, again!
All 4 jobs covered by this report are conditional, meaning there are situations where they are meant to be skipped (for example, when there are no changes to the API or the frontend, their deploy jobs will be skipped and when there are no changes to any Docker images, there will be nothing to publish and the job will be skipped). But these skips can also be caused by failures in their dependencies (like By linking the core conditions with the end results (for example, linking changes in the API codebase to the staging deploy of the API) we can identify when the outcome is not as expected and send the Slack alert. As of 888834e, if the alert appears in Slack, something has not gone according to plan and the workflow must be manually inspected to know the cause of the problem. Hopefully the person merging into |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* Fix issues in the workflow simplifications of #1054 (#1058) * Retry `up` recipe in case port is occupied (#990) * Fix typo in docs building on `main` (#1067) * Restore Django Admin views (#1065) * Update other references of media count to 700 million (#1098) * Dispatch workflows instead of regular reuse to show deployment runs (#1034) * Use label.yml to determine required labels (#1063) Co-authored-by: Dhruv Bhanushali <hi@dhruvkb.dev> * Add `GITHUB_TOKEN` to GitHub CLI step (#1103) * Pass actor for staging deploys with the `-f` flag (#1104) * Bump ipython from 8.11.0 to 8.12.0 in /api (#1113) Bumps [ipython](https://github.com/ipython/ipython) from 8.11.0 to 8.12.0. - [Release notes](https://github.com/ipython/ipython/releases) - [Commits](ipython/ipython@8.11.0...8.12.0) --- updated-dependencies: - dependency-name: ipython dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Absorb `actionlint` into pre-commit (#1028) Co-authored-by: Dhruv Bhanushali <dhruv_b@live.com> Co-authored-by: sarayourfriend <24264157+sarayourfriend@users.noreply.github.com> * Bump orjson from 3.8.8 to 3.8.9 in /api (#1114) Bumps [orjson](https://github.com/ijl/orjson) from 3.8.8 to 3.8.9. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](ijl/orjson@3.8.8...3.8.9) --- updated-dependencies: - dependency-name: orjson dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add Sentry to the ingestion server (#1106) * Add a wait to filter button test to fix CI (#1124) * Bump boto3 from 1.26.100 to 1.26.104 in /ingestion_server (#1110) * Bump sentry-sdk from 1.17.0 to 1.18.0 in /api (#1112) * Bump pillow from 9.4.0 to 9.5.0 in /api (#1115) * Update redis Docker tag to v4.0.14 (#1109) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * 🔄 synced file(s) with WordPress/openverse-infrastructure (#1127) Co-authored-by: openverse-bot <null> * Update other references of media count to 700 million (#1100) * Fix prod deployment workflow dispatch call (#1117) * Add a Slack notification job to the CI + CD workflow (#1066) * Fix types in VFilters and VContentReport (#1030) * Move the svgs for radiomark and check to components * Add files to tsconfig and fix types * Mock report service in the unit test * Type svg?inline as vue Component * Better License code type checking * Update frontend/src/components/VFilters/VFilterChecklist.vue * Revert unnecessary changes * Update frontend/src/components/VFilters/VFilterChecklist.vue Co-authored-by: Zack Krida <zackkrida@pm.me> * Rename `ownValue` to `value_` --------- Co-authored-by: Zack Krida <zackkrida@pm.me> * Convert VPill and VItemGroup stories to mdx (#1092) * Convert VPill story to MDX * Convert VItemGroup story to mdx * Fixing argTypes issue and fixing the headers * Update ci to use github.token (#1123) * Add `SLACK_WEBHOOK_TYPE` env var to reporting job (#1131) * Add consent decision-making process documentation (#887) * Prepare VButton for updates (#1002) * Rename button sizes and apply some styles only to 'old' buttons * Rename the snapshot tests to v-button-old * Fix VTab focus style * Small fixes (large-old, border, group/button) * Revert VTab focus changes Moved to a different PR * Revert "Revert VTab focus changes" This reverts commit ec9312d. * Use only focus-visible for consistency * Bump boto3 from 1.26.99 to 1.26.105 in /api (#1133) Bumps [boto3](https://github.com/boto/boto3) from 1.26.99 to 1.26.105. - [Release notes](https://github.com/boto/boto3/releases) - [Changelog](https://github.com/boto/boto3/blob/develop/CHANGELOG.rst) - [Commits](boto/boto3@1.26.99...1.26.105) --- updated-dependencies: - dependency-name: boto3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add more docs for Plausible and auto-initialise custom event names (#1122) * Add more docs for Plausible and auto-initialise custom event names * Update existing docs * Add caveat that it is not necessary to run Plausible if not working on custom events * Fix ToC * Add new buttons variants and sizes (#1003) * Add new VButton sizes and variants * Add new Storybook tests * Add border to transparent- buttons * Update bordered and transparent buttons * Update stories * Update snapshots * Remove pressed variants * Add missing snapshots * Fix transparent buttons * Update paddings In accordance with #860 (comment) * Update snapshots * Update frontend/src/components/VButton.vue Co-authored-by: Zack Krida <zackkrida@pm.me> --------- Co-authored-by: Zack Krida <zackkrida@pm.me> * Pass `GITHUB_TOKEN` to deploy docs (#1134) * Add context manager and join() --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Dhruv Bhanushali <hi@dhruvkb.dev> Co-authored-by: Krystle Salazar <krystle.salazar@automattic.com> Co-authored-by: Madison Swain-Bowden <bowdenm@spu.edu> Co-authored-by: sarayourfriend <24264157+sarayourfriend@users.noreply.github.com> Co-authored-by: Tomvth <50104959+Tomvth@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Adarsh Rawat <adarshrawat141@gmail.com> Co-authored-by: Dhruv Bhanushali <dhruv_b@live.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Openverse (Bot) <101814513+openverse-bot@users.noreply.github.com> Co-authored-by: Zack Krida <zackkrida@pm.me> Co-authored-by: Sepehr Rezaei <54465154+sepehrrezaei@users.noreply.github.com> Co-authored-by: Sumit Kashyap <mr.sumitkrr@gmail.com>
Fixes
Fixes #1064 by @zackkrida
Description
This PR adds a job to the CI + CD workflow that runs after the docs are built, Docker images are published and staging sites are deployed. It sends a Slack report if any of these steps have been skipped or failed.
Testing Instructions
Read carefully, and hope it works. You can extract the Python script out to a file and run it against your own env vars to see the output.
Checklist
Update index.md
).main
) ora parent feature branch.
errors.
Developer Certificate of Origin
Developer Certificate of Origin