Bump the apollo-server group in /backend with 3 updates #3862
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 | |
- name: Copy env files | |
run: | | |
cp webapp/.env.template webapp/.env | |
cp frontend/.env.dist frontend/.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: 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@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.0.2 | |
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@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.0.2 | |
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: 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, upload report | |
id: e2e-report | |
if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }} | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
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 | |
needs: [docker_preparation, fullstack_tests] | |
runs-on: ubuntu-latest | |
permissions: write-all | |
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 |