Skip to content

Track 1 Release Process

Joel Hendrix edited this page Jun 26, 2020 · 1 revision

Major Version Updates

Update Latest Branch With Current Specs

  1. Merge any auto-generated PRs that are complete
  2. In SDK repo git checkout latest, pull upstream to ensure it’s up-to-date, then branch from it
  3. Update Gopkg.toml file with latest go-autorest then run dep ensure -update
  4. Update swagger_to_sdk_config.json with latest generator version (not strictly necessary but good to ensure we keep this in sync with the go-autorest version)
  5. Sync latest specs repo
  6. Run autorest on each config file
    1. CD to specs repo specification subdir
    2. get-childitem -recurse readme.md | foreach-object { write-host $_ ; autorest --use=@microsoft.azure/autorest.go@~2.1.99 $_ --go --multiapi --go-sdk-folder=D:\work\src\github.com\Azure\azure-sdk-for-go --use-onever }
    3. works but no parallelism so slow (~35 minutes)
    4. change this as required
  7. CD to profiles subdir in SDK repo and do go generate ./... to update all the profiles
  8. Run gofmt -w ./services to format all generated content
  9. git add all the things, submit PR to latest branch, when CI is green merge

Merge Latest Branch Into Master

  1. Do git pull on your latest to pick up the changes you just merged
  2. Do git checkout master
  3. Do git merge latest
    1. Probably safe to take theirs for any conflicts but always verify
  4. Run API diff tool to get the list of affected packages (should be all due to generator changes)
    1. Run apidiff changelog D:\work\src\github.com\Azure\azure-sdk-for-go\services <commit from last release> <HEAD commit>
  5. Update CHANGELOG.md with updated package info
  6. Update version/version.go with correct version info
  7. Commit all the things then create a PR to master
  8. Once PR is green push upstream
  9. Create a release in github (copy the CHANGELOG info you added into the notes)
  10. Once merged run the indexer tool (tools/indexer) to update godoc

Minor Version Updates

  1. Merge any auto-PRs that are ready.
  2. Ensure your local master and latest branches are current.
  3. Run the “picker” tool (tools/picker) to merge non-breaking changes from latest into master.
    1. picker latest master
    2. Resolve any merge conflicts ( ignore conflicts in the profiles)
    3. Due to factors explained in https://github.com/Azure/azure-sdk-for-go/issues/2148, regenerate the profiles after the picker runs.
  4. Run the apidiff tool to generate a report between last release (e.g. v17.4.0) and HEAD (used to update CHANGELOG)
  5. Update CHANGELOG and version/version.go as required and commit
  6. Push to origin/master and create PR to upstream/master
  7. Once CI is green and PR approved push to upstream/master
  8. Run the indexer tool (tools/indexer) to update godocs