Skip to content

Conversation

viveksinghggits
Copy link
Contributor

@viveksinghggits viveksinghggits commented Aug 7, 2025

Summary

Per current implementation when we release the binary we build it via goreleaser but in our dev and staging workflows we used scripts/evergreen/build_multi_cluster_kubeconfig_creator.sh (which eventually run go build) to build the binary. We needed to change this to make sure that we are using the same mechanism to build the binary in dev/staging workflows that we use while releasing. In order to achieve that, this PR adds functionality to build the kubectl-mongodb plugin using goreleaser in dev/staging workflows.

As part of the new workflow, build_multi_cluster_binary evergreen function has been changed to run goreleaser build and upload the artifacts to a S3 location. After that the linux/amd64 distribution of the binary is downloaded locally at the path where tests image expects it.

Having the binary in the S3 bucket would eventually help us to just promote the binaries while the release process but we are not able to achieve that for now, because for dev/staging workflows we are not able to notarize the generated binaries.

After this PR, potentially we can even consider just getting rid of the script scripts/evergreen/build_multi_cluster_kubeconfig_creator.sh.

Proof of Work

Run the local patch using

evergreen patch --path .evergreen.yml -p mongodb-kubernetes -v init_test_run -t build_test_image -f -y -u --browse -d "Testing build of kubectl plugin using build scenario"

and make sure that test image is built successfully and the goreleaser artifacts are uploaded to the S3 bucket (mongodb-kubernetes-dev) correctly.

CI passing on this PR also proves that the binary is successfully built and copied to the test image.

Checklist

  • Have you linked a jira ticket and/or is the ticket in the title?
  • Have you checked whether your jira ticket required DOCSP changes?
  • Have you added changelog file?

Copy link

github-actions bot commented Aug 7, 2025

⚠️ (this preview might not be accurate if the PR is not rebased on current master branch)

MCK 1.3.0 Release Notes

Bug Fixes

  • This change fixes the current complex and difficult-to-maintain architecture for stateful set containers, which relies on an "agent matrix" to map operator and agent versions which led to a sheer amount of images.
  • We solve this by shifting to a 3-container setup. This new design eliminates the need for the operator-version/agent-version matrix by adding one additional container containing all required binaries. This architecture maps to what we already do with the mongodb-database container.
  • Fixed an issue where the readiness probe reported the node as ready even when its authentication mechanism was not in sync with the other nodes, potentially causing premature restarts.

Other Changes

  • Optional permissions for PersistentVolumeClaim moved to a separate role. When managing the operator with Helm it is possible to disable permissions for PersistentVolumeClaim resources by setting operator.enablePVCResize value to false (true by default). When enabled, previously these permissions were part of the primary operator role. With this change, permissions have a separate role.
  • subresourceEnabled Helm value was removed. This setting used to be true by default and made it possible to exclude subresource permissions from the operator role by specifying false as the value. We are removing this configuration option, making the operator roles always have subresource permissions. This setting was introduced as a temporary solution for this OpenShift issue. The issue has since been resolved and the setting is no longer needed.
  • We have deliberately not published the container images for OpsManager versions 7.0.16, 8.0.8, 8.0.9 and 8.0.10 due to a bug in the OpsManager which prevents MCK customers to upgrade their OpsManager deployments to those versions.

@viveksinghggits viveksinghggits added the skip-changelog Use this label in Pull Request to not require new changelog entry file label Aug 7, 2025
@viveksinghggits viveksinghggits force-pushed the kubectl-plugin-goreleaser branch from 8fa4b79 to 8c147ec Compare August 19, 2025 11:49
@viveksinghggits viveksinghggits changed the title Add an evergreen function to build kubectl plugin and push to S3 [CLOUDP-338093] Use goreleaser to build kubectl-mongodb plugin for dev/staging workflows Aug 19, 2025
@viveksinghggits viveksinghggits force-pushed the kubectl-plugin-goreleaser branch from 8c147ec to 8404bc1 Compare August 19, 2025 12:17
@viveksinghggits viveksinghggits marked this pull request as ready for review August 19, 2025 12:17
@viveksinghggits viveksinghggits requested a review from a team as a code owner August 19, 2025 12:17
@viveksinghggits viveksinghggits requested a review from nammn August 22, 2025 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
skip-changelog Use this label in Pull Request to not require new changelog entry file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants