|
@@ -0,0 +1,550 @@
|
|
|
|
+######################################################################################
|
|
|
|
+# JME CI/CD
|
|
|
|
+######################################################################################
|
|
|
|
+# Quick overview of what is going on in this script:
|
|
|
|
+# - Build natives for android
|
|
|
|
+# - Build natives for linux arm
|
|
|
|
+# - Build natives for windows,mac,linux x86_64 and x86
|
|
|
|
+# - Merge the natives, build the engine, create the zip release, maven artifacts, javadoc and native snapshot
|
|
|
|
+# - (only when there is a change in the native code) Deploy the native snapshot to bintray
|
|
|
|
+# - (only when building a release) Deploy everything else to github releases, github packet registry and bintray
|
|
|
|
+# - (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 BINTRAY RELEASE & NATIVE SNAPSHOT
|
|
|
|
+# Configure the following secrets/variables (customize the values with your own)
|
|
|
|
+# BINTRAY_GENERIC_REPO=riccardoblsandbox/jmonkeyengine-files
|
|
|
|
+# BINTRAY_MAVEN_REPO=riccardoblsandbox/jmonkeyengine
|
|
|
|
+# BINTRAY_USER=riccardo
|
|
|
|
+# BINTRAY_APIKEY=XXXXXX
|
|
|
|
+# BINTRAY_LICENSE="BSD 3-Clause"
|
|
|
|
+# >> 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 deloy key
|
|
|
|
+# ssh-keygen -t rsa -b 4096 -C "[email protected]" -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
|
|
|
|
+ - newbuild
|
|
|
|
+ - v3.3.*
|
|
|
|
+ - v3.2
|
|
|
|
+ - v3.2.*
|
|
|
|
+ pull_request:
|
|
|
|
+ release:
|
|
|
|
+ types: [published]
|
|
|
|
+
|
|
|
|
+jobs:
|
|
|
|
+
|
|
|
|
+ # Builds the natives on linux arm
|
|
|
|
+ BuildLinuxArmNatives:
|
|
|
|
+ name: Build natives for linux (arm)
|
|
|
|
+ runs-on: ubuntu-18.04
|
|
|
|
+ container:
|
|
|
|
+ image: riccardoblb/buildenv-jme3:linuxArm
|
|
|
|
+
|
|
|
|
+ steps:
|
|
|
|
+ - name: Clone the repo
|
|
|
|
+ uses: actions/checkout@v1
|
|
|
|
+ with:
|
|
|
|
+ fetch-depth: 1
|
|
|
|
+
|
|
|
|
+ - name: Build
|
|
|
|
+ run: |
|
|
|
|
+ # Build
|
|
|
|
+ # Note: since this is crossbuild we use the buildForPlatforms filter to tell
|
|
|
|
+ # the buildscript wich platforms it should build for.
|
|
|
|
+ gradle --no-daemon -PbuildForPlatforms=LinuxArm,LinuxArmHF,LinuxArm64 -PbuildNativeProjects=true \
|
|
|
|
+ :jme3-bullet-native:assemble
|
|
|
|
+
|
|
|
|
+ - name: Upload natives
|
|
|
|
+ uses: actions/upload-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: linuxarm-natives
|
|
|
|
+ path: build/native
|
|
|
|
+
|
|
|
|
+ # Build the natives on android
|
|
|
|
+ BuildAndroidNatives:
|
|
|
|
+ name: Build natives for android
|
|
|
|
+ runs-on: ubuntu-18.04
|
|
|
|
+ container:
|
|
|
|
+ image: riccardoblb/buildenv-jme3:android
|
|
|
|
+
|
|
|
|
+ steps:
|
|
|
|
+ - name: Clone the repo
|
|
|
|
+ uses: actions/checkout@v1
|
|
|
|
+ with:
|
|
|
|
+ fetch-depth: 1
|
|
|
|
+
|
|
|
|
+ - name: Build
|
|
|
|
+ run: |
|
|
|
|
+ gradle --no-daemon -PbuildNativeProjects=true \
|
|
|
|
+ :jme3-android-native:assemble \
|
|
|
|
+ :jme3-bullet-native-android:assemble
|
|
|
|
+
|
|
|
|
+ - name: Upload natives
|
|
|
|
+ uses: actions/upload-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: android-natives
|
|
|
|
+ path: build/native
|
|
|
|
+
|
|
|
|
+ # Build the natives
|
|
|
|
+ BuildNatives:
|
|
|
|
+ strategy:
|
|
|
|
+ fail-fast: true
|
|
|
|
+ matrix:
|
|
|
|
+ os: [ubuntu-18.04,windows-2019,macOS-10.14]
|
|
|
|
+ jdk: [8.x.x]
|
|
|
|
+ include:
|
|
|
|
+ - os: ubuntu-18.04
|
|
|
|
+ osName: linux
|
|
|
|
+ - os: windows-2019
|
|
|
|
+ osName: windows
|
|
|
|
+ - os: macOS-10.14
|
|
|
|
+ osName: mac
|
|
|
|
+
|
|
|
|
+ name: Build natives for ${{ matrix.osName }}
|
|
|
|
+ runs-on: ${{ matrix.os }}
|
|
|
|
+ steps:
|
|
|
|
+
|
|
|
|
+ - name: Clone the repo
|
|
|
|
+ uses: actions/checkout@v1
|
|
|
|
+ with:
|
|
|
|
+ fetch-depth: 1
|
|
|
|
+
|
|
|
|
+ - name: Prepare java environment
|
|
|
|
+ uses: actions/setup-java@v1
|
|
|
|
+ with:
|
|
|
|
+ java-version: ${{ matrix.jdk }}
|
|
|
|
+ architecture: x64
|
|
|
|
+
|
|
|
|
+ - name: Build Natives
|
|
|
|
+ shell: bash
|
|
|
|
+ env:
|
|
|
|
+ OS_NAME: ${{ matrix.osName }}
|
|
|
|
+ run: |
|
|
|
|
+ # Install dependencies
|
|
|
|
+ if [ "$OS_NAME" = "mac" ];
|
|
|
|
+ then
|
|
|
|
+ echo "Prepare mac"
|
|
|
|
+ # We need this older version to compile for 32bit...
|
|
|
|
+ sudo xcode-select -switch /Applications/Xcode_9.4.1.app
|
|
|
|
+ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
|
|
|
|
+ elif [ "$OS_NAME" = "linux" ];
|
|
|
|
+ then
|
|
|
|
+ echo "Prepare linux"
|
|
|
|
+ sudo apt-get update
|
|
|
|
+ sudo apt-get install -y gcc-multilib g++-multilib
|
|
|
|
+ else
|
|
|
|
+ echo "Prepare windows"
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ # Build
|
|
|
|
+ gradle --no-daemon -PbuildNativeProjects=true -Dmaven.repo.local="$PWD/dist/maven" \
|
|
|
|
+ build \
|
|
|
|
+ :jme3-bullet-native:build
|
|
|
|
+
|
|
|
|
+ # Upload natives to be used later by the BuildJMonkey job
|
|
|
|
+ - name: Upload natives
|
|
|
|
+ uses: actions/upload-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: ${{ matrix.osName }}-natives
|
|
|
|
+ path: build/native
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ # Build the engine, we only deploy from ubuntu-18.04 jdk8
|
|
|
|
+ BuildJMonkey:
|
|
|
|
+ needs: [BuildNatives,BuildAndroidNatives]
|
|
|
|
+ name: Build on ${{ matrix.osName }} jdk${{ matrix.jdk }}
|
|
|
|
+ runs-on: ${{ matrix.os }}
|
|
|
|
+ strategy:
|
|
|
|
+ fail-fast: true
|
|
|
|
+ matrix:
|
|
|
|
+ os: [ubuntu-18.04,windows-2019,macOS-10.14]
|
|
|
|
+ jdk: [8.x.x,11.x.x]
|
|
|
|
+ include:
|
|
|
|
+ - os: ubuntu-18.04
|
|
|
|
+ osName: linux
|
|
|
|
+ deploy: true
|
|
|
|
+ - os: windows-2019
|
|
|
|
+ osName: windows
|
|
|
|
+ - os: macOS-10.14
|
|
|
|
+ osName: mac
|
|
|
|
+ - jdk: 11.x.x
|
|
|
|
+ deploy: false
|
|
|
|
+
|
|
|
|
+ steps:
|
|
|
|
+ - name: Clone the repo
|
|
|
|
+ uses: actions/checkout@v1
|
|
|
|
+ with:
|
|
|
|
+ fetch-depth: 1
|
|
|
|
+
|
|
|
|
+ - name: Setup the java environment
|
|
|
|
+ uses: actions/setup-java@v1
|
|
|
|
+ with:
|
|
|
|
+ java-version: ${{ matrix.jdk }}
|
|
|
|
+ architecture: x64
|
|
|
|
+
|
|
|
|
+ - name: Download natives for linux
|
|
|
|
+ uses: actions/download-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: linux-natives
|
|
|
|
+ path: build/native
|
|
|
|
+
|
|
|
|
+ - name: Download natives for windows
|
|
|
|
+ uses: actions/download-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: windows-natives
|
|
|
|
+ path: build/native
|
|
|
|
+
|
|
|
|
+ - name: Download natives for mac
|
|
|
|
+ uses: actions/download-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: mac-natives
|
|
|
|
+ path: build/native
|
|
|
|
+
|
|
|
|
+ - name: Download natives for android
|
|
|
|
+ uses: actions/download-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: android-natives
|
|
|
|
+ path: build/native
|
|
|
|
+
|
|
|
|
+ - name: Download natives for linux (arm)
|
|
|
|
+ uses: actions/download-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: linuxarm-natives
|
|
|
|
+ path: build/native
|
|
|
|
+
|
|
|
|
+ - name: Build Engine
|
|
|
|
+ shell: bash
|
|
|
|
+ run: |
|
|
|
|
+ # Build
|
|
|
|
+ gradle -PskipPrebuildLibraries=true build
|
|
|
|
+
|
|
|
|
+ if [ "${{ matrix.deploy }}" = "true" ];
|
|
|
|
+ then
|
|
|
|
+ # We are going to need "zip"
|
|
|
|
+ sudo apt-get update
|
|
|
|
+ sudo apt-get install -y zip
|
|
|
|
+
|
|
|
|
+ # Create the zip release and the javadoc
|
|
|
|
+ gradle -PskipPrebuildLibraries=true mergedJavadoc createZipDistribution
|
|
|
|
+
|
|
|
|
+ # We prepare the release for deploy
|
|
|
|
+ mkdir -p ./dist/release/
|
|
|
|
+ mv build/distributions/*.zip dist/release/
|
|
|
|
+
|
|
|
|
+ # Create the maven artifacts
|
|
|
|
+ mkdir -p ./dist/maven/
|
|
|
|
+ gradle -PskipPrebuildLibraries=true install -Dmaven.repo.local="$PWD/dist/maven"
|
|
|
|
+
|
|
|
|
+ # Zip the natives into a single archive (we are going to use this to deploy native snapshots)
|
|
|
|
+ echo "Create native zip"
|
|
|
|
+ cdir="$PWD"
|
|
|
|
+ cd "build/native"
|
|
|
|
+ zip -r "$cdir/dist/jme3-natives.zip" *
|
|
|
|
+ cd "$cdir"
|
|
|
|
+ echo "Done"
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ # Used later by DeploySnapshot
|
|
|
|
+ - name: Upload merged natives
|
|
|
|
+ if: matrix.deploy==true
|
|
|
|
+ uses: actions/upload-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: natives
|
|
|
|
+ path: dist/jme3-natives.zip
|
|
|
|
+
|
|
|
|
+ # Upload maven artifacts to be used later by the deploy job
|
|
|
|
+ - name: Upload maven artifacts
|
|
|
|
+ if: matrix.deploy==true
|
|
|
|
+ uses: actions/upload-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: maven
|
|
|
|
+ path: dist/maven
|
|
|
|
+
|
|
|
|
+ - name: Upload javadoc
|
|
|
|
+ if: matrix.deploy==true
|
|
|
|
+ uses: actions/upload-artifact@master
|
|
|
|
+ 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@master
|
|
|
|
+ with:
|
|
|
|
+ name: release
|
|
|
|
+ path: dist/release
|
|
|
|
+
|
|
|
|
+ # This job deploys the native snapshot.
|
|
|
|
+ # The snapshot is downloaded when people build the engine without setting buildNativeProject
|
|
|
|
+ # this is useful for people that want to build only the java part and don't have
|
|
|
|
+ # all the stuff needed to compile natives.
|
|
|
|
+ DeploySnapshot:
|
|
|
|
+ needs: [BuildJMonkey]
|
|
|
|
+ name: "Deploy snapshot"
|
|
|
|
+ runs-on: ubuntu-18.04
|
|
|
|
+ if: github.event_name == 'push'
|
|
|
|
+ steps:
|
|
|
|
+
|
|
|
|
+ # We clone the repo manually, since we are going to push back a reference to the snapshot
|
|
|
|
+ - name: Clone the repo
|
|
|
|
+ run: |
|
|
|
|
+ branch="${GITHUB_REF//refs\/heads\//}"
|
|
|
|
+ if [ "$branch" != "" ];
|
|
|
|
+ then
|
|
|
|
+ git clone --single-branch --branch "$branch" https://github.com/${GITHUB_REPOSITORY}.git .
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ - name: Download merged natives
|
|
|
|
+ uses: actions/download-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: natives
|
|
|
|
+ path: dist/
|
|
|
|
+
|
|
|
|
+ - name: Deploy natives snapshot
|
|
|
|
+ run: |
|
|
|
|
+ source .github/actions/tools/bintray.sh
|
|
|
|
+ NATIVE_CHANGES="yes"
|
|
|
|
+ branch="${GITHUB_REF//refs\/heads\//}"
|
|
|
|
+ if [ "$branch" != "" ];
|
|
|
|
+ then
|
|
|
|
+ if [ -f "natives-snapshot.properties" ];
|
|
|
|
+ then
|
|
|
|
+ nativeSnapshot=`cat "natives-snapshot.properties"`
|
|
|
|
+ nativeSnapshot="${nativeSnapshot#*=}"
|
|
|
|
+
|
|
|
|
+ # We deploy ONLY if GITHUB_SHA (the current commit hash) is newer than $nativeSnapshot
|
|
|
|
+ if [ "`git rev-list --count $nativeSnapshot..$GITHUB_SHA`" = "0" ];
|
|
|
|
+ then
|
|
|
|
+ NATIVE_CHANGES=""
|
|
|
|
+ else
|
|
|
|
+ # We check if the native code changed.
|
|
|
|
+ echo "Detect changes"
|
|
|
|
+ NATIVE_CHANGES="$(git diff-tree --name-only "$GITHUB_SHA" "$nativeSnapshot" -- jme3-bullet-native/)"
|
|
|
|
+ if [ "$NATIVE_CHANGES" = "" ];then NATIVE_CHANGES="$(git diff-tree --name-only "$GITHUB_SHA" "$nativeSnapshot" -- jme3-android-native/)"; fi
|
|
|
|
+ if [ "$NATIVE_CHANGES" = "" ];then NATIVE_CHANGES="$(git diff-tree --name-only "$GITHUB_SHA" "$nativeSnapshot" -- jme3-bullet-native-android/)"; fi
|
|
|
|
+ if [ "$NATIVE_CHANGES" = "" ];then NATIVE_CHANGES="$(git diff-tree --name-only "$GITHUB_SHA" "$nativeSnapshot" -- jme3-bullet/)"; fi
|
|
|
|
+ fi
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ # We do nothing if there is no change
|
|
|
|
+ if [ "$NATIVE_CHANGES" = "" ];
|
|
|
|
+ then
|
|
|
|
+ echo "No changes, skip."
|
|
|
|
+ else
|
|
|
|
+ if [ "${{ secrets.BINTRAY_GENERIC_REPO }}" = "" ];
|
|
|
|
+ then
|
|
|
|
+ echo "Configure the following secrets to enable native snapshot deployment"
|
|
|
|
+ echo "BINTRAY_GENERIC_REPO, BINTRAY_USER, BINTRAY_APIKEY"
|
|
|
|
+ else
|
|
|
|
+ # Deploy snapshot
|
|
|
|
+ bintray_uploadFile dist/jme3-natives.zip \
|
|
|
|
+ $GITHUB_SHA/$GITHUB_SHA/jme3-natives.zip \
|
|
|
|
+ ${{ secrets.BINTRAY_GENERIC_REPO }} "content" "natives" \
|
|
|
|
+ ${{ secrets.BINTRAY_USER }} \
|
|
|
|
+ ${{ secrets.BINTRAY_APIKEY }} \
|
|
|
|
+ "https://github.com/${GITHUB_REPOSITORY}" \
|
|
|
|
+ "${{ secrets.BINTRAY_LICENSE }}" "true"
|
|
|
|
+
|
|
|
|
+ # We reference the snapshot by writing its commit hash in natives-snapshot.properties
|
|
|
|
+ echo "natives.snapshot=$GITHUB_SHA" > natives-snapshot.properties
|
|
|
|
+
|
|
|
|
+ # We commit the updated natives-snapshot.properties
|
|
|
|
+ git config --global user.name "Github Actions"
|
|
|
|
+ git config --global user.email "[email protected]"
|
|
|
|
+
|
|
|
|
+ git add natives-snapshot.properties
|
|
|
|
+
|
|
|
|
+ git commit -m "[skip ci] update natives snapshot"
|
|
|
|
+
|
|
|
|
+ # Pull rebase from the remote repo, just in case there was a push in the meantime
|
|
|
|
+ git pull -q --rebase
|
|
|
|
+
|
|
|
|
+ # We need to calculate the header for git authentication
|
|
|
|
+ header=$(echo -n "ad-m:${{ secrets.GITHUB_TOKEN }}" | base64)
|
|
|
|
+
|
|
|
|
+ # Push
|
|
|
|
+ (git -c http.extraheader="AUTHORIZATION: basic $header" push origin "$branch" || true)
|
|
|
|
+
|
|
|
|
+ fi
|
|
|
|
+ fi
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ # This job deploys the release
|
|
|
|
+ DeployRelease:
|
|
|
|
+ needs: [BuildJMonkey]
|
|
|
|
+ name: Deploy Release
|
|
|
|
+ runs-on: ubuntu-18.04
|
|
|
|
+ if: github.event_name == 'release'
|
|
|
|
+ steps:
|
|
|
|
+
|
|
|
|
+ # We need to clone everything again for uploadToMaven.sh ...
|
|
|
|
+ - name: Clone the repo
|
|
|
|
+ uses: actions/checkout@v1
|
|
|
|
+ with:
|
|
|
|
+ fetch-depth: 1
|
|
|
|
+
|
|
|
|
+ # Download all the stuff...
|
|
|
|
+ - name: Download maven artifacts
|
|
|
|
+ uses: actions/download-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: maven
|
|
|
|
+ path: dist/maven
|
|
|
|
+
|
|
|
|
+ - name: Download release
|
|
|
|
+ uses: actions/download-artifact@master
|
|
|
|
+ with:
|
|
|
|
+ name: release
|
|
|
|
+ path: dist/release
|
|
|
|
+
|
|
|
|
+ - 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 bintray
|
|
|
|
+ run: |
|
|
|
|
+ source .github/actions/tools/uploadToMaven.sh
|
|
|
|
+ if [ "${{ secrets.BINTRAY_MAVEN_REPO }}" = "" ];
|
|
|
|
+ then
|
|
|
|
+ echo "Configure the following secrets to enable bintray deployment"
|
|
|
|
+ echo "BINTRAY_MAVEN_REPO, BINTRAY_USER, BINTRAY_APIKEY"
|
|
|
|
+ else
|
|
|
|
+ uploadAllToMaven dist/maven/ https://api.bintray.com/maven/${{ secrets.BINTRAY_MAVEN_REPO }} ${{ secrets.BINTRAY_USER }} ${{ secrets.BINTRAY_APIKEY }} "https://github.com/${GITHUB_REPOSITORY}" "${{ secrets.BINTRAY_LICENSE }}"
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ # - 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-18.04
|
|
|
|
+ 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" [email protected]:${{ secrets.JAVADOC_GHPAGES_REPO }} .
|
|
|
|
+
|
|
|
|
+ # Download the javadoc in the new directory "newdoc"
|
|
|
|
+ - name: Download javadoc
|
|
|
|
+ uses: actions/download-artifact@master
|
|
|
|
+ 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 "[email protected]"
|
|
|
|
+
|
|
|
|
+ git add .
|
|
|
|
+ git commit -m "$version"
|
|
|
|
+
|
|
|
|
+ branch="gh-pages"
|
|
|
|
+ git push origin "$branch" --force
|
|
|
|
+
|
|
|
|
+ fi
|