Github Actions
This commit is contained in:
parent
88e9c8482c
commit
69ef8efcce
93
.github/actions/tools/bintray.sh
vendored
Normal file
93
.github/actions/tools/bintray.sh
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
|
||||
# bintray_createPackage [REPO] [PACKAGE] [USER] [PASSWORD] [GIT REPO] [LICENSE]
|
||||
function bintray_createPackage {
|
||||
repo="$1"
|
||||
package="$2"
|
||||
user="$3"
|
||||
password="$4"
|
||||
srcrepo="$5"
|
||||
license="$6"
|
||||
|
||||
repoUrl="https://api.bintray.com/packages/$repo"
|
||||
if [ "`curl -u$user:$password -H Content-Type:application/json -H Accept:application/json \
|
||||
--write-out %{http_code} --silent --output /dev/null -X GET \"$repoUrl/$package\"`" != "200" ];
|
||||
then
|
||||
|
||||
if [ "$srcrepo" != "" -a "$license" != "" ];
|
||||
then
|
||||
echo "Package does not exist... create."
|
||||
data="{
|
||||
\"name\": \"${package}\",
|
||||
\"labels\": [],
|
||||
\"licenses\": [\"${license}\"],
|
||||
\"vcs_url\": \"${srcrepo}\"
|
||||
}"
|
||||
|
||||
|
||||
curl -u$user:$password -H "Content-Type:application/json" -H "Accept:application/json" -X POST \
|
||||
-d "${data}" "$repoUrl"
|
||||
else
|
||||
echo "Package does not exist... you need to specify a repo and license for it to be created."
|
||||
fi
|
||||
else
|
||||
echo "The package already exists. Skip."
|
||||
fi
|
||||
}
|
||||
|
||||
# uploadFile file destination [REPO] "content" [PACKAGE] [USER] [PASSWORD] [SRCREPO] [LICENSE]
|
||||
function bintray_uploadFile {
|
||||
file="$1"
|
||||
dest="$2"
|
||||
|
||||
echo "Upload $file to $dest"
|
||||
|
||||
repo="$3"
|
||||
type="$4"
|
||||
package="$5"
|
||||
|
||||
user="$6"
|
||||
password="$7"
|
||||
|
||||
srcrepo="$8"
|
||||
license="$9"
|
||||
publish="${10}"
|
||||
|
||||
bintray_createPackage $repo $package $user $password $srcrepo $license
|
||||
|
||||
url="https://api.bintray.com/$type/$repo/$package/$dest"
|
||||
if [ "$publish" = "true" ]; then url="$url;publish=1"; fi
|
||||
|
||||
curl -T "$file" -u$user:$password "$url"
|
||||
|
||||
}
|
||||
|
||||
function bintray_uploadAll {
|
||||
path="$1"
|
||||
destpath="$2"
|
||||
repo="$3"
|
||||
type="$4"
|
||||
package="$5"
|
||||
|
||||
user="$6"
|
||||
password="$7"
|
||||
|
||||
srcrepo="$8"
|
||||
license="$9"
|
||||
publish="${10}"
|
||||
|
||||
cdir="$PWD"
|
||||
cd "$path"
|
||||
|
||||
files="`find . -type f -print`"
|
||||
IFS="
|
||||
"
|
||||
set -f
|
||||
for f in $files; do
|
||||
destfile="$destpath/${f:2}"
|
||||
bintray_uploadFile $f $destfile $repo $type $package $user $password $srcrepo $license $publish
|
||||
done
|
||||
set +f
|
||||
unset IFS
|
||||
cd "$cdir"
|
||||
}
|
85
.github/actions/tools/uploadToMaven.sh
vendored
Normal file
85
.github/actions/tools/uploadToMaven.sh
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
#!/bin/bash
|
||||
#############################################
|
||||
#
|
||||
# Usage
|
||||
# uploadAllToMaven path/of/dist/maven https://api.bintray.com/maven/riccardo/sandbox-maven/ riccardo $BINTRAY_PASSWORD gitrepo license
|
||||
# Note: gitrepo and license are needed only when uploading to bintray if you want to create missing packages automatically
|
||||
# gitrepo must be a valid source repository
|
||||
# license must be a license supported by bintray eg "BSD 3-Clause"
|
||||
# or
|
||||
# uploadAllToMaven path/of/dist/maven $GITHUB_PACKAGE_REPOSITORY user password
|
||||
#
|
||||
#############################################
|
||||
root="`dirname ${BASH_SOURCE[0]}`"
|
||||
source $root/bintray.sh
|
||||
|
||||
set -e
|
||||
function uploadToMaven {
|
||||
file="$1"
|
||||
destfile="$2"
|
||||
repourl="$3"
|
||||
user="$4"
|
||||
password="$5"
|
||||
srcrepo="$6"
|
||||
license="$7"
|
||||
|
||||
auth=""
|
||||
|
||||
if [ "$user" != "token" ];
|
||||
then
|
||||
echo "Upload with username $user and password"
|
||||
auth="-u$user:$password"
|
||||
else
|
||||
echo "Upload with token"
|
||||
auth="-H \"Authorization: token $password\""
|
||||
fi
|
||||
|
||||
|
||||
if [[ $repourl == https\:\/\/api.bintray.com\/* ]];
|
||||
then
|
||||
package="`dirname $destfile`"
|
||||
version="`basename $package`"
|
||||
package="`dirname $package`"
|
||||
package="`basename $package`"
|
||||
|
||||
if [ "$user" = "" -o "$password" = "" ];
|
||||
then
|
||||
echo "Error! You need username and password to upload to bintray"
|
||||
exit 1
|
||||
fi
|
||||
echo "Detected bintray"
|
||||
|
||||
bintrayRepo="${repourl/https\:\/\/api.bintray.com\/maven/}"
|
||||
echo "Create package on $bintrayRepo"
|
||||
|
||||
bintray_createPackage $bintrayRepo $package $user $password $srcrepo $license
|
||||
|
||||
repourl="$repourl/$package"
|
||||
fi
|
||||
|
||||
cmd="curl -T \"$file\" $auth \
|
||||
\"$repourl/$destfile\" \
|
||||
-vvv"
|
||||
|
||||
echo "Run $cmd"
|
||||
eval "$cmd"
|
||||
}
|
||||
export -f uploadToMaven
|
||||
|
||||
function uploadAllToMaven {
|
||||
path="$1"
|
||||
cdir="$PWD"
|
||||
cd "$path"
|
||||
files="`find . \( -name "*.jar" -o -name "*.pom" \) -type f -print`"
|
||||
IFS="
|
||||
"
|
||||
set -f
|
||||
for art in $files; do
|
||||
art="${art:2}"
|
||||
uploadToMaven "$art" "$art" ${@:2}
|
||||
done
|
||||
set +f
|
||||
unset IFS
|
||||
|
||||
cd "$cdir"
|
||||
}
|
550
.github/workflows/main.yml
vendored
Normal file
550
.github/workflows/main.yml
vendored
Normal file
@ -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 "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
|
||||
- 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 "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
|
||||
|
||||
# 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" 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
|
||||
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 .
|
||||
git commit -m "$version"
|
||||
|
||||
branch="gh-pages"
|
||||
git push origin "$branch" --force
|
||||
|
||||
fi
|
105
.travis.yml
105
.travis.yml
@ -1,105 +0,0 @@
|
||||
language: java
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- /^v3.3.*$/
|
||||
- v3.2
|
||||
- /^v3.2.*$/
|
||||
- feature/bullet-arm
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- os: linux
|
||||
jdk: oraclejdk8
|
||||
dist: precise
|
||||
env: UPLOAD=true
|
||||
- os: linux
|
||||
jdk: openjdk11
|
||||
dist: bionic
|
||||
env: UPLOAD=true UPLOAD_NATIVE=true
|
||||
sudo: true
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- gcc-multilib
|
||||
- g++-multilib
|
||||
before_install:
|
||||
- sudo apt update && sudo apt install -fy gcc-7-arm-linux-gnueabihf gcc-7-arm-linux-gnueabi gcc-8-aarch64-linux-gnu g++-7-arm-linux-gnueabihf g++-7-arm-linux-gnueabi g++-8-aarch64-linux-gnu
|
||||
- os: osx
|
||||
osx_image: xcode9.3
|
||||
env: UPLOAD_NATIVE=true
|
||||
- language: android
|
||||
os: linux
|
||||
dist: trusty
|
||||
jdk: openjdk10
|
||||
install:
|
||||
- export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
|
||||
- echo y | sdkmanager "ndk-bundle" &> /dev/null
|
||||
before_script:
|
||||
- export ANDROID_NDK=$ANDROID_HOME/ndk-bundle
|
||||
script:
|
||||
- ./gradlew -PbuildNativeProjects=true jme3-android-native:assemble jme3-bullet-native-android:assemble
|
||||
after_success:
|
||||
- '[ "$TRAVIS_PULL_REQUEST" == "false" ] && ./private/upload_native.sh || :'
|
||||
|
||||
addons:
|
||||
ssh_known_hosts: github.com
|
||||
hosts:
|
||||
- travisci
|
||||
hostname: travisci
|
||||
|
||||
before_install:
|
||||
- '[ -n "$UPLOAD" ] && git fetch --unshallow || :'
|
||||
|
||||
before_cache:
|
||||
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
||||
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.gradle/caches/
|
||||
- $HOME/.gradle/wrapper/
|
||||
|
||||
install:
|
||||
- '[ -n "$UPLOAD_NATIVE" ] && ./gradlew -PbuildNativeProjects=true assemble -xjme3-android-native:assemble -xjme3-bullet-native-android:assemble || ./gradlew assemble -xjme3-android-native:assemble -xjme3-bullet-native-android:assemble'
|
||||
|
||||
script:
|
||||
- ./gradlew check
|
||||
|
||||
after_success:
|
||||
- '[ "$TRAVIS_PULL_REQUEST" == "false" ] && [ -n "$UPLOAD_NATIVE" ] && ./private/upload_native.sh || :'
|
||||
- '[ -n "$TRAVIS_TAG" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ -n "$UPLOAD" ] && ./gradlew bintrayUpload || :'
|
||||
|
||||
notifications:
|
||||
slack:
|
||||
on_success: change
|
||||
on_failure: always
|
||||
rooms:
|
||||
secure: "PWEk4+VL986c3gAjWp12nqyifvxCjBqKoESG9d7zWh1uiTLadTHhZJRMdsye36FCpz/c/Jt7zCRO/5y7FaubQptnRrkrRfjp5f99MJRzQVXnUAM+y385qVkXKRKd/PLpM7XPm4AvjvxHCyvzX2wamRvul/TekaXKB9Ti5FCN87s="
|
||||
|
||||
before_deploy:
|
||||
- ./gradlew createZipDistribution
|
||||
- export RELEASE_DIST=$(ls build/distributions/*.zip)
|
||||
|
||||
deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: PuEsJd6juXBH29ByITW3ntSAyrwWs0IeFvXJ5Y2YlhojhSMtTwkoWeB6YmDJWP4fhzbajk4TQ1HlOX2IxJXSW/8ShOEIUlGXz9fHiST0dkSM+iRAUgC5enCLW5ITPTiem7eY9ZhS9miIam7ngce9jHNMh75PTzZrEJtezoALT9w=
|
||||
file_glob: true
|
||||
file: "${RELEASE_DIST}"
|
||||
skip_cleanup: true
|
||||
on:
|
||||
condition: $UPLOAD = true
|
||||
repo: jMonkeyEngine/jmonkeyengine
|
||||
tags: true
|
||||
|
||||
# before_install:
|
||||
# required libs for android build tools
|
||||
# sudo apt-get update
|
||||
# sudo apt-get install -qq p7zip-full
|
||||
# sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch
|
||||
# newest Android NDK
|
||||
# wget http://dl.google.com/android/ndk/android-ndk-r10c-linux-x86_64.bin -O ndk.bin
|
||||
# 7z x ndk.bin -y > /dev/null
|
||||
# export ANDROID_NDK=`pwd`/android-ndk-r10c
|
@ -1,7 +1,7 @@
|
||||
jMonkeyEngine
|
||||
=============
|
||||
|
||||
[](https://travis-ci.org/jMonkeyEngine/jmonkeyengine)
|
||||
[](https://github.com/jMonkeyEngine/jmonkeyengine/actions)
|
||||
|
||||
jMonkeyEngine is a 3-D game engine for adventurous Java developers. It’s open-source, cross-platform, and cutting-edge. 3.2.4 is the latest stable version of the jMonkeyEngine 3 SDK, a complete game development suite. We'll release 3.2.x updates until the major 3.3 release arrives.
|
||||
|
||||
|
63
appveyor.yml
63
appveyor.yml
@ -1,63 +0,0 @@
|
||||
version: 1.0.{build}.{branch}
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- v3.2
|
||||
|
||||
only_commits:
|
||||
files:
|
||||
- jme3-bullet-native/
|
||||
- appveyor.yml
|
||||
- gradle.properties
|
||||
|
||||
skip_tags: true
|
||||
|
||||
max_jobs: 1
|
||||
|
||||
clone_depth: 1
|
||||
|
||||
image: Visual Studio 2013
|
||||
|
||||
environment:
|
||||
encrypted_f0a0b284e2e8_iv:
|
||||
secure: aImQXs4g7zMXm1nWRvlh2wPK1UQvozS1fOVNthpyoEDFZ2FvBSdXqh5NPbGh44+F
|
||||
encrypted_f0a0b284e2e8_key:
|
||||
secure: Ek2lqC2e19qQDRRdlvnYyLFBq3TNj6YwKTAPuJ2VElJsxi9lQg+9ZP+VbP4kbHTx6Zaa++vtmOuxLZL7gdILrEEPa1Jix2BBLBfcxBUxe6w=
|
||||
|
||||
install:
|
||||
- cmd: >-
|
||||
set GRADLE_LOCK=C:\Users\appveyor\.gradle\caches\modules-2\modules-2.lock
|
||||
|
||||
if exist %GRADLE_LOCK% del %GRADLE_LOCK%
|
||||
|
||||
build_script:
|
||||
- cmd: gradlew.bat -PbuildNativeProjects=true :jme3-bullet-native:assemble
|
||||
|
||||
cache:
|
||||
- C:\Users\appveyor\.gradle\caches
|
||||
- C:\Users\appveyor\.gradle\wrapper
|
||||
- jme3-bullet-native\bullet3.zip -> gradle.properties
|
||||
|
||||
test: off
|
||||
deploy: off
|
||||
|
||||
on_success:
|
||||
- cmd: >-
|
||||
if not defined encrypted_f0a0b284e2e8_key appveyor exit
|
||||
|
||||
openssl aes-256-cbc -K %encrypted_f0a0b284e2e8_key% -iv %encrypted_f0a0b284e2e8_iv% -in private\key.enc -out c:\users\appveyor\.ssh\id_rsa -d
|
||||
|
||||
git config --global user.email "appveyor"
|
||||
|
||||
git config --global user.name "appveyor"
|
||||
|
||||
git checkout -q %APPVEYOR_REPO_BRANCH%
|
||||
|
||||
git add -- jme3-bullet-native/libs/native/windows/
|
||||
|
||||
git commit -m "[ci skip] bullet: update windows natives"
|
||||
|
||||
git pull -q --rebase
|
||||
|
||||
git push git@github.com:jMonkeyEngine/jmonkeyengine.git
|
@ -42,4 +42,4 @@ POM_INCEPTION_YEAR=2009
|
||||
bintray_user=
|
||||
bintray_api_key=
|
||||
|
||||
PREBUILD_NATIVES_URL=https://dl.bintray.com/riccardoblsandbox/jmonkeyengine-files/${natives.snapshot}/jme3-natives.zip
|
||||
PREBUILD_NATIVES_URL=https://dl.bintray.com/jmonkeyengine/files/${natives.snapshot}/jme3-natives.zip
|
||||
|
1
natives-snapshot.properties
Normal file
1
natives-snapshot.properties
Normal file
@ -0,0 +1 @@
|
||||
natives.snapshot=54d207fb6acb881787e9e7e9fe9f980e2f1094af
|
@ -1,4 +0,0 @@
|
||||
&"˜µ+åq.âg”2K:£Æ‡TŸ†™ãŽ
>1èÃ8â]v^LЫÚÝ/R"¹o2í#5;ÂQ`;â@ñ»¦±–¾&{ãyûJGaï„GÒé;ëôÐlTd·“lîÎtnãHxŒâ¦üp~WçrˆâJ5ÁÞÄÝ争î´CºŽñh_#»
|
||||
Ûž<EFBFBD>©){2xX<78>êdÞŠâçu<C3A7>1Þ³®
|
||||
"
|
||||
¯P‘€„éË DC¶©'e1ÍùDä·k˜]i§x&"n§93Ñ5‡žd6Œ==·XÕb”8JWŠBÌó/±wmÉJ&Y‹“Æì£Šu=*¯
|
@ -1,36 +0,0 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# This shell script runs only during continuous integration at TravisCI.
|
||||
# Its purpose is to commit native libraries to the project's GitHub repo.
|
||||
|
||||
echo " - Determine which native libraries changed, if any"
|
||||
NATIVE_CHANGES_ANDROID="$(git diff --name-only -- jme3-android-native/libs jme3-bullet-native-android/libs)"
|
||||
NATIVE_CHANGES_DESKTOP="$(git diff --name-only -- jme3-bullet-native/libs)"
|
||||
|
||||
if [ "$NATIVE_CHANGES_ANDROID$NATIVE_CHANGES_DESKTOP" != "" ]; then
|
||||
echo " - Configure git user"
|
||||
git config --global user.email "travis-ci"
|
||||
git config --global user.name "travis-ci"
|
||||
echo " - Decrypt private key"
|
||||
openssl aes-256-cbc -K $encrypted_f0a0b284e2e8_key -iv $encrypted_f0a0b284e2e8_iv -in private/key.enc -out "$HOME/.ssh/id_rsa" -d
|
||||
chmod 600 "$HOME/.ssh/id_rsa"
|
||||
# md5 -r jme3-bullet-native/libs/native/osx/x86/libbulletjme.dylib jme3-bullet-native/build/libs/bulletjme/shared/mac32/libbulletjme.dylib
|
||||
echo " - Checkout branch $TRAVIS_BRANCH"
|
||||
git checkout "$TRAVIS_BRANCH"
|
||||
echo " - Stage native libraries"
|
||||
git add -v -- jme3-android-native/libs jme3-bullet-native/libs jme3-bullet-native-android/libs
|
||||
git status
|
||||
echo " - Commit native libraries"
|
||||
if [ "$NATIVE_CHANGES_ANDROID" != "" ]; then
|
||||
git commit -v -m "[ci skip] update android natives"
|
||||
else
|
||||
git commit -v -m "[ci skip] bullet: update $TRAVIS_OS_NAME natives"
|
||||
fi
|
||||
echo " - Rebase changes"
|
||||
git pull -q --rebase
|
||||
echo " - Push changes"
|
||||
git push git@github.com:jMonkeyEngine/jmonkeyengine.git
|
||||
else
|
||||
echo " - No changes to native libraries"
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user