Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CI configuration
Browse files Browse the repository at this point in the history
Spasi committed Nov 22, 2023

Verified

This commit was signed with the committer’s verified signature.
Spasi Ioannis Tsakpinis
1 parent b428b2f commit 65b3eaf
Showing 5 changed files with 407 additions and 7 deletions.
309 changes: 309 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,309 @@
# TODO: https://github.blog/changelog/2022-08-09-github-actions-the-ubuntu-18-04-actions-runner-image-is-being-deprecated-and-will-be-removed-by-12-1-22/
name: LWJGL Build

on:
workflow_dispatch:
push:
branches:
- master

env:
AWS_DEFAULT_REGION: us-east-1
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
JAVA_HOME: jdk8
ANT_OPTS: -Xmx2G
LWJGL_BUILD_TYPE: nightly

jobs:
check-kotlinc-cache:
name: Check kotlinc cache
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 3
- name: Download JDK
run: |
mkdir jdk8
curl https://cdn.azul.com/zulu/bin/zulu8.72.0.17-ca-jdk8.0.382-linux_x64.tar.gz | tar xz -C jdk8 --strip-components 1
- name: Check generator hydration
run: ant -emacs hydrate-kotlinc
id: hydration
continue-on-error: true
- name: Cache kotlinc output
run: |
git clone https://github.com/LWJGL-CI/OculusSDK.git ../OculusSDK
ANT_OPTS=-Xmx4G ant -emacs cache-kotlinc -Drevision="HEAD~2..HEAD~1"
if: steps.hydration.outcome == 'failure'

linux:
name: Linux
needs: check-kotlinc-cache
runs-on: ubuntu-latest
container:
image: centos:7
strategy:
fail-fast: false
matrix:
ARCH: [x64]
include:
- ARCH: x64
defaults:
run:
shell: bash
steps:
- name: Upgrade git
run: |
yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
yum -y install git
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 3
- name: Configure yum
run: |
yum -y install epel-release
yum -y update
- name: Install build dependencies
run: |
yum -y install centos-release-scl
yum -y install devtoolset-11-gcc-c++
yum -y install ant awscli
- name: Install LWJGL dependencies
run: |
yum -y install libX11-devel libXt-devel gtk3-devel libdbus-1-dev
mkdir jdk8
curl -L https://cdn.azul.com/zulu/bin/zulu8.72.0.17-ca-fx-jdk8.0.382-linux_x64.tar.gz | tar xz -C jdk8 --strip-components 1
- name: Hydrate generator
run: |
git config --global --add safe.directory $PWD
ant -emacs hydrate-kotlinc clean-generated generate
- name: Build Java
run: ant -emacs compile
- name: Build native
run: |
source scl_source enable devtoolset-11 || true
ant -emacs compile-native
- name: Run tests
run: |
source scl_source enable devtoolset-11 || true
ant -emacs tests
- name: Upload artifacts
run: |
source scl_source enable devtoolset-11 || true
ant -emacs upload-native
linux-cross:
name: Linux Cross
needs: check-kotlinc-cache
runs-on: ubuntu-latest
container:
image: ${{matrix.CONTAINER}}
strategy:
fail-fast: false
matrix:
ARCH: [arm32, arm64, ppc64le, riscv64]
include:
# ----
- ARCH: arm32
CROSS_ARCH: armhf
CONTAINER: ubuntu:18.04
TRIPLET: arm-linux-gnueabihf
# ----
- ARCH: arm64
CROSS_ARCH: arm64
CONTAINER: ubuntu:18.04
TRIPLET: aarch64-linux-gnu
# ----
- ARCH: ppc64le
CROSS_ARCH: ppc64el
CONTAINER: ubuntu:18.04
TRIPLET: powerpc64le-linux-gnu
# ----
- ARCH: riscv64
CROSS_ARCH: riscv64
CONTAINER: ubuntu:20.04
TRIPLET: riscv64-linux-gnu
env:
LWJGL_BUILD_ARCH: ${{matrix.ARCH}}
defaults:
run:
shell: bash
steps:
- name: Upgrade git
run: |
apt-get -y update
apt-get -y install software-properties-common
apt-get -y install --reinstall ca-certificates
apt-get -y update
apt-get -y upgrade
add-apt-repository -y ppa:git-core/ppa
if: ${{ matrix.CONTAINER == 'ubuntu:18.04' }}
- run: |
apt-get -y update
apt-get install -y git
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 3
- name: Install dependencies
run: |
git config --global --add safe.directory $(pwd)
DEBIAN_FRONTEND=noninteractive apt-get -yq install ant awscli curl gcc-${{matrix.TRIPLET}} g++-${{matrix.TRIPLET}} libc6-dev-${{matrix.CROSS_ARCH}}-cross
mkdir jdk8
curl -L https://cdn.azul.com/zulu/bin/zulu8.72.0.17-ca-fx-jdk8.0.382-linux_x64.tar.gz | tar xz -C jdk8 --strip-components 1
- name: Prepare cross-compilation for ${{matrix.CROSS_ARCH}}
run: |
sed -i 's/deb http/deb [arch=amd64,i386] http/' /etc/apt/sources.list
grep "ubuntu.com/ubuntu" /etc/apt/sources.list | tee /etc/apt/sources.list.d/ports.list
sed -i 's/amd64,i386/${{matrix.CROSS_ARCH}}/' /etc/apt/sources.list.d/ports.list
sed -i 's#http://.*/ubuntu#http://ports.ubuntu.com/ubuntu-ports#' /etc/apt/sources.list.d/ports.list
dpkg --add-architecture ${{matrix.CROSS_ARCH}}
apt-get clean
apt-get update || true
- name: Install cross-compilation dependencies
run: apt-get -yq -f --allow-unauthenticated --no-install-suggests --no-install-recommends install libgtk-3-dev:${{matrix.CROSS_ARCH}} libatk-bridge2.0-dev:${{matrix.CROSS_ARCH}} libgdk-pixbuf2.0-dev:${{matrix.CROSS_ARCH}} libglu-dev:${{matrix.CROSS_ARCH}} libgl1-mesa-glx:${{matrix.CROSS_ARCH}} libx11-dev:${{matrix.CROSS_ARCH}} libxt-dev:${{matrix.CROSS_ARCH}} libdbus-1-dev:${{matrix.CROSS_ARCH}} -o Dpkg::Options::="--force-overwrite"
- name: Hydrate generator
run: ant -emacs hydrate-kotlinc clean-generated generate
- name: Build Java
run: ant -emacs compile
- name: Build native
run: ant -emacs compile-native -Dgcc.libpath.opengl=/usr/lib/${{matrix.TRIPLET}}/mesa
- name: Upload artifacts
run: ant -emacs upload-native

freebsd-cross:
name: FreeBSD Cross
needs: check-kotlinc-cache
runs-on: macos-latest
timeout-minutes: 20
strategy:
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 3
fetch-tags: true
- name: Install dependencies
run: |
mkdir jdk8
curl -L https://cdn.azul.com/zulu/bin/zulu8.72.0.17-ca-fx-jdk8.0.382-macosx_x64.tar.gz | tar xz -C jdk8 --strip-components 1
- name: Restore kotlinc output
uses: actions/cache/restore@v3
with:
path: |
bin/classes/generator
bin/classes/templates
key: cache-kotlinc-${{ github.sha }}
enableCrossOsArchive: true
fail-on-cache-miss: true
- name: Hydrate generator
run: ant -emacs hydrate-kotlinc clean-generated generate
- name: Build Java
run: ant -emacs compile
- name: Build, test and upload artifacts
uses: cross-platform-actions/[email protected]
with:
operating_system: freebsd
architecture: x86-64
version: '13.2'
memory: 8G
shell: bash
environment_variables: AWS_DEFAULT_REGION AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY ANT_OPTS LWJGL_BUILD_TYPE
run: |
sudo pkg install -y git openjdk8 apache-ant devel/py-awscli gtk3 dbus
git config --global --add safe.directory $PWD
ant -emacs compile-native
ant -emacs tests
ant -emacs upload-native
macos:
name: macOS
needs: check-kotlinc-cache
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
ARCH: [x64, arm64]
env:
LWJGL_BUILD_ARCH: ${{matrix.ARCH}}
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 3
- name: Install dependencies
run: |
mkdir jdk8
curl -L https://cdn.azul.com/zulu/bin/zulu8.72.0.17-ca-fx-jdk8.0.382-macosx_x64.tar.gz | tar xz -C jdk8 --strip-components 1
- name: Hydrate generator
run: ant -emacs hydrate-kotlinc clean-generated generate
- name: Build Java
run: ant -emacs compile
- name: Build native
run: ant -emacs compile-native
- name: Run tests
run: ant -emacs tests
if: matrix.ARCH == 'x64'
- name: Upload artifacts
run: ant -emacs upload-native

windows:
name: Windows
needs: check-kotlinc-cache
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
ARCH: [x86, x64, arm64]
include:
- ARCH: x86
JDK: zulu8.72.0.17-ca-fx-jdk8.0.382-win_i686
MSVC_ARCH: amd64_x86
- ARCH: x64
JDK: zulu8.72.0.17-ca-fx-jdk8.0.382-win_x64
MSVC_ARCH: amd64
- ARCH: arm64
JDK: zulu8.72.0.17-ca-fx-jdk8.0.382-win_x64
MSVC_ARCH: amd64_arm64
env:
ANT_OPTS: -Xmx1G
JAVA_HOME: ${{matrix.JDK}}
LWJGL_BUILD_ARCH: ${{matrix.ARCH}}
defaults:
run:
shell: cmd
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 3
- name: Configure MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.MSVC_ARCH }}
- name: Clone Oculus SDK
run: git clone https://github.com/LWJGL-CI/OculusSDK.git ../OculusSDK
if: contains(matrix.ARCH, 'arm') != true
- name: Install dependencies
run: |
Invoke-WebRequest https://cdn.azul.com/zulu/bin/${{matrix.JDK}}.zip -OutFile jdk.zip
Expand-Archive -Path jdk.zip -DestinationPath .\
shell: pwsh
- name: Generate bindings
run: ant -emacs hydrate-kotlinc clean-generated generate
- name: Build Java
run: ant -emacs compile
- name: Build native
run: ant -emacs compile-native
- name: Run tests
run: ant -emacs tests
if: contains(matrix.ARCH, 'arm') != true
- name: Print test results
run: type bin\test\testng-results.xml
if: failure()
- name: Upload artifacts
run: ant -emacs upload-native
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -4,9 +4,9 @@ name: LWJGL Build

on:
workflow_dispatch:
push:
branches:
- master
#push:
#branches:
#- master

env:
JAVA_HOME: jdk8
37 changes: 37 additions & 0 deletions .github/workflows/javadoc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Generates javadoc for core + all bindings and uploads it to S3.
# The resulting javadoc is available at https://javadoc.lwjgl.org/
name: LWJGL Javadoc generation

on:
workflow_dispatch:

env:
AWS_DEFAULT_REGION: us-east-1
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
S3_PARAMS: --cache-control "public,must-revalidate,proxy-revalidate,max-age=0"
LWJGL_BUILD_TYPE: nightly

jobs:
macos:
name: Javadoc
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 3
- run: |
git clone https://github.com/LWJGL-CI/OculusSDK.git ../OculusSDK
mkdir jdk8
mkdir jdk21
curl -L https://cdn.azul.com/zulu/bin/zulu8.72.0.17-ca-jdk8.0.382-macosx_x64.tar.gz | tar xz -C jdk8 --strip-components 1
curl -L https://cdn.azul.com/zulu/bin/zulu21.30.15-ca-jdk21.0.1-macosx_x64.tar.gz | tar xz -C jdk21 --strip-components 1
name: Install dependencies
- run: JAVA_HOME=$(pwd)/jdk8 ant -emacs hydrate-kotlinc clean-generated generate
name: Generate bindings
- run: JAVA_HOME=$(pwd)/jdk8 ant -emacs compile
name: Build Java
- run: JAVA8_HOME=$(pwd)/jdk8 JAVA_HOME=$(pwd)/jdk21 ANT_OPTS="-Djava.security.manager=allow" ant -emacs javadoc
name: Generate javadoc
- run: aws s3 sync bin/javadoc s3://lwjgl-javadoc/ --delete
name: Upload javadoc to S3
57 changes: 57 additions & 0 deletions .github/workflows/snapshot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Produces a new build, uploads it to S3 and publishes a Maven snapshot
name: LWJGL Snapshot

on:
workflow_dispatch:

env:
AWS_DEFAULT_REGION: us-east-1
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
S3_PARAMS: --cache-control "public,must-revalidate,proxy-revalidate,max-age=0"
ANT_OPTS: -Xmx8G
LWJGL_BUILD_TYPE: nightly

jobs:
macos:
name: Snapshot
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 3
- uses: gradle/wrapper-validation-action@v1
- run: |
aws s3 cp s3://lwjgl-build/ci/next-build.txt .
LWJGL_BUILD=$(cat next-build.txt)
echo "LWJGL_BUILD=$LWJGL_BUILD" >> $GITHUB_ENV
name: Retrieve build number
- run: |
git clone https://github.com/LWJGL-CI/OculusSDK.git ../OculusSDK
mkdir jdk8
mkdir jdk21
curl -L https://cdn.azul.com/zulu/bin/zulu8.72.0.17-ca-jdk8.0.382-macosx_x64.tar.gz | tar xz -C jdk8 --strip-components 1
curl -L https://cdn.azul.com/zulu/bin/zulu21.30.15-ca-jdk21.0.1-macosx_x64.tar.gz | tar xz -C jdk21 --strip-components 1
name: Install dependencies
- run: JAVA_HOME=$(pwd)/jdk8 ant -emacs hydrate-kotlinc clean-generated generate
name: Generate bindings
- run: JAVA_HOME=$(pwd)/jdk8 ant -emacs compile
name: Build Java
- run: |
export JAVA_HOME=$(pwd)/jdk21
JAVA8_HOME=$(pwd)/jdk8 ANT_OPTS="$ANT_OPTS -Djava.security.manager=allow" ant -emacs release -Dbuild.revision=${{env.LWJGL_BUILD}}
$JAVA_HOME/bin/jar cfM lwjgl.zip -C bin/RELEASE .
name: "Package snapshot #${{env.LWJGL_BUILD}}"
- run: |
aws s3 cp lwjgl.zip s3://lwjgl-build/nightly/lwjgl.zip $S3_PARAMS
aws s3 sync bin/RELEASE s3://lwjgl-build/nightly/bin --delete $S3_PARAMS
name: Upload snapshot to S3
- run: |
export JAVA_HOME=$(pwd)/jdk8
./gradlew -Psnapshot -PsonatypeUsername=${{ secrets.SONATYPE_USER }} -PsonatypePassword=${{ secrets.SONATYPE_PWD }} publish
name: Publish snapshot to Maven
- run: |
echo -n $((LWJGL_BUILD+1)) > next-build.txt
echo "Next build will be #$(cat next-build.txt)"
aws s3 cp next-build.txt s3://lwjgl-build/ci/
name: Bump build number
5 changes: 1 addition & 4 deletions build.xml
Original file line number Diff line number Diff line change
@@ -1390,6 +1390,7 @@
notree="true"
public="true"
failonerror="true"
verbose="true"
unless:set="javadoc.skip"
>
<doctitle><![CDATA[<h1>LWJGL - @{title}</h1>]]></doctitle>
@@ -1524,8 +1525,6 @@
<jvmarg value="-Dmodule.version=${module.version}"/>
</java>

<parallel threadcount="4" failonany="true">

<!-- CORE -->
<sequential>
<quiet>
@@ -1971,7 +1970,5 @@

<!-- zstd -->
<release-module name="zstd" native-library="lwjgl_zstd" title="zstd" if:true="${binding.zstd}"/>

</parallel>
</target>
</project>

0 comments on commit 65b3eaf

Please sign in to comment.