How to create a service release
See also release-process for more general guidance.
0) Prerequisites
- Fetch maintainer scripts from https://git.openwrt.org/maintainer-tools.git
- Ensure that GPG and usign keys are published and working according to https://openwrt.org/docs/guide-user/security/keygen
1) Prepare release tag
- Fetch pristine source tree, best do a new local clone, e.g.
git clone git@git.openwrt.org:openwrt/openwrt.git git checkout openwrt-24.10
- Replace branch name with appropriate one
- Place
maketag.shscript from maintainer repo into the clone - Execute
./maketag.sh -k 818021EBB6C9ECDA -v 24.10.0- Replace key ID and version number with appropriate values
- Review auto generated commits with
git log -p -2- Should show one setting adjustment and one setting revert commit
- Review auto generated tag with
git show v24.10.0- Should show a git tag with associated GPG info and commit references
- Replace version number accordingly
- Compare the files changed automatically with a previous tag
git diff v24.10.0-rc7 v24.10.0 -- feeds.conf.default include/version.mk package/base-files/image-config.in version version.date
- Check the signature on the tag with
git verify-tag -v v24.10.0- Should show “Good signature from <your name>
- Push auto generated commits and tag to the remote:
git push origin openwrt-24.10 git push --follow-tags origin refs/tags/v24.10.0:refs/tags/v24.10.0
- Replace version numbers and branch name accordingly
2) Trigger builds
-
- Use credentials provided by admin
- Open the “Builds → Builders” page
- Select
00_force_buildbuilder - Click on
Force buildsbutton at the top of the page
- Fill out the form
- Enter your name at
Your nameinput box - Enter for example “Trigger release builds” as reason
- Select Git tag you want to build from
Build taglist - Click “Force Build”
- Review buildbot activity in waterfall view
2.5) Check build metadata
Once per branch
- If this is the first build on a new branch, then updates to the ASU server config must be made as follows. (If this is a release candidate or maintenance release on an existing branch, just skip down to the “Every release build” section.)
- Find the commit for the branch:
$ git log --oneline ^main origin/openwrt-25.12 | grep 'set branch defaults' 12316d0280c5 OpenWrt v25.12: set branch defaults
- Convert the branch to the OpenWrt rev number:
$ scripts/getver.sh 12316d0280c5 r32295+1-c25265953b9c
- Add the branch-name:rev-number entry to the ASU config, should be somewhere around:
https://github.com/openwrt/asu/blob/main/asu/config.py#L86
... }, "25.12": release(32295), "24.10": release(27990), "23.05": release(23069),
Every release build
- In order for the ASU system to function properly, there are three metadata files that are re-generated correspond to the result of the build. Once the waterfall shows all builds as complete, look at:
- https://downloads.openwrt.org/.versions.json - Verify that the
stable_version,oldstable_versionandupcoming_versionare correct;upcoming_versionshould be what was just built (24.10.0-rc3) for all RC builds, but blank for all maintenance releases. The topmost value in theversion_listshould be the just-completed build. This file is used by the ASU server to construct its branches and versions in https://sysupgrade.openwrt.org/json/v1/overview.json. - https://downloads.openwrt.org/releases/24.10.5/.overview.json - Must exist and is expected to contain ~1850 profiles. This file is used by Firmware Selector, so any missing entries in the json will be reflected there when you try to select the device.
- https://downloads.openwrt.org/releases/24.10.5/.targets.json - Must exist and is expected to contain ~90 target/subtarget pairs mapping to their architecture. These files are used to flesh out ASU's https://sysupgrade.openwrt.org/json/v1/overview.json.
- The docker images for each imagebuilder must be built. Look at https://github.com/openwrt/docker/actions/workflows/containers.yml and see if they are running.
- For the 24.10.4 release, the docker image build was forced manually. The results looked like this as an example of what to expect: https://github.com/openwrt/docker/actions/runs/17896066567
3) Create changelogs
- Copy
make-changelog.plfrom maintainer repo into the local clone- The script needs the perl module JSON.pm, install
libjson-perlandlibtext-csv-perlon Debian
- Execute
./make-changelog.pl v24.10.0..v24.10.1- Replace version numbers accordingly
- Revision range should cover all commits since last release
- Suggest to redirect stdout to a file
- Copy resulting change log into https://openwrt.org/releases/24.10/changelog-24.10.0
- Replace base and minor versions accordingly
- Take care to preserve the first introductory paragraph in the wiki pages
- Ideally use a prior change log page as template
4) Update release information page
- Once the release builds are finished and uploaded to https://downloads.openwrt.org/releases/24.10.0/targets/ ...
- ... head to release series parent page at https://openwrt.org/releases/24.10/start
- Replace base version accordingly if needed
- Update timeline and latest version number, links etc. to point to the latest release
- Start preparing release notes at https://openwrt.org/releases/24.10/notes-24.10.0
- Replace version accordingly
- Mention most important changes since last release
- Use old release note pages as template
- Good technique is to skim through detailed change log and taking note of outstanding commits or series of commits
- Add redirect for ToH toh_maintenance
5) Update ToH to new release
6) Announce
- Write an announcement to the mailing lists
- Write an announcement in the forum
- All forum users in the developer, moderator or admin group can create new topics in this forum category
- Use https://forum.openwrt.org/t/lede-v17-01-4-service-release/7573 as template
- “Pin” the topic for 4-8 weeks
- Update references to the most recent release on the following services:
- Update IRC channel topics (ping rmilecki)
- Update https://sysupgrade.openwrt.org/ (ping aparcar)
- Update https://downloads.openwrt.org page (ping jow)