Tools

Pick a tool from the sidebar. Below are external links and CI snippets I keep coming back to.

CI workflows
name: Java CI with Gradle

on:
  push:
  pull_request:

concurrency:
  group: "latest"
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
      - uses: actions/checkout@v4

      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'zulu'
          java-package: 'jdk'

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Build
        run: ./gradlew build

      - name: Remove *-sources.jar
        run: rm ./build/libs/*-sources.jar || true

      - uses: "shxrklol/action-auto-releases-n20@v1.1"
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          automatic_release_tag: "latest"
          prerelease: false
          title: "Latest Build"
          files: |
            ./build/libs/*.jar
name: Java CI with Gradle

on: [ push,pull_request ]

concurrency:
  group: "latest"
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-latest
    permissions: write-all
    steps:
      - uses: actions/checkout@v4

      - name: Set up JDK 21
        uses: actions/setup-java@v4
        with:
          java-version: '21'
          distribution: 'zulu'
          java-package: 'jdk'

      - name: Grant execute permission for gradlew
        run: chmod +x gradlew

      - name: Build
        run: ./gradlew build

      - name: Remove *-sources.jar
        run: rm ./build/libs/*-sources.jar || true

      - uses: "shxrklol/action-auto-releases-n20@v1.1"
        with:
          repo_token: "${{ secrets.GITHUB_TOKEN }}"
          automatic_release_tag: "latest"
          prerelease: false
          title: "Latest Build"
          files: |
            ./build/libs/*.jar
name: build
on: [pull_request, push]

jobs:
  build:
    strategy:
      matrix:
        java: [
          21,    # Current Java LTS
        ]
    runs-on: ubuntu-22.04

    steps:
      - name: checkout repository
        uses: actions/checkout@v4

      - name: validate gradle wrapper
        uses: gradle/actions/wrapper-validation@v4

      - name: setup jdk ${{ matrix.java }}
        uses: actions/setup-java@v4
        with:
          java-version: ${{ matrix.java }}
          distribution: 'microsoft'

      - name: make gradle wrapper executable
        run: chmod +x ./gradlew

      - name: build
        run: ./gradlew build

      - name: remove *-sources.jar
        run: rm -f ./build/libs/*-sources.jar || true

      - name: capture build artifacts
        if: ${{ matrix.java == '21' }}
        uses: actions/upload-artifact@v4
        with:
          name: Artifacts
          path: build/libs/

      - name: create automatic release
        if: ${{ github.event_name == 'push' && matrix.java == '21' }}
        uses: marvinpinto/action-automatic-releases@latest
        with:
          repo_token: "${{ secrets.GITHUB_TOKEN }}"
          automatic_release_tag: "latest"
          prerelease: false
          title: "Latest Build (1.21.9-1.21.10)"
          files: |
            ./build/libs/*.jar