diff --git a/.github/actions/tools/bintray.sh b/.github/actions/tools/bintray.sh new file mode 100644 index 000000000..0c7d4e6dd --- /dev/null +++ b/.github/actions/tools/bintray.sh @@ -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" +} diff --git a/.github/actions/tools/uploadToMaven.sh b/.github/actions/tools/uploadToMaven.sh new file mode 100644 index 000000000..1c817a615 --- /dev/null +++ b/.github/actions/tools/uploadToMaven.sh @@ -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" +} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..3d067c7c8 --- /dev/null +++ b/.github/workflows/main.yml @@ -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 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index cbd4f7048..000000000 --- a/.travis.yml +++ /dev/null @@ -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 diff --git a/README.md b/README.md index 08573f4a7..bc6388356 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ jMonkeyEngine ============= -[![Build Status](https://travis-ci.org/jMonkeyEngine/jmonkeyengine.svg?branch=master)](https://travis-ci.org/jMonkeyEngine/jmonkeyengine) +[![Build Status](https://github.com/jMonkeyEngine/jmonkeyengine/workflows/Build%20jMonkeyEngine/badge.svg)](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. diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 00c9d5c26..000000000 --- a/appveyor.yml +++ /dev/null @@ -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 diff --git a/gradle.properties b/gradle.properties index 29ba59597..b404c8d13 100644 --- a/gradle.properties +++ b/gradle.properties @@ -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 diff --git a/natives-snapshot.properties b/natives-snapshot.properties new file mode 100644 index 000000000..e992652ab --- /dev/null +++ b/natives-snapshot.properties @@ -0,0 +1 @@ +natives.snapshot=54d207fb6acb881787e9e7e9fe9f980e2f1094af diff --git a/private/key.enc b/private/key.enc deleted file mode 100644 index ecabf1678..000000000 --- a/private/key.enc +++ /dev/null @@ -1,4 +0,0 @@ -&"+q.g2K:ƇT >18]v^LЫ/R"o2#5;Q`;@񻦱&{yJGaG;lTdltnHxp~WrJ5争 Ch_# -۞){2xXdފu1޳ -" -P DC'e1Dk]ix&"n935d6==Xb8JWB/wmJ&Y죊u=* \ No newline at end of file diff --git a/private/upload_native.sh b/private/upload_native.sh deleted file mode 100755 index 95d4780ea..000000000 --- a/private/upload_native.sh +++ /dev/null @@ -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 \ No newline at end of file