diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000000..fbda69d8a5bf --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,73 @@ +name: CI Build +on: push +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} +jobs: + ci-build: + strategy: + matrix: + os: + - id: ubuntu-latest + name: Linux + - id: windows-latest + name: Windows + java: + - version: 17 + toolchain: false + - version: 21 + toolchain: true + name: '${{ matrix.os.name}} | Java ${{ matrix.java.version}}' + runs-on: ${{ matrix.os.id }} + steps: + - name: Set up Java 17 and ${{ matrix.java.version }} + if: ${{ matrix.java.toolchain}} + uses: actions/setup-java@v4 + with: + distribution: 'liberica' + java-version: | + ${{ matrix.java.version }} + 17 + - name: Set up Java ${{ matrix.java.version }} + if: ${{ !matrix.java.toolchain}} + uses: actions/setup-java@v4 + with: + distribution: 'liberica' + java-version: ${{ matrix.java.version }} + - name: Prepare Windows runner + if: ${{ runner.os == 'Windows' }} + run: | + git config --global core.autocrlf true + git config --global core.longPaths true + Stop-Service -name Docker + - name: Check out code + uses: actions/checkout@v4 + - name: Set up Gradle + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 + with: + cache-read-only: false + - name: Configure Gradle properties + shell: bash + run: | + mkdir -p $HOME/.gradle + echo 'systemProp.user.name=spring-builds+github' >> $HOME/.gradle/gradle.properties + echo 'systemProp.org.gradle.internal.launcher.welcomeMessageEnabled=false' >> $HOME/.gradle/gradle.properties + echo 'org.gradle.daemon=false' >> $HOME/.gradle/gradle.properties + - name: Configure toolchain properties + if: ${{ matrix.java.toolchain }} + shell: bash + run: | + echo '${{ github.env }}' + echo 'toolchainVersion=${{ matrix.java.version }}' >> $HOME/.gradle/gradle.properties + echo 'systemProp.org.gradle.java.installations.auto-detect=false' >> $HOME/.gradle/gradle.properties + echo 'systemProp.org.gradle.java.installations.auto-download=false' >> $HOME/.gradle/gradle.properties + echo 'systemProp.org.gradle.java.installations.paths=${{ format('$JAVA_HOME_{0}_X64', matrix.java.version) }}' >> $HOME/.gradle/gradle.properties + cat $HOME/.gradle/gradle.properties + - name: Build + id: build + env: + CI: 'true' + GRADLE_ENTERPRISE_URL: 'https://ge.spring.io' + GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }} + GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }} + GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }} + run: ./gradlew --version diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml deleted file mode 100644 index 7552d71deb1b..000000000000 --- a/.github/workflows/windows-build.yml +++ /dev/null @@ -1,57 +0,0 @@ -name: Windows Build -on: - push: - branches: - - 3.1.x -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} -jobs: - build: - name: 'Windows | Java 17' - runs-on: 'windows-latest' - if: ${{ github.repository == 'spring-projects/spring-boot' }} - steps: - - name: Set up Java - uses: actions/setup-java@v4 - with: - distribution: 'liberica' - java-version: 17 - - name: Configure git - run: | - git config --global core.autocrlf true - git config --global core.longPaths true - - name: Check out code - uses: actions/checkout@v4 - - name: Set up Gradle - uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 - with: - cache-read-only: false - - name: Configure Gradle properties - shell: bash - run: | - mkdir -p $HOME/.gradle - echo 'systemProp.user.name=spring-builds+github' >> $HOME/.gradle/gradle.properties - echo 'systemProp.org.gradle.internal.launcher.welcomeMessageEnabled=false' >> $HOME/.gradle/gradle.properties - echo 'org.gradle.daemon=false' >> $HOME/.gradle/gradle.properties - - name: Stop Docker service - run: Stop-Service -name Docker - - name: Build - id: build - env: - CI: 'true' - GRADLE_ENTERPRISE_URL: 'https://ge.spring.io' - GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }} - GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }} - GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }} - run: ./gradlew build - - name: Print JVM thread dumps when cancelled - uses: ./.github/actions/print-jvm-thread-dumps - if: cancelled() - - name: Send notification - uses: ./.github/actions/send-notification - if: always() - with: - webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }} - status: ${{ job.status }} - build-scan-url: ${{ steps.build.outputs.build-scan-url }} - run-name: ${{ format('{0} | Windows | Java 17', github.ref_name) }}