ATT&CK Workbench Development Process

November 6, 2025 · View on GitHub

Overview

This document outlines the development and release process for the ATT&CK Workbench ecosystem, including branch management, release channels, and deployment strategies.

Scope

This process applies to all ATT&CK Workbench ecosystem projects:

Release Management

Semantic Versioning

We strictly follow Semantic Versioning (MAJOR.MINOR.PATCH):

  • MAJOR: Breaking changes
  • MINOR: New features (backwards compatible)
  • PATCH: Bug fixes

Automated Releases

  • Tool: Semantic Release automates version management and package publishing
  • Artifacts:
    • Docker images published to GitHub Container Registry (ghcr.io)
    • NPM packages published to the official npm registry
  • Triggers: Releases are triggered by commits to stable branches following conventional commit format

Semantic Release Plugins

The default semantic-release configuration includes:

  1. @semantic-release/commit-analyzer - Analyzes commits to determine version bump
  2. @semantic-release/release-notes-generator - Generates changelog
  3. @semantic-release/npm - Updates package.json and publishes to registry
  4. @semantic-release/github - Creates GitHub releases and tags

Branch Strategy

Stable Branches

These branches are guaranteed to compile, run, and be deployable via Docker:

BranchVersionPurposeDeployment Target
main4.0.0Production-ready releasesProduction, Pre-Production
next4.1.0Upcoming minor releasesPre-Production
next-major5.xBreaking changes & experimental featuresPreview

Unstable Branches (Pre-release Channels)

Each stable branch has corresponding pre-release channels for testing:

Stable BranchAlpha ChannelBeta ChannelPurpose
mainalphabetaHotfix testing
nextnext-alphanext-betaFeature testing
next-majornext-major-alphanext-major-betaExperimental testing

Development Workflow

Change TypeTarget BranchExample
HotfixesalphabetamainCritical bug fixes
Features (backwards compatible)next-alphanext-betanextNew endpoints, UI components
Breaking Changesnext-major-alphanext-major-betanext-majorAPI redesigns, major refactors

Release Flow

  1. Development: Features developed in feature branches
  2. Pre-release Testing: Merged to alpha channel for initial testing
  3. Beta Testing: Promoted to beta channel for wider testing
  4. Stable Release: Merged to stable branch, triggering automatic release
  5. Deployment: Docker images deployed to appropriate environments

CI/CD Pipeline

The CI/CD pipeline automatically:

  1. Runs tests on all pull requests
  2. Executes semantic-release on commits to stable branches
  3. Builds and publishes Docker images to ghcr.io
  4. Tags releases in GitHub

Code Quality Standards

Linting & Formatting

ToolPurposeWhen Run
ESLintCode lintingPre-commit (auto-fix), CI pipeline
PrettierCode formattingPre-commit (auto-fix)
CommitlintConventional commit formatCommit-msg hook, CI pipeline

Git Hooks (via Husky)

HookCommandPurpose
pre-commitnpm run formatAuto-fix linting and formatting
pre-pushnpm run testEnsure tests pass before push
commit-msgcommitlint --editValidate commit message format

Contributing

For detailed information on contributing to the ATT&CK Workbench, including commit message formats, development workflow, and coding standards, please see our Contributing Guide.

Version Management

  • The version field in package.json is set to 0.0.0-semantically-released
  • Actual versions are managed entirely by semantic-release
  • Never manually update version numbers

Questions?

For questions about this process, please open an issue in the relevant repository or contact the development team.