From b59485e116e31f1741674ddcd24eb2be985dae63 Mon Sep 17 00:00:00 2001 From: Marco Carrozzo Date: Fri, 20 Jan 2023 14:58:33 +0100 Subject: [PATCH] set everything in place --- .github/workflows/pull-request.yml | 579 +++++++++++++++-------------- 1 file changed, 290 insertions(+), 289 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 3e7ffb243e..6d739517c9 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -70,78 +70,78 @@ env: DOCKER_REPOSITORY: "${{ secrets.DOCKER_REPOSITORY_DOMAIN }}/alfresco/demo-shell" jobs: - # check-if-pr-is-approved: - # runs-on: ubuntu-22.04 - # steps: - # - name: Checkout repository - # uses: actions/checkout@v3 - # with: - # fetch-depth: 0 + check-if-pr-is-approved: + runs-on: ubuntu-22.04 + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 - # - name: Check if PR is approved - # id: action - # if: ${{ github.event_name != 'schedule' }} - # uses: kamatama41/get-pr-number-action@v0 - # with: - # github_token: ${{ secrets.GITHUB_TOKEN }} + - name: Check if PR is approved + id: action + if: ${{ github.event_name != 'schedule' }} + uses: kamatama41/get-pr-number-action@v0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} - # - name: Show the number - # env: - # GH_TOKEN: ${{ github.token }} - # DEVEL_FLAG: ${{ inputs.skip-pr-approve }} #put it to true if you need to develop the pipeline on your own branch. before the final merge put it to false - # shell: bash - # if: ${{ github.event_name != 'schedule' }} - # run: | - # if [[ "$DEVEL_FLAG" = false ]] ; then - # echo "PR number is: ${{ steps.action.outputs.number }}" - # prNumber=${{ steps.action.outputs.number }} - # checkApproval=$(gh api /repos/Alfresco/alfresco-ng2-components/pulls/$prNumber/reviews | jq '.[] | select(.state == "APPROVED") | .user.login') - # if [[ $checkApproval ]]; then - # echo "PR approved" - # else - # echo "PR not approved yet" - # exit 1 - # fi - # else - # echo "you are on your branch: skipping the check. REMEMBER to put DEVEL_FLAG to FALSE before the final merge!" - # fi + - name: Show the number + env: + GH_TOKEN: ${{ github.token }} + DEVEL_FLAG: ${{ inputs.skip-pr-approve }} #put it to true if you need to develop the pipeline on your own branch. before the final merge put it to false + shell: bash + if: ${{ github.event_name != 'schedule' }} + run: | + if [[ "$DEVEL_FLAG" = false ]] ; then + echo "PR number is: ${{ steps.action.outputs.number }}" + prNumber=${{ steps.action.outputs.number }} + checkApproval=$(gh api /repos/Alfresco/alfresco-ng2-components/pulls/$prNumber/reviews | jq '.[] | select(.state == "APPROVED") | .user.login') + if [[ $checkApproval ]]; then + echo "PR approved" + else + echo "PR not approved yet" + exit 1 + fi + else + echo "you are on your branch: skipping the check. REMEMBER to put DEVEL_FLAG to FALSE before the final merge!" + fi - # setup: - # # long timeout required when cache has to be recreated - # timeout-minutes: 30 - # name: "Setup" - # runs-on: ubuntu-22.04 - # needs: [check-if-pr-is-approved] - # steps: - # - name: Checkout repository - # uses: actions/checkout@v3 - # with: - # fetch-depth: 0 # Fetch all history for all tags and branches - # - uses: ./.github/actions/setup - # id: setup - # with: - # use-gh-nx-cache: false - # use-gh-node-modules-cache: true - # - name: run ci - # if: steps.setup.outputs.cache-hit != 'true' - # run: npm ci - # - run: nx run cli:bundle - # - run: nx run testing:bundle - # - uses: ./.github/actions/upload-cache-and-artifacts - # with: - # packages: 'dist node_modules' - # - name: show files - # run: | - # pwd - # ls -lha - # echo "====DIST====" - # find dist -maxdepth 1 -type d || true - # echo "====NXCACHE====" - # find nxcache -maxdepth 1 -type d || true - # echo "====ADF====" - # find node_modules/@alfresco/ -maxdepth 1 -type d || true - # echo "====NX====" - # find node_modules/nx/ -maxdepth 1 -type d || true + setup: + # long timeout required when cache has to be recreated + timeout-minutes: 30 + name: "Setup" + runs-on: ubuntu-22.04 + needs: [check-if-pr-is-approved] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Fetch all history for all tags and branches + - uses: ./.github/actions/setup + id: setup + with: + use-gh-nx-cache: false + use-gh-node-modules-cache: true + - name: run ci + if: steps.setup.outputs.cache-hit != 'true' + run: npm ci + - run: nx run cli:bundle + - run: nx run testing:bundle + - uses: ./.github/actions/upload-cache-and-artifacts + with: + packages: 'dist node_modules' + - name: show files + run: | + pwd + ls -lha + echo "====DIST====" + find dist -maxdepth 1 -type d || true + echo "====NXCACHE====" + find nxcache -maxdepth 1 -type d || true + echo "====ADF====" + find node_modules/@alfresco/ -maxdepth 1 -type d || true + echo "====NX====" + find node_modules/nx/ -maxdepth 1 -type d || true unit-tests: timeout-minutes: 30 @@ -182,226 +182,227 @@ jobs: with: persistent-packages: 'nxcache' cache-key-suffix: ${{ matrix.unit-tests.name }} - # lint: - # # long timeout required when cache has to be recreated - # timeout-minutes: 30 - # name: "Lint" - # runs-on: ubuntu-22.04 - # needs: [setup] - # steps: - # - name: Checkout repository - # uses: actions/checkout@v3 - # with: - # fetch-depth: 0 # Fetch all history for all tags and branches - # - uses: ./.github/actions/setup - # with: - # use-gh-nx-cache: false - # use-gh-node-modules-cache: true - # cache-key-suffix: lint - # - uses: ./.github/actions/download-cache-and-artifacts - # with: - # packages: 'node_modules' - # persistent-packages: 'nxcache' - # - run: nx affected --target=lint $NX_CALCULATION_FLAGS - # - uses: ./.github/actions/upload-cache-and-artifacts - # with: - # persistent-packages: 'nxcache' - # build-libs: - # # long timeout required when cache has to be recreated - # timeout-minutes: 30 - # name: "Build libs" - # runs-on: ubuntu-22.04 - # needs: [setup] - # steps: - # - name: Checkout repository - # uses: actions/checkout@v3 - # with: - # fetch-depth: 0 # Fetch all history for all tags and branches - # - uses: ./.github/actions/setup - # with: - # use-gh-nx-cache: false - # use-gh-node-modules-cache: true - # cache-key-suffix: build-libs - # - uses: ./.github/actions/download-cache-and-artifacts - # with: - # persistent-packages: 'nxcache' - # - run: nx affected:build $NX_CALCULATION_FLAGS --prod - # - run: nx build demoshell --configuration production - # - run: nx affected --target=build-storybook $NX_CALCULATION_FLAGS --configuration ci - # - uses: ./.github/actions/upload-cache-and-artifacts - # with: - # packages: 'dist node_modules' - # persistent-packages: 'nxcache' + lint: + # long timeout required when cache has to be recreated + timeout-minutes: 30 + name: "Lint" + runs-on: ubuntu-22.04 + needs: [setup] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Fetch all history for all tags and branches + - uses: ./.github/actions/setup + with: + use-gh-nx-cache: false + use-gh-node-modules-cache: false + cache-key-suffix: lint + - uses: ./.github/actions/download-cache-and-artifacts + with: + packages: 'node_modules' + persistent-packages: 'nxcache' + - run: nx affected --target=lint $NX_CALCULATION_FLAGS + - uses: ./.github/actions/upload-cache-and-artifacts + with: + persistent-packages: 'nxcache' -# e2e-storybook: -# timeout-minutes: 20 -# name: "e2e: storybook" -# needs: [build-libs, lint, unit-tests] -# runs-on: ubuntu-22.04 -# steps: -# - name: Checkout repository -# uses: actions/checkout@v3 -# with: -# fetch-depth: 0 # Fetch all history for all -# - uses: ./.github/actions/setup -# with: -# use-gh-nx-cache: false -# use-gh-node-modules-cache: false -# - uses: ./.github/actions/download-cache-and-artifacts -# with: -# packages: 'dist node_modules' -# - name: Process Cloud Storybook Playwright -# run: | -# npx playwright install chromium -# sudo sysctl -w fs.inotify.max_user_watches=524288 -# npx nx affected --target=e2e-playwright $NX_CALCULATION_FLAGS || exit 1 + build-libs: + # long timeout required when cache has to be recreated + timeout-minutes: 30 + name: "Build libs" + runs-on: ubuntu-22.04 + needs: [setup] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Fetch all history for all tags and branches + - uses: ./.github/actions/setup + with: + use-gh-nx-cache: false + use-gh-node-modules-cache: false + cache-key-suffix: build-libs + - uses: ./.github/actions/download-cache-and-artifacts + with: + packages: 'node_modules' + persistent-packages: 'nxcache' + - run: nx affected:build $NX_CALCULATION_FLAGS --prod + - run: nx build demoshell --configuration production + - run: nx affected --target=build-storybook $NX_CALCULATION_FLAGS --configuration ci + - uses: ./.github/actions/upload-cache-and-artifacts + with: + packages: 'dist node_modules' + persistent-packages: 'nxcache' -# e2e: -# timeout-minutes: 90 -# name: "e2e: ${{ matrix.e2e-test.description }}" -# needs: [build-libs, lint, unit-tests] -# runs-on: ubuntu-22.04 -# strategy: -# fail-fast: false -# # max-parallel: 4 -# matrix: -# e2e-test: -# - description: "Core" -# test-id: "core" -# folder: "core" -# provider: "ALL" -# auth: "OAUTH" -# check-cs-env: "true" -# check-ps-env: "true" -# - description: "Content: Components" -# test-id: "content-services" -# folder: "content-services/components" -# provider: "ECM" -# auth: "BASIC" -# check-cs-env: "true" -# - description: "Content: Directives" -# test-id: "content-services" -# folder: "content-services/directives" -# provider: "ECM" -# auth: "BASIC" -# check-cs-env: "true" -# - description: "Content: Document List" -# test-id: "content-services" -# folder: "content-services/document-list" -# provider: "ECM" -# auth: "BASIC" -# check-cs-env: "true" -# - description: "Content: Metadata" -# test-id: "content-services" -# folder: "content-services/metadata" -# provider: "ECM" -# auth: "BASIC" -# check-cs-env: "true" -# - description: "Content: Upload and Versioning" -# test-id: "content-services" -# folder: "content-services/upload" -# provider: "ECM" -# auth: "BASIC" -# check-cs-env: "true" -# - description: "Search" -# test-id: "content-services" -# folder: "search" -# provider: "ECM" -# auth: "BASIC" -# check-cs-env: "true" -# - description: "Process: Form" -# test-id: "process-services" -# folder: "process-services/form" -# provider: "BPM" -# auth: "OAUTH" -# check-ps-env: "true" -# check-external-cs-env: "true" -# - description: "Process: Process" -# test-id: "process-services" -# folder: "process-services/process" -# provider: "BPM" -# auth: "OAUTH" -# check-ps-env: "true" -# check-external-cs-env: "true" -# - description: "Process: Tasks" -# test-id: "process-services" -# folder: "process-services/tasks" -# provider: "BPM" -# auth: "OAUTH" -# check-ps-env: "true" -# check-external-cs-env: "true" -# - description: "Process: Widget" -# test-id: "process-services" -# folder: "process-services/widgets" -# provider: "BPM" -# auth: "OAUTH" -# check-ps-env: "true" -# check-external-cs-env: "true" -# - description: "Process Cloud: Form" -# test-id: "process-services-cloud" -# folder: "process-services-cloud/form-field" -# provider: "ALL" -# auth: "OAUTH" -# apa-proxy: true -# check-cs-env: "true" -# check-ps-cloud-env: "true" -# - description: "Process Cloud: People" -# test-id: "process-services-cloud" -# folder: "process-services-cloud/people" -# provider: "ALL" -# auth: "OAUTH" -# apa-proxy: true -# check-cs-env: "true" -# check-ps-cloud-env: "true" -# - description: "Process Cloud: Process" -# test-id: "process-services-cloud" -# folder: "process-services-cloud/process" -# provider: "ALL" -# auth: "OAUTH" -# apa-proxy: true -# check-cs-env: "true" -# check-ps-cloud-env: "true" -# - description: "Process Cloud: Start Task" -# test-id: "process-services-cloud" -# folder: "process-services-cloud/start-task" -# provider: "ALL" -# auth: "OAUTH" -# apa-proxy: true -# check-cs-env: "true" -# check-ps-cloud-env: "true" -# - description: "Process Cloud: Tasks List" -# test-id: "process-services-cloud" -# folder: "process-services-cloud/task-list" -# provider: "ALL" -# auth: "OAUTH" -# apa-proxy: true -# check-cs-env: "true" -# check-ps-cloud-env: "true" + e2e-storybook: + timeout-minutes: 20 + name: "e2e: storybook" + needs: [build-libs, lint, unit-tests] + runs-on: ubuntu-22.04 + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Fetch all history for all + - uses: ./.github/actions/setup + with: + use-gh-nx-cache: false + use-gh-node-modules-cache: false + - uses: ./.github/actions/download-cache-and-artifacts + with: + packages: 'dist node_modules' + - name: Process Cloud Storybook Playwright + run: | + npx playwright install chromium + sudo sysctl -w fs.inotify.max_user_watches=524288 + npx nx affected --target=e2e-playwright $NX_CALCULATION_FLAGS || exit 1 -# steps: -# - name: Checkout repository -# uses: actions/checkout@v3 -# with: -# fetch-depth: 0 # Fetch all history for all -# - uses: ./.github/actions/setup -# with: -# use-gh-nx-cache: false -# use-gh-node-modules-cache: false -# - uses: ./.github/actions/download-cache-and-artifacts -# with: -# packages: 'dist node_modules' -# - name: setup chrome -# uses: ./.github/actions/setup-chrome -# - name: e2e -# uses: ./.github/actions/e2e -# with: -# e2e-test-id: ${{ matrix.e2e-test.test-id }} -# e2e-test-folder: ${{ matrix.e2e-test.folder }} -# e2e-test-provider: ${{ matrix.e2e-test.provider }} -# e2e-test-auth: ${{ matrix.e2e-test.auth }} -# check-cs-env: ${{ matrix.e2e-test.check-cs-env }} -# check-ps-env: ${{ matrix.e2e-test.check-ps-env }} -# check-ps-cloud-env: ${{ matrix.e2e-test.check-ps-cloud-env }} -# check-external-cs-env: ${{ matrix.e2e-test.check-external-cs-env }} -# apa-proxy: ${{ matrix.e2e-test.apa-proxy }} -# # + e2e: + timeout-minutes: 90 + name: "e2e: ${{ matrix.e2e-test.description }}" + needs: [build-libs, lint, unit-tests] + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + # max-parallel: 4 + matrix: + e2e-test: + - description: "Core" + test-id: "core" + folder: "core" + provider: "ALL" + auth: "OAUTH" + check-cs-env: "true" + check-ps-env: "true" + - description: "Content: Components" + test-id: "content-services" + folder: "content-services/components" + provider: "ECM" + auth: "BASIC" + check-cs-env: "true" + - description: "Content: Directives" + test-id: "content-services" + folder: "content-services/directives" + provider: "ECM" + auth: "BASIC" + check-cs-env: "true" + - description: "Content: Document List" + test-id: "content-services" + folder: "content-services/document-list" + provider: "ECM" + auth: "BASIC" + check-cs-env: "true" + - description: "Content: Metadata" + test-id: "content-services" + folder: "content-services/metadata" + provider: "ECM" + auth: "BASIC" + check-cs-env: "true" + - description: "Content: Upload and Versioning" + test-id: "content-services" + folder: "content-services/upload" + provider: "ECM" + auth: "BASIC" + check-cs-env: "true" + - description: "Search" + test-id: "content-services" + folder: "search" + provider: "ECM" + auth: "BASIC" + check-cs-env: "true" + - description: "Process: Form" + test-id: "process-services" + folder: "process-services/form" + provider: "BPM" + auth: "OAUTH" + check-ps-env: "true" + check-external-cs-env: "true" + - description: "Process: Process" + test-id: "process-services" + folder: "process-services/process" + provider: "BPM" + auth: "OAUTH" + check-ps-env: "true" + check-external-cs-env: "true" + - description: "Process: Tasks" + test-id: "process-services" + folder: "process-services/tasks" + provider: "BPM" + auth: "OAUTH" + check-ps-env: "true" + check-external-cs-env: "true" + - description: "Process: Widget" + test-id: "process-services" + folder: "process-services/widgets" + provider: "BPM" + auth: "OAUTH" + check-ps-env: "true" + check-external-cs-env: "true" + - description: "Process Cloud: Form" + test-id: "process-services-cloud" + folder: "process-services-cloud/form-field" + provider: "ALL" + auth: "OAUTH" + apa-proxy: true + check-cs-env: "true" + check-ps-cloud-env: "true" + - description: "Process Cloud: People" + test-id: "process-services-cloud" + folder: "process-services-cloud/people" + provider: "ALL" + auth: "OAUTH" + apa-proxy: true + check-cs-env: "true" + check-ps-cloud-env: "true" + - description: "Process Cloud: Process" + test-id: "process-services-cloud" + folder: "process-services-cloud/process" + provider: "ALL" + auth: "OAUTH" + apa-proxy: true + check-cs-env: "true" + check-ps-cloud-env: "true" + - description: "Process Cloud: Start Task" + test-id: "process-services-cloud" + folder: "process-services-cloud/start-task" + provider: "ALL" + auth: "OAUTH" + apa-proxy: true + check-cs-env: "true" + check-ps-cloud-env: "true" + - description: "Process Cloud: Tasks List" + test-id: "process-services-cloud" + folder: "process-services-cloud/task-list" + provider: "ALL" + auth: "OAUTH" + apa-proxy: true + check-cs-env: "true" + check-ps-cloud-env: "true" + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 # Fetch all history for all + - uses: ./.github/actions/setup + with: + use-gh-nx-cache: false + use-gh-node-modules-cache: false + - uses: ./.github/actions/download-cache-and-artifacts + with: + packages: 'dist node_modules' + - name: setup chrome + uses: ./.github/actions/setup-chrome + - name: e2e + uses: ./.github/actions/e2e + with: + e2e-test-id: ${{ matrix.e2e-test.test-id }} + e2e-test-folder: ${{ matrix.e2e-test.folder }} + e2e-test-provider: ${{ matrix.e2e-test.provider }} + e2e-test-auth: ${{ matrix.e2e-test.auth }} + check-cs-env: ${{ matrix.e2e-test.check-cs-env }} + check-ps-env: ${{ matrix.e2e-test.check-ps-env }} + check-ps-cloud-env: ${{ matrix.e2e-test.check-ps-cloud-env }} + check-external-cs-env: ${{ matrix.e2e-test.check-external-cs-env }} + apa-proxy: ${{ matrix.e2e-test.apa-proxy }}