name: Docker image on: push: tags: - '*' pull_request: workflow_dispatch: jobs: build: name: Build uses: ./.github/workflows/build.yaml jib: needs: - build if: github.repository_owner == '2martens' name: Create and publish Docker image runs-on: ubuntu-latest permissions: id-token: write attestations: write steps: - uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: distribution: temurin java-version: 21 - name: Setup Gradle uses: gradle/gradle-build-action@v2 with: gradle-version: 8.5 cache-read-only: true - name: Create and publish docker image if: github.event_name == 'push' run: ./gradlew -Prelease.useLastTag=true final jib env: USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Create and publish docker image if: github.event_name == 'pull_request' run: ./gradlew snapshot jib env: USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Extract Jib digest id: digest run: | DIGEST=$(cat build/jib-image.digest) echo "digest=$DIGEST" >> $GITHUB_OUTPUT - name: Perform docker login uses: docker/login-action@v3 with: registry: docker.io username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Attest uses: actions/attest-build-provenance@v3 id: attest with: subject-name: docker.io/2martens/timetable subject-digest: ${{ steps.digest.outputs.digest }} push-to-registry: true