-
Source Code
These changes can be applies during normal development in the public repository, or as patches stored in the data repository and applied to final packages by the build script.
-
Version Metadata
MyBB’s version and the corresponding version code (digit-only format) is hardcoded in multiple locations:
-
MyBB::$version
,MyBB::$version_code
(inc/class_core.php)Indicates the current version. As a result, a modified
inc/class_core.php
file is always included in the update package. -
$langinfo['version']
in the English language manifest (inc/languages/english.php)Indicates the latest version in which changes to language phrases occurred. If no phrases were modified, this values is left unchanged.
-
version
attributes of<theme>
,<stylesheet>
,<template>
(install/resources/mybb_theme.xml)Indicates the latest version in which changes to the default theme occurred, and in specific stylesheets and templates. If the theme was not modified, these values are left unchanged.
-
-
Update File
Modified templates and settings should result in a
install/resources/upgrade*.php
file created for the upgrade process (no custom code is needed for synchronization of templates and settings). See examples.The file’s comment is parsed by the upgrade script, and should indicate which previous versions the script applies to.
-
-
Repository Maintenance
-
Public Repositories
Issue and Pull Requests are reviewed to ensure that:
- the version Milestone doesn’t contain unresolved entries,
- all Issues resolved after the previous version are assigned to the new version’s Milestone,
- correct metadata is attached to Milestone entries (i.a. closed;
s:resolved
label).
The final public commit for the version is marked with a signed
mybb_*_build
git tag. -
Internal Repositories
Final security patches (if any) are added to the data repository on the
mybb_*_build
branch.
-
-
Pre-Release Public Testing
The
mybb_*_build
git tag is used to provide downloadable packages of the final codebase that excludes non-public patches.-
A pinned announcement thread is created in the Development forum.
Values copied from the internal Getting * Ready thread:
- Comment, basing on the
comment
value in Additional values for version .md (if present; converted from Markdown to MyCode) - Testing focus list, basing on Public QA focus (if present)
- Comment, basing on the
-
The link is shared and pinned in the public Discord
#18-development
channel.
Codebase changes applied after the announcement are noted in the thread.
The recommended minimum waiting period between the announcement and the version’s final release is 7 days.
-
-
Package Building and Testing
The
mybb/mybb-build
build script is used to perform tasks related to preparing releasable packages and associated information.- The
mybb/mybb-build
repository is downloaded. - Previous content of
input/patches/
is deleted (if any). - The build properties in the
input/build.properties
file are configured:targetVersion
: the version numbersourceRepositoryBranch
: the tag/branch in themybb/mybb
repository; usuallymybb_*_build
, ormybb_*
pointing to a previous MyBB version for a security-only releaseinputFilesRepositoryBranch
: the branch in the data repository; usuallymybb_*_build
, ormaster
if no patches are necessaryincludeInstallInUpdateSet
:true
if running the upgrade script is required,false
otherwisepackageDate
: the build date (GMT+0)
- The build process is run.
- The build log is verified.
- The
input/
andoutput/
directories are added to abuild_*_rc*.zip
archive (indicating the version code and the Release Candidate number). - The created archive is signed with the Team member’s public key.
- A post is added to the Getting * Ready thread, including:
- tags and commit hashes of repositories used during the build process:
mybb/mybb
- the data repository
mybb/mybb-build
- downloadable package and the Team member’s signature
- Release Candidate (RC) number
- tags and commit hashes of repositories used during the build process:
- A link to the package post is added to the Packages list in the first post:
https://... RC1 (YYYY-MM-DD 00:00)
Links to posts with previous packages are crossed out (
[s]...[/s]
). - The link to the package post is posted in the internal Discord
#staff-18-organization
channel, indicating the RC number. - The packages are tested by Team members according to the Internal QA focus list in the Getting * Ready thread.
The recommended minimum waiting period between the last Release Candidate is added and the version’s final release is 3 days.
- The
-
Announcements Preparation
The package- and version-related information is completed and verified internally:
- Updates to the MyBB.com website (
mybb/mybb.com
):_versions/*.md
version metadata for Release Notes, combined from:- the partial
*.md
file generated by the build script - Additional values for version .md from the Getting * Ready thread
- the partial
checksums/release_mybb_*.txt
checksums file, fully generated by the build script.
- Release Blog Post, with:
- the title and content generated by Jekyll basing on the version metadata at
/versions/release-blog-post/
(locally), separated by a---
line, - the author set to MyBB Team,
- tags Release, Updates, and Security if the release addresses security-related issues.
- the title and content generated by Jekyll basing on the version metadata at
- Updates to the Docs.MyBB.com website (
mybb/docs.mybb.com
):_data/mybb18_plugin_hooks.yml
plugin hook data, fully generated by the build script.
- Updates to the MyBB.com website (
-
Publication
The packages and associated information are published. These tasks should be executed without unnecessary delay.
- The packages are uploaded to
resources.mybb.com
and verified. - The MyBB.com website is updated by pushing new files to the
mybb/mybb.com
repository:_versions/*.md
version metadata (producing Release Notes and updating MyBB.com latest version information),checksums/release_mybb_*.txt
checksums.
The new mybb.com/download page and the version’s Release Notes are verified.
The download links for packages on the Release Notes page are verified.
- The Release Blog Post is published.
- A link to the Release Blog Post is posted in:
- @[email protected] on Mastodon (automated by WordPress.com),
- @mybb on Twitter,
- @mybbsecurity on Twitter (security releases only), indicating the number of addressed vulnerabilities per severity:
MyBB 1.8.x addressing (...) high, (...) medium, (...) low risk vulnerabilities has been released. https://blog.mybb.com/...
- public Discord
#18-support
channel (pinned message; links related to previous versions are unpinned).
- The packages are uploaded to
-
Repository Updates
- Synchronization commits, based on individual non-public patches are pushed to the public repository (if any).
- The resulting
mybb/mybb
repository state is tagged (signedmybb_18xx
git tag indicating the version code). - A Release is created and all packages are attached (
mybb_*.zip
,changed_files_*.zip
, andbuild_*.zip
, containing the input and output of the build script). -
GitHub is added to the list of package locations in the version metadata file:
locations: - name: github.com/mybb/mybb/releases/
-
Advisory Publication
- Security Advisories for addressed vulnerabilities are published.
- Links to published Security Advisories are added to:
-
the Release Blog Post:
Medium risk: Example vulnerability (<a href="...">advisory</a>) — reported by ...
-
the Release Notes:
references: - url: ... title: "Advisory: ..." type: advisory
-
-
Titles and links to published Security Advisories are added as replies to the @mybbsecurity version announcement tweet:
Advisory: ... https://...
-
Archiving
The Release Notes and Release Blog Post pages are archived using web.archive.org.
-
Documentation & Forum Updates
-
Documentation
-
Community Forums & Discord
-
Public
- The Pre-Release thread is unpinned and locked.
- The link to the Pre-Release thread in the public Discord
#18-development
channel is unpinned.
-
-
Third Parties
-
Security Workflow
- Reporters of addressed security issues are contacted.
- CVE update requests are submitted to relevant CNAs.
-
-
Internal
- The Post-release tasks list is checked.
- A link to the Release Blog Post is posted in the Getting * Ready thread.
- The Getting * Ready thread is unpinned.
- A new Getting * Ready thread is created and pinned.
-