Stencil can either be released by CI/CD (via GitHub Actions), or manually. An automated release is the preferred way of creating a new release of the project. Manual releases should only be performed when there are extenuating circumstances preventing an automated release.
- Call a
code-freeze
in the Stencil team channel - Check that Stencil's Merge Queue is empty (nothing is queued for merge).
- Run the Stencil Production Release PR Creation Workflow
in GitHub
- Run the workflow from the
main
branch, unless the release is for a previous major version of Stencil. In that scenario, select thev#-maintenance
branch corresponding to the version of Stencil being released. For example,v3-maintenance
to release a new version of Stencil v3. - Stencil follows semantic versioning. Select the appropriate version from the dropdown for this release.
- Hit "Run Workflow" and wait for a new pull request to be created.
- Run the workflow from the
- Navigate to the pull request that was opened as a result of running the Stencil Production Release PR Creation Workflow.
- Complete the following (temporary) steps:
- Close the pull request and reopen it. This allows actions that the team gates pull requests on to run.
- Mark the pull request as ready for review.
- Ask the Stencil team for an approval on the PR. Only one approval is required for pull requests that only include the version bump/prerelease commit.
- Once approved, add it to the merge queue.
⚠️ Wait for the pull request to land before continuing to the next step.⚠️ - Run the Stencil Production Release Workflow
- Stencil should be published under the
latest
tag, unless the release is for a previous major version of Stencil. - The base branch should be set to
main
, unless the release is for a previous major version of Stencil. - Tail the logs to verify everything runs successfully.
- Stencil should be published under the
- Proceed to the Follow-Up section of this document to run manual follow-up tasks.
✍️ Authoring permissions are needed for an individual to perform a manual release. If needed, please ping Ionic leadership. ✍️
- Call a
code-freeze
in the Stencil team channel - Run
npm run clean
locally to clear out any cached build artifacts. - Run
npm run release.prepare
. This will install dependencies, bundle Stencil, run tests, etc. - Check the CHANGELOG.md and make sure it includes all the changes that have landed since the last release.
- Commit the changes - use the commit message ' v'. e.g.
git commit -m '🤦 v2.7.0'
(note the emoji is used literally, as opposed to ':facepalm:'). - Run
npm run release
, which will push the commit/tag to GitHub and publish to NPM. - Proceed to the Follow-Up section of this document to run manual follow-up tasks.
The following steps should be always run, regardless of whether an automated or manual release was performed.
- Publish the release notes in GitHub using GitHub's release notes form.
-
Set the tag dropdown to the newly-released version's git tag
-
Set the version title to
[VERMOJI] v[VERSION] ([yyyy.mm.dd])
. For example, v4.2.0 has a vermoji of 🌲, and was released on 2023.09.05. As a result, it was released with the title of 🌲 4.2.0 (2023-09-05). -
Copy the raw contents of CHANGELOG.md into the body
-
Ensure that the release is set as the latest (so long as we're not published a pre-release)
-
If anyone from the community contributed commit(s) to this release, append the following to the end of the GitHub release notes:
## Thanks 🎉 Thanks <GitHub_Usernames> for their contributions! 🎉
-
Hit "Publish Release"
-
- Navigate to the Stencil Site repository and:
- Merge any open PRs containing documentation that has been approved, but
not merged that is related to the release. Such PRs should be labelled as
do not merge: waiting for next stencil release
. It's a good idea to review all PRs though, just in case. - If the current release is a major or minor version, open a pull request creating a new version of the docs by following the guide in the stencil-site repo.
- Merge any open PRs containing documentation that has been approved, but
not merged that is related to the release. Such PRs should be labelled as
- If there are any 'next' branches in GitHub, say for a future major version of Stencil (e.g.
v5.0.0-dev
), now is a good time to rebase them against themain
branch. - End the code freeze in the Stencil team Slack channel.
- Perform the following tasks in JIRA:
- Ask someone with appropriate permissions to mark this version of Stencil as 'released' in JIRA on the 'Releases' page.
- Ask someone with appropriate permissions to stub out the next release and task for the release in JIRA.
- Ensure all GitHub Issues associated with stories/tasks that shipped in this version of Stencil are closed.
-
For each issue, add a comment stating the version of Stencil that included the fix/feature (be sure to update the version number and tag):
The fix for this issue has been released as a part of today's [Stencil vNUMBER release](https://github.com/ionic-team/stencil/releases/tag/TAG).
-
- If there's a blog post to go out (either today or this week), let the folks in the
#ask-ionic-devrel
channel know about the release and that the blog can go out. When the blog goes out, put an announcement in the#announcements
channel in Discord.