Skip to content

chore: add CODEOWNERS (managed by owncloud/admin) (#12) #16

chore: add CODEOWNERS (managed by owncloud/admin) (#12)

chore: add CODEOWNERS (managed by owncloud/admin) (#12) #16

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
jobs:
reuse:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: REUSE compliance check
uses: fsfe/reuse-action@676e2d560c9a403aa252096d99fcab3e1132b0f5 # v6.0.0
commitlint:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.15.0
- name: Install commitlint
run: npm install --no-save @commitlint/cli @commitlint/config-conventional
- name: Lint PR commits
run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
frontend:
runs-on: ubuntu-latest
defaults:
run:
working-directory: frontend
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10.34.1
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.15.0
cache: pnpm
cache-dependency-path: frontend/pnpm-lock.yaml
- name: Install dependencies
run: pnpm install
- name: Check dependency licenses
run: node scripts/check-licenses.mjs
- name: Lint
run: pnpm lint
- name: Check types
run: pnpm check:types
- name: Run unit tests
run: pnpm test:unit
- name: Build
run: pnpm build
- name: Upload dist
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: frontend-dist
path: frontend/dist
retention-days: 1
backend:
runs-on: ubuntu-latest
defaults:
run:
working-directory: backend
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version-file: backend/go.mod
cache-dependency-path: backend/go.sum
- name: Build
run: go build ./...
- name: Vet
run: go vet ./...
- name: Unit tests
run: go test ./...
e2e:
runs-on: ubuntu-latest
needs: [frontend, backend]
steps:
- name: Checkout code
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup pnpm
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
with:
version: 10.34.1
- name: Setup Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 24.15.0
cache: pnpm
cache-dependency-path: frontend/pnpm-lock.yaml
- name: Setup Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version-file: backend/go.mod
cache-dependency-path: backend/go.sum
- name: Download frontend dist
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: frontend-dist
path: frontend/dist
- name: Add host.docker.internal
run: echo "127.0.0.1 host.docker.internal" | sudo tee -a /etc/hosts
- name: Start dev stack
run: docker compose up -d
- name: Wait for oCIS
run: |
for i in $(seq 1 60); do
curl -sk https://host.docker.internal:9200/status.php && exit 0
sleep 2
done
echo "oCIS did not become ready in time" >&2
exit 1
- name: Install frontend dependencies (for Playwright)
working-directory: frontend
run: pnpm install
- name: Install Playwright browsers
working-directory: frontend
run: pnpm exec playwright install --with-deps chromium
- name: Backend e2e tests
working-directory: backend
run: go test -tags=e2e ./tests/e2e/...
- name: Frontend e2e tests
working-directory: frontend
run: pnpm test:e2e
- name: Dump stack logs on failure
if: failure()
run: docker compose logs
- name: Tear down dev stack
if: always()
run: docker compose down -v