-
Notifications
You must be signed in to change notification settings - Fork 90
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
ci: Refactor the workflows #322
Conversation
Signed-off-by: Ankita Katiyar <[email protected]>
Signed-off-by: Ankita Katiyar <[email protected]>
Signed-off-by: Ankita Katiyar <[email protected]>
Signed-off-by: Ankita Katiyar <[email protected]>
Signed-off-by: Ankita Katiyar <[email protected]>
Signed-off-by: Ankita Katiyar <[email protected]>
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 looks great, thanks @ankatiyar ! Awesome solution for the build failure notification through ticket creation 👍 Great description on the PR again as well ⭐
Does this help at all with #218? cc: @SajidAlamQB
if: ${{ needs.check-version.outputs.new_release == 'true' }} | ||
needs: [ check-version, airflow-test, docker-test, datasets-test, telemetry-test ] | ||
if: | | ||
always() && |
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.
What does always()
do/mean?
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 solution is from here -> actions/runner#491 (comment)
The build-publish job will still run if any of the needed tests are skipped (which they are if they're not due for a release)
telemetry-test: | ||
uses: ./.github/workflows/kedro-telemetry.yml | ||
|
||
notify-airflow: |
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! 👍
It doesn't help with #218, for that we'd need to change the |
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 is some heroic work @ankatiyar! 🌟 The CI looks so much neater thank you for taking on this on and killing many birds with one stone!
Not quite @merelcht we will have to change the |
Description
check-plugin.yml
into reusable workflows that are individually called by each plugin. Fix Refactor GitHub Actions CI setup #316Development notes
Reusable workflows:
unit-tests.yml
,lint.yml
,e2e-tests.yml
-Broke down
check-plugin.yml
which had a lot of case based jobs into reusable workflows -unit-test.yml
lint.yml
e2e-tests.yml
These workflows receive the
python-version
,os
, andplugin
as inputs from caller workflows.Caller workflows:
kedro-airflow.yml
,kedro-datasets.yml
,kedro-docker.yml
,kedro-telemetry.yml
These workflows call the individual reusable workflows with the
plugin
,os
, andpython-version
depending on which plugin needs which tests.kedro-airflow
: Callsunit-tests
,lint
, ande2e-tests
.kedro-datasets
: Callsunit-tests
,lint
, andRTD-build
(which is not a reusable workflow since it's only used by datasets)kedro-docker
: Callsunit-tests
,lint
, ande2e-tests
.kedro-telemetry
: Callsunit-tests
,lint
, ande2e-tests
.NOTE: I've also made these workflows reusable so that all tests for a plugin can be run by simply invoking these workflows, e.g. in
nightly-build.yml
andcheck-release.yml
Release workflow:
check-release.yml
Mostly left unchanged but -
test
job which is needed for thebuild-publish
job, it now hasairflow-test
,datasets-test
,docker-test
, andtelemetry-test
which runs the whole test suite for the plugin that is being released.NOTE: Tested on my fork by bumping telemetry version and removing the actual github release and PyPI publishing steps from the workflow. See the workflow file and the run.
Nightly build and notification:
nightly-build.yml
This workflow also calls the reusable composite workflows
kedro-airflow/datasets/docker/telemetry.yml
. Runs everyday at midnight UTC.For each plugin -
<plugin>-test
is called.notify-plugin
runs incase of a failure and creates a new issue with the label<plugin> nightly build
if it doesn't exist/closed previously, or adds a comment to a pre-existing issue if it does.NOTE: This creation of issue is based on the label not the issue heading.
NOTE: Tested on my fork by deliberately failing tests. See the created issues here - https://github.com/ankatiyar/kedro-plugins/issues
Checklist
RELEASE.md
file