Repository navigation
fix(cli): retry deploy POST on transport failure #115
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: Platform CI | |
| on: | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - 'platform/**' | |
| - 'packages/**' | |
| - 'package.json' | |
| - 'pnpm-lock.yaml' | |
| - 'pnpm-workspace.yaml' | |
| - 'vite.config.ts' | |
| - '.github/workflows/platform-*.yml' | |
| - '.github/scripts/production-baseline.ts' | |
| - '.github/scripts/schema-fixture.mjs' | |
| workflow_call: | |
| inputs: | |
| require-schema-compat: | |
| description: Run the production schema-compatibility guard. The production deploy sets this for every trigger. | |
| type: boolean | |
| default: false | |
| permissions: {} | |
| jobs: | |
| build-api-container: | |
| if: github.event_name == 'pull_request' | |
| runs-on: ${{ github.repository == 'voidzero-dev/void' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} | |
| timeout-minutes: 10 | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Build API build container | |
| run: docker build --pull --tag void-api-build-container:ci platform/packages/api/container | |
| lint-build-check: | |
| runs-on: ${{ github.repository == 'voidzero-dev/void' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: voidzero-dev/setup-vp@1b32467adbe183473499fd9d5d372c3ed9641754 # v1.18.0 | |
| with: | |
| cache: true | |
| node-version-file: .node-version | |
| - run: vp fmt --check | |
| - run: vp lint | |
| - run: vp run build | |
| - run: vp run --filter './platform/packages/**' build | |
| # After the builds: the type-aware platform lint reads the dashboard's generated | |
| # `.void/tsconfig.json`, which only exists once the dashboard has been built. | |
| - run: vp run lint:platform | |
| # Platform packages only. The framework and the playgrounds are typechecked by ci.yml, and | |
| # the playground typechecks need the playground builds, which this job does not run. | |
| - run: vp run check:platform | |
| # SDK packages too: the deploy workflows run only this job, the dashboard and the | |
| # workers bundle the SDK, and `vp pack` does not typecheck. | |
| - run: vp run check:sdk | |
| test: | |
| runs-on: ${{ github.repository == 'voidzero-dev/void' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} | |
| permissions: | |
| contents: read | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| project: [platform-unit, platform-api-integration] | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: voidzero-dev/setup-vp@1b32467adbe183473499fd9d5d372c3ed9641754 # v1.18.0 | |
| with: | |
| cache: true | |
| node-version-file: .node-version | |
| - run: vp run build | |
| - run: vp run --filter './platform/packages/**' build | |
| - run: vp test run --project ${{ matrix.project }} | |
| # Upgrade a populated previous schema, then run that immutable runtime's tests. | |
| # The prod branch can already be the candidate, so never use it as the baseline. | |
| schema-compat: | |
| if: >- | |
| ${{ inputs.require-schema-compat || (github.event_name == 'pull_request' | |
| && (github.repository == 'voidzero-dev/void' || vars.VOID_PLATFORM_PRODUCTION_REF != '')) }} | |
| runs-on: ${{ github.repository == 'voidzero-dev/void' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-latest' }} | |
| timeout-minutes: 20 | |
| permissions: | |
| contents: read | |
| deployments: read | |
| env: | |
| PRODUCTION_REF: ${{ vars.VOID_PLATFORM_PRODUCTION_REF }} | |
| PRODUCTION_ENVIRONMENT: ${{ vars.VOID_PLATFORM_PRODUCTION_ENV || 'Prod' }} | |
| POSTGRES_USER: void_ci | |
| POSTGRES_PASSWORD: void_ci_pass | |
| POSTGRES_DB: void_schema_compat | |
| COMPAT_DATABASE_URL: postgresql://void_ci:void_ci_pass@localhost:5432/void_schema_compat | |
| TZ: UTC | |
| services: | |
| postgres: | |
| image: postgres:18 | |
| env: | |
| POSTGRES_USER: ${{ env.POSTGRES_USER }} | |
| POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }} | |
| POSTGRES_DB: ${{ env.POSTGRES_DB }} | |
| ports: | |
| - 5432:5432 | |
| options: >- | |
| --health-cmd="pg_isready -U $POSTGRES_USER" | |
| --health-interval=5s | |
| --health-timeout=5s | |
| --health-retries=5 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: voidzero-dev/setup-vp@1b32467adbe183473499fd9d5d372c3ed9641754 # v1.18.0 | |
| with: | |
| cache: true | |
| node-version-file: .node-version | |
| - name: Resolve the immutable deployed runtime | |
| id: baseline | |
| env: | |
| GITHUB_TOKEN: ${{ github.token }} | |
| run: | | |
| node .github/scripts/production-baseline.ts | |
| cp .github/scripts/schema-fixture.mjs "$RUNNER_TEMP/void-schema-fixture.mjs" | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| ref: ${{ steps.baseline.outputs.sha }} | |
| persist-credentials: false | |
| - name: Require platform code in the deployed revision | |
| run: test -d platform/packages/api | |
| - uses: voidzero-dev/setup-vp@1b32467adbe183473499fd9d5d372c3ed9641754 # v1.18.0 | |
| with: | |
| cache: true | |
| node-version-file: .node-version | |
| - name: Create and populate the previous schema | |
| run: | | |
| vp run --filter @voidcloud/api migrate | |
| node "$RUNNER_TEMP/void-schema-fixture.mjs" seed | |
| env: | |
| DATABASE_URL: ${{ env.COMPAT_DATABASE_URL }} | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| ref: ${{ github.sha }} | |
| persist-credentials: false | |
| - uses: voidzero-dev/setup-vp@1b32467adbe183473499fd9d5d372c3ed9641754 # v1.18.0 | |
| with: | |
| cache: true | |
| node-version-file: .node-version | |
| - name: Upgrade the populated database and verify preserved data | |
| run: | | |
| vp run --filter @voidcloud/api migrate | |
| node "$RUNNER_TEMP/void-schema-fixture.mjs" verify | |
| env: | |
| DATABASE_URL: ${{ env.COMPAT_DATABASE_URL }} | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| ref: ${{ steps.baseline.outputs.sha }} | |
| persist-credentials: false | |
| - uses: voidzero-dev/setup-vp@1b32467adbe183473499fd9d5d372c3ed9641754 # v1.18.0 | |
| with: | |
| cache: true | |
| node-version-file: .node-version | |
| - name: Run the deployed runtime against the upgraded schema | |
| run: | | |
| vp run build | |
| vp run --filter './platform/packages/**' build | |
| vp test run --project platform-api-integration | |
| env: | |
| VOID_TEST_DATABASE_URL: ${{ env.COMPAT_DATABASE_URL }} |