Skip to content

WIP: New release process #219

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

Closed
wants to merge 1 commit into from

Conversation

f5yacobucci
Copy link
Contributor

Change our release process to prefer a lazy branch process.

Describe a planned release and patch release process.

Based loosely on this description: https://trunkbaseddevelopment.com/branch-for-release/

Checklist

Before creating a PR, run through this checklist and mark each as complete.

  • [X ] I have read the CONTRIBUTING doc
  • [N/A ] I have added tests that prove my fix is effective or that my feature works
  • [X ] I have checked that all unit tests pass after adding my changes
  • [X ] I have updated necessary documentation
  • [X ] I have rebased my branch onto main
  • [X ] I will ensure my PR is targeting the main branch and pulling from my branch from my own fork

@f5yacobucci
Copy link
Contributor Author

@lucacome based on our quick discussion.

Before this can be merged we need to discuss what pipeline changes are necessary to fulfill the desired state.


- Repeat.

1. Once tests have passed create a tag (in the form vMAJOR.MINOR.PATCH) on the main (trunk) commit SHA. The docker image will automatically be pushed to `ghcr.io/nginxinc/nginx-kubernetes-gateway:MAJOR.MINOR.PATCH` with the docker tag reflecting the planned release version.
Copy link
Contributor

Choose a reason for hiding this comment

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

Right now, in the main branch, the YAML manifests and the docs reference the edge tag of the image.
In release branch, the YAML manifests and the docs reference 0.1.0 tag of the image.
That is also documented here https://github.com/nginxinc/nginx-kubernetes-gateway#nginx-kubernetes-gateway-releases - users are advised to make sure the image and the docs and manifests match

If we start releasing from the main branch, for the release tag, we will need to update the docs and manifests to use the release tag of the image and then right after the release we will need to update the docs and manifests to use the edge tag of the image.

Copy link
Contributor

Choose a reason for hiding this comment

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

Would it make sense to always have the tags and add a note for edge?

Copy link
Contributor

Choose a reason for hiding this comment

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

I think it'll be inconvenient for the user.


1. Create a release branch from the planned release tag in main (for example, v0.2.0), use the naming format: release-MAJOR.MINOR.

1. Reproduce and fix the bug in main first. This process helps ensure all issues remain fixed in trunk and aren't missed.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think there are two possible scenarios:

  • The bug is still present in main - we fix the bug in the release branch, create a new tag and then merge the branch/tag back to main.
  • The bug is not present in main - we fix the bug in the release branch and create a new tag

Copy link
Contributor

Choose a reason for hiding this comment

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

The bug is still present in main - we fix the bug in the release branch, create a new tag and then merge the branch/tag back to main.

what if you get conflicts while trying to merge?

additionally, would it make history non-linear? right now it is linear


1. Once tests have passed create a tag (in the form vMAJOR.MINOR.PATCH) on the main (trunk) commit SHA. The docker image will automatically be pushed to `ghcr.io/nginxinc/nginx-kubernetes-gateway:MAJOR.MINOR.PATCH` with the docker tag reflecting the planned release version.

1. Update the changelog with the changes added in the release. They can be found in the github release notes that was generated from the release branch.
Copy link
Contributor

Choose a reason for hiding this comment

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

We would also need to create drafts from the main branch


- Repeat.

1. Once tests have passed create a tag (in the form vMAJOR.MINOR.PATCH) on the main (trunk) commit SHA. The docker image will automatically be pushed to `ghcr.io/nginxinc/nginx-kubernetes-gateway:MAJOR.MINOR.PATCH` with the docker tag reflecting the planned release version.
Copy link
Contributor

Choose a reason for hiding this comment

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

Would it make sense to always have the tags and add a note for edge?

@lucacome lucacome requested a review from a team as a code owner March 21, 2023 01:44
@kate-osborn kate-osborn mentioned this pull request Apr 13, 2023
@pleshakov pleshakov closed this Apr 19, 2023
@pleshakov
Copy link
Contributor

superseded by #585

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.

3 participants