Files
mattermost/server/build
Jesse HallamandNuno Simões cc7acaf2f7 [release-11.8] Backport CI buildenv + cache-warming changes (#37448)
* ci: standardize checkout action inputs across workflows (#36876)

* ci: standardize checkout action inputs across workflows

* ci: checkout in claude pipeline use default

* ci: make setup-go-work a Makefile prereq, remove explicit CI steps (#37268)

* ci: auto-build missing buildenv images for in-flight Go version bumps (#37286)

* ci: replace volatile e2e-platform-pkgs cache with shared webapp-setup (#37182)

* ci: replace volatile e2e-platform-pkgs cache with shared webapp-setup

* ci: replace volatile e2e-platform-pkgs cache in cypress template v2

* ci: tighten prep-deps comments

* fix: typo in webapp-setup comment

* chore(ci): warm node and npm caches daily; make CI jobs restore read-only (#37393)

* chore(ci): warm node and npm caches daily; make CI jobs restore read-only

Add daily scheduled workflows on master that warm two independent caches,
each in its own workflow mirroring its consumers:

- webapp-ci-cache-warm.yml warms the webapp node_modules cache
  (keyed on webapp/package-lock.json)
- e2e-ci-cache-warm.yml warms the E2E ~/.npm registry cache
  (keyed on the cypress/playwright/api lockfiles)

Webapp CI and the E2E/api CI jobs now restore these caches read-only instead
of writing them, so the daily jobs keep the caches warm. The E2E ~/.npm
restore is factored into a reusable restore-e2e-npm-cache composite action,
and webapp-setup gains a read-only mode for the node_modules cache.

* chore(ci): guard cache-warm workflows with a concurrency group

* chore(ci): drop unused node-cache-dependency-path output

* chore(ci): reuse webapp-setup for node_modules in e2e-tests-check

* Move e2e npm registry cache out of the node-cache- namespace (#37427)

The e2e npm registry cache keyed on node-cache-<os>-<arch>-npm-e2e-,
sharing the node-cache- prefix that actions/setup-node generates
automatically for its built-in npm cache (node-cache-<os>-<arch>-npm-).
Because the arch segment differs only by case (setup-node uses Node's
process.arch 'x64'; this action uses runner.arch 'X64') and GitHub matches
restore-key prefixes case-insensitively, the two buckets share a common
prefix. A future broad restore-key such as node-cache-<os>-<arch>-npm-
could then cross-restore one bucket's ~/.npm into the other.

Rename the key to e2e-npm-registry-<os>-<arch>-, giving it a distinct
namespace that is not a prefix of node-cache- in either direction and
matches the repo's content-descriptive e2e cache keys (e2e-cypress-deps-,
e2e-playwright-deps-, e2e-platform-pkgs-). Existing entries orphan and
age out; the daily warm job repopulates under the new key on next run.

* Adopt per-target .PHONY directives in server Makefiles (#37447)

* Converge generated-file CI checks on a single make generated target

The server-ci.yml workflow had many separate "run a make target, then fail
on any git diff" jobs, but make generated only covered a few of them, so the
target and CI drifted apart.

Expand make generated to regenerate every committed asset, adding
gen-serialized, migrations-extract, build-templates, mmctl-docs, and
modules-tidy, and collapse the per-asset check jobs into a single
check-generated job.

Split the backport migration guard into its own check-backport-migrations
job and make target, renaming the script to match.

* make generated

* git status --porcelain

* simplify permissions block given defaults

---------

Co-authored-by: Nuno Simões <nuno.simoes@mattermost.com>
2026-07-15 22:25:21 +03:00
..
2023-03-22 17:22:27 -04:00
2023-03-22 17:22:27 -04:00
2023-03-22 17:22:27 -04:00

About this folder

This folder contains some files that we use to build the mattermost-server and other files like privacy policy and licenses.

The Dockerfile in this folder (Dockerfile.buildenv) is the build environment for our current builds you can find the docker image to download here or build your own.

Docker Image for building the Server

We have a docker image to build mattermost-server and it is based on Go docker image.

In our Docker Hub Repository we have the following images:

  • mattermost/mattermost-build-server:dec-7-2018 which is based on Go 1.11 you can use for MM versions <= 5.8.0
  • mattermost/mattermost-build-server:feb-28-2019 which is based on Go 1.12 you can use for MM versions >= 5.9.0 <= 5.15.0
  • mattermost/mattermost-build-server:sep-17-2019 which is based on Go 1.12.9 you can use for MM versions >= 5.16.0
  • mattermost/mattermost-build-server:20200322_golang-1.14.1 which is based on Go 1.14.1 you can use for MM versions >= 5.24.x
  • mattermost/mattermost-build-server:20201023_golang-1.14.6 which is based on Go 1.14.6 you can use for MM versions >= 5.25.x
  • mattermost/mattermost-build-server:20201119_golang-1.15.5 which is based on Go 1.15.5 you can use for MM versions >= 5.26.x to 5.37.x
  • mattermost/mattermost-build-server:20210810_golang-1.16.7 which is based on Go 1.16.X you can use for MM versions >= 5.38.x