main.yml: add Gradle-wrapper validation to several jobs
This commit is contained in:
parent
1198908555
commit
f0e09b2a9e
178
.github/workflows/main.yml
vendored
178
.github/workflows/main.yml
vendored
@ -1,5 +1,5 @@
|
||||
######################################################################################
|
||||
# JME CI/CD
|
||||
# JME CI/CD
|
||||
######################################################################################
|
||||
# Quick overview of what is going on in this script:
|
||||
# - Build natives for android
|
||||
@ -10,7 +10,7 @@
|
||||
# - (only when building a release) Deploy everything else to github releases, github packet registry and bintray
|
||||
# - (only when building a release) Update javadoc.jmonkeyengine.org
|
||||
# Note:
|
||||
# All the actions/upload-artifact and actions/download-artifact steps are used to pass
|
||||
# All the actions/upload-artifact and actions/download-artifact steps are used to pass
|
||||
# stuff between jobs, github actions has some sort of storage that is local to the
|
||||
# running workflow, we use it to store the result of each job since the filesystem
|
||||
# is not maintained between jobs.
|
||||
@ -23,7 +23,7 @@
|
||||
# BINTRAY_APIKEY=XXXXXX
|
||||
# BINTRAY_LICENSE="BSD 3-Clause"
|
||||
# >> Configure PACKAGE REGISTRY RELEASE
|
||||
# Nothing to do here, everything is autoconfigured to work with the account/org that
|
||||
# Nothing to do here, everything is autoconfigured to work with the account/org that
|
||||
# is running the build.
|
||||
# >> Configure JAVADOC
|
||||
# JAVADOC_GHPAGES_REPO="riccardoblsandbox/javadoc.jmonkeyengine.org.git"
|
||||
@ -31,7 +31,7 @@
|
||||
# ssh-keygen -t rsa -b 4096 -C "actions@users.noreply.github.com" -f javadoc_deploy
|
||||
# Set
|
||||
# JAVADOC_GHPAGES_DEPLOY_PRIVKEY="......."
|
||||
# In github repo -> Settings, use javadoc_deploy.pub as Deploy key with write access
|
||||
# In github repo -> Settings, use javadoc_deploy.pub as Deploy key with write access
|
||||
######################################################################################
|
||||
# Resources:
|
||||
# - Github actions docs: https://help.github.com/en/articles/about-github-actions
|
||||
@ -54,35 +54,36 @@ on:
|
||||
pull_request:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
|
||||
jobs:
|
||||
|
||||
|
||||
# Builds the natives on linux arm
|
||||
BuildLinuxArmNatives:
|
||||
name: Build natives for linux (arm)
|
||||
runs-on: ubuntu-18.04
|
||||
container:
|
||||
image: riccardoblb/buildenv-jme3:linuxArm
|
||||
|
||||
|
||||
steps:
|
||||
- name: Clone the repo
|
||||
uses: actions/checkout@v1
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Build
|
||||
- name: Validate the Gradle wrapper
|
||||
uses: gradle/wrapper-validation-action@v1
|
||||
- name: Build
|
||||
run: |
|
||||
# Build
|
||||
# Note: since this is crossbuild we use the buildForPlatforms filter to tell
|
||||
# the buildscript wich platforms it should build for.
|
||||
gradle -PuseCommitHashAsVersionName=true --no-daemon -PbuildForPlatforms=LinuxArm,LinuxArmHF,LinuxArm64 -PbuildNativeProjects=true \
|
||||
:jme3-bullet-native:assemble
|
||||
:jme3-bullet-native:assemble
|
||||
|
||||
- name: Upload natives
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: linuxarm-natives
|
||||
path: build/native
|
||||
path: build/native
|
||||
|
||||
# Build the natives on android
|
||||
BuildAndroidNatives:
|
||||
@ -90,19 +91,20 @@ jobs:
|
||||
runs-on: ubuntu-18.04
|
||||
container:
|
||||
image: riccardoblb/buildenv-jme3:android
|
||||
|
||||
|
||||
steps:
|
||||
- name: Clone the repo
|
||||
uses: actions/checkout@v1
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
gradle -PuseCommitHashAsVersionName=true --no-daemon -PbuildNativeProjects=true \
|
||||
- name: Validate the Gradle wrapper
|
||||
uses: gradle/wrapper-validation-action@v1
|
||||
- name: Build
|
||||
run: |
|
||||
./gradlew -PuseCommitHashAsVersionName=true --no-daemon -PbuildNativeProjects=true \
|
||||
:jme3-android-native:assemble \
|
||||
:jme3-bullet-native-android:assemble
|
||||
|
||||
:jme3-bullet-native-android:assemble
|
||||
|
||||
- name: Upload natives
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
@ -114,7 +116,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
os: [ubuntu-18.04,windows-2019,macOS-latest]
|
||||
os: [ubuntu-18.04,windows-2019,macOS-latest]
|
||||
jdk: [8.x.x]
|
||||
include:
|
||||
- os: ubuntu-18.04
|
||||
@ -123,22 +125,23 @@ jobs:
|
||||
osName: windows
|
||||
- os: macOS-latest
|
||||
osName: mac
|
||||
|
||||
|
||||
name: Build natives for ${{ matrix.osName }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
|
||||
- name: Clone the repo
|
||||
uses: actions/checkout@v1
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
|
||||
- name: Prepare java environment
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: ${{ matrix.jdk }}
|
||||
architecture: x64
|
||||
|
||||
architecture: x64
|
||||
- name: Validate the Gradle wrapper
|
||||
uses: gradle/wrapper-validation-action@v1
|
||||
- name: Build Natives
|
||||
shell: bash
|
||||
env:
|
||||
@ -147,8 +150,8 @@ jobs:
|
||||
# Install dependencies
|
||||
if [ "$OS_NAME" = "mac" ];
|
||||
then
|
||||
echo "Prepare mac"
|
||||
|
||||
echo "Prepare mac"
|
||||
|
||||
elif [ "$OS_NAME" = "linux" ];
|
||||
then
|
||||
echo "Prepare linux"
|
||||
@ -157,25 +160,25 @@ jobs:
|
||||
else
|
||||
echo "Prepare windows"
|
||||
fi
|
||||
|
||||
|
||||
# Build
|
||||
gradle -PuseCommitHashAsVersionName=true --no-daemon -PbuildNativeProjects=true -Dmaven.repo.local="$PWD/dist/maven" \
|
||||
build \
|
||||
:jme3-bullet-native:build
|
||||
|
||||
|
||||
# Upload natives to be used later by the BuildJMonkey job
|
||||
- name: Upload natives
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: ${{ matrix.osName }}-natives
|
||||
path: build/native
|
||||
|
||||
|
||||
|
||||
# Build the engine, we only deploy from ubuntu-18.04 jdk8
|
||||
BuildJMonkey:
|
||||
BuildJMonkey:
|
||||
needs: [BuildNatives,BuildAndroidNatives]
|
||||
name: Build on ${{ matrix.osName }} jdk${{ matrix.jdk }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
@ -188,21 +191,21 @@ jobs:
|
||||
- os: windows-2019
|
||||
osName: windows
|
||||
- os: macOS-latest
|
||||
osName: mac
|
||||
osName: mac
|
||||
- jdk: 11.x.x
|
||||
deploy: false
|
||||
deploy: false
|
||||
|
||||
steps:
|
||||
steps:
|
||||
- name: Clone the repo
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
|
||||
- name: Setup the java environment
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: ${{ matrix.jdk }}
|
||||
architecture: x64
|
||||
architecture: x64
|
||||
|
||||
- name: Download natives for linux
|
||||
uses: actions/download-artifact@master
|
||||
@ -215,7 +218,7 @@ jobs:
|
||||
with:
|
||||
name: windows-natives
|
||||
path: build/native
|
||||
|
||||
|
||||
- name: Download natives for mac
|
||||
uses: actions/download-artifact@master
|
||||
with:
|
||||
@ -233,26 +236,27 @@ jobs:
|
||||
with:
|
||||
name: linuxarm-natives
|
||||
path: build/native
|
||||
|
||||
- name: Validate the Gradle wrapper
|
||||
uses: gradle/wrapper-validation-action@v1
|
||||
- name: Build Engine
|
||||
shell: bash
|
||||
run: |
|
||||
# Build
|
||||
gradle -PuseCommitHashAsVersionName=true -PskipPrebuildLibraries=true build
|
||||
|
||||
|
||||
if [ "${{ matrix.deploy }}" = "true" ];
|
||||
then
|
||||
then
|
||||
# We are going to need "zip"
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y zip
|
||||
|
||||
# Create the zip release and the javadoc
|
||||
gradle -PuseCommitHashAsVersionName=true -PskipPrebuildLibraries=true mergedJavadoc createZipDistribution
|
||||
|
||||
|
||||
# We prepare the release for deploy
|
||||
mkdir -p ./dist/release/
|
||||
mv build/distributions/*.zip dist/release/
|
||||
|
||||
|
||||
# Create the maven artifacts
|
||||
mkdir -p ./dist/maven/
|
||||
gradle -PuseCommitHashAsVersionName=true -PskipPrebuildLibraries=true install -Dmaven.repo.local="$PWD/dist/maven"
|
||||
@ -261,10 +265,10 @@ jobs:
|
||||
echo "Create native zip"
|
||||
cdir="$PWD"
|
||||
cd "build/native"
|
||||
zip -r "$cdir/dist/jme3-natives.zip" *
|
||||
zip -r "$cdir/dist/jme3-natives.zip" *
|
||||
cd "$cdir"
|
||||
echo "Done"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Used later by DeploySnapshot
|
||||
- name: Upload merged natives
|
||||
@ -273,29 +277,29 @@ jobs:
|
||||
with:
|
||||
name: natives
|
||||
path: dist/jme3-natives.zip
|
||||
|
||||
|
||||
# Upload maven artifacts to be used later by the deploy job
|
||||
- name: Upload maven artifacts
|
||||
if: matrix.deploy==true
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: maven
|
||||
path: dist/maven
|
||||
path: dist/maven
|
||||
|
||||
- name: Upload javadoc
|
||||
if: matrix.deploy==true
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: javadoc
|
||||
path: dist/javadoc
|
||||
|
||||
# Upload release archive to be used later by the deploy job
|
||||
path: dist/javadoc
|
||||
|
||||
# Upload release archive to be used later by the deploy job
|
||||
- name: Upload release
|
||||
if: github.event_name == 'release' && matrix.deploy==true
|
||||
uses: actions/upload-artifact@master
|
||||
with:
|
||||
name: release
|
||||
path: dist/release
|
||||
path: dist/release
|
||||
|
||||
# This job deploys the native snapshot.
|
||||
# The snapshot is downloaded when people build the engine without setting buildNativeProject
|
||||
@ -316,7 +320,7 @@ jobs:
|
||||
then
|
||||
git clone --single-branch --branch "$branch" https://github.com/${GITHUB_REPOSITORY}.git .
|
||||
fi
|
||||
|
||||
|
||||
- name: Download merged natives
|
||||
uses: actions/download-artifact@master
|
||||
with:
|
||||
@ -334,7 +338,7 @@ jobs:
|
||||
then
|
||||
nativeSnapshot=`cat "natives-snapshot.properties"`
|
||||
nativeSnapshot="${nativeSnapshot#*=}"
|
||||
|
||||
|
||||
# We deploy ONLY if GITHUB_SHA (the current commit hash) is newer than $nativeSnapshot
|
||||
if [ "`git rev-list --count $nativeSnapshot..$GITHUB_SHA`" = "0" ];
|
||||
then
|
||||
@ -355,9 +359,9 @@ jobs:
|
||||
echo "No changes, skip."
|
||||
else
|
||||
if [ "${{ secrets.BINTRAY_GENERIC_REPO }}" = "" ];
|
||||
then
|
||||
then
|
||||
echo "Configure the following secrets to enable native snapshot deployment"
|
||||
echo "BINTRAY_GENERIC_REPO, BINTRAY_USER, BINTRAY_APIKEY"
|
||||
echo "BINTRAY_GENERIC_REPO, BINTRAY_USER, BINTRAY_APIKEY"
|
||||
else
|
||||
# Deploy snapshot
|
||||
bintray_uploadFile dist/jme3-natives.zip \
|
||||
@ -368,17 +372,17 @@ jobs:
|
||||
"https://github.com/${GITHUB_REPOSITORY}" \
|
||||
"${{ secrets.BINTRAY_LICENSE }}" "true"
|
||||
|
||||
# We reference the snapshot by writing its commit hash in natives-snapshot.properties
|
||||
# We reference the snapshot by writing its commit hash in natives-snapshot.properties
|
||||
echo "natives.snapshot=$GITHUB_SHA" > natives-snapshot.properties
|
||||
|
||||
|
||||
# We commit the updated natives-snapshot.properties
|
||||
git config --global user.name "Github Actions"
|
||||
git config --global user.email "actions@users.noreply.github.com"
|
||||
|
||||
|
||||
git add natives-snapshot.properties
|
||||
|
||||
|
||||
git commit -m "[skip ci] update natives snapshot"
|
||||
|
||||
|
||||
# Pull rebase from the remote repo, just in case there was a push in the meantime
|
||||
git pull -q --rebase
|
||||
|
||||
@ -387,39 +391,39 @@ jobs:
|
||||
|
||||
# Push
|
||||
(git -c http.extraheader="AUTHORIZATION: basic $header" push origin "$branch" || true)
|
||||
|
||||
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# This job deploys the release
|
||||
DeployRelease:
|
||||
DeployRelease:
|
||||
needs: [BuildJMonkey]
|
||||
name: Deploy Release
|
||||
runs-on: ubuntu-18.04
|
||||
if: github.event_name == 'release'
|
||||
steps:
|
||||
|
||||
steps:
|
||||
|
||||
# We need to clone everything again for uploadToMaven.sh ...
|
||||
- name: Clone the repo
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
|
||||
# Download all the stuff...
|
||||
- name: Download maven artifacts
|
||||
uses: actions/download-artifact@master
|
||||
with:
|
||||
name: maven
|
||||
path: dist/maven
|
||||
|
||||
|
||||
- name: Download release
|
||||
uses: actions/download-artifact@master
|
||||
with:
|
||||
name: release
|
||||
path: dist/release
|
||||
|
||||
- name: Deploy to github releases
|
||||
path: dist/release
|
||||
|
||||
- name: Deploy to github releases
|
||||
run: |
|
||||
# We need to get the release id (yeah, it's not the same as the tag)
|
||||
echo "${GITHUB_EVENT_PATH}"
|
||||
@ -436,7 +440,7 @@ jobs:
|
||||
-H "Content-Type: application/zip" \
|
||||
--data-binary @"$filename" \
|
||||
"$url"
|
||||
|
||||
|
||||
- name: Deploy to bintray
|
||||
run: |
|
||||
source .github/actions/tools/uploadToMaven.sh
|
||||
@ -447,22 +451,22 @@ jobs:
|
||||
else
|
||||
uploadAllToMaven dist/maven/ https://api.bintray.com/maven/${{ secrets.BINTRAY_MAVEN_REPO }} ${{ secrets.BINTRAY_USER }} ${{ secrets.BINTRAY_APIKEY }} "https://github.com/${GITHUB_REPOSITORY}" "${{ secrets.BINTRAY_LICENSE }}"
|
||||
fi
|
||||
|
||||
|
||||
# - name: Deploy to github package registry
|
||||
# run: |
|
||||
# source .github/actions/tools/uploadToMaven.sh
|
||||
# registry="https://maven.pkg.github.com/$GITHUB_REPOSITORY"
|
||||
# echo "Deploy to github package registry $registry"
|
||||
# uploadAllToMaven dist/maven/ $registry "token" ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
# Deploy the javadoc
|
||||
DeployJavaDoc:
|
||||
DeployJavaDoc:
|
||||
needs: [BuildJMonkey]
|
||||
name: Deploy Javadoc
|
||||
runs-on: ubuntu-18.04
|
||||
if: github.event_name == 'release'
|
||||
steps:
|
||||
|
||||
steps:
|
||||
|
||||
# We are going to need a deploy key for this, since we need
|
||||
# to push to a different repo
|
||||
- name: Set ssh key
|
||||
@ -477,16 +481,16 @@ jobs:
|
||||
branch="gh-pages"
|
||||
export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i $HOME/.ssh/deploy.key"
|
||||
git clone --single-branch --branch "$branch" git@github.com:${{ secrets.JAVADOC_GHPAGES_REPO }} .
|
||||
|
||||
|
||||
# Download the javadoc in the new directory "newdoc"
|
||||
- name: Download javadoc
|
||||
uses: actions/download-artifact@master
|
||||
with:
|
||||
name: javadoc
|
||||
path: newdoc
|
||||
|
||||
|
||||
# The actual deploy
|
||||
- name: Deploy to github pages
|
||||
- name: Deploy to github pages
|
||||
run: |
|
||||
set -f
|
||||
IFS=$'\n'
|
||||
@ -508,10 +512,10 @@ jobs:
|
||||
# if there isn't an index.txt we create one (we need this to list the versions)
|
||||
if [ ! -f "index.txt" ]; then echo "" > index.txt ; fi
|
||||
index="`cat index.txt`"
|
||||
|
||||
|
||||
# Check if this version is already in index.txt
|
||||
addNew=true
|
||||
for v in $index;
|
||||
for v in $index;
|
||||
do
|
||||
if [ "$v" = "$version" ];
|
||||
then
|
||||
@ -538,11 +542,11 @@ jobs:
|
||||
# Commit the changes
|
||||
git config --global user.name "Github Actions"
|
||||
git config --global user.email "actions@users.noreply.github.com"
|
||||
|
||||
|
||||
git add .
|
||||
git commit -m "$version"
|
||||
|
||||
branch="gh-pages"
|
||||
git push origin "$branch" --force
|
||||
branch="gh-pages"
|
||||
git push origin "$branch" --force
|
||||
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user