Skip to content

Add TUI, Bridge Types, matchers, and Avro/gRPC integration #869

Add TUI, Bridge Types, matchers, and Avro/gRPC integration

Add TUI, Bridge Types, matchers, and Avro/gRPC integration #869

Workflow file for this run

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/bleep-setup-action@0.0.1
- 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/bleep-setup-action@0.0.1
- 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/bleep-setup-action@0.0.1
- uses: coursier/cache-action@v6
with:
extraFiles: bleep.yaml
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- 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 foundations-jdbc Postgres tests
env:
CI: true
run: bleep compile foundations-jdbc-test && bleep test foundations-jdbc-test --only PgTypeTest
- name: Sourcegen
run: bleep sourcegen
- name: Run Kotlin Postgres tests
env:
CI: true
run: ./gradlew :testers:pg:kotlin:test
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/bleep-setup-action@0.0.1
- uses: coursier/cache-action@v6
with:
extraFiles: bleep.yaml
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- 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 foundations-jdbc MariaDB tests
env:
CI: true
run: bleep compile foundations-jdbc-test && bleep test foundations-jdbc-test --only MariaTypeTest
- name: Sourcegen
run: bleep sourcegen
- name: Run MariaDB Kotlin tests
env:
CI: true
run: ./gradlew :testers:mariadb:kotlin:test
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/bleep-setup-action@0.0.1
- uses: coursier/cache-action@v6
with:
extraFiles: bleep.yaml
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- 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 foundations-jdbc Oracle tests
env:
CI: true
run: bleep compile foundations-jdbc-test && bleep test foundations-jdbc-test --only OracleTypeTest
- name: Sourcegen
run: bleep sourcegen
- name: Run Oracle Kotlin tests
env:
CI: true
run: ./gradlew :testers:oracle:kotlin:test
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/bleep-setup-action@0.0.1
- uses: coursier/cache-action@v6
with:
extraFiles: bleep.yaml
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- 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 foundations-jdbc DuckDB tests
env:
CI: true
run: bleep compile foundations-jdbc-test && bleep test foundations-jdbc-test --only DuckDbTypeTest
- name: Sourcegen
run: bleep sourcegen
- name: Run DuckDB Kotlin tests
env:
CI: true
run: ./gradlew :testers:duckdb:kotlin:test
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/bleep-setup-action@0.0.1
- uses: coursier/cache-action@v6
with:
extraFiles: bleep.yaml
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- 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 foundations-jdbc SQL Server tests
env:
CI: true
run: bleep compile foundations-jdbc-test && bleep test foundations-jdbc-test --only SqlServerTypeTest
- name: Sourcegen
run: bleep sourcegen
- name: Run SQL Server Kotlin tests
env:
CI: true
run: ./gradlew :testers:sqlserver:kotlin:test
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/bleep-setup-action@0.0.1
- uses: coursier/cache-action@v6
with:
extraFiles: bleep.yaml
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- 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 foundations-jdbc DB2 tests
env:
CI: true
run: bleep compile foundations-jdbc-test && bleep test foundations-jdbc-test --only Db2TypeTest
- name: Sourcegen
run: bleep sourcegen
- name: Run DB2 Kotlin tests
env:
CI: true
run: ./gradlew :testers:db2:kotlin:test
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/bleep-setup-action@0.0.1
- uses: coursier/cache-action@v6
with:
extraFiles: bleep.yaml
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
- 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: Sourcegen
run: bleep sourcegen
- name: Compile Kotlin OpenAPI testers (via gradle)
run: |
./gradlew :testers:openapi:kotlin:jaxrs:compileKotlin
./gradlew :testers:openapi:kotlin:spring:compileKotlin
./gradlew :testers:openapi:kotlin:quarkus:compileKotlin
build-docs:
timeout-minutes: 20
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/bleep-setup-action@0.0.1
- uses: coursier/cache-action@v6
with:
extraFiles: bleep.yaml
- name: Start up 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: Build docs
run: bleep generate-docs
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/bleep-setup-action@0.0.1
- 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