Merge pull request #8067 from Ocelot-Social-Community/dependabot/gith… #3914
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 backend test CI | |
on: push | |
jobs: | |
files-changed: | |
name: Detect File Changes - Backend | |
runs-on: ubuntu-latest | |
outputs: | |
backend: ${{ steps.changes.outputs.backend }} | |
docker: ${{ steps.changes.outputs.docker }} | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 | |
- name: Check for backend file changes | |
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 | |
id: changes | |
with: | |
token: ${{ github.token }} | |
filters: .github/file-filters.yml | |
list-files: shell | |
build_test_neo4j: | |
name: Docker Build Test - Neo4J | |
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.docker == 'true' | |
needs: files-changed | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 | |
- name: Neo4J | Build 'community' image | |
run: | | |
docker build --target community -t "ocelotsocialnetwork/neo4j-community:test" neo4j/ | |
docker save "ocelotsocialnetwork/neo4j-community:test" > /tmp/neo4j.tar | |
- name: Cache docker images | |
id: cache-neo4j | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.0.2 | |
with: | |
path: /tmp/neo4j.tar | |
key: ${{ github.run_id }}-backend-neo4j-cache | |
build_test_backend: | |
name: Docker Build Test - Backend | |
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.docker == 'true' | |
needs: files-changed | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 | |
- name: backend | Build 'test' image | |
run: | | |
docker build --target test -t "ocelotsocialnetwork/backend:test" backend/ | |
docker save "ocelotsocialnetwork/backend:test" > /tmp/backend.tar | |
- name: Cache docker images | |
id: cache-backend | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.0.2 | |
with: | |
path: /tmp/backend.tar | |
key: ${{ github.run_id }}-backend-cache | |
lint_backend: | |
name: Lint Backend | |
if: needs.files-changed.outputs.backend == 'true' | |
needs: files-changed | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 | |
- name: backend | Lint | |
run: cd backend && yarn && yarn run lint | |
unit_test_backend: | |
name: Unit tests - Backend | |
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.docker == 'true' | |
needs: [files-changed, build_test_neo4j, build_test_backend] | |
runs-on: ubuntu-latest | |
permissions: | |
checks: write | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 | |
- name: Restore Neo4J cache | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.0.2 | |
with: | |
path: /tmp/neo4j.tar | |
key: ${{ github.run_id }}-backend-neo4j-cache | |
fail-on-cache-miss: true | |
- name: Restore Backend cache | |
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.0.2 | |
with: | |
path: /tmp/backend.tar | |
key: ${{ github.run_id }}-backend-cache | |
fail-on-cache-miss: true | |
- name: Load Docker Images | |
run: | | |
docker load < /tmp/neo4j.tar | |
docker load < /tmp/backend.tar | |
- name: backend | copy env files | |
run: | | |
cp webapp/.env.template webapp/.env | |
cp frontend/.env.dist frontend/.env | |
cp backend/.env.template backend/.env | |
- name: backend | docker compose | |
run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps neo4j backend | |
- name: backend | Initialize Database | |
run: docker compose exec -T backend yarn db:migrate init | |
- name: backend | Migrate Database Up | |
run: docker compose exec -T backend yarn db:migrate up | |
- name: backend | Unit test incl. coverage check | |
run: docker compose exec -T backend yarn test | |
cleanup: | |
name: Cleanup | |
if: ${{ needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.docker == 'true' }} | |
needs: [files-changed, unit_test_backend] | |
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 }}-backend-neo4j-cache" | |
gh actions-cache delete $KEY -R Ocelot-Social-Community/Ocelot-Social --confirm | |
KEY="${{ github.run_id }}-backend-cache" | |
gh actions-cache delete $KEY -R Ocelot-Social-Community/Ocelot-Social --confirm |