Skip to content

Build, Deploy, and Test All Examples #28

Build, Deploy, and Test All Examples

Build, Deploy, and Test All Examples #28

name: Build, Deploy, and Test All Examples
on:
workflow_dispatch:
inputs:
environment:
description: "Deployment environment (dev, staging, prod)"
required: true
default: "prod"
type: choice
options:
- dev
- staging
- prod
skip_cache:
description: "Skip build cache and force rebuild all packages"
required: false
default: true
type: boolean
plugin_version:
description: "Zephyr plugin version to upgrade to (default: next)"
required: false
default: "next"
type: string
repository_dispatch:
types: [build-deploy-test]
env:
NODE_VERSION: "24"
ZE_SECRET_TOKEN: |
${{
github.event.inputs.environment == 'dev' && secrets.ZE_SECRET_TOKEN_DEV ||
github.event.inputs.environment == 'staging' && secrets.ZE_SECRET_TOKEN_STAGING ||
secrets.ZE_SECRET_TOKEN_PROD
}}
ZE_API_GATE: |
${{
github.event.inputs.environment == 'dev' && 'https://zeapi.zephyrcloudapp.dev' ||
github.event.inputs.environment == 'staging' && 'https://zeapi.zephyrcloudapp.xyz' ||
'https://zeapi.zephyrcloud.app'
}}
ZE_API: |
${{
github.event.inputs.environment == 'dev' && 'https://api-dev.zephyr-cloud.io' ||
github.event.inputs.environment == 'staging' && 'https://zephyr-api-prerelease-1a6b535d0499.herokuapp.com' ||
'https://api.zephyr-cloud.io'
}}
jobs:
build-deploy-test:
name: Build, Deploy, and Test All Examples
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/setup
with:
node-version: ${{ env.NODE_VERSION }}
- name: Upgrade Zephyr plugins
run: |
cd scripts
if [ -n "${{ github.event.inputs.plugin_version }}" ]; then
echo "Upgrading plugins to version: ${{ github.event.inputs.plugin_version }}"
pnpm upgrade-plugins --version=${{ github.event.inputs.plugin_version }}
elif [ -n "${{ github.event.client_payload.plugin_version }}" ]; then
echo "Upgrading plugins to version: ${{ github.event.client_payload.plugin_version }}"
pnpm upgrade-plugins --version=${{ github.event.client_payload.plugin_version }}
else
echo "Upgrading plugins to latest (next)"
pnpm upgrade-plugins
fi
- name: Install dependencies after upgrade
run: pnpm install --prefer-offline
- name: Build all examples
run: |
cd scripts
if [ "${{ github.event.inputs.skip_cache }}" == "true" ] || [ "${{ github.event.client_payload.skip_cache }}" == "true" ]; then
echo "Building with --skip-cache flag"
pnpm build-packages:force
else
echo "Building with cache enabled"
pnpm build-packages
fi
env:
NODE_ENV: production
- name: Wait for deployments to be ready
run: |
echo "Waiting 60 seconds for all deployments to propagate..."
sleep 60
- name: Install Playwright browsers
run: |
cd scripts
npx playwright install chromium
- name: Run deployment validation tests
run: |
cd scripts
pnpm test
env:
CI: true
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: |
scripts/test-results/
scripts/playwright-report/
retention-days: 7
- name: Upload build logs
uses: actions/upload-artifact@v4
if: always()
with:
name: build-logs
path: |
scripts/tmp/build/
retention-days: 3