mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-12 23:35:58 +00:00
## 🍰 Pullrequest This will migrate our assets to an objectstorage via S3. Before this PR is rolled out, the S3 credentials need to be configured in the respective infrastructure repository. The migration is implemented in a backend migration, i.e. I expect the `initContainer` to take a little longer but I hope then it's going to be fine. If any errors occcur, the migration should be repeatable, since the disk volume is still there. ### Issues The backend having direct access on disk. ### Todo - [ ] Configure backend environment variables in every infrastructure repo - [ ] Remove kubernetes uploads volume in a future PR Commits: * refactor: follow @ulfgebhardt Here: https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/8545#pullrequestreview-2846163417 I don't know why the PR didn't include these changes already, I believe I made a mistake during rebase and lost the relevant commits. * refactor: use typescript assertions I found it a better way to react to this comment: https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/8545/files#r2092766596 * add S3 credentials * refactor: easier to remember credentials It's for local development only * give init container necessary file access * fix: wrong upload location on production * refactor: follow @ulfgebhardt's review See: https://github.com/Ocelot-Social-Community/Ocelot-Social/pull/8545#pullrequestreview-2881626504
144 lines
5.0 KiB
YAML
144 lines
5.0 KiB
YAML
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@5a3ec84eff668545956fd18022155c47e93e2684 # 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@5a3ec84eff668545956fd18022155c47e93e2684 # 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@5a3ec84eff668545956fd18022155c47e93e2684 # 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@5a3ec84eff668545956fd18022155c47e93e2684 # 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
|
|
# doesn't work without the --build flag - this either means we should not load the cached images or cache the correct image
|
|
run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach backend --build
|
|
|
|
- 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
|