Files
homarr/.github/workflows/workshop.yml
T

70 lines
2.6 KiB
YAML

name: Workshop
on:
pull_request:
merge_group:
push:
branches: [dev, v2]
permissions:
contents: read
jobs:
validate:
name: Workshop integration
runs-on: ubuntu-24.04
timeout-minutes: 45
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: 24.18.0
- uses: pnpm/action-setup@v6
with:
version: 11.11.0
run_install: false
- run: pnpm install --frozen-lockfile
- run: pnpm --filter @homarr/workshop typecheck
- run: pnpm --filter @homarr/docs typecheck
- run: pnpm test:workshop
- run: docker build --target production -f apps/workshop/Dockerfile .
- name: Build and smoke-test a non-root documentation deployment
run: |
docker build \
--build-arg DOCS_BASE_URL=/docs-site/ \
--tag homarr-workshop:base-path-smoke \
--target production \
--file apps/workshop/Dockerfile \
.
docker run --detach --name workshop-base-path-smoke \
--publish 127.0.0.1:18093:8090 \
--env DOCS_BASE_URL=/docs-site/ \
--env HOMARR_WEBSITE_URL=http://127.0.0.1:18093 \
--env WORKSHOP_API_URL=http://127.0.0.1:18093 \
--env WORKSHOP_WEB_URL=http://127.0.0.1:18093/docs-site/workshop \
--env WORKSHOP_PUBLIC_ORIGIN=http://127.0.0.1:18093 \
--env WORKSHOP_REQUIRE_OAUTH=false \
homarr-workshop:base-path-smoke
for attempt in $(seq 1 60); do
if curl --fail --silent http://127.0.0.1:18093/api/health >/dev/null; then
break
fi
if [ "$attempt" -eq 60 ]; then
docker logs workshop-base-path-smoke
exit 1
fi
sleep 1
done
curl --fail --silent --show-error http://127.0.0.1:18093/docs-site/ \
| grep --fixed-strings '/docs-site/assets/'
curl --location --fail --silent --show-error http://127.0.0.1:18093/docs-site/workshop/ \
| grep --fixed-strings '/docs-site/workshop/'
curl --fail --silent --show-error \
http://127.0.0.1:18093/docs-site/workshop-runtime-config.js \
| grep --fixed-strings 'workshopWebUrl: "http://127.0.0.1:18093/docs-site/workshop"'
curl --fail --silent --show-error \
'http://127.0.0.1:18093/api/collections/workshop_listings/records?page=1&perPage=1' >/dev/null
- name: Stop non-root documentation smoke container
if: always()
run: docker rm --force workshop-base-path-smoke >/dev/null 2>&1 || true