Skip to content

Automate release process #11734

@connorjclark

Description

@connorjclark

Goal: Automate publishing to NPM and rolling to DevTools. Minimal manual work will be entering a version number, reviewing/editing the changelog.md in a PR, and waiting for a DevTools CL to be +1'd to submit.

Stage 0: Prerequisites

  • ☔ release script improvements #9857 (only some are blocking an automated release)
  • Replace the manual tests with automated tests (maybe some are already well covered?) (or should reviewing the release PR involve checking out the branch, building, and doing some manual tests?)
    • DevTools manual testing (yarn open-devtools). Can we drop this?
    • "Testing the CLI" (yarn start "https://example.com" --view). Can we drop this?
    • "Test the extension". We have unit tests, integration tests. Do we need more? Also, extension shouldn't ever really change now, so it seems this manual testing should be confined to code changes in clients/extension or build-extension.js. Can we drop this?
    • "Test the viewer". Test with old and new LHRs. Can we make integration tests for this instead?

Stage 0.5: Automate publishing daily builds

  • Make a new GH action that publishes as @next every day.

Stage 1: Automate publishing to NPM

  • Make a new GH action that listens for workflow_dispatch. Only input is the version number
    • Run release scripts (piping to yes to continue prompts)
    • Open a dummy CL to DevTools repo, stage a roll, make sure CQ will pass (maybe too much work, defer for later and continue doing manually during PR review?)
    • Open PR
  • Reviewers have the opportunity to edit the release notes
  • PR is approved and merged
  • Another new GH action that listens for commit (and message matching ^v[\d.]+$) picks up the automation process
    • Create a new release. Can use the action directly–just need to write a script that excises the newest part of the changelog.md file to use as input to this action
    • Publish to npm
    • More? See next stage.

Stage 2: Automate rolling to DevTools

  • Either continuing on the previous action, or as a new one listening to the release event, create a new CL to the DevTools repo and send out for review

Stage 3: Cron

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions