Skip to content

MM-54364: backport playbooks 1.36 -> mattermost 7.8 ESR #249

MM-54364: backport playbooks 1.36 -> mattermost 7.8 ESR

MM-54364: backport playbooks 1.36 -> mattermost 7.8 ESR #249

Workflow file for this run

name: ci
on:
pull_request:
push:
branches:
- master
defaults:
run:
shell: bash
env:
TERM: xterm
GO_VERSION: 1.19.5
jobs:
lint:
runs-on: ubuntu-latest-4-cores
steps:
- name: ci/checkout-repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
with:
fetch-depth: "0"
- name: ci/setup-go
uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
with:
go-version: "${{ env.GO_VERSION }}"
cache: true
- name: ci/setup-node
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version-file: ".nvmrc"
cache: "npm"
cache-dependency-path: |
webapp/package-lock.json
tests-e2e/package-lock.json
- name: ci/cache-node-modules
id: cache-node-modules
uses: actions/cache@627f0f41f6904a5b1efbaed9f96d9eb58e92e920 # v3.2.4
with:
path: |
webapp/node_modules
tests-e2e/node_modules
key: ${{ runner.os }}-node-modules-${{ hashFiles('webapp/package-lock.json') }}-${{ hashFiles('tests-e2e/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-modules-${{ hashFiles('webapp/package-lock.json') }}-${{ hashFiles('tests-e2e/package-lock.json') }}
- name: ci/setup-webapp-npm-deps
if: steps.cache-node-modules.outputs.cache-hit != 'true'
env:
NODE_ENV: development
run: |
cd webapp
npm install --ignore-scripts --no-save --legacy-peer-deps
- name: ci/setup-e2e-npm-deps
if: steps.cache-node-modules.outputs.cache-hit != 'true'
env:
NODE_ENV: development
run: |
cd tests-e2e
npm install --ignore-scripts --no-save
- name: ci/checking-code-style
run: make check-style
- name: ci/go-tidy
run: go mod tidy -v
- name: ci/check-diff-on-gomod
run: git --no-pager diff --exit-code go.mod go.sum || (echo "Please run \"go mod tidy\" and commit the changes in go.mod and go.sum." && exit 1)
- name: ci/run-make-apply
run: make apply
- name: ci/check-diff-on-generated-manifest-files
run: git --no-pager diff --exit-code *manifest.* || (echo "Please run \"make apply\" and commit the changes in the generated manifests." && exit 1)
- name: ci/run-make-i18n-extract-webapp
run: make i18n-extract-webapp
- name: ci/check-diff-on-webapp-i18n-files
run: git --no-pager diff --exit-code webapp/i18n/en.json || (echo "Please run \"make i18n-extract\" and commit the changes in webapp/i18n/en.json." && exit 1)
- name: ci/run-make-graphql
run: make graphql
- name: ci/check-diff-on-webapp-graphql-generated-files
run: git --no-pager diff --exit-code webapp/src/graphql/generated/ || (echo "Please run \"make graphql\" and commit the changes." && exit 1)
dist:
runs-on: ubuntu-22.04
needs:
- lint
steps:
- name: ci/checkout-repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
with:
fetch-depth: "0"
- name: ci/setup-go
uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
with:
go-version: "${{ env.GO_VERSION }}"
cache: true
- name: ci/ensure-build-on-all-platforms
run: make dist
test-MySQL57-Postgres10:
runs-on: ubuntu-22.04
needs:
- lint
services:
postgres:
image: postgres:10.17
env:
POSTGRES_USER: mmuser
POSTGRES_DB: mattermost_test
POSTGRES_HOST_AUTH_METHOD: trust
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
mysql:
image: mysql:5.7
env:
MYSQL_ROOT_PASSWORD: mostest
MYSQL_DATABASE: mattermost_test
MYSQL_USER: mmuser
MYSQL_PASSWORD: mostest
ports:
- 3306:3306
options: >-
--health-cmd "mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Checkout repository
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
with:
fetch-depth: "0"
- name: ci/test-with-db
uses: ./.github/actions/test-with-db
test-MySQL8-Postgres11:
runs-on: ubuntu-22.04
needs:
- lint
services:
postgres:
image: postgres:11.13
env:
POSTGRES_USER: mmuser
POSTGRES_DB: mattermost_test
POSTGRES_HOST_AUTH_METHOD: trust
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: mostest
MYSQL_DATABASE: mattermost_test
MYSQL_USER: mmuser
MYSQL_PASSWORD: mostest
ports:
- 3306:3306
options: >-
--health-cmd "mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: ci/checkout-repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
with:
fetch-depth: "0"
- name: ci/test-with-db
uses: ./.github/actions/test-with-db
test-MySQL8-Postgres14:
runs-on: ubuntu-22.04
needs:
- lint
services:
postgres:
image: postgres:14.1
env:
POSTGRES_USER: mmuser
POSTGRES_DB: mattermost_test
POSTGRES_HOST_AUTH_METHOD: trust
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: mostest
MYSQL_DATABASE: mattermost_test
MYSQL_USER: mmuser
MYSQL_PASSWORD: mostest
ports:
- 3306:3306
options: >-
--health-cmd "mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: ci/checkout-repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
with:
fetch-depth: "0"
- name: ci/test-with-db
uses: ./.github/actions/test-with-db
test-MariaDB10-Postgres12:
runs-on: ubuntu-22.04
needs:
- lint
services:
postgres:
image: postgres:12.9
env:
POSTGRES_USER: mmuser
POSTGRES_DB: mattermost_test
POSTGRES_HOST_AUTH_METHOD: trust
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
mysql:
image: mariadb:10.6
env:
MARIADB_ROOT_PASSWORD: mostest
MARIADB_DATABASE: mattermost_test
MARIADB_USER: mmuser
MARIADB_PASSWORD: mostest
ports:
- 3306:3306
options: >-
--health-cmd "mysqladmin ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: ci/checkout-repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
with:
fetch-depth: "0"
- name: ci/test-with-db
uses: ./.github/actions/test-with-db
generate-specs:
runs-on: ubuntu-22.04
outputs:
specs: ${{ steps.generate-specs.outputs.specs }}
steps:
- name: ci/checkout-repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: ci/generate-specs
id: generate-specs
uses: ./.github/actions/generate-specs
with:
parallelism: 3
directory: tests-e2e
search_path: cypress/integration
e2e-cypress-tests-78:
runs-on: ubuntu-latest-8-cores
name: e2e-cypress-tests-78-run-${{ matrix.runId }}
needs:
- lint
- generate-specs
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.generate-specs.outputs.specs) }}
services:
postgres:
image: postgres:10.17
env:
POSTGRES_USER: mmuser
POSTGRES_PASSWORD: mostest
POSTGRES_DB: mattermost_test
POSTGRES_HOST_AUTH_METHOD: trust
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
minio:
image: minio/minio:RELEASE.2019-10-11T00-38-09Z
env:
MINIO_ACCESS_KEY: minioaccesskey
MINIO_SECRET_KEY: miniosecretkey
MINIO_SSE_MASTER_KEY: "my-minio-key:6368616e676520746869732070617373776f726420746f206120736563726574"
inbucket:
image: mattermost/inbucket:release-1.2.0
ports:
- 10080:10080
- 10110:10110
- 10025:10025
elasticsearch:
image: mattermost/mattermost-elasticsearch-docker:7.0.0
env:
http.host: "0.0.0.0"
http.port: 9200
http.cors.enabled: "true"
http.cors.allow-origin: "http://localhost:1358,http://127.0.0.1:1358"
http.cors.allow-headers: "X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization"
http.cors.allow-credentials: "true"
transport.host: "127.0.0.1"
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
ports:
- 9200:9200
mattermost-server:
image: mattermost/mattermost-enterprise-edition:release-7.8
env:
DB_HOST: postgres
DB_PORT_NUMBER: 5432
MM_DBNAME: mattermost_test
MM_USERNAME: mmuser
MM_PASSWORD: mostest
CI_INBUCKET_HOST: inbucket
CI_INBUCKET_PORT: 10080
CI_MINIO_HOST: minio
IS_CI: true
MM_CLUSTERSETTINGS_READONLYCONFIG: false
MM_EMAILSETTINGS_SMTPSERVER: inbucket
MM_EMAILSETTINGS_SMTPPORT: 10025
MM_ELASTICSEARCHSETTINGS_CONNECTIONURL: http://elasticsearch:9200
MM_EXPERIMENTALSETTINGS_USENEWSAMLLIBRARY: true
MM_SQLSETTINGS_DATASOURCE: "postgres://mmuser:mostest@postgres:5432/mattermost_test?sslmode=disable&connect_timeout=10"
MM_SQLSETTINGS_DRIVERNAME: postgres
MM_PLUGINSETTINGS_ENABLEUPLOADS: true
MM_SERVICESETTINGS_SITEURL: http://localhost:8065
MM_PLUGINSETTINGS_AUTOMATICPREPACKAGEDPLUGINS: true
MM_ANNOUNCEMENTSETTINGS_ADMINNOTICESENABLED: false
MM_SERVICESETTINGS_ENABLELEGACYSIDEBAR: true
MM_TEAMSETTINGS_MAXUSERSPERTEAM: 10000
MM_SERVICESETTINGS_ENABLEONBOARDINGFLOW: false
ports:
- 8065:8065
steps:
- name: ci/checkout-repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
with:
fetch-depth: "0"
- name: ci/e2e-test
uses: ./.github/actions/e2e-test
with:
CYPRESS_serverEdition: E20
SPECS: ${{ matrix.specs }}
report-test-results:
if: always()
needs:
- e2e-cypress-tests-78
- test-MySQL57-Postgres10
- test-MySQL8-Postgres11
- test-MySQL8-Postgres14
- test-MariaDB10-Postgres12
runs-on: ubuntu-22.04
permissions:
checks: write
pull-requests: write
steps:
- name: ci/download-test-results
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
- name: ci/publish-results
uses: EnricoMi/publish-unit-test-result-action@a3caf02865c0604ad3dc1ecfcc5cdec9c41b7936 # v2.3.0
with:
comment_mode: failures
compare_to_earlier_commit: false
junit_files: "**/*.xml"