feat: re-organization of repo structure #38
Workflow file for this run
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] | |
| pull_request: | |
| branches: | |
| - main | |
| paths: | |
| - "nx/**" | |
| - "vanilla/**" | |
| - "turborepo/**" | |
| - "scripts/**" | |
| - ".github/workflows/**" | |
| - ".github/actions/**" | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - "nx/**" | |
| - "vanilla/**" | |
| - "turborepo/**" | |
| - "scripts/**" | |
| - ".github/workflows/**" | |
| - ".github/actions/**" | |
| 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: pnpm/action-setup@v4 | |
| with: | |
| version: 10.6.3 | |
| run_install: false | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| registry-url: "https://registry.npmjs.org" | |
| - name: Install Just | |
| uses: extractions/setup-just@v3 | |
| - name: Get pnpm store directory | |
| shell: bash | |
| run: | | |
| echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ env.STORE_PATH }} | |
| key: pnpm-store-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| pnpm-store-${{ runner.os }}- | |
| - name: Install scripts dependencies | |
| run: | | |
| cd scripts | |
| pnpm install --prefer-offline | |
| - name: Upgrade Zephyr plugins | |
| if: github.event_name != 'pull_request' && github.event_name != 'push' | |
| 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 all example dependencies | |
| run: just install-all | |
| - name: Clean zephyr cache before build | |
| run: | | |
| echo "Cleaning $HOME/.zephyr directory..." | |
| if [ -d "$HOME/.zephyr" ]; then | |
| echo "Found existing .zephyr directory, checking contents:" | |
| ls -lah "$HOME/.zephyr/" || true | |
| echo "Removing .zephyr directory..." | |
| rm -rf "$HOME/.zephyr" | |
| fi | |
| echo "Creating fresh .zephyr directory..." | |
| mkdir -p "$HOME/.zephyr" | |
| - name: Build all examples | |
| run: | | |
| if [ "${{ github.event.inputs.skip_cache }}" == "true" ] || [ "${{ github.event.client_payload.skip_cache }}" == "true" ]; then | |
| echo "Building all examples with --skip-cache flag" | |
| just build-all-no-cache | |
| else | |
| echo "Building all examples with cache enabled" | |
| just build-all | |
| fi | |
| env: | |
| NODE_ENV: production | |
| ZE_SECRET_TOKEN: ${{ env.ZE_SECRET_TOKEN }} | |
| ZE_API_GATE: ${{ env.ZE_API_GATE }} | |
| ZE_API: ${{ env.ZE_API }} | |
| - name: Check zephyr cache after build | |
| if: always() | |
| run: | | |
| echo "Checking $HOME/.zephyr after build..." | |
| if [ -d "$HOME/.zephyr" ]; then | |
| echo "Total files: $(ls -1 "$HOME/.zephyr" 2>/dev/null | wc -l)" | |
| echo "Checking for subdirectories that might cause EISDIR error:" | |
| find "$HOME/.zephyr" -type d 2>/dev/null || echo "No subdirectories found" | |
| echo "" | |
| echo "Files and directories in .zephyr:" | |
| ls -lah "$HOME/.zephyr/" 2>/dev/null | head -30 || echo "Cannot list directory" | |
| else | |
| echo "$HOME/.zephyr does not exist" | |
| fi | |
| - name: Upload build logs | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: build-logs | |
| path: scripts/tmp/build/ | |
| retention-days: 3 | |
| - name: Check zephyr cache contents | |
| run: | | |
| echo "Checking $HOME/.zephyr directory..." | |
| if [ -d "$HOME/.zephyr" ]; then | |
| echo "Files and directories in .zephyr:" | |
| ls -lah "$HOME/.zephyr/" | head -30 | |
| echo "" | |
| echo "Checking for subdirectories:" | |
| find "$HOME/.zephyr" -type d | head -10 | |
| else | |
| echo "$HOME/.zephyr does not exist" | |
| fi | |
| - 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 | |
| ZE_SECRET_TOKEN: ${{ env.ZE_SECRET_TOKEN }} | |
| ZE_API_GATE: ${{ env.ZE_API_GATE }} | |
| ZE_API: ${{ env.ZE_API }} | |
| - 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 |