From b4383d38a10a609aa0c25b984785cd83ddfe6a89 Mon Sep 17 00:00:00 2001 From: mahula Date: Tue, 18 Jul 2023 21:10:54 +0200 Subject: [PATCH] set e2e test cache delete job wo run only, if needed jobs were successful --- .github/workflows/test-e2e.yml | 201 ++++++++++++++++----------------- 1 file changed, 100 insertions(+), 101 deletions(-) diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml index 9eafcddaa..0012f15da 100644 --- a/.github/workflows/test-e2e.yml +++ b/.github/workflows/test-e2e.yml @@ -1,112 +1,111 @@ -# name: ocelot.social end-to-end test CI -# on: push +name: ocelot.social end-to-end test CI +on: push -# jobs: -# docker_preparation: -# name: Fullstack test preparation -# runs-on: ubuntu-latest -# steps: -# - name: Checkout code -# uses: actions/checkout@v3 +jobs: + docker_preparation: + name: Fullstack test preparation + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 -# - name: Copy env files -# run: | -# cp webapp/.env.template webapp/.env -# cp backend/.env.template backend/.env + - name: Copy env files + run: | + cp webapp/.env.template webapp/.env + cp backend/.env.template backend/.env -# - name: Build docker images -# run: | -# mkdir /tmp/images -# docker build --target community -t "ocelotsocialnetwork/neo4j-community:test" neo4j/ -# docker save "ocelotsocialnetwork/neo4j-community:test" > /tmp/images/neo4j.tar -# docker build --target test -t "ocelotsocialnetwork/backend:test" backend/ -# docker save "ocelotsocialnetwork/backend:test" > /tmp/images/backend.tar -# docker build --target test -t "ocelotsocialnetwork/webapp:test" webapp/ -# docker save "ocelotsocialnetwork/webapp:test" > /tmp/images/webapp.tar + - name: Build docker images + run: | + mkdir /tmp/images + docker build --target community -t "ocelotsocialnetwork/neo4j-community:test" neo4j/ + docker save "ocelotsocialnetwork/neo4j-community:test" > /tmp/images/neo4j.tar + docker build --target test -t "ocelotsocialnetwork/backend:test" backend/ + docker save "ocelotsocialnetwork/backend:test" > /tmp/images/backend.tar + docker build --target test -t "ocelotsocialnetwork/webapp:test" webapp/ + docker save "ocelotsocialnetwork/webapp:test" > /tmp/images/webapp.tar -# - name: Install cypress requirements -# run: | -# wget --no-verbose -O /opt/cucumber-json-formatter "https://github.com/cucumber/json-formatter/releases/download/v19.0.0/cucumber-json-formatter-linux-386" -# cd backend -# yarn install -# yarn build -# cd .. -# yarn install + - name: Install cypress requirements + run: | + wget --no-verbose -O /opt/cucumber-json-formatter "https://github.com/cucumber/json-formatter/releases/download/v19.0.0/cucumber-json-formatter-linux-386" + cd backend + yarn install + yarn build + cd .. + yarn install -# - name: Cache docker images -# id: cache -# uses: actions/cache/save@v3.3.1 -# with: -# path: | -# /opt/cucumber-json-formatter -# /home/runner/.cache/Cypress -# /home/runner/work/Ocelot-Social/Ocelot-Social -# /tmp/images/ -# key: ${{ github.run_id }}-e2e-preparation-cache + - name: Cache docker images + id: cache + uses: actions/cache/save@v3.3.1 + with: + path: | + /opt/cucumber-json-formatter + /home/runner/.cache/Cypress + /home/runner/work/Ocelot-Social/Ocelot-Social + /tmp/images/ + key: ${{ github.run_id }}-e2e-preparation-cache -# fullstack_tests: -# name: Fullstack tests -# if: success() -# needs: docker_preparation -# runs-on: ubuntu-latest -# env: -# jobs: 8 -# strategy: -# matrix: -# # run copies of the current job in parallel -# job: [1, 2, 3, 4, 5, 6, 7, 8] -# steps: -# - name: Restore cache -# uses: actions/cache/restore@v3.3.1 -# id: cache -# with: -# path: | -# /opt/cucumber-json-formatter -# /home/runner/.cache/Cypress -# /home/runner/work/Ocelot-Social/Ocelot-Social -# /tmp/images/ -# key: ${{ github.run_id }}e2e-preparation-cache -# fail-on-cache-miss: true + fullstack_tests: + name: Fullstack tests + if: success() + needs: docker_preparation + runs-on: ubuntu-latest + env: + jobs: 8 + strategy: + matrix: + # run copies of the current job in parallel + job: [1, 2, 3, 4, 5, 6, 7, 8] + steps: + - name: Restore cache + uses: actions/cache/restore@v3.3.1 + id: cache + with: + path: | + /opt/cucumber-json-formatter + /home/runner/.cache/Cypress + /home/runner/work/Ocelot-Social/Ocelot-Social + /tmp/images/ + key: ${{ github.run_id }}e2e-preparation-cache + fail-on-cache-miss: true -# - name: Boot up test system | docker-compose -# run: | -# chmod +x /opt/cucumber-json-formatter -# sudo ln -fs /opt/cucumber-json-formatter /usr/bin/cucumber-json-formatter -# docker load < /tmp/images/neo4j.tar -# docker load < /tmp/images/backend.tar -# docker load < /tmp/images/webapp.tar -# docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps webapp neo4j backend -# sleep 90s + - name: Boot up test system | docker-compose + run: | + chmod +x /opt/cucumber-json-formatter + sudo ln -fs /opt/cucumber-json-formatter /usr/bin/cucumber-json-formatter + docker load < /tmp/images/neo4j.tar + docker load < /tmp/images/backend.tar + docker load < /tmp/images/webapp.tar + docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps webapp neo4j backend + sleep 90s -# - name: Full stack tests | run tests -# id: e2e-tests -# run: yarn run cypress:run --spec $(cypress/parallel-features.sh ${{ matrix.job }} ${{ env.jobs }} ) + - name: Full stack tests | run tests + id: e2e-tests + run: yarn run cypress:run --spec $(cypress/parallel-features.sh ${{ matrix.job }} ${{ env.jobs }} ) -# - name: Full stack tests | if tests failed, compile html report -# if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }} -# run: | -# cd cypress/ -# node create-cucumber-html-report.js + - name: Full stack tests | if tests failed, compile html report + if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }} + run: | + cd cypress/ + node create-cucumber-html-report.js -# - name: Full stack tests | if tests failed, upload report -# id: e2e-report -# if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }} -# uses: actions/upload-artifact@v3 -# with: -# name: ocelot-e2e-test-report-pr${{ needs.docker_preparation.outputs.pr-number }} -# path: /home/runner/work/Ocelot-Social/Ocelot-Social/cypress/reports/cucumber_html_report + - name: Full stack tests | if tests failed, upload report + id: e2e-report + if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }} + uses: actions/upload-artifact@v3 + with: + name: ocelot-e2e-test-report-pr${{ needs.docker_preparation.outputs.pr-number }} + path: /home/runner/work/Ocelot-Social/Ocelot-Social/cypress/reports/cucumber_html_report -# cleanup: -# name: Cleanup -# if: success() -# needs: [docker_preparation, fullstack_tests] -# runs-on: ubuntu-latest -# continue-on-error: true -# steps: -# - name: Delete cache -# env: -# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# run: | -# gh extension install actions/gh-actions-cache -# KEY="${{ github.run_id }}-e2e-preparation-cache" -# gh actions-cache delete $KEY -R Ocelot-Social-Community/Ocelot-Social --confirm \ No newline at end of file + cleanup: + name: Cleanup + needs: [docker_preparation, fullstack_tests] + runs-on: ubuntu-latest + continue-on-error: true + steps: + - name: Delete cache + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh extension install actions/gh-actions-cache + KEY="${{ github.run_id }}-e2e-preparation-cache" + gh actions-cache delete $KEY -R Ocelot-Social-Community/Ocelot-Social --confirm \ No newline at end of file