ci: bump gradle-wrapper from 9.4.1 to 9.5.0 #4715
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ###################################################################################### | |
| # JME CI/CD | |
| ###################################################################################### | |
| # Quick overview of what is going on in this script: | |
| # - Build the engine, create the zip release, maven artifacts and javadoc | |
| # - (only when building a release) Deploy everything else to github releases and Sonatype | |
| # - (only when building a release) Update javadoc.jmonkeyengine.org | |
| # Note: | |
| # All the actions/upload-artifact and actions/download-artifact steps are used to pass | |
| # stuff between jobs, github actions has some sort of storage that is local to the | |
| # running workflow, we use it to store the result of each job since the filesystem | |
| # is not maintained between jobs. | |
| ################# CONFIGURATIONS ##################################################### | |
| # >> Configure SONATYPE RELEASE | |
| # CENTRAL_PASSWORD=XXXXXX | |
| # CENTRAL_USERNAME=XXXXXX | |
| # >> Configure SIGNING | |
| # SIGNING_KEY=XXXXXX | |
| # SIGNING_PASSWORD=XXXXXX | |
| # >> Configure PACKAGE REGISTRY RELEASE | |
| # Nothing to do here, everything is autoconfigured to work with the account/org that | |
| # is running the build. | |
| # >> Configure JAVADOC | |
| # JAVADOC_GHPAGES_REPO="riccardoblsandbox/javadoc.jmonkeyengine.org.git" | |
| # Generate a deploy key | |
| # ssh-keygen -t rsa -b 4096 -C "actions@users.noreply.github.com" -f javadoc_deploy | |
| # Set | |
| # JAVADOC_GHPAGES_DEPLOY_PRIVKEY="......." | |
| # In github repo -> Settings, use javadoc_deploy.pub as Deploy key with write access | |
| ###################################################################################### | |
| # Resources: | |
| # - Github actions docs: https://help.github.com/en/articles/about-github-actions | |
| # - Package registry docs: https://help.github.com/en/articles/about-github-package-registry | |
| # - Official actions: https://github.com/actions | |
| # - Community actions: https://github.com/sdras/awesome-actions | |
| ###################################################################################### | |
| # - Riccardo Balbo | |
| ###################################################################################### | |
| name: Build jMonkeyEngine | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - v3.7 | |
| - v3.6 | |
| - v3.5 | |
| - v3.4 | |
| - v3.3 | |
| - ios-2024_2 | |
| pull_request: | |
| release: | |
| types: [published] | |
| jobs: | |
| Checkstyle: | |
| name: Run Checkstyle | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup the java environment | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '25' | |
| - name: Validate the Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v6.1.0 | |
| - name: Run Checkstyle | |
| run: | | |
| ./gradlew checkstyleMain checkstyleTest --console=plain --stacktrace | |
| - name: Upload Checkstyle Reports | |
| uses: actions/upload-artifact@v7.0.1 | |
| if: always() | |
| with: | |
| name: checkstyle-report | |
| retention-days: 30 | |
| path: | | |
| **/build/reports/checkstyle/** | |
| SpotBugs: | |
| name: Run SpotBugs | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup the java environment | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '25' | |
| - name: Validate the Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v6.1.0 | |
| - name: Run SpotBugs | |
| run: | | |
| ./gradlew -PenableSpotBugs=true spotbugsMain spotbugsTest --console=plain --stacktrace | |
| - name: Upload SpotBugs Reports | |
| uses: actions/upload-artifact@v7.0.1 | |
| if: always() | |
| with: | |
| name: spotbugs-report | |
| retention-days: 30 | |
| path: | | |
| **/build/reports/spotbugs/** | |
| JavadocDoclint: | |
| name: Run Javadoc Doclint | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup the java environment | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '25' | |
| - name: Validate the Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v6.1.0 | |
| - name: Run Javadoc doclint | |
| run: | | |
| ./gradlew -PenableJavadocError=true javadoc mergedJavadoc --console=plain --stacktrace | |
| - name: Report Javadoc doclint failure | |
| if: failure() | |
| run: | | |
| echo "::notice title=Javadoc doclint failed::Javadoc warnings were found. Run ./gradlew -PenableJavadocError=true javadoc mergedJavadoc locally to reproduce." | |
| ScreenshotTests: | |
| name: Run Screenshot Tests | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/onemillionworlds/opengl-docker-image:v1 | |
| permissions: | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup the java environment | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '25' | |
| - name: Start xvfb | |
| run: | | |
| Xvfb :99 -ac -screen 0 1024x768x16 & | |
| export DISPLAY=:99 | |
| echo "DISPLAY=:99" >> $GITHUB_ENV | |
| - name: Report GL/Vulkan | |
| run: | | |
| set -x | |
| echo "DISPLAY=$DISPLAY" | |
| glxinfo | grep -E "OpenGL version|OpenGL renderer|OpenGL vendor" || true | |
| vulkaninfo --summary || true | |
| echo "VK_ICD_FILENAMES=$VK_ICD_FILENAMES" | |
| echo "MESA_LOADER_DRIVER_OVERRIDE=$MESA_LOADER_DRIVER_OVERRIDE" | |
| echo "GALLIUM_DRIVER=$GALLIUM_DRIVER" | |
| - name: Validate the Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v6.1.0 | |
| - name: Test with Gradle Wrapper | |
| run: | | |
| ./gradlew :jme3-screenshot-test:screenshotTest | |
| - name: Upload Test Reports | |
| uses: actions/upload-artifact@v7.0.1 | |
| if: always() | |
| with: | |
| name: screenshot-test-report | |
| retention-days: 30 | |
| path: | | |
| **/build/reports/** | |
| **/build/changed-images/** | |
| **/build/test-results/** | |
| # Build the engine, we only deploy from ubuntu-latest jdk25 | |
| BuildJMonkey: | |
| name: Build on ${{ matrix.osName }} jdk${{ matrix.jdk }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macOS-latest] | |
| jdk: [25] | |
| include: | |
| - os: ubuntu-latest | |
| osName: linux | |
| deploy: true | |
| - os: windows-latest | |
| osName: windows | |
| deploy: false | |
| - os: macOS-latest | |
| osName: mac | |
| deploy: false | |
| steps: | |
| - name: Clone the repo | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 1 | |
| - name: Setup the java environment | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: ${{ matrix.jdk }} | |
| - name: Validate the Gradle wrapper | |
| uses: gradle/actions/wrapper-validation@v6.1.0 | |
| - name: Build Engine | |
| shell: bash | |
| run: | | |
| # Normal build plus ZIP distribution and merged javadoc | |
| ./gradlew -PuseCommitHashAsVersionName=true \ | |
| -x checkstyleMain -x checkstyleTest \ | |
| build createZipDistribution mergedJavadoc | |
| if [ "${{ matrix.deploy }}" = "true" ]; | |
| then | |
| # We are going to need "zip" | |
| sudo apt-get update | |
| sudo apt-get install -y zip | |
| # We prepare the release for deploy | |
| mkdir -p ./dist/release/ | |
| mv build/distributions/*.zip dist/release/ | |
| # Install maven artifacts to ./dist/maven and sign them if possible | |
| if [ "${{ secrets.SIGNING_PASSWORD }}" = "" ]; | |
| then | |
| echo "Configure the following secrets to enable signing:" | |
| echo "SIGNING_KEY, SIGNING_PASSWORD" | |
| ./gradlew publishMavenPublicationToDistRepository \ | |
| -PuseCommitHashAsVersionName=true \ | |
| --console=plain --stacktrace | |
| else | |
| ./gradlew publishMavenPublicationToDistRepository \ | |
| -PsigningKey='${{ secrets.SIGNING_KEY }}' \ | |
| -PsigningPassword='${{ secrets.SIGNING_PASSWORD }}' \ | |
| -PuseCommitHashAsVersionName=true \ | |
| --console=plain --stacktrace | |
| fi | |
| fi | |
| # Upload maven artifacts to be used later by the deploy job | |
| - name: Upload maven artifacts | |
| if: matrix.deploy==true | |
| uses: actions/upload-artifact@v7.0.1 | |
| with: | |
| name: maven | |
| path: dist/maven | |
| - name: Upload javadoc | |
| if: matrix.deploy==true | |
| uses: actions/upload-artifact@v7.0.1 | |
| with: | |
| name: javadoc | |
| path: dist/javadoc | |
| # Upload release archive to be used later by the deploy job | |
| - name: Upload release | |
| if: github.event_name == 'release' && matrix.deploy==true | |
| uses: actions/upload-artifact@v7.0.1 | |
| with: | |
| name: release | |
| path: dist/release | |
| # This job deploys snapshots on the master branch | |
| DeployJavaSnapshot: | |
| needs: [BuildJMonkey] | |
| name: Deploy Java Snapshot | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'push' && github.ref_name == 'master' | |
| permissions: | |
| contents: read | |
| steps: | |
| # We need to clone everything again for uploadToMaven.sh ... | |
| - name: Clone the repo | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| with: | |
| fetch-depth: 1 | |
| # Setup jdk 25 used for building Maven-style artifacts | |
| - name: Setup the java environment | |
| uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '25' | |
| - name: Rebuild the maven artifacts and upload them to Sonatype's maven-snapshots repo | |
| run: | | |
| if [ "${{ secrets.CENTRAL_PASSWORD }}" = "" ]; | |
| then | |
| echo "Configure the following secrets to enable uploading to Sonatype:" | |
| echo "CENTRAL_PASSWORD, CENTRAL_USERNAME, SIGNING_KEY, SIGNING_PASSWORD" | |
| else | |
| ./gradlew publishMavenPublicationToSNAPSHOTRepository \ | |
| -PcentralPassword=${{ secrets.CENTRAL_PASSWORD }} \ | |
| -PcentralUsername=${{ secrets.CENTRAL_USERNAME }} \ | |
| -PsigningKey='${{ secrets.SIGNING_KEY }}' \ | |
| -PsigningPassword='${{ secrets.SIGNING_PASSWORD }}' \ | |
| --console=plain --stacktrace | |
| fi | |
| # This job deploys the release | |
| DeployRelease: | |
| needs: [BuildJMonkey] | |
| name: Deploy Release | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'release' | |
| steps: | |
| # We need to clone everything again for uploadToCentral.sh ... | |
| - name: Clone the repo | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 1 | |
| # Setup jdk 25 used for building Sonatype artifacts | |
| - name: Setup the java environment | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'temurin' | |
| java-version: '25' | |
| # Download all the stuff... | |
| - name: Download maven artifacts | |
| uses: actions/download-artifact@v8.0.1 | |
| with: | |
| name: maven | |
| path: dist/maven | |
| - name: Download release | |
| uses: actions/download-artifact@v8.0.1 | |
| with: | |
| name: release | |
| path: dist/release | |
| - name: Rebuild the maven artifacts and upload them to Sonatype's Central Publisher Portal | |
| run: | | |
| if [ "${{ secrets.CENTRAL_PASSWORD }}" = "" ]; | |
| then | |
| echo "Configure the following secrets to enable uploading to Sonatype:" | |
| echo "CENTRAL_PASSWORD, CENTRAL_USERNAME, SIGNING_KEY, SIGNING_PASSWORD" | |
| else | |
| ./gradlew publishMavenPublicationToCentralRepository \ | |
| -PcentralPassword=${{ secrets.CENTRAL_PASSWORD }} \ | |
| -PcentralUsername=${{ secrets.CENTRAL_USERNAME }} \ | |
| -PsigningKey='${{ secrets.SIGNING_KEY }}' \ | |
| -PsigningPassword='${{ secrets.SIGNING_PASSWORD }}' \ | |
| -PuseCommitHashAsVersionName=true \ | |
| --console=plain --stacktrace | |
| .github/actions/tools/uploadToCentral.sh \ | |
| -p '${{ secrets.CENTRAL_PASSWORD }}' \ | |
| -u '${{ secrets.CENTRAL_USERNAME }}' | |
| fi | |
| - name: Deploy to GitHub Releases | |
| run: | | |
| # We need to get the release id (yeah, it's not the same as the tag) | |
| echo "${GITHUB_EVENT_PATH}" | |
| cat ${GITHUB_EVENT_PATH} | |
| releaseId=$(jq --raw-output '.release.id' ${GITHUB_EVENT_PATH}) | |
| # Now that we have the id, we just upload the release zip from before | |
| echo "Upload to release $releaseId" | |
| filename="$(ls dist/release/*.zip)" | |
| url="https://uploads.github.com/repos/${GITHUB_REPOSITORY}/releases/$releaseId/assets?name=$(basename $filename)" | |
| echo "Upload to $url" | |
| curl -L \ | |
| -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
| -H "Content-Type: application/zip" \ | |
| --data-binary @"$filename" \ | |
| "$url" | |
| - name: Deploy to github package registry | |
| run: | | |
| source .github/actions/tools/uploadToMaven.sh | |
| registry="https://maven.pkg.github.com/$GITHUB_REPOSITORY" | |
| echo "Deploy to github package registry $registry" | |
| uploadAllToMaven dist/maven/ $registry "token" ${{ secrets.GITHUB_TOKEN }} | |
| # Deploy the javadoc | |
| DeployJavaDoc: | |
| needs: [BuildJMonkey] | |
| name: Deploy Javadoc | |
| runs-on: ubuntu-latest | |
| if: github.event_name == 'release' | |
| steps: | |
| # We are going to need a deploy key for this, since we need | |
| # to push to a different repo | |
| - name: Set ssh key | |
| run: | | |
| mkdir -p ~/.ssh/ | |
| echo "${{ secrets.JAVADOC_GHPAGES_DEPLOY_PRIVKEY }}" > $HOME/.ssh/deploy.key | |
| chmod 600 $HOME/.ssh/deploy.key | |
| # We clone the javadoc repo | |
| - name: Clone gh-pages | |
| run: | | |
| branch="gh-pages" | |
| export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i $HOME/.ssh/deploy.key" | |
| git clone --single-branch --branch "$branch" git@github.com:${{ secrets.JAVADOC_GHPAGES_REPO }} . | |
| # Download the javadoc in the new directory "newdoc" | |
| - name: Download javadoc | |
| uses: actions/download-artifact@v8.0.1 | |
| with: | |
| name: javadoc | |
| path: newdoc | |
| # The actual deploy | |
| - name: Deploy to github pages | |
| run: | | |
| set -f | |
| IFS=$'\n' | |
| # Get the tag for this release | |
| version="`if [[ $GITHUB_REF == refs\/tags* ]]; then echo ${GITHUB_REF//refs\/tags\//}; fi`" | |
| # If there is no tag, then we do nothing. | |
| if [ "$version" != "" ]; | |
| then | |
| echo "Deploy as $version" | |
| # Remove any older version of the javadoc for this tag | |
| if [ -d "$version" ];then rm -Rf "$version"; fi | |
| # Rename newdoc with the version name | |
| mv newdoc "$version" | |
| # if there isn't an index.txt we create one (we need this to list the versions) | |
| if [ ! -f "index.txt" ]; then echo "" > index.txt ; fi | |
| index="`cat index.txt`" | |
| # Check if this version is already in index.txt | |
| addNew=true | |
| for v in $index; | |
| do | |
| if [ "$v" = "$version" ]; | |
| then | |
| echo "$v" "$version" | |
| addNew=false | |
| break | |
| fi | |
| done | |
| # If not, we add it to the beginning | |
| if [ "$addNew" = "true" ]; | |
| then | |
| echo -e "$version\n$index" > index.txt | |
| index="`cat index.txt`" | |
| fi | |
| # Regenerate the pages | |
| chmod +x make.sh | |
| ./make.sh | |
| # Configure git to use the deploy key | |
| export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i $HOME/.ssh/deploy.key" | |
| # Commit the changes | |
| git config --global user.name "Github Actions" | |
| git config --global user.email "actions@users.noreply.github.com" | |
| git add . || true | |
| git commit -m "$version" || true | |
| branch="gh-pages" | |
| git push origin "$branch" --force || true | |
| fi |