docker build was failing intermittently with 'cannot connect to the docker daemon' because the job started before the docker-dind sidecar finished starting up. Poll docker info until the daemon responds before attempting login/build/push.
110 lines
3.0 KiB
YAML
110 lines
3.0 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- '**'
|
|
pull_request:
|
|
branches: [dev, main]
|
|
|
|
jobs:
|
|
lint-and-format:
|
|
runs-on: ubuntu-docker-dind
|
|
container:
|
|
image: git.byting-pandas.ninja/ci/node22-docker:latest
|
|
credentials:
|
|
username: ${{ secrets.REGISTRY_USER }}
|
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- run: corepack enable
|
|
- run: corepack prepare pnpm@11.11.0 --activate
|
|
|
|
- run: pnpm install --frozen-lockfile
|
|
|
|
- name: Lint
|
|
run: pnpm lint
|
|
|
|
- name: Check formatting
|
|
run: pnpm format:check
|
|
|
|
changeset-check:
|
|
runs-on: ubuntu-docker-dind
|
|
container:
|
|
image: git.byting-pandas.ninja/ci/node22-docker:latest
|
|
credentials:
|
|
username: ${{ secrets.REGISTRY_USER }}
|
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- run: corepack enable
|
|
- run: corepack prepare pnpm@11.11.0 --activate
|
|
|
|
- run: pnpm install --frozen-lockfile
|
|
|
|
- name: Verify changeset exists
|
|
continue-on-error: true
|
|
run: pnpm changeset status --since=origin/dev
|
|
|
|
unit-tests:
|
|
runs-on: ubuntu-docker-dind
|
|
container:
|
|
image: git.byting-pandas.ninja/ci/node22-docker:latest
|
|
credentials:
|
|
username: ${{ secrets.REGISTRY_USER }}
|
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- run: corepack enable
|
|
- run: corepack prepare pnpm@11.11.0 --activate
|
|
|
|
- run: pnpm install --frozen-lockfile
|
|
|
|
- name: Run unit tests
|
|
run: pnpm test:unit
|
|
|
|
build-test-image:
|
|
runs-on: ubuntu-docker-dind
|
|
container:
|
|
image: git.byting-pandas.ninja/ci/node22-docker:latest
|
|
credentials:
|
|
username: ${{ secrets.REGISTRY_USER }}
|
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
|
options: --network host
|
|
env:
|
|
DOCKER_HOST: tcp://localhost:2375
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Wait for docker daemon
|
|
run: |
|
|
for i in $(seq 1 30); do
|
|
docker info > /dev/null 2>&1 && break
|
|
echo "waiting for docker daemon... ($i/30)"
|
|
sleep 2
|
|
done
|
|
docker info
|
|
|
|
- name: Build and push test image
|
|
run: |
|
|
docker login git.byting-pandas.ninja -u ${{ secrets.REGISTRY_USER }} -p ${{ secrets.REGISTRY_TOKEN }}
|
|
docker build -t git.byting-pandas.ninja/ci/luna-charts-test:${{ gitea.sha }} -f Dockerfile.test .
|
|
docker push git.byting-pandas.ninja/ci/luna-charts-test:${{ gitea.sha }}
|
|
|
|
component-tests:
|
|
needs: build-test-image
|
|
runs-on: ubuntu-docker-dind
|
|
container:
|
|
image: git.byting-pandas.ninja/ci/luna-charts-test:${{ gitea.sha }}
|
|
credentials:
|
|
username: ${{ secrets.REGISTRY_USER }}
|
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
|
steps:
|
|
- name: Run component tests (Playwright)
|
|
working-directory: packages/luna-charts
|
|
run: pnpm test:browser |