Release Process
May 12, 2026 ยท View on GitHub
In order to publish the ATT&CK website, follow the process outlined here. Hopefully to no one's surprise, only members with appropriate access can follow these steps.
Banner update only
If you are only updating the banner and nothing else, follow these steps.
- Go to https://github.com/mitre-attack/attack-website
- Update
website-banner.production. You may not include double quotes for "reasons".- If you are turning the banner off, then keep the file, but delete the contents.
- That's it!
Website changes
-
Verify that all features/bugs/documentation updates are tied to issues from the issue tracker.
- Update and commit any necessary changes to
CHANGELOG.md
- Update and commit any necessary changes to
-
Merge the
masterbranch into thedevelopbranch, since commits tomastermay have been made for banner updates.git checkout develop git merge origin/master -
Verify that all required changes for the next release are present in the
developbranch, including merging finished feature/bugfix branches.- Update the website version number in
modules/site_config.py - Update any dependencies needed in
requirements.txt. - If applicable, update the year in the following files:
attack-theme/templates/general/base-template.htmlmodules/website_build/static_pages/terms-of-use.mdNOTICE.txtLICENSE.txtREADME.md
- Update the website version number in
-
If this website build includes ATT&CK/STIX content updates, see the appropriate section below for either Major or Minor ATT&CK releases
-
Build the website locally to do one final test that it looks correct
- e.g.
python update-attack.py --attack-brand --extras --no-test-exitstatus - Look in the generated
reports/broken-links-report.txtfor broken links. Any broken links that start with/versions/v*can be ignored.
- e.g.
-
Commit and push changes to the
developbranch. -
Open and accept the pull request from
developtomasterhttps://github.com/mitre-attack/attack-website/pulls.
ATT&CK Content updates
Consult these sections as needed for step 4 in the above list.
-
Create a detailed changelog for the release:
- Create a new folder:
modules/resources/docs/changelogs/v<previous-ATT&CK-version>-v<current-ATT&CK-version> - Create a detailed changelog and excel files using mitreattack-python
ATTACK_WEBSITE_REPO="/path/to/attack-website/repo" ATTACK_PREVIOUS_VERSION=18.1 ATTACK_CURRENT_VERSION=19.0 # generate detailed changelog uvx --from mitreattack-python attack-changelog \ --attack-website-links \ --old-version ${ATTACK_PREVIOUS_VERSION} \ --new-version ${ATTACK_CURRENT_VERSION} \ --output-dir ${ATTACK_WEBSITE_REPO}/modules/resources/docs/changelogs/v${ATTACK_PREVIOUS_VERSION}-v${ATTACK_CURRENT_VERSION} # generate excel files uvx --from mitreattack-python attack-to-excel from-release \ --version ${ATTACK_CURRENT_VERSION} \ --output=${ATTACK_WEBSITE_REPO}/modules/resources/docs/attack-excel-files - Create a new folder:
Major release
-
Update
data/versions.json- Current: all information should reference the latest release
- Previous:
- Dates should not overlap
cti_url: should be tag URL for the release on the mitre/cti repocommit: should be sha256 hash of latest commit from mitre-attack/attack-website on thegh-pagesbranch prior to new content release
-
(If not already completed for this release) Run the
archive-website.pyscript to get the previously released archives of the ATT&CK website- Upload the
tar.gzof the latest previous version of the website to the Archived Website Files release - Optional - If sufficient changes were made to the archive process then re-upload all
tar.gzfiles
- Upload the
-
Update notes
- Add new file:
modules/resources/static_pages/updates-<month>-<year>.md - Update former updates announcement file to specify end date of old release
- Create the release-summary table for the new updates page
- This is the markdown table at the top of the release announcement that lists the ATT&CK version, start/end dates, MITRE/CTI release links, and changelog links
- TODO - write a script to create the html table data for new releases
- Add new file:
-
Update CHANGELOG.md
- Add a bullet point to the Features section in the following format
* Release [ATT&CK content version X.Y](https://github.com/mitre/cti/releases/tag/ATT%26CK-vX.Y). See the release notes [here](https://attack.mitre.org/resources/updates/updates-<month>-<year>/). -
Update the
layer_versionandnavigator_versioninmodules/site_config.pyif navigator version or navigator layer version has been updated.
Check the layer specification version here and the navigator version here.
Minor release
-
Update
data/versions.json- Current: all information should reference the latest release
- Previous: leave alone!
-
Update
modules/resources/static_pages/updates-<month>-<year>.md- Minor releases currently don't get their own update page, so make the following updates to the table at the top of the page:
- Under the Data column: Add a new entry for the latest tag, using
<br />to separate them - Under the Changelogs column: Add a new entry for the latest detailed changelog, for both HTML and JSON (also using
<br />as a separator) - TODO - write a script to update the html table data for new releases
- Under the Data column: Add a new entry for the latest tag, using
- Minor releases currently don't get their own update page, so make the following updates to the table at the top of the page:
-
Update CHANGELOG.md
- Add a bullet point to the Features section in the following format
* Release ATT&CK content version X.Y. See detailed changes [here](https://github.com/mitre/cti/releases/tag/ATT%26CK-vX.Y). -
Update the
layer_versionandnavigator_versioninmodules/site_config.pyif navigator version or navigator layer version has been updated.
Check the layer specification version here and the navigator version here.