Skip to content
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 -->
Comment thread
caseyisonit marked this conversation as resolved.
<!---
- 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.
Comment thread
caseyisonit marked this conversation as resolved.
- For example,`type(component): general summary`
Comment thread
caseyisonit marked this conversation as resolved.
-->

## 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.
-->
Comment thread
caseyisonit marked this conversation as resolved.

- [ ] _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: auto-update,ready-for-merge
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')
Comment thread
caseyisonit marked this conversation as resolved.
steps:
- name: Checkout PR branch
uses: actions/checkout@v4
Expand Down
4 changes: 1 addition & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
<!-- omit from toc -->

# Contributing best practices
# Contributing best practices <!-- omit from toc -->

Welcome! We're excited you're interested in improving Spectrum Web Components. Whether you're reporting bugs, adding new features, writing documentation, or helping other users, your contributions make this project better for everyone.

Expand Down
6 changes: 3 additions & 3 deletions PULL_REQUESTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
<!-- omit from toc -->

# Pull request best practices
# Pull request best practices <!-- omit from toc -->

This document outlines our team's expectations and best practices for creating, reviewing, and merging pull requests for Spectrum Web Components.

Expand Down Expand Up @@ -93,6 +91,7 @@ Incomplete templates may delay the review process.
## Labels and their meanings

- `ready-for-review`: PR is ready for maintainer review
- `ready-for-merge`: PR has two approvals and all tests pass. This label will keep the base of the PR up-to-date with main until it's merged.
- `WIP`: PR is still being worked on, not ready for review
- `blocked`: PR is blocked for some reason i.e. another PR needs to go in first
- `needs-tests`: PR is missing necessary tests
Expand All @@ -105,6 +104,7 @@ Incomplete templates may delay the review process.
- `on-hold`: PR needs more discussion.
- `Spectrum CSS`: An issue or pull request specific to the CSS being used by components.
- `Component: [Name]`: PR effects this component
- `auto-update`: Keep the base of the PR up-to-date with main automatically if there are no conflicts.

Apply labels promptly to help maintainers prioritize and manage the review queue.

Expand Down
145 changes: 119 additions & 26 deletions RELEASE_PROCESS.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,129 @@
# Releasing a new version of Spectrum Web Components
# Releasing a new version of Spectrum Web Components <!-- omit from toc -->

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.

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.
- [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)

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

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.
### Main successfully builds

## Publishing the docs site manually
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.

Navigate to SWC's [Actions](https://github.com/adobe/spectrum-web-components/actions) and click the `Build & publish site` link under the _Workflows_ heading.
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.

At the top of the table you will see a `Run workflow` dropdown; click that and run it from the `main` branch.
---

[Running manual workflows](https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow), GitHub documentation
### 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

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/or 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

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

Run `npm whoami` ensure that you are logged in with the user account for the public NPM registry.

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.

---

## Publishing the documentation site manually

### From GitHub

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.

### From the terminal

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.

### References

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