|
|
|
@ -1,5 +1,5 @@ |
|
|
|
|
###################################################################################### |
|
|
|
|
# JME CI/CD |
|
|
|
|
# JME CI/CD |
|
|
|
|
###################################################################################### |
|
|
|
|
# Quick overview of what is going on in this script: |
|
|
|
|
# - Build natives for android |
|
|
|
@ -10,7 +10,7 @@ |
|
|
|
|
# - (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 |
|
|
|
|
# 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. |
|
|
|
@ -23,7 +23,7 @@ |
|
|
|
|
# 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 |
|
|
|
|
# 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" |
|
|
|
@ -31,7 +31,7 @@ |
|
|
|
|
# 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 |
|
|
|
|
# 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 |
|
|
|
@ -54,35 +54,36 @@ on: |
|
|
|
|
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 |
|
|
|
|
uses: actions/checkout@v1 |
|
|
|
|
with: |
|
|
|
|
fetch-depth: 1 |
|
|
|
|
|
|
|
|
|
- name: Build |
|
|
|
|
- name: Validate the Gradle wrapper |
|
|
|
|
uses: gradle/wrapper-validation-action@v1 |
|
|
|
|
- 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 -PuseCommitHashAsVersionName=true --no-daemon -PbuildForPlatforms=LinuxArm,LinuxArmHF,LinuxArm64 -PbuildNativeProjects=true \ |
|
|
|
|
:jme3-bullet-native:assemble |
|
|
|
|
:jme3-bullet-native:assemble |
|
|
|
|
|
|
|
|
|
- name: Upload natives |
|
|
|
|
uses: actions/upload-artifact@master |
|
|
|
|
with: |
|
|
|
|
name: linuxarm-natives |
|
|
|
|
path: build/native |
|
|
|
|
path: build/native |
|
|
|
|
|
|
|
|
|
# Build the natives on android |
|
|
|
|
BuildAndroidNatives: |
|
|
|
@ -90,19 +91,20 @@ jobs: |
|
|
|
|
runs-on: ubuntu-18.04 |
|
|
|
|
container: |
|
|
|
|
image: riccardoblb/buildenv-jme3:android |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
steps: |
|
|
|
|
- name: Clone the repo |
|
|
|
|
uses: actions/checkout@v1 |
|
|
|
|
uses: actions/checkout@v1 |
|
|
|
|
with: |
|
|
|
|
fetch-depth: 1 |
|
|
|
|
|
|
|
|
|
- name: Build |
|
|
|
|
run: | |
|
|
|
|
gradle -PuseCommitHashAsVersionName=true --no-daemon -PbuildNativeProjects=true \ |
|
|
|
|
- name: Validate the Gradle wrapper |
|
|
|
|
uses: gradle/wrapper-validation-action@v1 |
|
|
|
|
- name: Build |
|
|
|
|
run: | |
|
|
|
|
./gradlew -PuseCommitHashAsVersionName=true --no-daemon -PbuildNativeProjects=true \ |
|
|
|
|
:jme3-android-native:assemble \ |
|
|
|
|
:jme3-bullet-native-android:assemble |
|
|
|
|
|
|
|
|
|
:jme3-bullet-native-android:assemble |
|
|
|
|
|
|
|
|
|
- name: Upload natives |
|
|
|
|
uses: actions/upload-artifact@master |
|
|
|
|
with: |
|
|
|
@ -114,7 +116,7 @@ jobs: |
|
|
|
|
strategy: |
|
|
|
|
fail-fast: true |
|
|
|
|
matrix: |
|
|
|
|
os: [ubuntu-18.04,windows-2019,macOS-latest] |
|
|
|
|
os: [ubuntu-18.04,windows-2019,macOS-latest] |
|
|
|
|
jdk: [8.x.x] |
|
|
|
|
include: |
|
|
|
|
- os: ubuntu-18.04 |
|
|
|
@ -123,22 +125,23 @@ jobs: |
|
|
|
|
osName: windows |
|
|
|
|
- os: macOS-latest |
|
|
|
|
osName: mac |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
name: Build natives for ${{ matrix.osName }} |
|
|
|
|
runs-on: ${{ matrix.os }} |
|
|
|
|
steps: |
|
|
|
|
|
|
|
|
|
runs-on: ${{ matrix.os }} |
|
|
|
|
steps: |
|
|
|
|
|
|
|
|
|
- name: Clone the repo |
|
|
|
|
uses: actions/checkout@v1 |
|
|
|
|
uses: actions/checkout@v1 |
|
|
|
|
with: |
|
|
|
|
fetch-depth: 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- name: Prepare java environment |
|
|
|
|
uses: actions/setup-java@v1 |
|
|
|
|
with: |
|
|
|
|
java-version: ${{ matrix.jdk }} |
|
|
|
|
architecture: x64 |
|
|
|
|
|
|
|
|
|
architecture: x64 |
|
|
|
|
- name: Validate the Gradle wrapper |
|
|
|
|
uses: gradle/wrapper-validation-action@v1 |
|
|
|
|
- name: Build Natives |
|
|
|
|
shell: bash |
|
|
|
|
env: |
|
|
|
@ -147,8 +150,8 @@ jobs: |
|
|
|
|
# Install dependencies |
|
|
|
|
if [ "$OS_NAME" = "mac" ]; |
|
|
|
|
then |
|
|
|
|
echo "Prepare mac" |
|
|
|
|
|
|
|
|
|
echo "Prepare mac" |
|
|
|
|
|
|
|
|
|
elif [ "$OS_NAME" = "linux" ]; |
|
|
|
|
then |
|
|
|
|
echo "Prepare linux" |
|
|
|
@ -157,25 +160,25 @@ jobs: |
|
|
|
|
else |
|
|
|
|
echo "Prepare windows" |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Build |
|
|
|
|
gradle -PuseCommitHashAsVersionName=true --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: |
|
|
|
|
BuildJMonkey: |
|
|
|
|
needs: [BuildNatives,BuildAndroidNatives] |
|
|
|
|
name: Build on ${{ matrix.osName }} jdk${{ matrix.jdk }} |
|
|
|
|
runs-on: ${{ matrix.os }} |
|
|
|
|
runs-on: ${{ matrix.os }} |
|
|
|
|
strategy: |
|
|
|
|
fail-fast: true |
|
|
|
|
matrix: |
|
|
|
@ -188,21 +191,21 @@ jobs: |
|
|
|
|
- os: windows-2019 |
|
|
|
|
osName: windows |
|
|
|
|
- os: macOS-latest |
|
|
|
|
osName: mac |
|
|
|
|
osName: mac |
|
|
|
|
- jdk: 11.x.x |
|
|
|
|
deploy: false |
|
|
|
|
deploy: false |
|
|
|
|
|
|
|
|
|
steps: |
|
|
|
|
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 |
|
|
|
|
architecture: x64 |
|
|
|
|
|
|
|
|
|
- name: Download natives for linux |
|
|
|
|
uses: actions/download-artifact@master |
|
|
|
@ -215,7 +218,7 @@ jobs: |
|
|
|
|
with: |
|
|
|
|
name: windows-natives |
|
|
|
|
path: build/native |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- name: Download natives for mac |
|
|
|
|
uses: actions/download-artifact@master |
|
|
|
|
with: |
|
|
|
@ -233,26 +236,27 @@ jobs: |
|
|
|
|
with: |
|
|
|
|
name: linuxarm-natives |
|
|
|
|
path: build/native |
|
|
|
|
|
|
|
|
|
- name: Validate the Gradle wrapper |
|
|
|
|
uses: gradle/wrapper-validation-action@v1 |
|
|
|
|
- name: Build Engine |
|
|
|
|
shell: bash |
|
|
|
|
run: | |
|
|
|
|
# Build |
|
|
|
|
gradle -PuseCommitHashAsVersionName=true -PskipPrebuildLibraries=true build |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if [ "${{ matrix.deploy }}" = "true" ]; |
|
|
|
|
then |
|
|
|
|
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 -PuseCommitHashAsVersionName=true -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 -PuseCommitHashAsVersionName=true -PskipPrebuildLibraries=true install -Dmaven.repo.local="$PWD/dist/maven" |
|
|
|
@ -261,10 +265,10 @@ jobs: |
|
|
|
|
echo "Create native zip" |
|
|
|
|
cdir="$PWD" |
|
|
|
|
cd "build/native" |
|
|
|
|
zip -r "$cdir/dist/jme3-natives.zip" * |
|
|
|
|
zip -r "$cdir/dist/jme3-natives.zip" * |
|
|
|
|
cd "$cdir" |
|
|
|
|
echo "Done" |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# Used later by DeploySnapshot |
|
|
|
|
- name: Upload merged natives |
|
|
|
@ -273,29 +277,29 @@ jobs: |
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
path: dist/release |
|
|
|
|
|
|
|
|
|
# This job deploys the native snapshot. |
|
|
|
|
# The snapshot is downloaded when people build the engine without setting buildNativeProject |
|
|
|
@ -316,7 +320,7 @@ jobs: |
|
|
|
|
then |
|
|
|
|
git clone --single-branch --branch "$branch" https://github.com/${GITHUB_REPOSITORY}.git . |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- name: Download merged natives |
|
|
|
|
uses: actions/download-artifact@master |
|
|
|
|
with: |
|
|
|
@ -334,7 +338,7 @@ jobs: |
|
|
|
|
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 |
|
|
|
@ -355,9 +359,9 @@ jobs: |
|
|
|
|
echo "No changes, skip." |
|
|
|
|
else |
|
|
|
|
if [ "${{ secrets.BINTRAY_GENERIC_REPO }}" = "" ]; |
|
|
|
|
then |
|
|
|
|
then |
|
|
|
|
echo "Configure the following secrets to enable native snapshot deployment" |
|
|
|
|
echo "BINTRAY_GENERIC_REPO, BINTRAY_USER, BINTRAY_APIKEY" |
|
|
|
|
echo "BINTRAY_GENERIC_REPO, BINTRAY_USER, BINTRAY_APIKEY" |
|
|
|
|
else |
|
|
|
|
# Deploy snapshot |
|
|
|
|
bintray_uploadFile dist/jme3-natives.zip \ |
|
|
|
@ -368,17 +372,17 @@ jobs: |
|
|
|
|
"https://github.com/${GITHUB_REPOSITORY}" \ |
|
|
|
|
"${{ secrets.BINTRAY_LICENSE }}" "true" |
|
|
|
|
|
|
|
|
|
# We reference the snapshot by writing its commit hash in natives-snapshot.properties |
|
|
|
|
# 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 "actions@users.noreply.github.com" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
@ -387,39 +391,39 @@ jobs: |
|
|
|
|
|
|
|
|
|
# Push |
|
|
|
|
(git -c http.extraheader="AUTHORIZATION: basic $header" push origin "$branch" || true) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
# This job deploys the release |
|
|
|
|
DeployRelease: |
|
|
|
|
DeployRelease: |
|
|
|
|
needs: [BuildJMonkey] |
|
|
|
|
name: Deploy Release |
|
|
|
|
runs-on: ubuntu-18.04 |
|
|
|
|
if: github.event_name == 'release' |
|
|
|
|
steps: |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
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}" |
|
|
|
@ -436,7 +440,7 @@ jobs: |
|
|
|
|
-H "Content-Type: application/zip" \ |
|
|
|
|
--data-binary @"$filename" \ |
|
|
|
|
"$url" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- name: Deploy to bintray |
|
|
|
|
run: | |
|
|
|
|
source .github/actions/tools/uploadToMaven.sh |
|
|
|
@ -447,22 +451,22 @@ jobs: |
|
|
|
|
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: |
|
|
|
|
DeployJavaDoc: |
|
|
|
|
needs: [BuildJMonkey] |
|
|
|
|
name: Deploy Javadoc |
|
|
|
|
runs-on: ubuntu-18.04 |
|
|
|
|
if: github.event_name == 'release' |
|
|
|
|
steps: |
|
|
|
|
|
|
|
|
|
steps: |
|
|
|
|
|
|
|
|
|
# We are going to need a deploy key for this, since we need |
|
|
|
|
# to push to a different repo |
|
|
|
|
- name: Set ssh key |
|
|
|
@ -477,16 +481,16 @@ jobs: |
|
|
|
|
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@master |
|
|
|
|
with: |
|
|
|
|
name: javadoc |
|
|
|
|
path: newdoc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# The actual deploy |
|
|
|
|
- name: Deploy to github pages |
|
|
|
|
- name: Deploy to github pages |
|
|
|
|
run: | |
|
|
|
|
set -f |
|
|
|
|
IFS=$'\n' |
|
|
|
@ -508,10 +512,10 @@ jobs: |
|
|
|
|
# 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; |
|
|
|
|
for v in $index; |
|
|
|
|
do |
|
|
|
|
if [ "$v" = "$version" ]; |
|
|
|
|
then |
|
|
|
@ -538,11 +542,11 @@ jobs: |
|
|
|
|
# Commit the changes |
|
|
|
|
git config --global user.name "Github Actions" |
|
|
|
|
git config --global user.email "actions@users.noreply.github.com" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
git add . |
|
|
|
|
git commit -m "$version" |
|
|
|
|
|
|
|
|
|
branch="gh-pages" |
|
|
|
|
git push origin "$branch" --force |
|
|
|
|
branch="gh-pages" |
|
|
|
|
git push origin "$branch" --force |
|
|
|
|
|
|
|
|
|
fi |
|
|
|
|