Skip to content

Commit

Permalink
Update release processes. (#1551)
Browse files Browse the repository at this point in the history
  • Loading branch information
BillyONeal authored Dec 10, 2024
1 parent 1005b78 commit e4443de
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 39 deletions.
12 changes: 5 additions & 7 deletions docs/vcpkg_registry_release_process.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,21 @@

This document describes the acceptance criteria / process we use when doing a vcpkg registry release.

1. Make sure the contents of the repo have what you want to release.
1. Make sure the contents of the repo have what you want to release and match a nightly CI run.
1. Create a git tag for the release.
```console
>git fetch origin # Where origin is whichever remote points to microsoft/vcpkg
>git switch -d origin/master
>git tag 2023.10.19 # Replace this with the correct date of course :)
>git switch -d <A tested SHA>
>git tag 2023.10.19 # Replace this with the date of that SHA
>git push origin 2023.10.19
```
1. Submit a full CI rebuild ( https://dev.azure.com/vcpkg/public/_build?definitionId=29 ) for the tag. e.g. `refs/tags/2023.10.19`
1. Checkout the tag
1. Run vcpkg z-changelog `<SHA OF LAST RELEASE>` > `path/to/results.md`
1. Create a new GitHub release in the registry repo on the tag.
1. Run 'auto generate release notes'
1. Change `## New Contributors` to `#### New Contributors`
1. Copy the contents to the end of `path/to/results.md` (the `#### New Contributors` part should line up)
1. Change the link to the full rebuild.
1. Fill out the block about tool release changes.
1. Copy `path/to/results.md` into the github release and publish it. (You can delete `path/to/results.md` now :))
1. After the full rebuild submission completes, change all the 'Building...'s to actual counts in the release.
1. Fill out the number of ports per platform from the matching rebuild.
1. Copy `path/to/results.md` into the GitHub release and publish it. (You can delete `path/to/results.md` now :))
1. After a blog post for that release is authored, add a link to the blog post to the release.
40 changes: 8 additions & 32 deletions docs/vcpkg_tool_release_process.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,18 @@ such as https://github.com/microsoft/vcpkg/pull/23757
1. Clean up a machine for the following tests:
* Delete `VCPKG_DOWNLOADS/artifacts` (which forces artifacts to be reacquired)
* Delete `LOCALAPPDATA/vcpkg` (which forces registries to be reacquired)
1. Smoke test the 'one liner' installer: (Where 2024-06-10 is replaced with the right release name)
1. Smoke test the 'one liner' installer: (Where 2024-12-09 is replaced with the right release name)
* Powershell:
`iex (iwr https://github.com/microsoft/vcpkg-tool/releases/download/2024-06-10/vcpkg-init.ps1)`
`iex (iwr https://github.com/microsoft/vcpkg-tool/releases/download/2024-12-09/vcpkg-init.ps1)`
* Batch:
`curl -L -o vcpkg-init.cmd https://github.com/microsoft/vcpkg-tool/releases/download/2024-06-10/vcpkg-init.ps1 && .\vcpkg-init.cmd`
`curl -L -o vcpkg-init.cmd https://github.com/microsoft/vcpkg-tool/releases/download/2024-12-09/vcpkg-init.ps1 && .\vcpkg-init.cmd`
* Bash:
`. <(curl https://github.com/microsoft/vcpkg-tool/releases/download/2024-06-10/vcpkg-init -L)`
`. <(curl https://github.com/microsoft/vcpkg-tool/releases/download/2024-12-09/vcpkg-init -L)`
(and test that `vcpkg use microsoft:cmake` works from each of these)
1. Create a new task in the DevDiv VS instance for this release. (PRs into VS Code and VS require an associated work
1. Create a new task in the DevDiv VS instance for this release. (PRs into VS require an associated work
item in order to be merged.)
1. In the vcpkg repo, run `\scripts\update-vcpkg-tool-metadata.ps1 -Date 2024-06-10`
with the new release date, which updates SHAs as appropriate. It will also emit a code block for
the next vscode-embedded-tools repo step. Commit these changes and submit as a PR.
1. In the DevDiv vscode-embedded-tools repo, follow the
[update instructions](https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_git/vscode-embedded-tools?path=/docs/updating-vcpkg.md&_a=preview)
to make a VS Code update PR. Don't forget to attach the work item created in the previous step.
Example: https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_git/vscode-embedded-tools/pullrequest/498107
1. In the vcpkg repo, run `\scripts\update-vcpkg-tool-metadata.ps1 -Date 2024-12-09`
with the new release date, which updates SHAs as appropriate. Commit these changes and submit as a PR.
1. If changes in this release that might affect ports, submit a new full tree rebuild by
microsoft.vcpkg.ci (https://dev.azure.com/vcpkg/public/_build?definitionId=29 as of this writing)
targeting `refs/pull/NUMBER/head`
Expand All @@ -50,13 +45,12 @@ such as https://github.com/microsoft/vcpkg/pull/23757
in a comment in `Program.cs`
1. Download the VS-insertion .nupkg.
1. Run `src\vc\projbld\Vcpkg\VcpkgInsertionUtility\Program.exe path-to-nupkg`
1. Go to the root of the VS repo and run `init.cmd -CoreXTProfileName VSPartners`
1. Submit this as a change to the VS repo. Example: https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_git/VS/pullrequest/498110
Don't forget to attach the work item number from the previous step.
1. Smoke test the copy of vcpkg inserted into VS. See smoke test steps below. The prototype copy is
at "CloudBuild - PR -> Extensions\VS Enterprise\Release Channel" as of 2023-10-19 but this UI
changes frequently.
1. (After all tests have passed, at the same time) Merge all 3 PRs, and change the github release
1. (After all tests have passed, at the same time) Merge both PRs, and change the github release
in vcpkg-tool from "prerelease" to "release". (This automatically updates the aka.ms links)
1. Mark any `requires:vcpkg-tool-release` issues as fixed by the tool release.

Expand Down Expand Up @@ -91,13 +85,6 @@ flowchart TD
smoke_test_cmd{Smoke Test vcpkg-init.cmd}
smoke_test_ps1{Smoke Test vcpkg-init.ps1}
smoke_test_bash{Smoke Test vcpkg-init.sh}
subgraph vs_code_update_pr [Visual Studio Code Update PR]
direction LR
package_json[(package.json)]
changelog_md[(CHANGELOG.md)]
vs_embedded_tools_repo[(vs_embedded_tools Repo)]
end
create_vs_code_update_pr{Create Visual Studio Code Update PR}
symweb[(//symweb, etc.)]
%% Build the Release
Expand All @@ -123,13 +110,6 @@ flowchart TD
run_insertion --> vs_repo
vs_update_pr --> create_vs_pr
%% VS Code Update
update_vcpkg_tool_metadata_ps1 --> package_json
release_version --> changelog_md
package_json --> vs_embedded_tools_repo
changelog_md --> vs_embedded_tools_repo
vs_code_update_pr --> create_vs_code_update_pr
%% Smoke Testing
create_vs_pr --> smoke_test_vs
vcpkg_tool_releases --> smoke_test_cmd
Expand All @@ -142,16 +122,12 @@ flowchart TD
smoke_test_bash --> merge
smoke_test_vs --> merge
run_full_tree_rebuild --> merge
create_vs_code_update_pr --> merge
```

* [vcpkg Signed Binaries (from GitHub)](https://devdiv.visualstudio.com/DevDiv/_build?definitionId=17772&_a=summary) Uses the azure-pipelines/signing.yml file in the vcpkg-tool repo.
* [devdiv/VS NuGet Feed](https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_artifacts/feed/VS/NuGet/VS.Redist.Vcpkg.amd64/)
* [devdiv/VS-CoreXtFeeds NuGet Feed](https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_artifacts/feed/VS-CoreXtFeeds/NuGet/VS.Redist.Vcpkg.amd64/)
* [devdiv VS Repo](https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_git/VS)
* Run VcpkgInsertionUtility at `$/src/vc/projbld/Vcpkg/VcpkgInsertionUtility/run.cmd`
* [vscode-embedded-tools Repo](https://devdiv.visualstudio.com/DefaultCollection/DevDiv/_git/vscode-embedded-tools)
* `package.json` and `CHANGELOG.md` are in `$/app/vscode-embedded-tools`
* Run Full Rebuild: Queue a [microsoft.vcpkg.ci](https://dev.azure.com/vcpkg/public/_build?definitionId=29) run for `refs/pull/NUMBER/head`
* Example: https://dev.azure.com/vcpkg/public/_build/results?buildId=73664&view=results

Expand Down

0 comments on commit e4443de

Please sign in to comment.