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

Leveling up our Patch release process #2067

Closed
3 tasks
thedavidprice opened this issue Mar 23, 2021 · 6 comments · Fixed by #4402
Closed
3 tasks

Leveling up our Patch release process #2067

thedavidprice opened this issue Mar 23, 2021 · 6 comments · Fixed by #4402

Comments

@thedavidprice
Copy link
Contributor

@peterp starting with this next release, I'm going to focus on opportunities to resolve bugs more quickly via patch releases. Here's how I understand the process that will work with the canary release automation:

  1. Create a new branch from the previous release tag, e.g. git branch v0.27.2-patch v0.27.1
  2. Open a PR against the patch branch, e.g. v0.27.2-patch
    • if the PR working branch was not created originally from v0.27.2-patch, it should be rebased against the branch
  3. Merge the PR
    • note: this should not trigger canary release automation (to confirm)
  4. Create a patch release using the updated patch branch, e.g. v0.27.2-patch released as v0.27.2
  5. Create a new PR for the patch branch against main, e.g. v0.27.2-patch --> main
  6. Merge the PR, which will trigger canary release automation
    • this should release a canary with tag v0.27.3-canary.x, correct?

TO DO

  • finalize instructions
  • confirm canary release only triggers on push to main
  • Document in Contributing.md
@peterp
Copy link
Contributor

peterp commented Mar 27, 2021

I've had to do this now, but followed a slightly different process, just thought I would write it down so that it's documented

#2130

  1. git checkout tags/v0.28.0 -b v0.28.1
  2. Pick the merges that I want in v0.28.1: git cherry-pick d8649c98056d5aefccf972d11461d469c3821b2f

dsp edit: we need to add a "compare branch to previous version" step here to verify only patches are included

  1. Bump the versions: ./tasks/update-package-versions 0.28.1

dsp edit: add commit here

  1. Create a new tag: git tag -am v0.28.1 "v0.28.1" dsp edit: need to annotate!
  2. Push that up to GitHub: git push --tags
  3. Create a new PR and make sure that everything builds and passes

dsp edit: curious if you also ran into a gazillion merge conflicts from version updates in packag.json files

  1. Publish the new npm packages
  2. Create release in GitHub.
  3. Merge main back into my branch (fix conflicts)

dsp edit: interesting, after resolving merge conflicts I then pulled back locally, which also included commits from main. I did not specifically update from main. Must have been included in the conflict resolution process.
dsp edit: this might also be a good step to update template/yarn.lock

  1. Merge PR.

dsp edit: PR merge using "Squash & Merge" is likely to remove the Tag'ed commit. Recommended to use regular merge and keep individual commits.

@thedavidprice
Copy link
Contributor Author

thedavidprice commented Mar 30, 2021

@peterp it looks like #2082 and #2085 snuck into v0.28.1 I originally merged them so we could leave in canary for a cycle of testing. Guessing these snuck in. We should add a "compare" step to the processes above before publishing a patch.

v0.28.0...v0.28.1

Edit: confirming false alarm. Was likely comparing tag to branch, which I swore I double checked

@thedavidprice
Copy link
Contributor Author

So, I’m trying to figure out how to update the new template/yarn.lock. Here’s my dilemma, it needs to be done based on the packages that will be released.

  • publish v0.28.3
  • using the published v0.28.3, run yarn install to update template/yarn.lock

But I can’t do this because it’s all in the same repo and gets published simultaneously.

The best I could do is update yarn.lock after the packages are published, so it would always be a version behind.
When a user runs CRWA and yarn install for the first time, yarn.lock will be updated. But they won’t know it because likely they haven’t git init yet. Maybe this is all fine. But it doesn’t feel silky smooth in my 🧠 yet.

We will always have a "baseline" to work against. But not having yarn.lock is also a baseline. But now we need to make sure we're manually managing the baseline and doing it in a regular, transparent manner.

@jtoar
Copy link
Contributor

jtoar commented Feb 8, 2022

I'm not sure if #4402 totally closed this yet so reopening for now.

@jtoar jtoar reopened this Feb 8, 2022
@thedavidprice
Copy link
Contributor Author

Final piece here will be automating the rc publishing

@jtoar jtoar closed this as completed Apr 25, 2022
@jtoar
Copy link
Contributor

jtoar commented Apr 25, 2022

Final piece here will be automating the rc publishing

I think we can close this one now that we've got that down.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Status: Done
Development

Successfully merging a pull request may close this issue.

3 participants