瀏覽代碼

Github Actions

Riccardo Balbo 6 年之前
父節點
當前提交
69ef8efcce
共有 10 個文件被更改,包括 731 次插入210 次删除
  1. 93 0
      .github/actions/tools/bintray.sh
  2. 85 0
      .github/actions/tools/uploadToMaven.sh
  3. 550 0
      .github/workflows/main.yml
  4. 0 105
      .travis.yml
  5. 1 1
      README.md
  6. 0 63
      appveyor.yml
  7. 1 1
      gradle.properties
  8. 1 0
      natives-snapshot.properties
  9. 0 4
      private/key.enc
  10. 0 36
      private/upload_native.sh

+ 93 - 0
.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"
+}

+ 85 - 0
.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"
+} 

+ 550 - 0
.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 "[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

+ 0 - 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 - 1
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.
 

+ 0 - 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 [email protected]:jMonkeyEngine/jmonkeyengine.git

+ 1 - 1
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

+ 1 - 0
natives-snapshot.properties

@@ -0,0 +1 @@
+natives.snapshot=54d207fb6acb881787e9e7e9fe9f980e2f1094af

+ 0 - 4
private/key.enc

@@ -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_#»
-ЫћЏ©){2xXђкdЮЉвзuЌ1Юі®
-"
-ЇP‘Ђ„йЛ DC¶©'e1НщDд·k�]i§x&"n§93С5‡ћd6Њ==·XХb”8JWЉBМу/±wmЙJ&Y‹“ЖмЈЉu=*Ї

+ 0 - 36
private/upload_native.sh

@@ -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 [email protected]:jMonkeyEngine/jmonkeyengine.git
-else
-    echo " - No changes to native libraries"
-fi