55 lines
2.0 KiB
YAML
55 lines
2.0 KiB
YAML
name: studio CI and deployment
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- 'apps/studio/**'
|
|
- 'scripts/deploy-studio.sh'
|
|
- 'scripts/verify-studio-production.sh'
|
|
- 'scripts/verify-studio-library.mjs'
|
|
- 'scripts/verify-studio-visual.cjs'
|
|
- '.gitea/workflows/studio.yml'
|
|
- 'pnpm-workspace.yaml'
|
|
pull_request:
|
|
paths:
|
|
- 'apps/studio/**'
|
|
- 'scripts/deploy-studio.sh'
|
|
- 'scripts/verify-studio-production.sh'
|
|
- 'scripts/verify-studio-library.mjs'
|
|
- 'scripts/verify-studio-visual.cjs'
|
|
- '.gitea/workflows/studio.yml'
|
|
- 'pnpm-workspace.yaml'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
verify-and-deploy:
|
|
runs-on: ces-control
|
|
timeout-minutes: 45
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Build and verify studio
|
|
run: docker build -f apps/studio/Dockerfile -t "prompt-studio:${{ gitea.sha }}" .
|
|
- name: Release studio
|
|
if: gitea.ref == 'refs/heads/main' && (gitea.event_name == 'push' || gitea.event_name == 'workflow_dispatch')
|
|
run: bash scripts/deploy-studio.sh "${{ gitea.sha }}"
|
|
- name: Capture deployed baseline diagnostics (does not validate PR code)
|
|
if: gitea.event_name == 'pull_request'
|
|
run: bash scripts/verify-studio-production.sh --diagnose
|
|
- name: Verify the deployed Studio API and native pages
|
|
if: gitea.ref == 'refs/heads/main' && (gitea.event_name == 'push' || gitea.event_name == 'workflow_dispatch')
|
|
run: bash scripts/verify-studio-production.sh
|
|
- name: Save server acceptance evidence
|
|
id: acceptance_evidence
|
|
if: always()
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: studio-production-acceptance
|
|
path: artifacts/studio-acceptance/
|
|
if-no-files-found: ignore
|
|
retention-days: 7
|
|
- name: Remove temporary acceptance output after upload
|
|
if: always() && steps.acceptance_evidence.outcome == 'success'
|
|
run: rm -rf artifacts/studio-acceptance
|