name: build

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    strategy:
      matrix:
        java: [11, 21]
    steps:
    - uses: actions/checkout@v4
    - name: Cache
      uses: actions/cache@v4
      env:
        cache-name: cache-sbt-libs
      with:
        path: |
          ~/.ivy2/cache
          ~/.sbt
          ~/.cache/coursier/v1
        key: build-${{ env.cache-name }}-${{ hashFiles('build.sbt') }}
    - name: Set up JDK
      uses: actions/setup-java@v4
      with:
        java-version: ${{ matrix.java }}
        distribution: adopt
    - name: Run tests
      run: sbt scalafmtSbtCheck scalafmtCheckAll test
    - name: Scala 3
      run: sbt '++ 3.x' update # TODO
    - name: Build executable
      run: sbt executable
    - name: Upload artifacts
      uses: actions/upload-artifact@v4
      with:
        name: gitbucket-java${{ matrix.java }}-${{ github.sha }}
        path: ./target/executable/gitbucket.*
