mirror of
https://github.com/mattermost/mattermost.git
synced 2026-02-03 20:40:00 -05:00
Some checks are pending
API / build (push) Waiting to run
Server CI / Compute Go Version (push) Waiting to run
Server CI / Check mocks (push) Blocked by required conditions
Server CI / Check go mod tidy (push) Blocked by required conditions
Server CI / check-style (push) Blocked by required conditions
Server CI / Check serialization methods for hot structs (push) Blocked by required conditions
Server CI / Vet API (push) Blocked by required conditions
Server CI / Check migration files (push) Blocked by required conditions
Server CI / Generate email templates (push) Blocked by required conditions
Server CI / Check store layers (push) Blocked by required conditions
Server CI / Check mmctl docs (push) Blocked by required conditions
Server CI / Postgres with binary parameters (push) Blocked by required conditions
Server CI / Postgres (push) Blocked by required conditions
Server CI / Postgres (FIPS) (push) Blocked by required conditions
Server CI / Generate Test Coverage (push) Blocked by required conditions
Server CI / Run mmctl tests (push) Blocked by required conditions
Server CI / Run mmctl tests (FIPS) (push) Blocked by required conditions
Server CI / Build mattermost server app (push) Blocked by required conditions
Web App CI / check-lint (push) Waiting to run
Web App CI / check-i18n (push) Blocked by required conditions
Web App CI / check-types (push) Blocked by required conditions
Web App CI / test (platform) (push) Blocked by required conditions
Web App CI / test (mattermost-redux) (push) Blocked by required conditions
Web App CI / test (channels shard 1/4) (push) Blocked by required conditions
Web App CI / test (channels shard 2/4) (push) Blocked by required conditions
Web App CI / test (channels shard 3/4) (push) Blocked by required conditions
Web App CI / test (channels shard 4/4) (push) Blocked by required conditions
Web App CI / upload-coverage (push) Blocked by required conditions
Web App CI / build (push) Blocked by required conditions
* chore: upgrade to node 24 and dependencies mainly with babel, webpack and jest * fix components tests, make trial modal passed on all node 20-24 * fix cache for platform packages * updated test --------- Co-authored-by: Mattermost Build <build@mattermost.com>
311 lines
12 KiB
YAML
311 lines
12 KiB
YAML
# NOTE: This workflow name is referenced by other workflows:
|
|
# - server-ci-artifacts.yml
|
|
# - server-ci-report.yml
|
|
# - sentry.yaml
|
|
# If you rename this workflow, be sure to update those workflows as well.
|
|
name: Server CI
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- release-*
|
|
pull_request:
|
|
paths:
|
|
- "server/**"
|
|
- "e2e-tests/**"
|
|
- ".github/workflows/server-ci.yml"
|
|
- ".github/workflows/server-test-template.yml"
|
|
- ".github/workflows/mmctl-test-template.yml"
|
|
- "!server/build/Dockerfile.buildenv"
|
|
- "!server/build/Dockerfile.buildenv-fips"
|
|
|
|
concurrency:
|
|
group: ${{ github.event_name == 'pull_request' && format('{0}-{1}', github.workflow, github.ref) || github.run_id }}
|
|
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
|
|
jobs:
|
|
go:
|
|
name: Compute Go Version
|
|
runs-on: ubuntu-22.04
|
|
outputs:
|
|
version: ${{ steps.calculate.outputs.GO_VERSION }}
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Calculate version
|
|
id: calculate
|
|
working-directory: server/
|
|
run: echo GO_VERSION=$(cat .go-version) >> "${GITHUB_OUTPUT}"
|
|
check-mocks:
|
|
name: Check mocks
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Run setup-go-work
|
|
run: make setup-go-work
|
|
- name: Generate mocks
|
|
run: make mocks
|
|
- name: Check mocks
|
|
run: if [[ -n $(git status --porcelain) ]]; then echo "Please update the mocks using `make mocks`"; exit 1; fi
|
|
check-go-mod-tidy:
|
|
name: Check go mod tidy
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Run setup-go-work
|
|
run: make setup-go-work
|
|
- name: Run go mod tidy
|
|
run: make modules-tidy
|
|
- name: Check modules
|
|
run: if [[ -n $(git status --porcelain) ]]; then echo "Please tidy up the Go modules using make modules-tidy"; git diff; exit 1; fi
|
|
check-style:
|
|
name: check-style
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
env:
|
|
GOFLAGS: -buildvcs=false # TODO: work around "error obtaining VCS status: exit status 128" in a container
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Run setup-go-work
|
|
run: make setup-go-work
|
|
- name: Run golangci
|
|
run: make check-style
|
|
check-gen-serialized:
|
|
name: Check serialization methods for hot structs
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Run setup-go-work
|
|
run: make setup-go-work
|
|
- name: Run make-gen-serialized
|
|
run: make gen-serialized
|
|
- name: Check serialized
|
|
run: if [[ -n $(git status --porcelain) ]]; then echo "Please update the serialized files using 'make gen-serialized'"; exit 1; fi
|
|
check-mattermost-vet-api:
|
|
name: Vet API
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Run setup-go-work
|
|
run: make setup-go-work
|
|
- name: Run mattermost-vet-api
|
|
run: make vet-api
|
|
check-migrations:
|
|
name: Check migration files
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Extract migrations files
|
|
run: make migrations-extract
|
|
- name: Check migration files
|
|
run: if [[ -n $(git status --porcelain) ]]; then echo "Please update the migrations using make migrations-extract"; exit 1; fi
|
|
check-email-templates:
|
|
name: Generate email templates
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Generate email templates
|
|
run: |
|
|
npm install -g mjml@4.9.0
|
|
make build-templates
|
|
- name: Check generated email templates
|
|
run: if [[ -n $(git status --porcelain) ]]; then echo "Please update the email templates using `make build-templates`"; exit 1; fi
|
|
check-store-layers:
|
|
name: Check store layers
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Run setup-go-work
|
|
run: make setup-go-work
|
|
- name: Generate store layers
|
|
run: make store-layers
|
|
- name: Check generated code
|
|
run: if [[ -n $(git status --porcelain) ]]; then echo "Please update the store layers using make store-layers"; exit 1; fi
|
|
check-mmctl-docs:
|
|
name: Check mmctl docs
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
steps:
|
|
- name: Checkout mattermost-server
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: Run setup-go-work
|
|
run: make setup-go-work
|
|
- name: Check docs
|
|
run: |
|
|
echo "Making sure docs are updated"
|
|
make mmctl-docs
|
|
if [[ -n $(git status --porcelain) ]]; then echo "Please update the mmctl docs using make mmctl-docs"; exit 1; fi
|
|
test-postgres-binary:
|
|
if: github.event_name == 'push' # Only run postgres binary tests on master/release pushes: odds are low this regresses, so save the cycles for pull requests.
|
|
name: Postgres with binary parameters
|
|
needs: go
|
|
uses: ./.github/workflows/server-test-template.yml
|
|
secrets: inherit
|
|
with:
|
|
name: Postgres with binary parameters
|
|
datasource: postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10&binary_parameters=yes
|
|
drivername: postgres
|
|
logsartifact: postgres-binary-server-test-logs
|
|
go-version: ${{ needs.go.outputs.version }}
|
|
fips-enabled: false
|
|
test-postgres-normal:
|
|
name: Postgres
|
|
needs: go
|
|
uses: ./.github/workflows/server-test-template.yml
|
|
secrets: inherit
|
|
with:
|
|
name: Postgres
|
|
datasource: postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10
|
|
drivername: postgres
|
|
logsartifact: postgres-server-test-logs
|
|
go-version: ${{ needs.go.outputs.version }}
|
|
fips-enabled: false
|
|
test-postgres-normal-fips:
|
|
# Skip FIPS testing for forks, which won't have docker login credentials.
|
|
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
|
|
name: Postgres (FIPS)
|
|
needs: go
|
|
uses: ./.github/workflows/server-test-template.yml
|
|
secrets: inherit
|
|
with:
|
|
name: Postgres
|
|
datasource: postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10
|
|
drivername: postgres
|
|
logsartifact: postgres-server-test-logs
|
|
go-version: ${{ needs.go.outputs.version }}
|
|
fips-enabled: true
|
|
test-coverage:
|
|
name: Generate Test Coverage
|
|
# Disabled: Running out of memory and causing spurious failures.
|
|
# Old condition: ${{ github.event_name != 'pull_request' || !startsWith(github.event.pull_request.base.ref, 'release-') }}
|
|
if: false
|
|
needs: go
|
|
uses: ./.github/workflows/server-test-template.yml
|
|
secrets: inherit
|
|
with:
|
|
name: Generate Test Coverage
|
|
datasource: postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10
|
|
drivername: postgres
|
|
logsartifact: coverage-server-test-logs
|
|
fullyparallel: true
|
|
enablecoverage: true
|
|
go-version: ${{ needs.go.outputs.version }}
|
|
test-mmctl:
|
|
name: Run mmctl tests
|
|
needs: go
|
|
uses: ./.github/workflows/mmctl-test-template.yml
|
|
secrets: inherit
|
|
with:
|
|
name: mmctl
|
|
datasource: postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10
|
|
drivername: postgres
|
|
logsartifact: mmctl-test-logs
|
|
go-version: ${{ needs.go.outputs.version }}
|
|
fips-enabled: false
|
|
test-mmctl-fips:
|
|
name: Run mmctl tests (FIPS)
|
|
# Skip FIPS testing for forks, which won't have docker login credentials.
|
|
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
|
|
needs: go
|
|
uses: ./.github/workflows/mmctl-test-template.yml
|
|
secrets: inherit
|
|
with:
|
|
name: mmctl
|
|
datasource: postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10
|
|
drivername: postgres
|
|
logsartifact: mmctl-test-logs
|
|
go-version: ${{ needs.go.outputs.version }}
|
|
fips-enabled: true
|
|
build-mattermost-server:
|
|
name: Build mattermost server app
|
|
needs: go
|
|
runs-on: ubuntu-22.04
|
|
container: mattermost/mattermost-build-server:${{ needs.go.outputs.version }}
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
env:
|
|
GOFLAGS: -buildvcs=false # TODO: work around "error obtaining VCS status: exit status 128" in a container
|
|
BUILD_NUMBER: "${GITHUB_HEAD_REF}-${GITHUB_RUN_ID}"
|
|
FIPS_ENABLED: false
|
|
steps:
|
|
- name: Checkout mattermost project
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
- name: ci/setup-node
|
|
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
cache: "npm"
|
|
cache-dependency-path: "webapp/package-lock.json"
|
|
- name: Run setup-go-work
|
|
run: make setup-go-work
|
|
- name: Build
|
|
run: |
|
|
make config-reset
|
|
make build-cmd
|
|
make package
|
|
- name: Persist dist artifacts
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: server-dist-artifact
|
|
path: server/dist/
|
|
if-no-files-found: error
|
|
compression-level: 0
|
|
retention-days: 2
|
|
- name: Persist build artifacts
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: server-build-artifact
|
|
path: server/build/
|
|
retention-days: 2
|