-
Notifications
You must be signed in to change notification settings - Fork 384
Creating Releases
Weston Ruter edited this page Feb 8, 2023
·
21 revisions
Use these icons to categorize changelog line items, as done by AMP core:
- ✨ New feature
- 🐛 Bug fix
- 🔥 P0 fix
- ✅ Tests
- ❄️ Flaky tests
- 🚀 Performance improvements
- 🖍 CSS / Styling
- ♿ Accessibility
- 🌐 Internationalization
- 📖 Documentation
- 🏗 Infrastructure / Tooling / Builds / CI
- ⏪ Reverting a previous change
- ♻️ Refactoring
- 🚮 Deleting code
- Create changelog draft on Wiki page.
- Check out the branch intended for release (
develop
for major,x.y
for minor) and pull latest commits. - Bump plugin versions in
amp.php
(2×: the metadata block in the header and also theAMP__VERSION
constant). Commit and push. - Wait for the GitHub actions to create new build ZIPs for the branch. Alternatively, you may create the build ZIP yourself:
npm install && composer selfupdate --2 && composer install --prefer-source --no-interaction && npm run build:prod
. - Install the
amp.zip
onto a normal WordPress install running a stable release build; do smoke test to ensure it works. -
Draft new release on GitHub targeting the required branch (
develop
for major,x.y
for minor).- Use the new plugin version as the tag (e.g.
1.2-beta3
or1.2.1-RC1
) - Use new version as the title, followed by some highlight tagline of the release.
- Attach the
amp.zip
build to the release. - Add changelog entry to the release, link to compare view comparing previous release, and link to milestone.
- Make sure “Pre-release” is checked.
- Use the new plugin version as the tag (e.g.
- Verify the release branch has the pushed commit! Double check GHA.
- Publish GitHub release.
- (Deprecated?) Create built release tag (from the just-created
build
directory):- Do
git fetch origin --tags && ./bin/tag-built.sh
- Add link from release notes.
- Do
- Make announcements on Twitter and the #amp-wp channel on AMP Slack, linking to release post or GitHub release.
- Bump version in release branch, e.g.
…-alpha
to…-beta1
and…-beta2
to…-RC1
- If prerelease is RC, create the release branch now. Bump
develop
to alpha. - Make any necessary changes to Development Builds Wiki page.
Contributors who want to make a new release, follow these steps:
- Copy these instructions into a Google Doc and share with those doing the release.
- Create changelog draft on Wiki page.
- Gather props list of the entire release, including contributors of code, design, testing, project management, etc.
- Update readme including the description, contributors, and screenshots (as needed).
- For major release, draft blog post about the new release.
- For minor releases, make sure all merged commits in
develop
have been also merged onto release branch.- To open all PRs that have been merged into the
1.5
branch since the1.5.3
release:for num in $(git log 1.5.3...origin/1.5 --oneline | ack '(?<=#)\d+' -o | sort | uniq); do open "https://github.com/ampproject/amp-wp/issues/$num"; done
- Make sure all milestoned issues and PRs match this set:
git log 1.5.3...origin/1.5 --oneline | ack '(?<=#)\d+' -o | sort | uniq > prs-from-branch.txt diff prs-from-gh.txt prs-from-branch.txt
- Make sure there are no duplicate entries by selecting the changelog contents and doing:
pbpaste | ack '(?<=/)\d+' -o | sort | uniq -c
. - Make sure the issues in the changelog match the issues in the milestone.
- To open all PRs that have been merged into the
- Check out the branch intended for release (
develop
for major,x.y
for minor) and pull latest commits. (Obsolete?) Delete theassets
directory and re-checkout from Git to ensure that orphaned build files are removed.(Maybe) Donpm install && composer selfupdate --2 && composer install --prefer-source --no-interaction && npm run build:prod
.- Update metadata:
- Bump plugin versions in
amp.php
(×2: the metadata block in the header and also theAMP__VERSION
constant). Verify vianpx grunt shell:verify_matching_versions
. Ensure patch version number is supplied for major releases, so1.2-RC1
should bump to1.2.0
. - Ensure "Tested Up To" is updated to current WordPress version.
- Re-run
wp amp docs generate
(alsonpx wp-env run cli wp amp docs generate
), verify changes, and commit any docs updates. - Commit and push.
- Bump plugin versions in
- Do
npm install && composer install --prefer-source --no-interaction && npm run package:prod
. - Verify PHP 7.0 syntax compatibility of Composer-generated files.
- Install the
amp.zip
onto a normal WordPress install running a stable release build; do smoke test to ensure it works. - Optionally do sanity check by comparing the
build
directory with the previously-deployed plugin on WordPress.org for example:svn export https://plugins.svn.wordpress.org/amp/trunk /tmp/amp-trunk; diff /tmp/amp-trunk/ ./build/
(instead of straightdiff
, it's best to use a GUI likeidea diff
,phpstorm diff
,opendiff
, ormeld
). -
Draft new release on GitHub targeting the required branch (
develop
for major,x.y
for minor):- Use the new plugin version as the tag (e.g.
1.2.0
or1.2.1
) - Attach the
amp.zip
build to the release. - Add changelog entry to the release and link to compare view comparing previous release.
- Use the new plugin version as the tag (e.g.
- Verify the release branch has the pushed commit! Double check GHA.
- Run
npm run deploy
to commit the plugin to WordPress.org. - Open confirmation email.
- Click view changes and compare SVN diff with previous release.
- Publish GitHub release.
- Press to Confirm the release on WordPress.org.
- Verify the release is available on WordPress.org; try installing it on a WordPress install and confirm it works.
- Create built release tag (from the just-created
build
directory):- Do
git fetch origin --tags && ./bin/tag-built.sh
- Add link from release notes.
- Do
- For new major releases, create a release branch from the tag. Patch versions are made from the release branch.
- Bump version in release branch. After major release (e.g.
1.2.0
), bump to1.3.0-alpha
ondevelop
; after minor release (e.g.1.2.1
) bump version to1.2.2-alpha
on the release branch. - Update docs on
amp-wp.org
, where$version
is the version that was just released:terminus remote:wp wordpress-amp.live -- docs generate --version=$version | cat -
- Update
develop
branch:- Re-run
npm install && composer install && npm run dev
. - For minor releases, bump
Stable tag
in theREADME.md
indevelop
. - Re-run
wp amp docs generate
, verify changes, and commit any docs updates.
- Re-run
- Close the GitHub milestone.
- Archive cards in project in Passed QA column.
- Make any necessary changes to Development Builds Wiki page.
- Publish release blog post (if applicable), including link to GitHub release.
- Make announcements on Twitter and the #amp-wp channel on AMP Slack, linking to release post or GitHub release.
- Alert any community members who are awaiting for fixes either on the support forum or GitHub issues.
- Changelog messages are added in the PR-related issue, within its reserved section, which is pre-populated from the issue template.
- Changelog messages start with a verb in its imperative form (e.g. “Fix bug xyz”), preferably one of the following words:
- Add (for features)
- Introduce (for features)
- Enhance (for enhancements)
- Improve (for enhancements)
- Change (for misc changes)
- Update (for misc changes)
- Modify (for misc changes)
- Remove (for removal)
- Fix (for bug fixes)
- N/A (skip changelog message)
- The changelog messages are categorized as follows:
- Added
- Enhanced
- Changed
- Fixed
- Changelog messages are automatically assigned to one of the defined categories based on the first word the message starts with. Default: “Changed”.
- Changelogs with the message “N/A” are skipped.
Maintainers must ensure that changelog messages are clear and follow the formatting guidelines.
Notice: Please also see the plugin documentation on amp-wp.org