Just cleanup some stuff #172
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |