diff --git a/.github/workflows/ci:build:compose.yml b/.github/workflows/ci:build:compose.yml new file mode 100644 index 000000000..afc23e428 --- /dev/null +++ b/.github/workflows/ci:build:compose.yml @@ -0,0 +1,71 @@ +name: ci:build:compose + +on: + push: + branches: + - main + pull_request: + merge_group: + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + + build: + name: Continuous integration (build compose) + strategy: + matrix: + platform: + - ubuntu-latest + + runs-on: ${{ matrix.platform }} + + timeout-minutes: 18 + + steps: + - name: Checkout 🛎️ + uses: actions/checkout@v4 + + - name: Wait for image build workflow to succeed + uses: ArcticLampyrid/action-wait-for-workflow@v1.0.1 + with: + workflow: ci:build:image.yml + sha: ${{ github.sha }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Bake 🧑‍🍳 + uses: docker/bake-action@v4 + with: + load: true + files: | + compose.yaml + set: | + patient-web.cache-from=type=gha + patient-web.cache-to=type=gha,mode=max + + - name: Start + run: | + docker compose up --detach + + - name: Wait for server port to be available + run: | + timeout 60 bash -c \ + 'until nc -z -v -w5 127.0.0.1 3000 ; do sleep 1; done' + + - name: Call healthcheck endpoint + run: | + timeout 60 bash -c \ + 'curl -f http://localhost:3000/api/healthcheck' + + - name: Run healthcheck script + run: | + timeout 60 bash -c \ + 'node scripts/healthcheck.cjs http://localhost:3000/api/healthcheck' + + - name: Stop + run: | + docker compose down