Skip to content

chore: release docs update plus auto publish docs site #5436

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

Merged
20 changes: 12 additions & 8 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<!--- Provide a general summary of your changes in the Title above -->
<!--- PR titles should follow conventional commit and should include commit type as defined in in the PULL_REQUESTS guide -->
<!--- Conventional commit docs can be referenced here: https://www.conventionalcommits.org/en/v1.0.0/#summary -->
<!---
- Following conventional commit format, provide a general summary of your changes in the title above.
- Acceptable commit types in order of severity (high to low): feat, fix, docs, style, chore, perf, and test. Commit types are defined in PULL_REQUESTS.md.
- For example,`type(component): general summary`
-->

## Description

Expand Down Expand Up @@ -42,14 +44,16 @@
- [ ] Includes thoughtfully written changeset if changes suggested include `patch`, `minor`, or `major` features
- [ ] Automated tests cover all use cases and follow best practices for writing
- [ ] Validated on all supported browsers
- [ ] All VRTs are approved before author can update Golden Hash
- [ ] All VRTs are approved before the author can update Golden Hash

### Manual review test cases

<!--- For the author, please describe in detail what reviewers should test. -->
<!--- Include links and manual steps for how the reviewer should go through to verify your changes. -->
<!--- Be sure to include manual tests for all areas of the codebase that might be affected. Any components that use this for a dependency should be cross-checked for regressions. -->
<!--- For example, changes to Menu Item will effect Picker, Menu, and Action Menu. -->
<!---
- For the author, please describe in detail what reviewers should test.
- Include links and manual steps for how the reviewer should go through to verify your changes.
- Be sure to include all areas of the codebase that might be affected. Any components that use these changes for a dependency should be cross-checked for regressions.
- For example, changes to Menu Item will affect Picker, Menu, and Action Menu.
-->

- [ ] _Descriptive Test Statement_

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ jobs:
include_drafts: false
limit: 50
exclude_labels: blocked,wip
include_labels: in-review,ready-for-merge
include_labels: ready-for-review,ready-for-merge
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is the label we use in swc repo, @castastrophe let me know if I'm misunderstanding the word label here :)

Copy link
Contributor

@blunteshwar blunteshwar May 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit
what will happen with this change?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that makes sense to me. That utility will auto-rebase PRs with either of those labels present.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Honestly the utility can be a bit aggressive when used so I generally suggest a separate flag for it like "auto-update" to make sure you're opting into it specifically.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@castastrophe should we change the label and update our PR docs to include a section about updating base?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would love to better understand what you mean when you say "aggressive", maybe we sync in slack or huddle?

4 changes: 2 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ jobs:
site-build:
name: Build & publish site
runs-on: ubuntu-latest
# Run the job if manually triggered or if the commit message includes '#publish' & the check suite has passed
if: github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '#publish')
# Run the job if manually triggered or if the commit message includes '#publish' & the check suite has passed or if the commit message includes 'docs' and the check suite has passed
if: github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '#publish') || contains(github.event.head_commit.message, 'docs')
steps:
- name: Checkout PR branch
uses: actions/checkout@v4
Expand Down
147 changes: 121 additions & 26 deletions RELEASE_PROCESS.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,131 @@
<!-- omit from toc -->

# Releasing a new version of Spectrum Web Components

Users with permissions in the `@spectrum-web-components` organization on NPM can follow the following steps to create and publish a new version.
Users with permissions in the `@spectrum-web-components` organization on NPM can follow these steps to create and publish a new version.

- [Prerequisites](#prerequisites)
- [Main successfully builds](#main-successfully-builds)
- [The correct version of Node is installed](#the-correct-version-of-node-is-installed)
- [Using Node Version Manager](#using-node-version-manager)
- [Manually checking](#manually-checking)
- [Troubleshooting](#troubleshooting)
- [Github Token is set up](#github-token-is-set-up)
- [Generate a Github token](#generate-a-github-token)
- [Logged in to NPM](#logged-in-to-npm)
- [NPM 2FA authenticator app](#npm-2fa-authenticator-app)
- [Releasing to NPM — the good stuff](#releasing-to-npm--the-good-stuff)
- [Troubleshooting](#troubleshooting-1)
- [Publishing the documentation site manually](#publishing-the-documentation-site-manually)
- [From GitHub](#from-github)
- [From the terminal](#from-the-terminal)
- [References](#references)

## Prerequisites

### Main successfully builds

1. Merge all pull requests to be included in the release, and wait for the `main` branch to show that it has completed the required Circle CI jobs.
1. Check [Circle Ci build for `main`](https://app.circleci.com/pipelines/github/adobe/spectrum-web-components?branch=main) shows a `success` status
1. If it failed, click `rerun` dropdown and select `rerun from failed`.
2. If it continues to fail, investigate further until you can successfully get the `main` branch building.

---

### The correct version of Node is installed

This is important to confirm before next step because differing node versions will cause build issues.

#### Using Node Version Manager

1. Run `nvm use` (assumes a Node Version Manager install), and confirm you’re on an operable version of Node.

#### Manually checking

1. Run `node --version` to see what version you have installed
2. Check `.nvmrc` for node version requirements.
3. If the versions don't match, run `node install [version]`

#### Troubleshooting

- If you need to install the correct yarn version and have issues with `yarn` command not being recognized, run `corepack enabled`.
- Yarn 4 uses corepack and needs to be enabled to access the commands

---

### Github Token is set up

1. Check you have a GitHub token set up, run `echo $GITHUB_TOKEN`

#### Generate a Github token

1. If you do not have one, set it up in [Github settings > Developer settings > Personal access tokens](https://github.com/settings/personal-access-tokens)
1. Create a classic token
- Note: SWC changeset release token
- Set the expiration to a year or less
- Scopes:
- `repo (all)`
- `read:user`
2. Add generated token to `~/.zshrc` with `export GITHUB_TOKEN='token'`
- Make sure there isn't another export with the same name
3. Close your terminal to reset your profile, open terminal back up

---

### Logged in to NPM

1. Run `npm whoami` ensure that you are logged in with the user account for the public NPM registry
1. If not logged in, run `npm login` to sign in to your account

---

### NPM 2FA authenticator app

1. Go to `Account Settings` on NPM
2. Click `Modify 2FA` in the Two-Factor Authentication section
3. Follow the instructions to configure the authenticator app (i.e. Google Authenticator) of your choice
1. Should be able generate a 6-digit password that updates regularly

---

## Releasing to NPM — the good stuff

1. Run `git checkout main && git fetch && git pull && git clean -dfX` to ensure you are working with the latest code
2. Run `yarn install && yarn build` to install all dependencies and build the pre-processed assets for publication.
1. Confirm no files were updated or modified
3. Scan the version summary for any unexpected changes
1. In your IDE search `': major` , `': minor`, `': patch` , based on the results in the order of this search list, the highest level takes precedence
1. exclude files: `.changeset/README.md`
4. Open your authenticator app to have it ready
5. Run`yarn changeset-publish`
6. Enter the one-time password from your authenticator for NPM.
1. Wait for a fresh password; a stale timer might cause issues.
7. After the SWC packages are released, the React Wrapper packages will be generated.
1. This multi-phase approach ensures that the wrapped packages share the same version as the standard packages.
8. Enter a new one-time password from your authenticator for NPM.
9. The `yarn changeset-publish` command will automatically commit the changes to main with a commit message of `chore: release new versions #publish`
1. The docs site will publish automatically if the `#publish` string is included in the commit message and the check suite runs successfully.
10. Confirm the build on `main` passes

### Troubleshooting

- If publishing fails with an error:
- Check the [list of tags](https://github.com/adobe/spectrum-web-components/tags) to see if new tags have been released for your publishing attempt.
- If they were, run `yarn changeset-publish` again.

1. Merge all pull requests to be included in the release and wait for the `main` branch to show that it has completed the required CI jobs.
2. `git checkout main && git fetch && git pull && git clean -dfX`
3. Run `nvm use` assumes a Node Version Manager install, and confirm your on an operable version of Node.
4. `yarn install && yarn build` to install all dependencies and build the pre-processed assets for publication.
5. `npm whoami` ensure that you are logged in with the user account for the public NPM registry
6. `yarn changeset-publish`
7. Scan the version summary for any unexpected changes.
- Changes to the _major_ versions number are likely to point to undesired version numbers.
- Changes to the _minor_ or _feature_ version number should be confirmed as correct against the changes that have been made since the last release.
8. `Y` to confirm.
9. Enter one time password for npm.
10. After the SWC packages are released, the React Wrapper packages will be generated. This multi-phase approach ensure that the wrapped packages share the same version as the standard packages.
11. Scan the version summary for any unexpected changes.
- The versions _should_ be the same as those that just we applied to their matched SWC packages.
- Changes to the _major_ versions number are likely to point to undesired version numbers.
- Changes to the _minor_ or _feature_ version number should be confirmed as correct against the changes that have been made since the last release.
12. `Y` to confirm.
13. Enter a new one time password for npm.
---

The docs site will publish automatically if the `#publish` string is included in the commit message and the check suite runs successfully.
## Publishing the documentation site manually

If publishing fails with an error, check the [list of tags](https://github.com/adobe/spectrum-web-components/tags) to see if new tags have been released for your publishing attempt. If they were, run `yarn changeset-publish` again.
### From GitHub

## Publishing the docs site manually
1. Navigate to SWC's [Actions](https://github.com/adobe/spectrum-web-components/actions) and click the `Site publish` workflow.
2. At the top of the table, click the `Run workflow` dropdown — Use workflow from `main` branch, and click the `run workflow` button.

Navigate to SWC's [Actions](https://github.com/adobe/spectrum-web-components/actions) and click the `Build & publish site` link under the _Workflows_ heading.
### From the terminal

At the top of the table you will see a `Run workflow` dropdown; click that and run it from the `main` branch.
1. If you have the [GitHub CLI](https://cli.github.com) installed, you can alternatively run `gh workflow run publish.yml --ref main` from the command line.

[Running manual workflows](https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow), GitHub documentation
### References

If you have the [GitHub CLI](https://cli.github.com) installed, you can alternatively run `gh workflow run publish.yml --ref main` from the command line.
1. [Running manual workflows](https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow), GitHub documentation
Loading