Skip to content
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

Migrating Concourse CI pipelines to GH Actions #1208

Merged
merged 38 commits into from
Jan 3, 2023
Merged

Conversation

coro
Copy link
Contributor

@coro coro commented Dec 12, 2022

This closes #1202

Note to reviewers: remember to look at the commits in this PR and consider if they can be squashed

Summary Of Changes

  • Move the cluster operator to be a multiarch OCI built on AMD64 and ARM64, instead of just the former.
  • Move existing Concourse CI infrastructure to GitHub Actions

Additional Context

The pipeline now runs, on PRs:

  • kubectl tests
  • Unit tests
  • Integration tests
  • Tests that a multiarch OCI can be successfully built, but does not push it
  • Runs system tests locally against kind, for multiple RabbitMQ Cluster versions
    • This excludes the volume expansion system tests
  • Runs the documented examples against kind in 'dry-run' mode

On pushes to main:

  • kubectl tests
  • Unit tests
  • Integration tests
  • Builds a multiarch OCI of the operator (pushed to rabbitmqoperator/cluster-operator with a tag of the SHA256 and edge), and a manifest referencing that OCI
  • Also builds a single-arch version of the image, for AMD64, for compatibility with internal tooling
  • Runs system tests against GKE, for multiple RabbitMQ Cluster versions
  • Runs the documented examples against GKE
  • Tests if upgrading to the operator built earlier would cause a rolling restart of RabbitmqClusters

On creation of a tag in the repo:

  • Same as push to main, except in addition:
    • OCI is tagged also with latest if the latest version, and the semver version of the release
    • Uploads manifests to a release in GitHub as a Draft release

N.B.: This PR removes the use of the rabbitmqoperator/cluster-operator-dev image, as it's now functionally replaced by the regular image with a SHA tag.

Local Testing

Please ensure you run the unit, integration and system tests before approving the PR.

To run the unit and integration tests:

$ make unit-tests integration-tests

You will need to target a k8s cluster and have the operator deployed for running the system tests.

For example, for a Kubernetes context named dev-bunny:

$ kubectx dev-bunny
$ make destroy deploy-dev
# wait for operator to be deployed
$ make system-tests

coro added 30 commits December 9, 2022 13:20
This reverts commit 91730ea.
@coro coro marked this pull request as ready for review December 14, 2022 16:56
@coro coro changed the title WIP: Migrating Concourse CI pipelines to GH Actions Migrating Concourse CI pipelines to GH Actions Dec 14, 2022
@ablease
Copy link
Contributor

ablease commented Dec 15, 2022

Based upon sequential changes to the same file you could squash the following sets of commits.

Makefile changes: [c8aa3a1 b490b8c]
Build-Test-Publish changes: [30e571b eb3ef54 8806354 6395e01 5b60d84 05c2ec9 037c46c 2338cdd]

Makefile Changes Round 2: [afb8bf2 1201371]

Build-test-publish Round 2 [e750037 e7b1016]

Build-test-publish Round 3 [dbef9a3 70a9428]

Build-test-publish Final Round! [40ab6c1 f06842d]

I can't say to much about the github actions changes themselves, will keep an eye on them as they run :) Thanks!

Copy link
Contributor

@ChunyiLyu ChunyiLyu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some minor comments. Looks good!

.github/workflows/build-test-publish.yml Outdated Show resolved Hide resolved
env:
GO_VERSION: ~1.19
K8S_VERSION: v1.24.1
BASELINE_UPGRADE_VERSION: v1.12.0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why 1.12.0 as the baseline version? Do we plan to bump this version with new minors released in the future?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The baseline is the most recent release that contained a change that caused a rolling restart. We discussed the possibility of limiting these changes to only major version updates instead, but for now this replicates the behaviour of the hush house CI.

.github/workflows/build-test-publish.yml Show resolved Hide resolved
Makefile Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

arm64 support
3 participants