Commit Graph
119 Commits
Author SHA1 Message Date
fd7716a25c Cherry pick of #36348 update buildserver go base image versions to 1.25.9 (#36359)
Made-with: Cursor
(cherry picked from commit 1ead9ff038)

Co-authored-by: Eva Sarafianou <eva.sarafianou@gmail.com>
2026-05-01 16:06:12 +00:00
Jesse HallamandGitHub 4d028d557b Support Elasticsearch v9 alongside v8 (#35781) 2026-04-10 11:15:07 -03:00
Jesse HallamandGitHub 12aedfdcae Simplify Apple Silicon docker-compose support (#35975) 2026-04-08 07:59:04 -04:00
Carlos GarciaandGitHub fd2dd1c618 updated go to version 1.25.8 (#35817)
* updated go to version 1.25.8

* updated gotestsum version to work with go 1.25.8

go 1.25 does not work with indirect tools 0.11 dependency pulled by
gotestsum.

* Use sync.WaitGroup.Go to simplify goroutine creation

Replace the wg.Add(1) + go func() { defer wg.Done() }() pattern with
wg.Go(), which was introduced in Go 1.25.

* pushes fips image on workflow dispatch to allow fips test to run on go version update

* fix new requirements for FIPS compliance imposed on updating to go 1.25.8

* updates openssl symbol check for library shipped with FIPS new versions

go-openssl v2 shipped with FIPS versions starting from 1.25 uses mkcgo to generate
bindings causing symbol names to be different.

* removes temp workflow-dispatch condition

* keep versions out of agents md file
2026-03-27 21:11:52 +01:00
Carlos GarciaandGitHub 0d01619585 updates buildserver go base image versions to 1.25.8 (#35811) 2026-03-26 23:21:00 +01:00
Jesse HallamandGitHub 4c25d03f67 Automate setup-go-work as a dependency for Make targets (#35476)
* automate setup-go-work

It's all to easy to forget to `make setup-go-work`, only to run into mysterious build failures. Let's default to doing this automatically, unless `SKIP_SETUP_GO_WORK` is true (or the legacy `IGNORE_GO_WORK_IF_EXISTS`, which was oddly named, since we can't actually ignore it.)

* Make setup-go-work recipe fail-fast with set -e
2026-03-20 19:12:20 +00:00
Alejandro García MontoroandGitHub fa7668ae0d MM-67668: Replace Promtail with OpenTelemetry collector (#35381)
* Add container name to Docker logs

This will allow for querying Loki by container's name:

  {job="docker",container_name="mattermost-postgres"}

* Configue Loki to prepare for OTLP ingestion

- Add a volume to Loki container to get the config
- Configure Loki with the expected labels so that we can query by job,
  app, container.name...

* Add OpenTelemetry collector configuration

There are three pipelines:
1. logs/mattermost scrapes the logs from mattermost.log, parsing the
   timestamp and severity, and pushes them to Loki.
2. logs/docker scrapes the Docker logs from *-json.log, parsing the
   timestamp, the log itself and the container name, and pushes them to Loki.
3. metrics/docker scrapes the Docker socket to retrieve the containers'
   uptime values and pushes them to Prometheus.

* Replace Promtail with OpenTelemetry collector

* Update build tooling for OpenTelemetry collector

1. Make sure that the logs directory is created
2. Swap Promtail with OpenTelemetry collector

* Scrape collector to get Docker stats

Prometheus needs to scrape the OpenTelemetry collector in the exposed
port to get the Docker stats, so that we can query the uptime with
metric container_uptime_seconds, which has a container_name label to
filter by container.

* Update Grafana dashboard for Docker health checks

1. Use Prometheus as the datasource in all queries
2. Simplify the mappings to either 0 (offline, red) or 1 (online,
   green).
3. Unify all queries on container_uptime_seconds, filtering by
   container_name, and making sure that the latest value we got is at most
   15 seconds old, so that it does not show stale data.
4. Add Redis health check, that was missing
5. Update the dashboard title to Docker containers

* Tune Loki and OTel collector configs for local dev

- Switch filelog receivers to start_at: beginning so existing logs are
  ingested on collector startup, not just new entries.
- Fix Docker log timestamp layout to use 9s (variable-length nanos)
  instead of 0s (fixed-width), matching actual Docker JSON log format.
- Add ingester max_chunk_age to keep chunks open longer in the
  single-instance dev setup, so that we can ingest older logs (the
  window is max_chunk_age/2).
- Relax Loki limits for local development: allow unordered writes,
  disable old-sample rejection, and raise ingestion rate/burst to 64 MB
  to avoid throttling during bulk ingest.
2026-02-27 16:48:17 +01:00
Nuno SimõesandGitHub 436f96f0e1 server: ignore tmp mattermost/shared in file (#35316)
The generation of notice-file is failing with
```
2026/02/16 10:20:39 NPM load failed  @mattermost/shared
2026/02/16 10:20:39 Error occured while generating notice.txt @mattermost/shared:http status code 404 when downloading "https://registry.npmjs.org/@mattermost/shared"
```

This relates with https://github.com/mattermost/mattermost/pull/35065 because
the package is still local and isn't yet published in npm

So, this is ignores the shared package while it isn't published.
2026-02-16 14:45:33 +01:00
Carlos GarciaandGitHub 8927e7e67e bumps base image version to build new mattermost-build-server images (#35281) 2026-02-13 15:26:32 +01:00
Carlos GarciaandGitHub feca30d85f support for Elastic(Open)search CJK analysis plugins (#34784)
* support for Elastic(Open)search CJK analysis plugins

* addresses PR review comments

* addresses PR comments

* moves CJK based tests to own file and adds some more

Dockerfile for open and elasticsearch are changed to install required
plugins for testing or running locally.

* properly sort error messages

* fix style issues

* removes trailing space
2026-02-12 10:05:23 +01:00
f3c6602725 Allow building the server on FreeBSD (#25838)
* Allow building the server on FreeBSD

* Fix merge

---------

Co-authored-by: Erwan Martin <erwan@pepper.com>
Co-authored-by: Alejandro García Montoro <alejandro.garciamontoro@gmail.com>
2026-02-03 14:05:16 +00:00
Eva SarafianouandGitHub 86024cb4cc Update runtime chainguard image for fips (#34997) 2026-01-20 23:09:51 +02:00
Carlos GarciaandGitHub 9e30501885 updates Dockerfile go version to 1.24.11 to generate new build containers (#34871) 2026-01-07 23:11:37 +01:00
35a6e84338 Bump ubuntu base image version (#31819)
* Bump ubuntu base image version

* Update to Oct 2025 version

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-11-19 12:02:40 +02:00
97dedb9de5 Migrate from gopkg.in/yaml.v3 to github.com/goccy/go-yaml (#34510)
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 08:52:05 +01:00
Carlos GarciaandGitHub 8f24b500a6 selinux security context fixes in docker compose (#34394)
allow docker to apply proper security context to volume mounts
in case host is running SELinux security by adding :Z in affected
volume declarations
2025-11-14 17:32:56 +01:00
0d181ca215 Push Proxy Authentication (#34211)
* Initial Implementation of Push Proxy Authentication

* Include Config Listener for Leader plus delete startup function as job scheduler runs on initialization

* Remove push proxy auth from local imports

* Add push proxy auth to external imports

* Add push proxy auth error messages

* Update error codes

* Fix enterprise dep definition

* make i18n-extract

* Mock System store Get

* m

* m

* m

* m

* Update serverID header

* Add install type env var to docker

* Update Push Proxy config with new options

Global, US, Germany and Japan. Previous configurations will keep working

* use model.SafeDereference

* Delete token when new push proxy URL is empty

* ServerID header only if auth token is available

---------

Co-authored-by: Daniel Schalla <daniel@mattermost.com>
Co-authored-by: Nick Misasi <nick.misasi@mattermost.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2025-11-12 20:16:44 +02:00
c9837e1a8c Add Agents token tracking Grafana dashboard template (#34324)
* Add prometheus data source from agents, add agents dashboard

* Fix graphs, tables

* Apply suggestion from @nickmisasi

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-11-05 14:22:26 -05:00
Pavel ZemanandGitHub 687c1f24fe Update grafana dashboards in local dev docker environment (#34266)
* Enabling Prometheus, Grafana, Loki and Promtail running as containers by default in local dev environments

* Updating the Grafana dashboards available in the local dev environment

* Revert "Enabling Prometheus, Grafana, Loki and Promtail running as containers by default in local dev environments"

This reverts commit 3a252a8383.

* this config change is not needed anymore
2025-10-24 01:04:59 +02:00
Alejandro García MontoroandGitHub 6eacd7c534 Bump Postgres minimum supported version to 14 (#34010) 2025-10-01 09:49:05 +02:00
Jesse HallamandGitHub 6b72b2f308 build 1.24.6, ignore Docker.buildenv* for server-ci (#33979) 2025-09-26 09:43:47 -03:00
LorenzoandGitHub 7f83098b33 fix: keycloak attribute mappings to match realm-export.json (#33964) 2025-09-25 05:29:22 +00:00
sabrilandGitHub f10997a351 fix /var/tmp permission (#33918) 2025-09-17 14:36:30 +00:00
06b1bf3a51 MM-64878: FIPS Build (#33809)
* pin to ubuntu-24.04

* always use FIPS compatible Postgres settings

* use sha256 for remote cluster IDs

* use sha256 for client config hash

* rework S3 backend to be FIPS compatible

* skip setup-node during build, since already in container

* support FIPS builds

* Dockerfile for FIPS image, using glibc-openssl-fips

* workaround entrypoint inconsistencies

* authenticate to DockerHub

* fix FIPS_ENABLED, add test-mmctl-fips

* decouple check-mattermost-vet from test/build steps

* fixup! decouple check-mattermost-vet from test/build steps

* only build-linux-amd64 for fips

* rm entrypoint workaround

* tweak comment grammar

* rm unused Dockerfile.fips (for now)

* ignore gpg import errors, since would fail later anyway

* for fips, only make package-linux-amd64

* set FIPS_ENABLED for build step

* Add a FIPS-specific list of prepackaged plugins

Note that the names are still temporary, since they are not uploaded to
S3 yet. We may need to tweak them when that happens.

* s/golangci-lint/check-style/

This ensures we run all the `check-style` checks: previously,
`modernize` was missing.

* pin go-vet to @v2, remove annoying comment

* add -fips to linux-amd64.tz.gz package

* rm unused setup-chainctl

* use BUILD_TYPE_NAME instead

* mv fips build to enterprise-only

* fixup! use BUILD_TYPE_NAME instead

* temporarily pre-package no plugins for FIPS

* split package-cleanup

* undo package-cleanup, just skip ARM, also test

* skip arm for FIPS in second target too

* fmt Makefile

* Revert "rm unused Dockerfile.fips (for now)"

This reverts commit 601e37e0ff.

* reintroduce Dockerfile.fips and align with existing Dockerfile

* s/IMAGE/BUILD_IMAGE/

* bump the glibc-openssl-fips version

* rm redundant comment

* fix FIPS checks

* set PLUGIN_PACKAGES empty until prepackaged plugins ready

* upgrade glibc-openssl-fips, use non-dev version for final stage

* another BUILD_IMAGE case

* Prepackage the FIPS versions of plugins

* relocate FIPS_ENABLED initialization before use

* s/Config File MD5/Config File Hash/

* Update the FIPS plugin names and encode the + sign

* add /var/tmp for local socket manipulation

---------

Co-authored-by: Alejandro García Montoro <alejandro.garciamontoro@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2025-09-15 10:53:28 -03:00
Jesse HallamandGitHub 416af5aa0e add xmlsec1 to FIPS docker build image (#33844) 2025-09-05 18:23:29 +00:00
Jesse HallamandGitHub b007b6f339 Add common bash entrypoint to build environment Dockerfiles (#33829)
Resets the entrypoint to both build environment Dockerfiles (Dockerfile.buildenv and Dockerfile.buildenv-fips) to unify invoking either a shell or running a command without jumping through hoops.
2025-09-03 15:17:39 -03:00
Jesse HallamandGitHub 93ebaf3d9f add Node to mattermost-build-server (#33759)
* add Node to mattermost-build-server

* make docker/build-push-action parameters explicit
2025-08-27 13:38:12 -03:00
sabrilandGitHub 527ea8421b remove leftover mysql apt-key (#33708) 2025-08-14 09:52:18 +03:00
Jesse HallamandGitHub 95894708bb Introduce build-server-image-fips (#33670)
This is a variant of the existing [mattermost/mattermost-build-server](https://hub.docker.com/repository/docker/mattermost/mattermost-build-server) and
[mattermostdevelopment/mattermost-build-server](https://hub.docker.com/repository/docker/mattermostdevelopment/mattermost-build-server/general) that starts from a
Chainguard, install the requisite development packages, and publishes the resulting artifacts to a private DockerHub
repository at mattermost/mattermost-build-server-fips.

We might come back and consolidate on a single, private repository for both images and just distinguish with `-fips` tags instead. Since both the existing repositories are public, this is a simple first step.

Fixes: https://mattermost.atlassian.net/browse/MM-65018
2025-08-13 18:03:38 +00:00
Jesse HallamandGitHub c2120b7224 s/bookwork/bullseye to preserve glibc < 2.34 (#33546)
With glibc 2.34 and the [removal of libpthread](https://developers.redhat.com/articles/2021/12/17/why-glibc-234-removed-libpthread), binaries built using [Debian bookworm](https://www.debian.org/releases/bookworm/) aren't compatible with older but still supported operating systems like RHEL8. In those environments, Mattermost fails to start with errors like:
```
mattermost/bin/mattermost: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by mattermost/bin/mattermost)
mattermost/bin/mattermost: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by mattermost/bin/mattermost)
```

One option might be to generate a static build and avoid the glibc dependency, but this kind of change is out of scope for now. Let's just revert back to using [Debian bullseye](https://www.debian.org/releases/bullseye/), which remains supported until at least August 2026.
2025-08-06 17:24:01 -03:00
02c65e9869 Fix PostgreSQL SSL connection issue with sslmode=require in distroless images (#33523)
* Copy CA certificates to distroless

* Change home directory

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-07-23 11:01:50 +03:00
Agniva De SarkerandGitHub 9dd8c056e7 MM-63368: Remove MySQL (#33458)
https://mattermost.atlassian.net/browse/MM-63368

```release-note
Remove MySQL support from the codebase entirely.
```
2025-07-22 20:40:55 +05:30
Agniva De SarkerandGitHub 5829dfe5a9 MM-64523: Change default SAML signature (#33492)
https://mattermost.atlassian.net/browse/MM-64523

```release-note
NONE
```
2025-07-22 09:15:29 +05:30
e6d8bf5835 Upgrade Go to 1.24.3 (#31220)
* Upgrade Go to 1.24.3

Updates the following files:
- server/.go-version: 1.23.9 → 1.24.3
- server/build/Dockerfile.buildenv: golang:1.23.9-bullseye → golang:1.24.3-bullseye
- server/go.mod: go 1.23.0 → go 1.24.3, toolchain go1.23.9 → go1.24.3
- server/public/go.mod: go 1.23.0 → go 1.24.3, toolchain go1.23.9 → go1.24.3

Also fixes non-constant format string errors introduced by Go 1.24.3's stricter format string checking:
- Added response() helper function in slashcommands/util.go for simple string responses
- Removed unused responsef() function from slashcommands/util.go
- Replaced responsef() with response() for translated strings that don't need formatting
- Fixed fmt.Errorf and fmt.Fprintf calls to use proper format verbs instead of string concatenation
- Updated marketplace buildURL to handle format strings conditionally

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update generated mocks for Go 1.24.3

Regenerated mocks using mockery v2.53.4 to ensure compatibility with Go 1.24.3.
This addresses mock generation failures that occurred with the Go upgrade.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update to bookworm and fix non-existent sha

Signed-off-by: Stavros Foteinopoulos <stafot@gmail.com>

* fix non-constant format string

---------

Signed-off-by: Stavros Foteinopoulos <stafot@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Stavros Foteinopoulos <stafot@gmail.com>
2025-06-10 15:04:57 -03:00
0a7be9f034 Move from ubuntu to distroless image (#31136)
* Move from ubuntu to distroless image

* Update updated ubunty image for first stage

* Update server/build/Dockerfile

Co-authored-by: Daniel Schalla <daniel@mattermost.com>

* Update server/build/Dockerfile

Co-authored-by: Daniel Schalla <daniel@mattermost.com>

* Add mising env var for health check

* Add mattermost user in /etc/passwd

* Fix e2e userId

* use cypress in place of server. Wget and not curl

* Simplify e2e changes

---------

Co-authored-by: Daniel Schalla <daniel@mattermost.com>
2025-06-03 20:52:13 +03:00
Claudio CostaandGitHub 611b2a8e79 [MM-62408] Server Code Coverage with Fully Parallel Tests (#30078)
* TestPool

* Store infra

* Store tests updates

* Bump maximum concurrent postgres connections

* More infra

* channels/jobs

* channels/app

* channels/api4

* Protect i18n from concurrent access

* Replace some use of os.Setenv

* Remove debug

* Lint fixes

* Fix more linting

* Fix test

* Remove use of Setenv in drafts tests

* Fix flaky TestWebHubCloseConnOnDBFail

* Fix merge

* [MM-62408] Add CI job to generate test coverage (#30284)

* Add CI job to generate test coverage

* Remove use of Setenv in drafts tests

* Fix flaky TestWebHubCloseConnOnDBFail

* Fix more Setenv usage

* Fix more potential flakyness

* Remove parallelism from flaky test

* Remove conflicting env var

* Fix

* Disable parallelism

* Test atomic covermode

* Disable parallelism

* Enable parallelism

* Add upload coverage step

* Fix codecov.yml

* Add codecov.yml

* Remove redundant workspace field

* Add Parallel() util methods and refactor

* Fix formatting

* More formatting fixes

* Fix reporting
2025-05-30 13:58:26 +02:00
d462b05a23 Update golang toolchain to 1.23.9 (#31062)
* Update golang toolchain

* remove comment

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-05-19 16:56:06 +03:00
Antonis StamatiouandGitHub b0ba67438e fix: Ignore mm deps from Notice file (#30945)
Automatic Merge
2025-05-06 13:28:42 +03:00
Jesse HallamandGitHub 2108216818 Only build and package linux (#30582)
As part of https://github.com/mattermost/mattermost/pull/29932, we
stopped packaging Windows for releases. Let's go one step further and
stop building it too (saves build time!). And while we're in here, stop
doing this for OSX as well.

Both these targets remain buildable on demand, but we don't support
these platforms for production deployments.
2025-03-28 09:13:50 -03:00
350714f390 Bump Go to v1.23.7 (#30455)
* Update Go version to v1.23.7

* Bump golangci-lint to a version supporting Go 1.23

* Fix golangci-lint warnings

Several rules from gosimple, revive and staticcheck linters were
failing:
- Redefinition of built-in identifiers (max, min, new, recover...)
- Use of printf-like functions with simple strings
- Check for nil slices, when len already takes it into account

* Trigger Build

* Trigger Build

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-03-17 14:22:07 +01:00
Agniva De SarkerandGitHub ac10bb12a5 Revert "Bump Go version to 1.23.6 (#30242)" (#30359)
This reverts commit acbbd4c58d.
2025-02-27 14:58:51 +05:30
acbbd4c58d Bump Go version to 1.23.6 (#30242)
* Bump Go version to 1.23.6

* Update CodeQL Github action as well

* Use server's Go version for CodeQL action

Co-authored-by: Antonis Stamatiou <stamatiou.antonis@gmail.com>

* Empty commit to trigger CI

* Bump golangci-lint to a version supporting Go 1.23

* Fix golangci-lint warnings

Several rules from gosimple, revive and staticcheck linters were
failing:
- Redefinition of built-in identifiers (max, min, new, recover...)
- Use of printf-like functions with simple strings
- Check for nil slices, when len already takes it into account

---------

Co-authored-by: Antonis Stamatiou <stamatiou.antonis@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2025-02-26 16:43:04 +01:00
4a44d23095 Remove docker hack around prometheus service (#28985)
* Remove uneeded hack in docker-compose now that problem is solved

* Remove obsolete attribute `version` in docker compose configuration files

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-02-12 14:18:53 -04:00
341f919fa8 MM-62782: Bumping minimum Postgres version to 13 (#30039)
As discussed in https://docs.mattermost.com/install/prepare-mattermost-database.html#minimum-supported-version-policy

https://mattermost.atlassian.net/browse/MM-62782

```release-note
Minimum postgres version has been bumped to 13.
```

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-01-31 09:57:35 +05:30
enzowritescodeandGitHub dde07f6a3c Remove obsolete docker version (#30040)
* Remove obsolete docker version from Docker files and docker composer generator
2025-01-30 12:53:25 -07:00
Antonis StamatiouandGitHub c3fc894111 feat: Remove windows builds from releases (#29932) 2025-01-21 10:48:56 +02:00
Ben SchumacherandGitHub 8d4bf4bae0 [MM-54288] Support Packet V2 (#29403) 2025-01-13 20:23:09 +01:00
Claudio CostaandGitHub 3752518e36 Fix minio Web UI access (#29021) 2024-11-04 09:04:06 -06:00
0a14eb3d45 E2E Tests: unify compose files, support Opensearch (#28716)
* Unify docker-compose files, support opensearch and redis
* Support cypress/playwright bools, MM_SERVICE_OVERRIDES input
* Remove unused directives from E2E tests
* [skip ci] Fix ES tests, PR messages
* [skip ci] Fix service pruning on server restart
* [skip ci] Make services overrides a CSV, better param descriptions

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2024-10-18 16:51:24 +02:00
Mario VitaleandGitHub 2e010837f0 Update mirrored images, build opensearch (#28835)
* Update mirrored images, build opensearch
2024-10-18 09:45:51 +02:00