E-Comm Domains Build and Release Automation

Goal state:

  • PR-specific builds which run linter, unit tests, automated test suite.

    • A passing build will be a requirement for merge (can be blocked with Bitbucket Premium)

  • Automatic builds and deployment to dev/test environment.

  • Push-button deployment to integration, staging and production.

  • Consolidated, easy-to-view, and easy-to-manage build and deployment pipelines

  • Definitions for pipelines live in the code

Current state:

Magento 2:

  • Epic Branch creates Feature Branches

    • Feature Branches are built on the ‘dev’ server automagically

      • The advantage here which usage is tbd, is that local devs have their own ‘environment’ hosted for testing

  • Generally feature branches get merged into an Epic Branch, which is auto built on the ‘dev’ server

    • QA testing takes place on this epic branch on the dev server before moving up in environments

  • Once epic work is complete and scheduled for release, epic branch is then merged into integration, then staging, then production

    • Currently no testing or usage is taking place in commerce cloud integration or staging environment, afaik

  • All Magento Cloud deploys are manually run by pushing to the Magento Cloud repository version of the same branches defined in Bitbucket (Integration, Staging, and Production)

Craft:

  • All Deployments are manually triggered using a bash script on the servers

  • Feature branches are merged to integration on its own Azure vm.

    • This is the ‘qa-www’ server

    • QA testing takes place here before moving up environments

  • Integration is then merged to staging, and finally production for the release

To do:

Determine what kind of build/release automation to use (Azure? Bitbucket?)
Fix broken unit tests that exist
Fix Sonarcloud issues
Pick a linter(s) for each repo

Notes: