feat(ci): add scheduled oci integration-test workflows - #6969
Conversation
Create oci workflow integration test coverage for Oracle on Ubuntu Jammy, Noble, Resolute and Stonking scheduled twice-weekly: - Mon & Thu, cron '2 22 * * 1,4 Extend the shared 100-dispatch-common.yml workflow: - add 'oci' to the workflow_dispatch platform choice list - add two optional secrets PYCLOUDLIB_OCI_CONFIG_B64 / PYCLOUDLIB_OCI_KEY_B64 to workflow_call.secrets - pass PYCLOUDLIB_OCI_CONFIG_FILE_PATH / PYCLOUDLIB_OCI_KEY_FILE_PATH to the Run integration Tests step env - clean up the oci dir in the Clean pycloudlib step
fe9cbc3 to
a6fc21c
Compare
holmanb
left a comment
There was a problem hiding this comment.
File naming scheme matches the pattern, thanks for that. This looks pretty good.
I have a couple of minor questions related to organization and reuse.
| run: | | ||
| sh -c 'echo "$REQUIRED_SECRET" | base64 -d > "$PYCLOUDLIB_CONFIG"' | ||
| - name: Setup OCI credentials | ||
| if: ${{ env.CLOUD_INIT_PLATFORM == 'oci' }} |
There was a problem hiding this comment.
Cloud-specific code in a common workflow seems messy. I worry that this shared file will become increasingly difficult to understand due to cloud-specific conditional code. Can this be done outside of the shared workflow? Some question applies for LXD as well.
| options: | ||
| - generic | ||
| - minimal | ||
| filter_tests: |
There was a problem hiding this comment.
filter_tests doesn't seem like the best name for this. That is one thing that can be done, but it seems like one might add other arguments to tox via this variable name.
We can fix this in a followup.
| if: ${{ always() }} | ||
| run: | | ||
| rm -f ${{ runner.temp }}/pycloudlib.toml | ||
| rm -rf ${{ runner.temp }}/oci |
There was a problem hiding this comment.
Shouldn't other secrets be cleaned as well? Such as the ssh keys?
Proposed Commit Message
Additional Context
Success run on individual oci creds: https://github.com/blackboxsw/cloud-init/actions/runs/30711239669
Test Steps
[oci]section documenting your configCreate an oci config file via new API Keys from cloud.oracle.com
PYCLOUDLIB_OCI_CONFIG_B64 # Copy value from: cat oci.config | base64 -w 0
Grab private key pem from cloud.oracle.com
PYCLOUDLIB_OCI_KEY_B64 # Copy value from: cat your-team-login-date*pem | base64 -w 0
PYCLOUDLIB_TOML_B64 # copy value from cat pycloudlib.toml | base64 -w 0
SSH_PRIVATE_KEY # Copy shared CI private key used for all integration tests
SSH_PUBLIC_KEY # ditto public key
Merge recommendations