Skip to content

Just cleanup some stuff #172

Just cleanup some stuff

Just cleanup some stuff #172

Workflow file for this run

name: Build
on:
push:
branches:
- "*"
pull_request:
workflow_dispatch:
jobs:
Linux-Build:
strategy:
fail-fast: true
matrix:
architecture:
- name: x86_64
gcc_package_name: "gcc g++"
gcc_exec_name: "x86_64-linux-gnu"
- name: x86
gcc_package_name: "gcc-i686-linux-gnu g++-i686-linux-gnu"
gcc_exec_name: "i686-linux-gnu"
- name: aarch64
gcc_package_name: "gcc-aarch64-linux-gnu g++-aarch64-linux-gnu"
gcc_exec_name: "aarch64-linux-gnu"
- name: armv7
gcc_package_name: "gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf"
gcc_exec_name: "arm-linux-gnueabihf"
- name: ppc64le
gcc_package_name: "gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu"
gcc_exec_name: "powerpc64le-linux-gnu"
- name: riscv64
gcc_package_name: "gcc-riscv64-linux-gnu g++-riscv64-linux-gnu"
gcc_exec_name: "riscv64-linux-gnu"
- name: s390x
gcc_package_name: "gcc-s390x-linux-gnu g++-s390x-linux-gnu"
gcc_exec_name: "s390x-linux-gnu"
java_version: [ 8, 11, 17, 21 ]
name: Linux-${{ matrix.architecture.name }}-Build-JDK${{ matrix.java_version }}
runs-on: ubuntu-latest
container:
image: ubuntu:18.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: ${{ matrix.java_version }}
architecture: 'x64'
check-latest: true
- name: Install GCC
run: |
apt-get update -y
apt-get install -y make cmake ${{ matrix.architecture.gcc_package_name }}
update-alternatives --install /usr/bin/cc cc /usr/bin/${{ matrix.architecture.gcc_exec_name}}-gcc 200
update-alternatives --install /usr/bin/c++ c++ /usr/bin/${{ matrix.architecture.gcc_exec_name}}-g++ 200
- name: Build
run: ./mvnw -B -V -ntp -P "linux-${{ matrix.architecture.name }}" "-Dmaven.test.skip=true" clean package
- name: Upload build
uses: actions/upload-artifact@v3
with:
name: Linux-${{ matrix.architecture.name }}-Build-JDK${{ matrix.java_version }}
path: .
compression-level: 9
Windows-Build:
strategy:
fail-fast: true
matrix:
architecture:
- name: x86_64
msvc_code: x64
- name: x86
msvc_code: x64_x86
- name: aarch64
msvc_code: x64_arm64
- name: armv7
msvc_code: x64_arm
java_version: [ 8, 11, 17, 21 ]
name: Windows-${{ matrix.architecture.name }}-Build-JDK${{ matrix.java_version }}
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java_version }}
architecture: 'x64'
check-latest: true
- name: Enable compiler
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.architecture.msvc_code }}
- name: Build
run: ./mvnw -B -V -ntp -P "windows-${{ matrix.architecture.name }}" "-Dmaven.test.skip=true" clean package
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: Windows-${{ matrix.architecture.name }}-Build-JDK${{ matrix.java_version }}
path: .
compression-level: 9
OSX-Build:
strategy:
fail-fast: true
matrix:
architecture:
- name: x86_64
- name: aarch64
java_version: [ 8, 11, 17, 21 ]
name: OSX-${{ matrix.architecture.name }}-Build-JDK${{ matrix.java_version }}
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java_version }}
architecture: 'x64'
check-latest: true
- name: Build
run: ./mvnw -B -V -ntp -P "osx-${{ matrix.architecture.name }}" "-Dmaven.test.skip=true" clean package
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: OSX-${{ matrix.architecture.name }}-Build-JDK${{ matrix.java_version }}
path: .
compression-level: 9
Complete-Build:
strategy:
fail-fast: true
matrix:
java_version: [ 8, 11, 17, 21 ]
needs: [ Linux-Build, Windows-Build, OSX-Build ]
name: Complete-Build-JDK${{ matrix.java_version }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java_version }}
architecture: 'x64'
check-latest: true
- name: Download builds
uses: actions/download-artifact@v4
with:
pattern: "*-JDK${{ matrix.java_version }}"
path: builds/
merge-multiple: false
- name: Copy builds
run: |
OUT=$PWD
rootPaths=($(find ./builds/*/natives/ -type d -name "target" | grep -oiP '(.*)\/([^-]*-[^-]*)-Build-JDK([0-9]*)(?=\/natives\/\2\/target)'))
paths=($(find ./builds/*/natives/ -type d -name "target" | grep -oiP '(?:(.*)\/([^-]*-[^-]*)-Build-JDK([0-9]*)\/)natives\/\2\/target'))
for i in "${!paths[@]}"; do
rootPath="${rootPaths[$i]}"
rootPathLen="${#rootPath}"
path="${paths[$i]}"
cd $rootPath
path=.${path:rootPathLen:256}
cp -r --parent $path $OUT
cd $OUT
done
- name: Build
run: ./mvnw -B -V -ntp -P "release" "-Dmaven.test.skip=true" package
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: Complete-Build-JDK${{ matrix.java_version }}
path: .
compression-level: 9
Linux-Test:
strategy:
fail-fast: true
matrix:
architecture:
- name: x86_64
runs_on: ubuntu-24.04
java_distro: 'temurin'
java_name: x64
linux_name: amd64
is_ports: false
qemu_package_name: x86
qemu_name: x86_64
- name: x86
runs_on: ubuntu-22.04
java_distro: 'liberica'
java_name: x86
linux_name: i386
is_ports: false
qemu_package_name: x86
qemu_name: i386
- name: aarch64
runs_on: ubuntu-24.04
java_distro: 'temurin'
java_name: aarch64
linux_name: arm64
is_ports: true
qemu_package_name: arm
qemu_name: aarch64
- name: armv7
runs_on: ubuntu-24.04
java_distro: 'temurin'
java_name: arm
linux_name: armhf
is_ports: true
qemu_package_name: arm
qemu_name: armhf
- name: ppc64le
runs_on: ubuntu-24.04
java_distro: 'temurin'
java_name: ppc64le
linux_name: ppc64el
is_ports: true
qemu_package_name: ppc
qemu_name: ppc64el
- name: riscv64
runs_on: ubuntu-24.04
java_distro: 'temurin'
java_name: riscv64
linux_name: riscv64
is_ports: true
qemu_package_name: misc
qemu_name: riscv64
- name: s390x
runs_on: ubuntu-24.04
java_distro: 'temurin'
java_name: s390x
linux_name: s390x
is_ports: true
qemu_package_name: misc
qemu_name: s390x
java_version: [ 8, 11, 17, 21 ]
exclude:
- architecture:
name: armv7
java_distro: 'temurin'
java_version: 17
- architecture:
name: armv7
java_distro: 'temurin'
java_version: 21
- architecture:
name: s390x
java_distro: 'temurin'
java_version: 8
- architecture:
name: riscv64
java_distro: 'temurin'
java_version: 8
- architecture:
name: riscv64
java_distro: 'temurin'
java_version: 11
needs: [ Linux-Build ]
name: Linux-${{ matrix.architecture.name }}-Test-JDK${{ matrix.java_version }}
runs-on: ${{ matrix.architecture.runs_on }}
steps:
- name: Setup QEMU
env:
NEEDRESTART_SUSPEND: true
run: |
sudo dpkg --add-architecture ${{ matrix.architecture.linux_name }}
sudo rm -f /etc/apt/sources.list /etc/apt/sources.list.d/ubuntu.sources
if [[ ${{ matrix.architecture.is_ports }} != true ]]; then
echo "deb [arch=amd64,${{ matrix.architecture.linux_name }}] http://azure.archive.ubuntu.com/ubuntu/ $(lsb_release -sc) main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ubuntu.list
echo "deb [arch=amd64,${{ matrix.architecture.linux_name }}] http://azure.archive.ubuntu.com/ubuntu/ $(lsb_release -sc)-updates main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ubuntu-updates.list
echo "deb [arch=amd64,${{ matrix.architecture.linux_name }}] http://azure.archive.ubuntu.com/ubuntu/ $(lsb_release -sc)-security main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ubuntu-security.list
else
echo "deb [arch=amd64] http://azure.archive.ubuntu.com/ubuntu/ $(lsb_release -sc) main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ubuntu.list
echo "deb [arch=amd64] http://azure.archive.ubuntu.com/ubuntu/ $(lsb_release -sc)-updates main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ubuntu-updates.list
echo "deb [arch=amd64] http://azure.archive.ubuntu.com/ubuntu/ $(lsb_release -sc)-security main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ubuntu-security.list
fi
if [[ ${{ matrix.architecture.is_ports}} == true ]]; then
echo "deb [arch=${{ matrix.architecture.linux_name }}] http://azure.ports.ubuntu.com/ubuntu-ports/ $(lsb_release -sc) main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ubuntu-ports.list
echo "deb [arch=${{ matrix.architecture.linux_name }}] http://azure.ports.ubuntu.com/ubuntu-ports/ $(lsb_release -sc)-updates main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ubuntu-ports-updates.list
echo "deb [arch=${{ matrix.architecture.linux_name }}] http://azure.ports.ubuntu.com/ubuntu-ports/ $(lsb_release -sc)-security main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ubuntu-ports-security.list
fi
sudo apt-get update -y
sudo apt-get --fix-broken install
sudo apt-get install -y qemu-system-${{ matrix.architecture.qemu_package_name }}
sudo docker run
- name: Setup JDK
uses: actions/setup-java@v3
with:
distribution: ${{ matrix.architecture.java_distro }}
java-version: ${{ matrix.java_version }}
architecture: ${{ matrix.architecture.java_name }}
check-latest: true
- name: Download build
uses: actions/download-artifact@v3
with:
name: Linux-${{ matrix.architecture.name }}-Build-JDK${{ matrix.java_version }}
path: .
- name: Test
run: |
docker build docker/ --tag localbuild --platform ${{ matrix.architecture.docker_name }} --build-arg BUILD_IMAGE="ubuntu:${{ matrix.architecture.ubuntu_version }}"
docker run localbuild --platform ${{ matrix.architecture.docker_name }} \
./mvnw -B -V -ntp -P "release" test
Windows-Test:
strategy:
fail-fast: true
matrix:
architecture:
- name: x86_64
runs_on: windows-2022
java_distro: 'temurin'
java_name: x64
- name: x86
runs_on: windows-2022
java_distro: 'temurin'
java_name: x86
- name: aarch64
runs_on: self-hosted
java_distro: 'liberica'
java_name: aarch64
java_version: [ 8, 11, 17, 21 ]
exclude:
- architecture:
name: x86
java_distro: 'temurin'
java_version: 21
- architecture:
name: aarch64
java_distro: 'liberica'
java_version: 8
needs: [ Windows-Build ]
name: Windows-${{ matrix.architecture.name }}-Test-JDK${{ matrix.java_version }}
runs-on: ${{ matrix.architecture.runs_on }}
steps:
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: ${{ matrix.architecture.java_distro }}
java-version: ${{ matrix.java_version }}
architecture: ${{ matrix.architecture.java_name }}
check-latest: true
- name: Download build
uses: actions/download-artifact@v4
with:
name: Windows-${{ matrix.architecture.name }}-Build-JDK${{ matrix.java_version }}
path: .
- name: Test
run: |
./mvnw -B -V -ntp -P "release" test
OSX-Test:
strategy:
fail-fast: true
matrix:
architecture:
- name: x86_64
runs_on: macos-14
java_distro: 'temurin'
java_name: x64
- name: aarch64
runs_on: macos-14
java_distro: 'temurin'
java_name: aarch64
java_version: [ 8, 11, 17, 21 ]
include:
- architecture:
name: aarch64
runs_on: macos-14
java_distro: 'liberica'
java_name: aarch64
java_version: 8
exclude:
- architecture:
name: aarch64
java_distro: 'temurin'
java_version: 8
needs: [ OSX-Build ]
name: OSX-${{ matrix.architecture.name }}-Test-JDK${{ matrix.java_version }}
runs-on: ${{ matrix.architecture.runs_on }}
steps:
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: ${{ matrix.architecture.java_distro }}
java-version: ${{ matrix.java_version }}
architecture: ${{ matrix.architecture.java_name }}
check-latest: true
- name: Download build
uses: actions/download-artifact@v4
with:
name: OSX-${{ matrix.architecture.name }}-Build-JDK${{ matrix.java_version }}
path: .
- name: Test
run: |
./mvnw -B -V -ntp -P "release" test