HXOR-164 pr check job: condition handling

This commit is contained in:
Marco Carrozzo
2023-03-02 15:23:23 +01:00
parent 8c5cf3253a
commit 031a129f6c

View File

@@ -148,262 +148,268 @@ jobs:
fi fi
fi fi
setup: # setup:
# long timeout required when cache has to be recreated # # long timeout required when cache has to be recreated
timeout-minutes: 30 # timeout-minutes: 30
name: "Setup" # name: "Setup"
runs-on: ubuntu-22.04 # runs-on: ubuntu-22.04
needs: [check-if-pr-is-approved, check-package-lock] # needs: [check-if-pr-is-approved, check-package-lock]
steps: # steps:
- name: Checkout repository # - name: Checkout repository
uses: actions/checkout@v3 # uses: actions/checkout@v3
with: # with:
fetch-depth: 0 # Fetch all history for all tags and branches # fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup # - uses: ./.github/actions/setup
- name: install # - name: install
run: | # run: |
npm ci # npm ci
nx run cli:bundle # nx run cli:bundle
nx run testing:bundle # nx run testing:bundle
- run: nx print-affected $NX_CALCULATION_FLAGS # - run: nx print-affected $NX_CALCULATION_FLAGS
- uses: ./.github/actions/upload-node-modules-and-artifacts # - uses: ./.github/actions/upload-node-modules-and-artifacts
unit-tests: # unit-tests:
timeout-minutes: 30 # timeout-minutes: 30
name: "Unit tests: ${{ matrix.unit-tests.name }}" # name: "Unit tests: ${{ matrix.unit-tests.name }}"
runs-on: ubuntu-22.04 # runs-on: ubuntu-22.04
needs: [setup] # needs: [setup]
strategy: # strategy:
fail-fast: false # fail-fast: false
# max-parallel: 4 # # max-parallel: 4
matrix: # matrix:
unit-tests: # unit-tests:
- name: content-services # - name: content-services
exclude: "insights,core,extensions,process-services,process-services-cloud" # exclude: "insights,core,extensions,process-services,process-services-cloud"
- name: core # - name: core
exclude: "insights,content-services,process-services,process-services-cloud" # exclude: "insights,content-services,process-services,process-services-cloud"
- name: insights and process-services # - name: insights and process-services
exclude: "core,extensions,content-services,process-services-cloud" # exclude: "core,extensions,content-services,process-services-cloud"
- name: process-cloud # - name: process-cloud
exclude: "insights,core,extensions,content-services,process-services" # exclude: "insights,core,extensions,content-services,process-services"
steps: # steps:
- name: Checkout repository # - name: Checkout repository
uses: actions/checkout@v3 # uses: actions/checkout@v3
with: # with:
fetch-depth: 0 # Fetch all history for all tags and branches # fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup # - uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts # - uses: ./.github/actions/download-node-modules-and-artifacts
- name: Run unit tests # - name: Run unit tests
run: | # run: |
/usr/bin/xvfb-run --auto-servernum nx affected:test $NX_CALCULATION_FLAGS --exclude=${{ matrix.unit-tests.exclude }} # /usr/bin/xvfb-run --auto-servernum nx affected:test $NX_CALCULATION_FLAGS --exclude=${{ matrix.unit-tests.exclude }}
lint: # lint:
# long timeout required when cache has to be recreated # # long timeout required when cache has to be recreated
timeout-minutes: 30 # timeout-minutes: 30
name: "Lint" # name: "Lint"
runs-on: ubuntu-22.04 # runs-on: ubuntu-22.04
needs: [setup] # needs: [setup]
steps: # steps:
- name: Checkout repository # - name: Checkout repository
uses: actions/checkout@v3 # uses: actions/checkout@v3
with: # with:
fetch-depth: 0 # Fetch all history for all tags and branches # fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup # - uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts # - uses: ./.github/actions/download-node-modules-and-artifacts
- run: nx affected --target=lint $NX_CALCULATION_FLAGS # - run: nx affected --target=lint $NX_CALCULATION_FLAGS
build-libs: # build-libs:
# long timeout required when cache has to be recreated # # long timeout required when cache has to be recreated
timeout-minutes: 30 # timeout-minutes: 30
name: "Build libs" # name: "Build libs"
runs-on: ubuntu-22.04 # runs-on: ubuntu-22.04
needs: [setup] # needs: [setup]
steps: # steps:
- name: Checkout repository # - name: Checkout repository
uses: actions/checkout@v3 # uses: actions/checkout@v3
with: # with:
fetch-depth: 0 # Fetch all history for all tags and branches # fetch-depth: 0 # Fetch all history for all tags and branches
- uses: ./.github/actions/setup # - uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts # - uses: ./.github/actions/download-node-modules-and-artifacts
- run: nx affected:build $NX_CALCULATION_FLAGS --prod # - run: nx affected:build $NX_CALCULATION_FLAGS --prod
- run: nx build demoshell --configuration production # - run: nx build demoshell --configuration production
- run: nx affected --target=build-storybook $NX_CALCULATION_FLAGS --configuration ci # - run: nx affected --target=build-storybook $NX_CALCULATION_FLAGS --configuration ci
- uses: ./.github/actions/upload-node-modules-and-artifacts # - uses: ./.github/actions/upload-node-modules-and-artifacts
e2e-storybook: # e2e-storybook:
timeout-minutes: 20 # timeout-minutes: 20
name: "e2e: storybook" # name: "e2e: storybook"
needs: [build-libs, lint, unit-tests] # needs: [build-libs, lint, unit-tests]
runs-on: ubuntu-22.04 # runs-on: ubuntu-22.04
steps: # steps:
- name: Checkout repository # - name: Checkout repository
uses: actions/checkout@v3 # uses: actions/checkout@v3
with: # with:
fetch-depth: 0 # Fetch all history for all # fetch-depth: 0 # Fetch all history for all
- uses: ./.github/actions/setup # - uses: ./.github/actions/setup
- uses: ./.github/actions/download-node-modules-and-artifacts # - uses: ./.github/actions/download-node-modules-and-artifacts
- name: Process Cloud Storybook Playwright # - name: Process Cloud Storybook Playwright
run: | # run: |
npx playwright install chromium # npx playwright install chromium
sudo sysctl -w fs.inotify.max_user_watches=524288 # sudo sysctl -w fs.inotify.max_user_watches=524288
npx nx affected --target=e2e-playwright $NX_CALCULATION_FLAGS || exit 1 # npx nx affected --target=e2e-playwright $NX_CALCULATION_FLAGS || exit 1
- uses: ./.github/actions/upload-node-modules-and-artifacts # - uses: ./.github/actions/upload-node-modules-and-artifacts
e2e: # e2e:
timeout-minutes: 90 # timeout-minutes: 90
name: "e2e: ${{ matrix.e2e-test.description }}" # name: "e2e: ${{ matrix.e2e-test.description }}"
needs: [build-libs, lint, unit-tests] # needs: [build-libs, lint, unit-tests]
runs-on: ubuntu-22.04 # runs-on: ubuntu-22.04
strategy: # strategy:
fail-fast: false # fail-fast: false
# max-parallel: 4 # # max-parallel: 4
matrix: # matrix:
e2e-test: # e2e-test:
- description: "Core" # - description: "Core"
test-id: "core" # test-id: "core"
folder: "core" # folder: "core"
provider: "ALL" # provider: "ALL"
auth: "OAUTH" # auth: "OAUTH"
check-cs-env: "true" # check-cs-env: "true"
check-ps-env: "true" # check-ps-env: "true"
- description: "Content: Components" # - description: "Content: Components"
test-id: "content-services" # test-id: "content-services"
folder: "content-services/components" # folder: "content-services/components"
provider: "ECM" # provider: "ECM"
auth: "BASIC" # auth: "BASIC"
check-cs-env: "true" # check-cs-env: "true"
- description: "Content: Directives" # - description: "Content: Directives"
test-id: "content-services" # test-id: "content-services"
folder: "content-services/directives" # folder: "content-services/directives"
provider: "ECM" # provider: "ECM"
auth: "BASIC" # auth: "BASIC"
check-cs-env: "true" # check-cs-env: "true"
- description: "Content: Document List" # - description: "Content: Document List"
test-id: "content-services" # test-id: "content-services"
folder: "content-services/document-list" # folder: "content-services/document-list"
provider: "ECM" # provider: "ECM"
auth: "BASIC" # auth: "BASIC"
check-cs-env: "true" # check-cs-env: "true"
- description: "Content: Metadata" # - description: "Content: Metadata"
test-id: "content-services" # test-id: "content-services"
folder: "content-services/metadata" # folder: "content-services/metadata"
provider: "ECM" # provider: "ECM"
auth: "BASIC" # auth: "BASIC"
check-cs-env: "true" # check-cs-env: "true"
- description: "Content: Upload and Versioning" # - description: "Content: Upload and Versioning"
test-id: "content-services" # test-id: "content-services"
folder: "content-services/upload" # folder: "content-services/upload"
provider: "ECM" # provider: "ECM"
auth: "BASIC" # auth: "BASIC"
check-cs-env: "true" # check-cs-env: "true"
- description: "Search" # - description: "Search"
test-id: "content-services" # test-id: "content-services"
folder: "search" # folder: "search"
provider: "ECM" # provider: "ECM"
auth: "BASIC" # auth: "BASIC"
check-cs-env: "true" # check-cs-env: "true"
- description: "Process: Form" # - description: "Process: Form"
test-id: "process-services" # test-id: "process-services"
folder: "process-services/form" # folder: "process-services/form"
provider: "BPM" # provider: "BPM"
auth: "OAUTH" # auth: "OAUTH"
check-ps-env: "true" # check-ps-env: "true"
check-external-cs-env: "true" # check-external-cs-env: "true"
- description: "Process: Process" # - description: "Process: Process"
test-id: "process-services" # test-id: "process-services"
folder: "process-services/process" # folder: "process-services/process"
provider: "BPM" # provider: "BPM"
auth: "OAUTH" # auth: "OAUTH"
check-ps-env: "true" # check-ps-env: "true"
check-external-cs-env: "true" # check-external-cs-env: "true"
- description: "Process: Tasks" # - description: "Process: Tasks"
test-id: "process-services" # test-id: "process-services"
folder: "process-services/tasks" # folder: "process-services/tasks"
provider: "BPM" # provider: "BPM"
auth: "OAUTH" # auth: "OAUTH"
check-ps-env: "true" # check-ps-env: "true"
check-external-cs-env: "true" # check-external-cs-env: "true"
- description: "Process: Widget" # - description: "Process: Widget"
test-id: "process-services" # test-id: "process-services"
folder: "process-services/widgets" # folder: "process-services/widgets"
provider: "BPM" # provider: "BPM"
auth: "OAUTH" # auth: "OAUTH"
check-ps-env: "true" # check-ps-env: "true"
check-external-cs-env: "true" # check-external-cs-env: "true"
- description: "Process Cloud: Form" # - description: "Process Cloud: Form"
test-id: "process-services-cloud" # test-id: "process-services-cloud"
folder: "process-services-cloud/form-field" # folder: "process-services-cloud/form-field"
provider: "ALL" # provider: "ALL"
auth: "OAUTH" # auth: "OAUTH"
apa-proxy: true # apa-proxy: true
check-cs-env: "true" # check-cs-env: "true"
check-ps-cloud-env: "true" # check-ps-cloud-env: "true"
- description: "Process Cloud: People" # - description: "Process Cloud: People"
test-id: "process-services-cloud" # test-id: "process-services-cloud"
folder: "process-services-cloud/people" # folder: "process-services-cloud/people"
provider: "ALL" # provider: "ALL"
auth: "OAUTH" # auth: "OAUTH"
apa-proxy: true # apa-proxy: true
check-cs-env: "true" # check-cs-env: "true"
check-ps-cloud-env: "true" # check-ps-cloud-env: "true"
- description: "Process Cloud: Process" # - description: "Process Cloud: Process"
test-id: "process-services-cloud" # test-id: "process-services-cloud"
folder: "process-services-cloud/process" # folder: "process-services-cloud/process"
provider: "ALL" # provider: "ALL"
auth: "OAUTH" # auth: "OAUTH"
apa-proxy: true # apa-proxy: true
check-cs-env: "true" # check-cs-env: "true"
check-ps-cloud-env: "true" # check-ps-cloud-env: "true"
- description: "Process Cloud: Start Task" # - description: "Process Cloud: Start Task"
test-id: "process-services-cloud" # test-id: "process-services-cloud"
folder: "process-services-cloud/start-task" # folder: "process-services-cloud/start-task"
provider: "ALL" # provider: "ALL"
auth: "OAUTH" # auth: "OAUTH"
apa-proxy: true # apa-proxy: true
check-cs-env: "true" # check-cs-env: "true"
check-ps-cloud-env: "true" # check-ps-cloud-env: "true"
- description: "Process Cloud: Tasks List" # - description: "Process Cloud: Tasks List"
test-id: "process-services-cloud" # test-id: "process-services-cloud"
folder: "process-services-cloud/task-list" # folder: "process-services-cloud/task-list"
provider: "ALL" # provider: "ALL"
auth: "OAUTH" # auth: "OAUTH"
apa-proxy: true # apa-proxy: true
check-cs-env: "true" # check-cs-env: "true"
check-ps-cloud-env: "true" # check-ps-cloud-env: "true"
steps: # steps:
- name: Checkout repository # - name: Checkout repository
uses: actions/checkout@v3 # uses: actions/checkout@v3
with: # with:
fetch-depth: 0 # Fetch all history for all # fetch-depth: 0 # Fetch all history for all
- uses: ./.github/actions/setup # - uses: ./.github/actions/setup
with: # with:
enable-cache: "true" # enable-cache: "true"
enable-node-modules-cache: "true" # enable-node-modules-cache: "true"
- uses: ./.github/actions/download-node-modules-and-artifacts # - uses: ./.github/actions/download-node-modules-and-artifacts
- name: setup chrome # - name: setup chrome
uses: ./.github/actions/setup-chrome # uses: ./.github/actions/setup-chrome
- name: e2e # - name: e2e
uses: ./.github/actions/e2e # uses: ./.github/actions/e2e
with: # with:
e2e-test-id: ${{ matrix.e2e-test.test-id }} # e2e-test-id: ${{ matrix.e2e-test.test-id }}
e2e-test-folder: ${{ matrix.e2e-test.folder }} # e2e-test-folder: ${{ matrix.e2e-test.folder }}
e2e-test-provider: ${{ matrix.e2e-test.provider }} # e2e-test-provider: ${{ matrix.e2e-test.provider }}
e2e-test-auth: ${{ matrix.e2e-test.auth }} # e2e-test-auth: ${{ matrix.e2e-test.auth }}
check-cs-env: ${{ matrix.e2e-test.check-cs-env }} # check-cs-env: ${{ matrix.e2e-test.check-cs-env }}
check-ps-env: ${{ matrix.e2e-test.check-ps-env }} # check-ps-env: ${{ matrix.e2e-test.check-ps-env }}
check-ps-cloud-env: ${{ matrix.e2e-test.check-ps-cloud-env }} # check-ps-cloud-env: ${{ matrix.e2e-test.check-ps-cloud-env }}
check-external-cs-env: ${{ matrix.e2e-test.check-external-cs-env }} # check-external-cs-env: ${{ matrix.e2e-test.check-external-cs-env }}
apa-proxy: ${{ matrix.e2e-test.apa-proxy }} # apa-proxy: ${{ matrix.e2e-test.apa-proxy }}
results: results:
if: ${{ always() }} if: ${{ always() }}
# if: success() || failure() # if: success() || failure()
runs-on: ubuntu-latest runs-on: ubuntu-latest
name: Final Results name: Final Results
needs: [check-if-pr-is-approved, check-package-lock, build-libs, e2e, e2e-storybook] # needs: [check-if-pr-is-approved, check-package-lock, build-libs, e2e, e2e-storybook]
needs: [check-if-pr-is-approved, check-package-lock]
steps: steps:
- run: exit 1 - name: fail on workflow failure
run: exit 1
if: ${{ contains(needs.*.result, 'failure') }} if: ${{ contains(needs.*.result, 'failure') }}
- run: exit 1 - name: fail on workflow canceled
run: exit 1
if: ${{ contains(needs.*.result, 'cancelled') }} if: ${{ contains(needs.*.result, 'cancelled') }}
- name: ok on workflow success
run: exit 0
if: ${{ contains(needs.*.result, 'success') }}