Build, Deploy, and Test All Examples #28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |