Skip to content

Merge pull request #457 from softwaremill/update/jsoniter-scala-core-… #1099

Merge pull request #457 from softwaremill/update/jsoniter-scala-core-…

Merge pull request #457 from softwaremill/update/jsoniter-scala-core-… #1099

name: Adopt Tapir CI
on:
pull_request:
push:
branches:
- main
paths-ignore:
- "helm/**"
release:
types:
- released
paths-ignore:
- "helm/**"
jobs:
verify_unit_tests_lint:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
steps:
- name: Check-out repository
id: repo-checkout
uses: actions/checkout@v3
- name: Set up JDK 17 with sbt cache
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
cache: 'sbt'
- name: Check formatting
id: check-formatting
run: sbt scalafmtCheckAll
- name: Run unit tests & lint
id: run-unit-tests
run: sbt test
verify_integration:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
scala: [ "Scala2", "Scala3" ]
json: [ "No", "Circe", "UPickle", "Jsoniter", "ZIOJson" ]
steps:
- name: Check-out repository
id: repo-checkout
uses: actions/checkout@v3
- name: Cache scala-cli
uses: coursier/[email protected]
- name: Set up scala-cli
uses: VirtusLab/[email protected]
with:
jvm: temurin:17
- name: Cache SBT
id: cache-sbt
uses: actions/cache@v3
with:
path: |
~/.sbt
~/.ivy2/cache
~/.coursier
key: ${{ runner.os }}-sbt-${{ hashFiles('**/build.sbt') }}
- name: Run integration tests for ${{ matrix.scala }} with ${{ matrix.json }} JSON support
run: SCALA=${{ matrix.scala }} JSON=${{ matrix.json }} IT_TESTS_THREADS_NO=1 sbt 'ItTest / test'
verify_docker_image_build:
if: github.event_name == 'pull_request' && github.ref != 'refs/heads/main'
needs: [ verify_unit_tests_lint, verify_integration ]
runs-on: ubuntu-22.04
strategy:
fail-fast: false
steps:
- name: Check-out repository
id: repo-checkout
uses: actions/checkout@v3
- name: Set up JDK 17 with sbt cache
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
cache: 'sbt'
- name: Build docker image locally
id: build-docker-image-locally
run: sbt -Dsbt.task.timings=true docker:publishLocal
deploy:
if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
needs: [ verify_unit_tests_lint, verify_integration ]
runs-on: ubuntu-22.04
steps:
- name: Check-out repository
id: repo-checkout
uses: actions/checkout@v3
- name: Set up JDK 17
id: jdk-setup
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
cache: 'sbt'
- name: Cache SBT
id: cache-sbt
uses: actions/cache@v3
with:
path: |
~/.sbt
~/.ivy2/cache
~/.coursier
key: ${{ runner.os }}-sbt-${{ hashFiles('**/build.sbt') }}
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Publish docker image
run: sbt -Dsbt.task.timings=true backend/docker:publish