diff options
-rw-r--r-- | .github/workflows/start_release.yml | 11 | ||||
-rw-r--r-- | tools/cut_a_release.md | 6 | ||||
-rwxr-xr-x[-rw-r--r--] | tools/release/00_start_release.ts | 33 | ||||
-rw-r--r-- | tools/release/release_doc_template.md | 23 |
4 files changed, 42 insertions, 31 deletions
diff --git a/.github/workflows/start_release.yml b/.github/workflows/start_release.yml index 75d76a3f3..0c0d4b5dd 100644 --- a/.github/workflows/start_release.yml +++ b/.github/workflows/start_release.yml @@ -31,12 +31,7 @@ jobs: git config --global fetch.parallel 32 - name: Clone repository - uses: actions/checkout@v2 - with: - token: ${{ secrets.DENOBOT_PAT }} - submodules: recursive - - - uses: dtolnay/rust-toolchain@stable + uses: actions/checkout@v3 - name: Install deno uses: denoland/setup-deno@v1 @@ -45,8 +40,8 @@ jobs: # the latest version ever has issues that breaks publishing deno-version: v1.23.2 - - name: Run start release + - name: Create Gist URL env: - GITHUB_TOKEN: ${{ secrets.DENOBOT_PAT }} + GITHUB_TOKEN: ${{ secrets.DENOBOT_GIST_PAT }} GH_WORKFLOW_ACTOR: ${{ github.actor }} run: ./tools/release/00_start_release.ts --${{github.event.inputs.releaseKind}} diff --git a/tools/cut_a_release.md b/tools/cut_a_release.md index 47ecf2926..843c94039 100644 --- a/tools/cut_a_release.md +++ b/tools/cut_a_release.md @@ -3,6 +3,6 @@ 1. Go to this workflow: https://github.com/denoland/deno/actions/workflows/start_release.yml 1. Select the kind of release, then run the workflow. -1. In the "Run start release" step, look at the bottom of the output to get the - gist url. -1. Fork the gist, and follow the instructions. +1. Wait for the "Create Gist URL" step to complete and look at its output for + the Gist URL. +1. Follow the instructions in the gist. diff --git a/tools/release/00_start_release.ts b/tools/release/00_start_release.ts index 6c0c555a0..b98fc147f 100644..100755 --- a/tools/release/00_start_release.ts +++ b/tools/release/00_start_release.ts @@ -1,20 +1,19 @@ -#!/usr/bin/env -S deno run -A --lock=tools/deno.lock.json +#!/usr/bin/env -S deno run -A --quiet --lock=tools/deno.lock.json // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license. -import { DenoWorkspace } from "./deno_workspace.ts"; import { $, createOctoKit, semver } from "./deps.ts"; -$.logStep("Loading cli crate..."); -const workspace = await DenoWorkspace.load(); -const cliCrate = workspace.getCliCrate(); -const nextVersion = getNextVersion(semver.parse(cliCrate.version)!); +const currentDirPath = $.path.dirname($.path.fromFileUrl(import.meta.url)); + +$.logStep("Getting next version..."); +const nextVersion = getNextVersion(semver.parse(getCliVersion())!); $.logStep("Creating gist with instructions..."); const octoKit = createOctoKit(); const result = await octoKit.request("POST /gists", { - description: `Deno CLI v${nextVersion.toString()} release checklist`, + description: `Deno CLI v${nextVersion} release checklist`, public: false, files: { - "release_instructions.md": { + [`release_${nextVersion}.md`]: { content: buildDenoReleaseInstructionsDoc(), }, }, @@ -23,7 +22,7 @@ const result = await octoKit.request("POST /gists", { $.log("=============================================="); $.log("Created gist with instructions!"); $.log(""); -$.log(` ${result.url}`); +$.log(` ${result.data.html_url}`); $.log(""); $.log("Please fork the gist and follow the checklist."); $.log("=============================================="); @@ -41,9 +40,23 @@ function getNextVersion(originalVersion: semver.SemVer) { } function buildDenoReleaseInstructionsDoc() { - const currentDirPath = $.path.dirname($.path.fromFileUrl(import.meta.url)); const templateText = Deno.readTextFileSync( $.path.join(currentDirPath, "release_doc_template.md"), ); return `# Deno CLI ${nextVersion.toString()} Release Checklist\n\n${templateText}`; } + +function getCliVersion() { + const cargoTomlText = Deno.readTextFileSync( + $.path.join(currentDirPath, "../../cli/Cargo.toml"), + ); + const result = cargoTomlText.match(/^version\s*=\s*"([^"]+)"$/m); + if (result == null || result.length !== 2) { + $.log("Cargo.toml"); + $.log("=========="); + $.log(cargoTomlText); + $.log("=========="); + throw new Error("Could not find version in text."); + } + return result[1]; +} diff --git a/tools/release/release_doc_template.md b/tools/release/release_doc_template.md index 9c8ee9ae1..ce874e975 100644 --- a/tools/release/release_doc_template.md +++ b/tools/release/release_doc_template.md @@ -1,4 +1,6 @@ -## Pre-flight checklist +- [ ] Fork this gist and follow the instructions there. + +## Pre-flight - Forks and local clones of [`denoland/deno`](https://github.com/denoland/deno/), @@ -13,7 +15,7 @@ release from) should be frozen and no commits should land until the release is cut.** - [ ] Write a message in company's #cli channel: - `:lock: deno and deno_std are now locked (<LINK TO THIS GIST GOES HERE>)` + `:lock: deno and deno_std are now locked (<LINK TO THIS FORKED GIST GOES HERE>)` ## Patch release preparation @@ -51,7 +53,7 @@ verify on GitHub that everything looks correct. - ⛔ DO NOT create a release tag manually. That will automatically happen. <details> - <summary>❌ Failure Steps</summary> + <summary>Failure Steps</summary> 1. Checkout the latest main. 2. Manually run `./_tools/release/01_bump_version.ts --minor` @@ -67,7 +69,7 @@ verify on GitHub that everything looks correct. - [ ] Review the draft release and then publish it. <details> - <summary>❌ Failure Steps</summary> + <summary>Failure Steps</summary> 1. Tag the repo manually in the format `x.x.x` 2. Draft a new GH release by copying and pasting the release notes from @@ -90,10 +92,10 @@ verify on GitHub that everything looks correct. - [ ] Wait for the workflow to complete and for a pull request to be automatically opened. Review the pull request, make any necessary changes, and merge it. - - ⛔ DO NOT create a release tag manually. + - ⛔ DO NOT create a release tag manually That will automatically happen. <details> - <summary>❌ Failure Steps</summary> + <summary>Failure Steps</summary> 1. Checkout the branch the release is being made on. 2. Manually run `./tools/release/01_bump_crate_versions.ts` @@ -110,7 +112,7 @@ verify on GitHub that everything looks correct. 1. Run it on the same branch that you used before and wait for it to complete. <details> - <summary>❌ Failure Steps</summary> + <summary>Failure Steps</summary> 1. The workflow was designed to be restartable. Try restarting it. 2. If that doesn't work, then do the following: @@ -140,7 +142,8 @@ verify on GitHub that everything looks correct. - ⛔ Verify that: - [ ] There are 8 assets on the release draft. - - [ ] There are 4 zip files for this version on dl.deno.land + - [ ] There are 4 zip files for this version on + [dl.deno.land](https://console.cloud.google.com/storage/browser/dl.deno.land/release). - [ ] The aarch64 Mac build was built from the correct branch AFTER the version bump and has the same version as the release when doing `deno -V` (ask someone with an M1 Mac to verify this if you don't have @@ -154,7 +157,7 @@ verify on GitHub that everything looks correct. - [ ] This should open a PR. Review and merge it. <details> - <summary>❌ Failure Steps</summary> + <summary>Failure Steps</summary> 1. Update https://github.com/denoland/dotland/blob/main/versions.json manually. @@ -183,7 +186,7 @@ queries the GitHub API to determine what it needs to change and update. - This will open a PR. Review it and merge, which will trigger a deployment. <details> - <summary>❌ Failure Steps</summary> + <summary>Failure Steps</summary> 1. Checkout a new branch for docland (e.g. `git checkout -b deno_1.17.0`). 2. Execute `deno task build` |