45 lines
2.0 KiB
YAML
45 lines
2.0 KiB
YAML
name: Remote development preview source sync
|
|
on:
|
|
push:
|
|
branches: ['**']
|
|
paths:
|
|
- 'apps/waterfall-wiki/**'
|
|
- 'packages/brand/**'
|
|
- 'pnpm-workspace.yaml'
|
|
- 'scripts/preview/**'
|
|
- '.gitea/workflows/preview.yml'
|
|
concurrency:
|
|
group: development-preview
|
|
cancel-in-progress: false
|
|
jobs:
|
|
sync-source:
|
|
# One preview slot follows one branch. Setup changes use an explicit refresh.
|
|
if: gitea.ref == format('refs/heads/{0}', vars.PREVIEW_BRANCH || 'dev')
|
|
runs-on: ces-control
|
|
timeout-minutes: 10
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 1
|
|
- name: Initialize once, otherwise synchronize files only
|
|
env:
|
|
SOURCE_SHA: ${{ gitea.sha }}
|
|
SOURCE_BRANCH: ${{ gitea.ref_name }}
|
|
run: |
|
|
if [ ! -f /opt/prompt-preview/ready ]; then
|
|
bash scripts/preview/init.sh "$PWD" waterfall-wiki-tests:6654a1456bdcef77d83ca84373dc36188e15bd12
|
|
fi
|
|
bash scripts/preview/sync.sh "$PWD" "$SOURCE_SHA" "$SOURCE_BRANCH"
|
|
- name: Diagnose preview listener
|
|
run: |
|
|
root=/opt/prompt-preview
|
|
id=$(docker compose -p prompt-preview --env-file "$root/env" -f "$root/compose.yml" ps -q waterfall-wiki)
|
|
docker port "$id" 3000/tcp
|
|
docker inspect --format 'running={{.State.Running}} restarts={{.RestartCount}} oom={{.State.OOMKilled}}' "$id"
|
|
port=$(docker port "$id" 3000/tcp | awk -F: 'NR == 1 {print $NF}')
|
|
for route in /api/dev-preview /workspace; do
|
|
echo "Host request: $route"
|
|
curl --noproxy '*' --max-time 30 -sS -o /dev/null -w 'HTTP %{http_code}\n' "http://127.0.0.1:$port$route" || true
|
|
done
|
|
docker exec "$id" node -e 'fetch("http://127.0.0.1:3000/api/dev-preview", {signal: AbortSignal.timeout(15000)}).then(r => { console.log("Container HTTP", r.status); }).catch(e => { console.error(e.cause?.code || e.name); process.exitCode = 1; });'
|