External foundations (RC6) + Unified Types (Bridge) + DSL/CLI rework + site overhaul #873
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 | |
| on: | |
| push: | |
| tags: [ 'v*' ] | |
| branches: [ 'main' ] | |
| pull_request: | |
| branches: [ 'main' ] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| scalafmt: | |
| timeout-minutes: 10 | |
| runs-on: ubuntu-latest | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - name: Scalafmt Check | |
| run: bleep fmt --check | |
| tests: | |
| timeout-minutes: 10 | |
| runs-on: ubuntu-latest | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| env: | |
| PG_MAJOR: 16 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - name: Start Postgres | |
| run: docker compose up -d postgres | |
| - name: Wait for Postgres | |
| run: | | |
| for i in {1..30}; do | |
| if docker compose exec -T postgres pg_isready -U postgres; then | |
| echo "Postgres is ready" | |
| break | |
| fi | |
| echo "Waiting for Postgres... ($i/30)" | |
| sleep 2 | |
| done | |
| - name: Run general tests | |
| run: bleep test tests | |
| build-postgres: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| postgres-version: [12, 16] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - name: Start Postgres | |
| env: | |
| PG_MAJOR: ${{ matrix.postgres-version }} | |
| run: docker compose up -d postgres | |
| - name: Wait for Postgres | |
| run: | | |
| for i in {1..30}; do | |
| if docker compose exec -T postgres pg_isready -U postgres; then | |
| echo "Postgres is ready" | |
| break | |
| fi | |
| echo "Waiting for Postgres... ($i/30)" | |
| sleep 2 | |
| done | |
| - name: Compile typr | |
| run: bleep compile typr | |
| - name: Run Scala 2.13 Postgres tests | |
| env: | |
| CI: true | |
| run: | | |
| bleep test testers/pg/scala/anorm@jvm213 | |
| bleep test testers/pg/scala/doobie@jvm213 | |
| bleep test testers/pg/scala/zio-jdbc@jvm213 | |
| - name: Run Scala 3 Postgres tests | |
| env: | |
| CI: true | |
| run: | | |
| bleep test testers/pg/scala/anorm@jvm3 | |
| bleep test testers/pg/scala/doobie@jvm3 | |
| bleep test testers/pg/scala/zio-jdbc@jvm3 | |
| bleep test testers/pg/scala/scalatypes | |
| bleep test testers/pg/scala/javatypes | |
| - name: Run Java Postgres tests | |
| env: | |
| CI: true | |
| run: bleep test testers/pg/java | |
| - name: Run Kotlin Postgres tests | |
| env: | |
| CI: true | |
| run: bleep test testers/pg/kotlin | |
| build-mariadb: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - name: Start MariaDB | |
| run: docker compose up -d mariadb | |
| - name: Wait for MariaDB | |
| run: | | |
| for i in {1..30}; do | |
| if docker compose exec -T mariadb mariadb -u typr -ppassword -e "SELECT 1" typr 2>/dev/null; then | |
| echo "MariaDB is ready" | |
| break | |
| fi | |
| echo "Waiting for MariaDB... ($i/30)" | |
| sleep 2 | |
| done | |
| - name: Run MariaDB Scala tests | |
| env: | |
| CI: true | |
| run: bleep test testers/mariadb/scala | |
| - name: Run MariaDB Java tests | |
| env: | |
| CI: true | |
| run: bleep test testers/mariadb/java | |
| - name: Run MariaDB Kotlin tests | |
| env: | |
| CI: true | |
| run: bleep test testers/mariadb/kotlin | |
| build-oracle: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - name: Start Oracle and wait for healthy | |
| run: | | |
| docker compose up -d oracle | |
| echo "Waiting for Oracle to be healthy (this may take several minutes)..." | |
| docker compose up -d --wait oracle | |
| - name: Run Oracle Scala tests | |
| env: | |
| CI: true | |
| run: | | |
| bleep test testers/oracle/scala | |
| bleep test testers/oracle/scala-new | |
| - name: Run Oracle Java tests | |
| env: | |
| CI: true | |
| run: bleep test testers/oracle/java | |
| - name: Run Oracle Kotlin tests | |
| env: | |
| CI: true | |
| run: bleep test testers/oracle/kotlin | |
| build-duckdb: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - name: Run DuckDB Scala tests | |
| env: | |
| CI: true | |
| run: bleep test testers/duckdb/scala | |
| - name: Run DuckDB Java tests | |
| env: | |
| CI: true | |
| run: bleep test testers/duckdb/java | |
| - name: Run DuckDB Kotlin tests | |
| env: | |
| CI: true | |
| run: bleep test testers/duckdb/kotlin | |
| build-sqlserver: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 25 | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - name: Start SQL Server and wait for healthy | |
| run: | | |
| docker compose up -d sqlserver | |
| echo "Waiting for SQL Server to be healthy..." | |
| docker compose up -d --wait sqlserver | |
| - name: Create typr database | |
| run: | | |
| docker exec $(docker compose ps -q sqlserver) /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P 'YourStrong@Passw0rd' -C -Q "CREATE DATABASE typr" | |
| - name: Run SQL Server Scala tests | |
| env: | |
| CI: true | |
| run: bleep test testers/sqlserver/scala | |
| - name: Run SQL Server Java tests | |
| env: | |
| CI: true | |
| run: bleep test testers/sqlserver/java | |
| - name: Run SQL Server Kotlin tests | |
| env: | |
| CI: true | |
| run: bleep test testers/sqlserver/kotlin | |
| build-db2: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 35 | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - name: Start DB2 and wait for healthy | |
| run: | | |
| docker compose up -d db2 | |
| echo "Waiting for DB2 to be healthy (this may take several minutes)..." | |
| # Stream logs in background while waiting | |
| docker compose logs -f db2 & | |
| LOGS_PID=$! | |
| docker compose up -d --wait db2 | |
| kill $LOGS_PID 2>/dev/null || true | |
| - name: Run DB2 Scala tests | |
| env: | |
| CI: true | |
| run: bleep test testers/db2/scala | |
| - name: Run DB2 Java tests | |
| env: | |
| CI: true | |
| run: bleep test testers/db2/java | |
| - name: Run DB2 Kotlin tests | |
| env: | |
| CI: true | |
| run: bleep test testers/db2/kotlin | |
| build-openapi: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - name: Compile Scala OpenAPI testers | |
| run: | | |
| bleep compile testers/openapi/scala/http4s | |
| bleep compile testers/openapi/scala/spring | |
| - name: Compile Java OpenAPI testers | |
| run: | | |
| bleep compile testers/openapi/java/jaxrs | |
| bleep compile testers/openapi/java/quarkus | |
| bleep compile testers/openapi/java/spring | |
| - name: Compile Kotlin OpenAPI testers | |
| run: bleep compile testers/openapi/kotlin/jaxrs testers/openapi/kotlin/spring testers/openapi/kotlin/quarkus | |
| build-docs: | |
| timeout-minutes: 20 | |
| runs-on: ubuntu-latest | |
| if: "!contains(github.event.head_commit.message, 'ci skip')" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: site/package-lock.json | |
| - name: Generate showcase code (no DB connections needed) | |
| run: bleep generate-showcase | |
| - name: Install site dependencies | |
| working-directory: site | |
| run: npm ci | |
| - name: Build docusaurus site | |
| working-directory: site | |
| run: npm run build | |
| release: | |
| timeout-minutes: 15 | |
| runs-on: ubuntu-latest | |
| needs: [ scalafmt, tests, build-postgres, build-mariadb, build-oracle, build-duckdb, build-sqlserver, build-db2 ] | |
| if: "startsWith(github.ref, 'refs/tags/v')" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: bleep-build/[email protected] | |
| - uses: coursier/cache-action@v6 | |
| with: | |
| extraFiles: bleep.yaml | |
| - id: get_version | |
| uses: battila7/get-version-action@v2 | |
| with: | |
| repo-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Release | |
| run: bleep --dev publish | |
| env: | |
| PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }} | |
| PGP_SECRET: ${{ secrets.PGP_SECRET }} | |
| SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} | |
| SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} | |
| - name: Create github release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| repo-token: ${{ secrets.GITHUB_TOKEN }} | |
| name: "${{ steps.get_version.outputs.version-without-v }}" | |
| prerelease: false | |
| generate_release_notes: true | |
| permissions: | |
| contents: write |