Files
voltsrage f2eab26ad0
CI / backend (push) Successful in 6m11s
CI / frontend (push) Failing after 54s
fix: fix ci issues and update styles to remove ui elements
2026-08-11 20:33:23 +08:00

110 lines
4.1 KiB
YAML

# Build and test on every push/PR. Fixtures read ConnectionStrings__* /
# Redis__* directly from environment (see VigilCareRecordsAPI.Tests/Fixtures/
# ApiFixture.cs) against the ports published by docker-compose.yml; MinIO is
# left at its docker-compose.yml defaults (localhost:9012, minioadmin/minioadmin,
# bucket auto-created on first upload by DocumentStorageService).
name: CI
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
backend:
runs-on: ubuntu-latest
# act_runner's docker executor runs steps inside their own job container — a
# sibling of the "docker compose" containers below — so "localhost" from inside
# the job container is NOT the Docker host and can't reach the published
# Postgres/Redis ports (this is what "Connection refused" on 127.0.0.1:5437
# in the Test step means). The Test step below points at host.docker.internal
# instead; that hostname must resolve inside the job container, which on Linux
# requires the runner itself (not this workflow) to add
# `--add-host=host.docker.internal:host-gateway` — set
# `container: { options: "--add-host=host.docker.internal:host-gateway" }` in the
# act_runner's config.yaml. Docker Desktop runners already resolve this hostname
# out of the box. See docs/25-gitea-cicd-docker-deploy.md ("Runner requirement
# for Compose-based tests").
steps:
- uses: actions/checkout@v4
- name: Start dependency stack
run: docker compose up -d postgres redis minio
- name: Wait for Postgres
run: |
for i in $(seq 1 60); do
docker compose exec -T postgres pg_isready -U postgres && break
sleep 2
done
docker compose exec -T postgres pg_isready -U postgres
- name: Wait for Redis / MinIO
run: |
for i in $(seq 1 60); do
docker compose exec -T redis redis-cli ping 2>/dev/null | grep -q PONG \
&& docker compose exec -T minio curl -sf http://localhost:9000/minio/health/live >/dev/null \
&& echo "Redis and MinIO are ready" && exit 0
echo "waiting for dependencies ($i)..."
sleep 2
done
echo "Dependencies failed to become ready" >&2
docker compose ps
docker compose logs --tail=50 redis minio
exit 1
- name: Create test database
run: |
docker compose exec -T postgres psql -U postgres -tc "SELECT 1 FROM pg_database WHERE datname='vigilcare_records_test'" \
| grep -q 1 \
|| docker compose exec -T postgres psql -U postgres -c "CREATE DATABASE vigilcare_records_test"
- name: Setup .NET 8
uses: actions/setup-dotnet@v4
with:
dotnet-version: "8.0.x"
- name: Restore
run: dotnet restore VigilCareRecords.sln
- name: Build
run: dotnet build VigilCareRecords.sln -c Release --no-restore
- name: Test
env:
ASPNETCORE_ENVIRONMENT: "Testing"
CONNECTIONSTRINGS__DEFAULTCONNECTION: "Host=host.docker.internal;Port=5437;Database=vigilcare_records_test;Username=postgres;Password=password"
REDIS__CONNECTIONSTRING: "host.docker.internal:6383,defaultDatabase=1,allowAdmin=true"
run: |
dotnet test VigilCareRecords.sln -c Release --no-build \
--logger "trx;LogFileName=test-results.trx" \
--results-directory ./TestResults
- name: Publish test results
if: always()
uses: actions/upload-artifact@v3
with:
name: test-results
path: ./TestResults
- name: Tear down stack
if: always()
run: docker compose down -v
frontend:
runs-on: ubuntu-latest
container:
image: node:22-alpine
steps:
- uses: actions/checkout@v4
- name: Install
working-directory: vigilcare-records-web
run: npm ci
- name: Test
working-directory: vigilcare-records-web
run: npm run test:run
- name: Build
working-directory: vigilcare-records-web
run: npm run build