Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
5080a9c
fix(cmt): add /cmt_dispatch and /cleanup_e2e endpoints
May 21, 2026
1dd004a
test(cmt): unit tests for /cmt_dispatch and /cleanup_e2e
May 25, 2026
d0e3d60
fix(e2e): remove dead mw_tracking_key primary cleanup path
May 25, 2026
e0c42f2
fix(e2e): make CMT webhook-driven; stop sending undeclared mw_trackin…
yasserfaraazkhan Jun 1, 2026
83c0fe0
fix(e2e): scope SHA cleanup by flow so concurrent same-SHA runs aren'…
yasserfaraazkhan Jun 1, 2026
a2293fd
chore(cmt): default CMT versions to latest ESR/feature patches (10.11…
yasserfaraazkhan Jun 1, 2026
8af9a48
feat(cmt): raise CMT version cap from 5 to 10
yasserfaraazkhan Jun 1, 2026
48abfce
feat(cmt): auto-derive CMT server versions from Mattermost releases
yasserfaraazkhan Jun 2, 2026
51fb239
Fix non-PR E2E cleanup: key on dispatch-time branch HEAD SHA
yasserfaraazkhan Jun 4, 2026
26da5ac
Auto-expire PR E2E instances and evict their tracking entries
yasserfaraazkhan Jun 4, 2026
5982567
Gate CMT trigger to release branches or manual dispatch
yasserfaraazkhan Jun 5, 2026
6c10c35
CMT: stop sending unused cmt_run_id input on dispatch
yasserfaraazkhan Jun 5, 2026
0db7844
CMT: trigger on RC tag cuts (vX.Y.Z-rc.N) in addition to manual dispatch
yasserfaraazkhan Jun 10, 2026
0ab5fd1
CMT: also trigger on mobile build-release-NNN branches
yasserfaraazkhan Jun 11, 2026
9d50896
push: skip desktop release-branch E2E (replaced by CMT RC-tag trigger)
yasserfaraazkhan Jun 11, 2026
2d3335c
push: remove release-branch E2E trigger (release-X.Y push)
yasserfaraazkhan Jun 11, 2026
afeb5cf
push: skip mobile main-branch E2E (per-PR-merge cost too high)
yasserfaraazkhan Jun 11, 2026
bdb6970
cmt: latest-marker for mobile CMT + remove dead nightly/release-trigg…
yasserfaraazkhan Jun 12, 2026
d65b042
push: drop dead `nightly` param from desktop e2e dispatch
yasserfaraazkhan Jun 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions config/config-matterwick.default.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,11 @@
"E2EUsername": "admin",
"E2EPassword": "",
"E2EServerVersion": "latest",
"E2EAutoTriggerOnRelease": true,
"E2EAutoTriggerOnMaster": true,
"E2EReleasePatternPrefix": "release-",
"E2ENightlyTriggerWorkflowName": "E2E Nightly Trigger",
"E2ETestWorkflowNames": ["Electron Playwright Tests", "E2E", "Compatibility Matrix Testing"],
"E2EInstanceMaxAge": 6
"E2EInstanceMaxAge": 6,
"E2EPRInstanceMaxAge": 24,
"CMTTriggerWorkflowName": "CMT Provisioner",
"CMTServerVersions": ["10.11.18", "11.7.1"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How are we planning to update these versions? Might better discuss in DM.

If understood correctly, the logic is to set "CMTServerVersions: []" in order to allow matterwick get the latest supported version and provisions instances for those versions.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@NARSimoes https://github.com/mattermost/gitops-platform/pull/72/changes#diff-d242a4ffee35793c04e9591a799f9136234ba74b276617420390641ae142aa9fR96

the deployed values will be empty so it will fetch the latest versions. In this config the values is just placeholders for demo purpose.

}
33 changes: 28 additions & 5 deletions server/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,19 +112,42 @@ type MatterwickConfig struct {
E2EUsername string
E2EPassword string
E2EServerVersion string
E2EAutoTriggerOnRelease bool
E2EAutoTriggerOnMaster bool
E2EReleasePatternPrefix string
E2ENightlyTriggerWorkflowName string // workflow name (name: field) of the nightly trigger workflow
E2ETestWorkflowNames []string // workflow names of the actual test workflows (for completion-based cleanup)
E2EAutoTriggerOnMaster bool
E2EReleasePatternPrefix string
E2ETestWorkflowNames []string // workflow names of the actual test workflows (for completion-based cleanup)
// E2EInstanceMaxAge is the minimum age (in hours) a non-PR E2E instance must reach
// before the periodic orphan-cleanup scan will delete it. This prevents the scan
// from destroying instances that are still being used by a currently-running test.
// Set to the longest expected E2E run duration plus a small buffer.
// Default (0): 3 hours.
E2EInstanceMaxAge int

// E2EPRInstanceMaxAge is the maximum age (in hours) a PR E2E instance may reach before
// the periodic cleanup scan deletes it. PR instances are intentionally kept alive between
// label toggles and across commits so the same servers can be reused for re-runs, so this
// is much longer than E2EInstanceMaxAge. When such an instance is reaped its in-memory
// tracking entry is also evicted, so re-applying E2E/Run provisions a fresh set.
// Default (0): 24 hours.
E2EPRInstanceMaxAge int

// CMTTriggerWorkflowName is the workflow name (the "name:" field) of the lightweight,
// scheduled CMT trigger workflow in the desktop/mobile repos. When matterwick receives
// a workflow_run "requested" event for this workflow it provisions one instance per
// version in CMTServerVersions and dispatches compatibility-matrix-testing.yml.
CMTTriggerWorkflowName string

// CMTServerVersions is an OPTIONAL manual override for the CMT version set. When non-empty
// it is used verbatim (values must be valid Mattermost image tags: full semver, no "v"
// prefix, e.g. "10.11.0"). When empty (the normal case) matterwick auto-derives the set
// from Mattermost's GitHub releases via Server.resolveCMTServerVersions.
CMTServerVersions []string
}

// defaultCMTServerVersions is the fallback CMT version set used only when auto-resolution
// fails (GitHub API error) and no manual override is configured. Kept reasonably current:
// the active v10.11 ESR plus a recent v11 release.
var defaultCMTServerVersions = []string{"10.11.18", "11.7.1"}
Comment thread
NARSimoes marked this conversation as resolved.

func findConfigFile(fileName string) string {
if _, err := os.Stat("/tmp/" + fileName); err == nil {
fileName, _ = filepath.Abs("/tmp/" + fileName)
Expand Down
Loading
Loading