canonical / charmed-kubeflow-workflows

Repository that containes GitHub workflows and shareable configs for Charmed Kubeflow
0 stars 0 forks source link

Standardize `on_pull_request` and `on_push` reusable workflows for ROCKs #31

Closed orfeas-k closed 9 months ago

orfeas-k commented 9 months ago

What needs to get done

At the moment, we do not have standardized and explicitly decided what should happen during on_push and on_pull_request.

on_pull_request

The second part is tackled by PR https://github.com/canonical/charmed-kubeflow-workflows/pull/27 which introduces get_modified_rocks_and_build_scan_test_rock.yaml that is designed to suffice for checks during on_pull_request. That's the thought also behind this implementation in seldonio-rocks. However, AFAIK, we haven't decided explicitly that build, scan and testing should happen during on_pull_request. This can also be observed by the fact that we have different on_pull_request workflows in kubeflow-rocks and pipelines-rocks repos.

on_push

At the moment, there is nothing in this repo that can just be triggered as is for on_push events. There is the build_and_publish_rock.yaml file but cannot be called without passing arguments for each rockcraft inside a repo (as opposed to what can be done using get_modified_rocks_and_build_scan_test_rock.yaml. We should thus decide we expect from CI on those events.

The above should happen with the use of reusable workflows (if possible) in order to have a centralized way of controlling ROCKs CI and avoid copy-pasting the same files over many repos.

Why it needs to get done

We need to do this in order to have centralized CI for ROCKs that will be reusable, robust and easily transferable. We will also avoid hardcoding and copy pasting stuff.

ca-scribner commented 9 months ago

Some thoughts on each case:

on_pull_request

Definitely we need:

Should we also:

on_push (to a branch that produces releases, like a specific version)

When this CI publishes, do we need to create a release or something like that? Or, if we version everything with commits, is it clear enough? There is the problem @orfeas-k you mentioned about if we need to republish something without actually modifying the repo (and thus without changing the commit hash) - those might still need some breadcrumbs to know what is where. But this is a small case

ca-scribner commented 9 months ago

@orfeas-k how do you envision sharing these files between repos? Would we have something like the get_modified_rocks_and_build_scan_test_rock.yaml workflow in charmed-kubeflow-workflows, and then every repo has a very basic identical on_pull_request.yaml? We could even have a template here for the on_pull_request.yaml maybe (not stored in .github/workflows, so it doesn't fire in this repo) and we could expect people copy and paste the file from here

orfeas-k commented 9 months ago

Sharing workflows between repos

Would we have something like the get_modified_rocks_and_build_scan_test_rock.yaml workflow in charmed-kubeflow-workflows, and then every repo has a very basic identical on_pull_request.yaml? We could even have a template here for the on_pull_request.yaml maybe (not stored in .github/workflows, so it doesn't fire in this repo) and we could expect people copy and paste the file from here

Yes, that's how I think we should do it and this was integrated also in #27 by including this template.

syncronize-issues-to-jira[bot] commented 9 months ago

Thank you for reporting us your feedback!

The internal ticket has been created: https://warthogs.atlassian.net/browse/KF-5127.

This message was autogenerated

orfeas-k commented 9 months ago

To reiterate and close this issue, we decided the following

on_pull_request

on_push (to main or track/x.x branches)

This will by achieved by a common build-scan-test-publish workflow that will publish only when it's triggered during push events.