CLD-798 Add support for MM_ENV, various fixes (#26616)
* Add support for MM_ENV, various fixes * Fix workflow template * Fix reporting steps ordering * Fix typo * Improve state check message description * Fix workflow syntax * Fix fulltest variable generation * Fix PR_NUMBER variable usage * Fix BUILD_ID, add dashboard URL to status check * Fix automation dashboard URL --------- Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
1f3bc992ea
Коммит
dc36e42448
150
.github/workflows/e2e-tests-ci-template.yml
поставляемый
150
.github/workflows/e2e-tests-ci-template.yml
поставляемый
@@ -6,7 +6,7 @@ on:
|
||||
# NB: this does not support using branch names that belong to forks.
|
||||
# In those cases, you should specify directly the commit SHA that you want to test, or
|
||||
# some wrapper workflow that does it for you (e.g. the slash command for initiating a PR test)
|
||||
ref:
|
||||
commit_sha:
|
||||
type: string
|
||||
required: true
|
||||
status_check_context:
|
||||
@@ -39,6 +39,12 @@ on:
|
||||
MM_ENV:
|
||||
type: string
|
||||
required: false
|
||||
BRANCH:
|
||||
type: string
|
||||
required: false
|
||||
BUILD_ID:
|
||||
type: string
|
||||
required: false
|
||||
REPORT_TYPE:
|
||||
type: string
|
||||
required: false
|
||||
@@ -59,32 +65,15 @@ on:
|
||||
required: false
|
||||
|
||||
jobs:
|
||||
resolve-ref:
|
||||
runs-on: ubuntu-22.04
|
||||
outputs:
|
||||
commit_sha: "${{ steps.resolve-ref.outputs.commit_sha }}"
|
||||
steps:
|
||||
- name: ci/checkout-repo
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
ref: ${{ inputs.ref }}
|
||||
fetch-depth: 0
|
||||
- name: ci/resolve-ref
|
||||
id: resolve-ref
|
||||
run: |
|
||||
echo "commit_sha=$(git rev-parse --verify HEAD)" >> $GITHUB_OUTPUT
|
||||
|
||||
update-initial-status:
|
||||
runs-on: ubuntu-22.04
|
||||
needs:
|
||||
- resolve-ref
|
||||
steps:
|
||||
- uses: mattermost/actions/delivery/update-commit-status@main
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
with:
|
||||
repository_full_name: ${{ github.repository }}
|
||||
commit_sha: ${{ needs.resolve-ref.outputs.commit_sha }}
|
||||
commit_sha: ${{ inputs.commit_sha }}
|
||||
context: ${{ inputs.status_check_context }}
|
||||
description: E2E tests for mattermost server app
|
||||
status: pending
|
||||
@@ -101,7 +90,7 @@ jobs:
|
||||
if: "${{ inputs.run_preflight_checks }}"
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
ref: ${{ inputs.ref }}
|
||||
ref: ${{ inputs.commit_sha }}
|
||||
fetch-depth: 0
|
||||
- name: ci/setup-node
|
||||
if: "${{ inputs.run_preflight_checks }}"
|
||||
@@ -132,7 +121,7 @@ jobs:
|
||||
if: "${{ inputs.run_preflight_checks }}"
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
ref: ${{ inputs.ref }}
|
||||
ref: ${{ inputs.commit_sha }}
|
||||
fetch-depth: 0
|
||||
- name: ci/setup-node
|
||||
if: "${{ inputs.run_preflight_checks }}"
|
||||
@@ -160,17 +149,14 @@ jobs:
|
||||
generate-build-variables:
|
||||
runs-on: ubuntu-22.04
|
||||
needs:
|
||||
- resolve-ref
|
||||
- update-initial-status
|
||||
outputs:
|
||||
workers: "${{ steps.workers.outputs.workers }}"
|
||||
BRANCH: "${{ steps.branch.outputs.BRANCH }}"
|
||||
BUILD_ID: "${{ steps.build-id.outputs.BUILD_ID }}"
|
||||
steps:
|
||||
- name: ci/checkout-repo
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
ref: ${{ inputs.ref }}
|
||||
ref: ${{ inputs.commit_sha }}
|
||||
fetch-depth: 0
|
||||
- name: ci/generate-workers
|
||||
id: workers
|
||||
@@ -179,44 +165,22 @@ jobs:
|
||||
run: |
|
||||
[ "$WORKERS" -gt "0" ] # Assert that the workers number is an integer greater than 0
|
||||
echo "workers="$(jq --slurp --compact-output '[range('"$WORKERS"')] | map(tostring)' /dev/null) >> $GITHUB_OUTPUT
|
||||
- name: ci/generate-branch
|
||||
id: branch
|
||||
run: |
|
||||
PR_LIST=$(curl -L -H "Accept: application/vnd.github+json" \
|
||||
-H "Authorization: Bearer ${{ github.token }}" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
"${{ github.api_url }}/repos/${{ github.repository }}/commits/${{ needs.resolve-ref.outputs.commit_sha }}/pulls" 2>/dev/null || echo -n "")
|
||||
PR_NAMES_LIST=$(echo -n "$PR_LIST" | jq -r 'map(.number) | join("-")')
|
||||
if [ -n "$PR_NAMES_LIST" ]; then
|
||||
# This commit belongs to one or more PRs.
|
||||
# Prefer displaying the PR names in the Automation Dashboard, instead of the branch name
|
||||
BRANCH="server-pr-${PR_NAMES_LIST}"
|
||||
else
|
||||
# This commit does not belong to a PR. Use the given input ref as-is
|
||||
BRANCH="${{ inputs.ref }}"
|
||||
fi
|
||||
echo "Generated branch identifier for E2E run: ${BRANCH}"
|
||||
echo "BRANCH=${BRANCH}" >> "$GITHUB_OUTPUT"
|
||||
- name: ci/calculate-build-id
|
||||
id: build-id
|
||||
run: |
|
||||
BUILD_ID="$(git rev-parse --short=7 HEAD)-${{ github.run_id }}-${{ github.run_attempt }}-ent"
|
||||
echo "Generated BUILD_ID for E2E run: ${BUILD_ID}"
|
||||
echo "BUILD_ID=${BUILD_ID}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
generate-test-cycle:
|
||||
runs-on: ubuntu-22.04
|
||||
needs:
|
||||
- generate-build-variables
|
||||
- update-initial-status
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: e2e-tests
|
||||
outputs:
|
||||
status_check_url: "${{ steps.e2e-test-gencycle.outputs.status_check_url }}"
|
||||
steps:
|
||||
- name: ci/checkout-repo
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
ref: ${{ inputs.ref }}
|
||||
ref: ${{ inputs.commit_sha }}
|
||||
fetch-depth: 0
|
||||
- name: ci/setup-node
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
@@ -226,14 +190,23 @@ jobs:
|
||||
cache: npm
|
||||
cache-dependency-path: "e2e-tests/cypress/package-lock.json"
|
||||
- name: ci/e2e-test-gencycle
|
||||
id: e2e-test-gencycle
|
||||
env:
|
||||
AUTOMATION_DASHBOARD_URL: "${{ secrets.AUTOMATION_DASHBOARD_URL }}"
|
||||
AUTOMATION_DASHBOARD_TOKEN: "${{ secrets.AUTOMATION_DASHBOARD_TOKEN }}"
|
||||
BRANCH: "${{ needs.generate-build-variables.outputs.BRANCH }}"
|
||||
BUILD_ID: "${{ needs.generate-build-variables.outputs.BUILD_ID }}"
|
||||
BRANCH: "${{ inputs.BRANCH }}"
|
||||
BUILD_ID: "${{ inputs.BUILD_ID }}"
|
||||
TEST_FILTER: "${{ inputs.TEST_FILTER }}"
|
||||
run: |
|
||||
make generate-test-cycle
|
||||
set -e -o pipefail
|
||||
make generate-test-cycle | tee generate-test-cycle.out
|
||||
# Extract cycle's dashboard URL, if present
|
||||
TEST_CYCLE_ID=$(sed -nE "s/^.*id: '([^']+)'.*$/\1/p" <generate-test-cycle.out)
|
||||
if [ -n "$TEST_CYCLE_ID" ]; then
|
||||
echo "status_check_url=https://automation-dashboard.vercel.app/cycles/${TEST_CYCLE_ID}" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "status_check_url=${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
test:
|
||||
continue-on-error: true # Individual runner failures shouldn't prevent the completion of an E2E run
|
||||
@@ -268,15 +241,15 @@ jobs:
|
||||
ENABLED_DOCKER_SERVICES: "${{ inputs.ENABLED_DOCKER_SERVICES }}"
|
||||
TEST_FILTER: "${{ inputs.TEST_FILTER }}"
|
||||
MM_ENV: "${{ inputs.MM_ENV }}"
|
||||
BRANCH: "${{ needs.generate-build-variables.outputs.BRANCH }}"
|
||||
BUILD_ID: "${{ needs.generate-build-variables.outputs.BUILD_ID }}"
|
||||
BRANCH: "${{ inputs.BRANCH }}"
|
||||
BUILD_ID: "${{ inputs.BUILD_ID }}"
|
||||
CI_BASE_URL: "http://localhost:8065/?worker_index=${{ matrix.worker_index }}"
|
||||
CYPRESS_pushNotificationServer: "${{ secrets.PUSH_NOTIFICATION_SERVER }}"
|
||||
steps:
|
||||
- name: ci/checkout-repo
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
ref: ${{ inputs.ref }}
|
||||
ref: ${{ inputs.commit_sha }}
|
||||
fetch-depth: 0
|
||||
- name: ci/setup-macos-docker
|
||||
if: runner.os == 'macos'
|
||||
@@ -304,30 +277,39 @@ jobs:
|
||||
path: |
|
||||
e2e-tests/cypress/logs/
|
||||
e2e-tests/cypress/results/
|
||||
- name: ci/e2e-test-assert-results
|
||||
if: ${{ inputs.testcase_failure_fatal }}
|
||||
run: |
|
||||
# Assert that the run contained 0 failures
|
||||
CYPRESS_FAILURES=$(find cypress/results -name '*.json' | xargs -l jq -r '.stats.failures' | jq -s add)
|
||||
echo "Cypress run completed with $CYPRESS_FAILURES failures"
|
||||
[ "$CYPRESS_FAILURES" = "0" ]
|
||||
|
||||
publish-report:
|
||||
report:
|
||||
runs-on: ubuntu-22.04
|
||||
needs:
|
||||
- generate-build-variables
|
||||
- test
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: e2e-tests
|
||||
outputs:
|
||||
failures: "${{ steps.calculate-failures.outputs.failures }}"
|
||||
steps:
|
||||
- name: ci/checkout-repo
|
||||
if: "${{ inputs.enable_reporting }}"
|
||||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||
with:
|
||||
ref: ${{ inputs.ref }}
|
||||
ref: ${{ inputs.commit_sha }}
|
||||
fetch-depth: 0
|
||||
- name: ci/download-artifacts
|
||||
uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
|
||||
with:
|
||||
path: e2e-tests/cypress/
|
||||
merge-multiple: true
|
||||
- name: ci/report-calculate-failures
|
||||
id: calculate-failures
|
||||
run: |
|
||||
FAILURES=$(find cypress/results -name '*.json' | xargs -l jq -r '.stats.failures' | jq -s add)
|
||||
echo "failures=${FAILURES}" >> $GITHUB_OUTPUT
|
||||
echo "Cypress run completed with $FAILURES failures"
|
||||
- name: ci/e2e-test-assert-results
|
||||
if: "${{ inputs.testcase_failure_fatal }}"
|
||||
run: |
|
||||
# Assert that the run contained 0 failures
|
||||
[ "${{ steps.calculate-failures.outputs.failures }}" = "0" ]
|
||||
- name: ci/setup-node
|
||||
if: "${{ inputs.enable_reporting }}"
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
|
||||
@@ -336,19 +318,13 @@ jobs:
|
||||
node-version-file: ".nvmrc"
|
||||
cache: npm
|
||||
cache-dependency-path: "e2e-tests/cypress/package-lock.json"
|
||||
- name: ci/download-artifacts
|
||||
if: "${{ inputs.enable_reporting }}"
|
||||
uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2
|
||||
with:
|
||||
path: e2e-tests/cypress/
|
||||
merge-multiple: true
|
||||
- name: ci/publish-report
|
||||
if: "${{ inputs.enable_reporting }}"
|
||||
env:
|
||||
TYPE: "${{ inputs.REPORT_TYPE }}"
|
||||
WEBHOOK_URL: "${{ secrets.REPORT_WEBHOOK_URL }}"
|
||||
BRANCH: "${{ needs.generate-build-variables.outputs.BRANCH }}"
|
||||
BUILD_ID: "${{ needs.generate-build-variables.outputs.BUILD_ID }}"
|
||||
BRANCH: "${{ inputs.BRANCH }}"
|
||||
BUILD_ID: "${{ inputs.BUILD_ID }}"
|
||||
MM_ENV: "${{ inputs.MM_ENV }}"
|
||||
TM4J_API_KEY: "${{ secrets.REPORT_TM4J_API_KEY }}"
|
||||
TEST_CYCLE_LINK_PREFIX: "${{ secrets.REPORT_TM4J_TEST_CYCLE_LINK_PREFIX }}"
|
||||
@@ -359,32 +335,38 @@ jobs:
|
||||
runs-on: ubuntu-22.04
|
||||
if: failure() || cancelled()
|
||||
needs:
|
||||
- resolve-ref
|
||||
- publish-report
|
||||
- generate-test-cycle
|
||||
- test
|
||||
- report
|
||||
steps:
|
||||
- uses: mattermost/actions/delivery/update-commit-status@main
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
with:
|
||||
repository_full_name: ${{ github.repository }}
|
||||
commit_sha: ${{ needs.resolve-ref.outputs.commit_sha }}
|
||||
commit_sha: ${{ inputs.commit_sha }}
|
||||
context: ${{ inputs.status_check_context }}
|
||||
description: E2E tests for mattermost server app
|
||||
description: |
|
||||
Completed with ${{ needs.report.outputs.failures }} failures
|
||||
status: failure
|
||||
target_url: "${{ needs.generate-test-cycle.outputs.status_check_url }}"
|
||||
|
||||
update-success-final-status:
|
||||
runs-on: ubuntu-22.04
|
||||
if: success()
|
||||
needs:
|
||||
- resolve-ref
|
||||
- publish-report
|
||||
- generate-test-cycle
|
||||
- test
|
||||
- report
|
||||
steps:
|
||||
- uses: mattermost/actions/delivery/update-commit-status@main
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
with:
|
||||
repository_full_name: ${{ github.repository }}
|
||||
commit_sha: ${{ needs.resolve-ref.outputs.commit_sha }}
|
||||
commit_sha: ${{ inputs.commit_sha }}
|
||||
context: ${{ inputs.status_check_context }}
|
||||
description: E2E tests for mattermost server app
|
||||
description: |
|
||||
Completed with ${{ needs.report.outputs.failures }} failures
|
||||
status: success
|
||||
target_url: "${{ needs.generate-test-cycle.outputs.status_check_url }}"
|
||||
|
||||
Ссылка в новой задаче
Block a user