358 lines
14 KiB
YAML
358 lines
14 KiB
YAML
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
|
|
releaseVersion:
|
|
description: 'Release version target'
|
|
required: false
|
|
default: 1.0.0-M2
|
|
|
|
snapshotVersion:
|
|
description: 'Snapshot version target'
|
|
required: false
|
|
default: 1.0.0-SNAPSHOT
|
|
|
|
releaseRepoId:
|
|
description: 'Release repository id'
|
|
required: false
|
|
default:
|
|
|
|
|
|
mvnFlags:
|
|
description: "Extra maven flags (must escape input yourself if used)"
|
|
required: false
|
|
default:
|
|
|
|
|
|
jobs:
|
|
#Note: no -pl here because we publish everything from this branch and use this as the basis for all uploads.
|
|
linux-x86_64:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
helper: [onednn,""]
|
|
extension: [avx2,avx512,""]
|
|
include:
|
|
- mvn_ext: ${{ github.event.inputs.mvnFlags }}
|
|
experimental: true
|
|
name: Extra maven flags
|
|
|
|
- runs_on: ubuntu-22.04
|
|
experimental: true
|
|
name: OS to run on
|
|
|
|
|
|
- mvn_flags: ${{ github.event.inputs.mvnFlags }}
|
|
experimental: true
|
|
name: Extra maven flags to use as part of the build
|
|
|
|
|
|
|
|
|
|
runs-on: ${{ matrix.runs_on }}
|
|
steps:
|
|
- name: Cancel Previous Runs
|
|
uses: styfle/cancel-workflow-action@0.8.0
|
|
with:
|
|
access_token: ${{ github.token }}
|
|
- uses: actions/checkout@v2
|
|
- uses: ./.github/actions/set-linux-distro-version
|
|
- uses: ./.github/actions/update-deps-linux
|
|
- name: Cache cmake install
|
|
uses: actions/cache@v4
|
|
id: cache-cmake
|
|
with:
|
|
path: /opt/cmake
|
|
key: ${{ runner.os }}-cmake
|
|
restore-keys: ${{ runner.os }}-cmake
|
|
- name: Cache protobuf install
|
|
uses: actions/cache@v4
|
|
id: cache-protobuf
|
|
with:
|
|
path: /opt/protobuf
|
|
key: ${{ runner.os }}-protobuf
|
|
restore-keys: ${{ runner.os }}-protobuf
|
|
- uses: ./.github/actions/install-protobuf-linux
|
|
if: steps.cache-protobuf.outputs.cache-hit != 'true'
|
|
- uses: ./.github/actions/install-cmake-linux
|
|
if: steps.cache-cmake.outputs.cache-hit != 'true'
|
|
|
|
|
|
- name: Set up Java for publishing to GitHub Packages
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
java-version: 11
|
|
distribution: 'temurin'
|
|
|
|
|
|
- name: Setup libnd4j home if a download url is specified
|
|
shell: bash
|
|
run: |
|
|
mkdir "${GITHUB_WORKSPACE}/openblas_home"
|
|
cd "${GITHUB_WORKSPACE}/openblas_home"
|
|
wget https://repo1.maven.org/maven2/org/bytedeco/openblas/0.3.19-1.5.7/openblas-0.3.19-1.5.7-linux-x86_64.jar
|
|
unzip openblas-0.3.19-1.5.7-linux-x86_64.jar
|
|
cd ..
|
|
echo "OPENBLAS_PATH=${GITHUB_WORKSPACE}/openblas_home/org/bytedeco/openblas/linux-x86_64" >> "$GITHUB_ENV"
|
|
cp ${GITHUB_WORKSPACE}/openblas_home/org/bytedeco/openblas/linux-x86_64/libopenblas.so.0 ${GITHUB_WORKSPACE}/openblas_home/org/bytedeco/openblas/linux-x86_64/libopenblas.so
|
|
if: ${{ github.event.inputs.libnd4jUrl != '' }}
|
|
- name: Download dl4j-test-resources
|
|
uses: ./.github/actions/download-dl4j-test-resources-linux
|
|
- name: Build on linux-x86_64
|
|
shell: bash
|
|
env:
|
|
DEBIAN_FRONTEND: noninteractive
|
|
MODULES: ${{ matrix.mvn_flags }}
|
|
HELPER: ${{ matrix.helper }}
|
|
EXTENSION: ${{ matrix.extension }}
|
|
MAVEN_OPTS: -Xmx2g
|
|
run: |
|
|
|
|
export PATH=/opt/protobuf/bin:/opt/cmake/bin:$PATH
|
|
mvn --version
|
|
cmake --version
|
|
protoc --version
|
|
export PATH=/opt/protobuf/bin:/opt/cmake/bin:$PATH
|
|
export LIBGOMP_PATH=/usr/lib/gcc/x86_64-linux-gnu/5.5.0/libgomp.so
|
|
if [ -z "${EXTENSION}" ] || [ -n "${EXTENSION}" ]; then
|
|
export LIBGOMP_PATH=/usr/lib/gcc/x86_64-linux-gnu/7.5.0/libgomp.so
|
|
echo "Extensions specified. This needs a newer version of gcc."
|
|
sudo apt-get install gcc-7 g++-7
|
|
echo "Using newer version of libgomp."
|
|
ls /usr/bin | grep gcc
|
|
ls /usr/bin | grep g++
|
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 90
|
|
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 90
|
|
gcc --version
|
|
fi
|
|
if [ "${{ matrix.helper }}" != '' ] && [ "${{ matrix.extension }}" != '' ]; then
|
|
mvn_ext=" -Dplatform.classifier=linux-x86_64-${{ matrix.helper }}-${{matrix.extension}}"
|
|
elif [ "${{ matrix.helper }}" != '' ]; then
|
|
mvn_ext="-Dplatform.classifier=linux-x86_64-${{ matrix.helper }}"
|
|
elif [ "${{ matrix.extension }}" != '' ]; then
|
|
mvn_ext=" -Dplatform.classifier=linux-x86_64-${{matrix.extension}}"
|
|
else
|
|
mvn_ext=" -Dplatform.classifier=linux-x86_64"
|
|
fi
|
|
cd ${GITHUB_WORKSPACE}/platform-tests && mvn ${mvn_ext} -Djavacpp.platform=linux-x86_64 clean test
|
|
|
|
|
|
windows-x86_64:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
helper: [ onednn,"" ]
|
|
extension: [ avx2,avx512,"" ]
|
|
include:
|
|
- mvn_ext: ${{ github.event.inputs.mvnFlags }}
|
|
experimental: true
|
|
name: Extra maven flags
|
|
|
|
- runs_on: ${{ github.event.inputs.runsOn }}
|
|
experimental: true
|
|
name: OS to run on
|
|
|
|
- mvn_flags: ${{ github.event.inputs.mvnFlags }}
|
|
experimental: true
|
|
name: Extra maven flags to use as part of the build
|
|
|
|
|
|
|
|
runs-on: windows-2019
|
|
steps:
|
|
- name: Cancel Previous Runs
|
|
uses: styfle/cancel-workflow-action@0.8.0
|
|
with:
|
|
access_token: ${{ github.token }}
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Free Disk Space (Windows)
|
|
shell: powershell
|
|
run: |
|
|
# Show initial disk space
|
|
Write-Host "Initial disk space:"
|
|
Get-PSDrive C | Select-Object Used,Free
|
|
|
|
# Remove Windows Defender scan history
|
|
Remove-Item -Path "$env:ProgramData\Microsoft\Windows Defender\Scans\History\*" -Recurse -Force -ErrorAction SilentlyContinue
|
|
Write-Host "Removed Windows Defender scan history"
|
|
|
|
# Clear Windows temp folders
|
|
Remove-Item -Path "$env:SystemRoot\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue
|
|
Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue
|
|
Write-Host "Cleared Windows temp folders"
|
|
|
|
# Clear Windows Update cache safely (without stopping/starting service)
|
|
try {
|
|
Remove-Item -Path "$env:SystemRoot\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue
|
|
Write-Host "Cleared Windows Update download cache"
|
|
}
|
|
catch {
|
|
Write-Host "Could not clear Windows Update cache. Continuing..."
|
|
}
|
|
|
|
# Clean package manager caches
|
|
if (Test-Path -Path "C:\npm\cache") {
|
|
Remove-Item -Path "C:\npm\cache\*" -Recurse -Force -ErrorAction SilentlyContinue
|
|
Write-Host "Cleared NPM cache"
|
|
}
|
|
|
|
choco cache remove -y -ErrorAction SilentlyContinue
|
|
Write-Host "Cleared Chocolatey cache"
|
|
|
|
# Remove Docker images if Docker is installed
|
|
try {
|
|
if (Get-Command "docker" -ErrorAction SilentlyContinue) {
|
|
docker image prune -a -f
|
|
docker container prune -f
|
|
docker volume prune -f
|
|
Write-Host "Pruned Docker resources"
|
|
}
|
|
}
|
|
catch {
|
|
Write-Host "Failed to prune Docker resources. Continuing..."
|
|
}
|
|
|
|
# Remove .NET SDK/Runtime backup folders
|
|
if (Test-Path -Path "$env:ProgramData\Microsoft\.NET\*.backup") {
|
|
Remove-Item -Path "$env:ProgramData\Microsoft\.NET\*.backup" -Recurse -Force -ErrorAction SilentlyContinue
|
|
Write-Host "Removed .NET backup folders"
|
|
}
|
|
|
|
# Clear Azure artifacts cache
|
|
if (Test-Path -Path "$env:LOCALAPPDATA\Microsoft\Azure\*") {
|
|
Remove-Item -Path "$env:LOCALAPPDATA\Microsoft\Azure\*" -Recurse -Force -ErrorAction SilentlyContinue
|
|
Write-Host "Cleared Azure artifacts cache"
|
|
}
|
|
|
|
# Optimize Windows Component Store
|
|
try {
|
|
Start-Process -FilePath "dism.exe" -ArgumentList "/online /Cleanup-Image /StartComponentCleanup" -NoNewWindow -Wait
|
|
Write-Host "Optimized Windows Component Store"
|
|
}
|
|
catch {
|
|
Write-Host "Failed to optimize Windows Component Store. Continuing..."
|
|
}
|
|
|
|
# Show final disk space
|
|
Write-Host "Final disk space:"
|
|
Get-PSDrive C | Select-Object Used,Free
|
|
|
|
- name: Set up Java for publishing to GitHub Packages
|
|
uses: konduitai/setup-java@main
|
|
with:
|
|
java-version: 11
|
|
distribution: 'temurin'
|
|
|
|
|
|
|
|
- uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: MINGW64
|
|
update: true
|
|
install: base-devel git tar pkg-config unzip p7zip zip autoconf autoconf-archive automake patch mingw-w64-x86_64-gnupg mingw-w64-x86_64-make --noconfirm mingw-w64-x86_64-cmake mingw-w64-x86_64-nasm mingw-w64-x86_64-toolchain mingw-w64-x86_64-libtool mingw-w64-x86_64-gcc mingw-w64-x86_64-gcc-fortran mingw-w64-x86_64-libwinpthread-git mingw-w64-x86_64-SDL mingw-w64-x86_64-ragel
|
|
- name: Setup windows path
|
|
shell: powershell
|
|
run: echo "C:\msys64\mingw64\bin;C:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
|
- name: Setup libnd4j home if a download url is specified
|
|
shell: powershell
|
|
run: |
|
|
mkdir "%GITHUB_WORKSPACE%/openblas_home"
|
|
cd "%GITHUB_WORKSPACE%/openblas_home"
|
|
wget https://repo1.maven.org/maven2/org/bytedeco/openblas/0.3.19-1.5.7/openblas-0.3.19-1.5.7-windows-x86_64.jar
|
|
unzip openblas-0.3.19-1.5.7-windows-x86_64.jar
|
|
cd ..
|
|
echo "OPENBLAS_PATH=${GITHUB_WORKSPACE}/openblas_home/org/bytedeco/openblas/windows-x86_64/" | Out-File -FilePath "$env:GITHUB_ENV" -Encoding utf8 -Append
|
|
if: ${{ matrix.libnd4j_file_download != '' }}
|
|
- name: Download dl4j-test-resources
|
|
uses: ./.github/actions/download-dl4j-test-resources-windows
|
|
- name: Run windows cpu build
|
|
shell: cmd
|
|
run: |
|
|
if ( "${{ matrix.helper }}" -ne "" -And "${{ matrix.extension }}" -ne "" ) {
|
|
$mvn_ext=" -platform.classifier=windows-x86_64-${{ matrix.helper }}-${{matrix.extension}}"
|
|
} elseif ( "${{ matrix.helper }}" -ne "" ) {
|
|
$mvn_ext=" -Dplatform.classifier=windows-x86_64-${{ matrix.helper }}"
|
|
} elseif ( "${{ matrix.extension }}" -ne "" ) {
|
|
$mvn_ext=" -Dplatform.classifier=windows-x86_64-${{matrix.extension}} "
|
|
} else {
|
|
$mvn_ext=" -Dplatform.classifier=windows-x86_64"
|
|
}
|
|
cd "%GITHUB_WORKSPACE%\platform-tests"
|
|
mvn "%mvn_ext%" -Djavacpp.platform=windows-x86_64 clean test
|
|
|
|
env:
|
|
MODULES: ${{ matrix.mvn_flags }}
|
|
HELPER: ${{ matrix.helper }}
|
|
EXTENSION: ${{ matrix.extension }}
|
|
|
|
|
|
mac-x86_64:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
helper: [ onednn,"" ]
|
|
extension: [ avx2,avx512,"" ]
|
|
include:
|
|
- mvn_ext: ${{ github.event.inputs.mvnFlags }}
|
|
experimental: true
|
|
name: Extra maven flags
|
|
- debug_enabled: ${{ github.event.inputs.debug_enabled }}
|
|
experimental: true
|
|
name: Debug enabled
|
|
|
|
- runs_on: ${{ github.event.inputs.runsOn }}
|
|
experimental: true
|
|
name: OS to run on
|
|
|
|
- mvn_flags: ${{ github.event.inputs.mvnFlags }}
|
|
experimental: true
|
|
name: Extra maven flags to use as part of the build
|
|
|
|
runs-on: macos-10.15
|
|
steps:
|
|
- name: Cancel Previous Runs
|
|
uses: styfle/cancel-workflow-action@0.8.0
|
|
with:
|
|
access_token: ${{ github.token }}
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Set up Java for publishing to OSSRH
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
java-version: 11
|
|
distribution: 'temurin'
|
|
server-id: 'central'
|
|
server-username: ${{ secrets.CENTRAL_SONATYPE_TOKEN_USERNAME }}
|
|
server-password: ${{ secrets.CENTRAL_SONATYPE_TOKEN_PASSWORD }}
|
|
|
|
|
|
|
|
- name: Update path for gnu sed
|
|
shell: bash
|
|
run: |
|
|
brew install gpg1 gnu-sed unzip ccache gcc swig autoconf-archive automake cmake libomp libtool libusb ant maven nasm xz pkg-config sdl gpg bison flex perl ragel binutils gradle gmp isl libmpc mpfr wget python
|
|
echo "$(brew --prefix)/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH
|
|
- name: Download dl4j-test-resources
|
|
uses: ./.github/actions/download-dl4j-test-resources-linux
|
|
- name: Build and install
|
|
shell: bash
|
|
env:
|
|
MODULES: ${{ matrix.mvn_flags }}
|
|
MAVEN_OPTS: "-Xmx2g"
|
|
HELPER: ${{ matrix.helper }}
|
|
EXTENSION: ${{ matrix.extension }}
|
|
|
|
|
|
run: |
|
|
if [ "${{ matrix.helper }}" != '' ] && [ "${{ matrix.extension }}" != '' ]; then
|
|
mvn_ext=" -Dplatform.classifier=macosx-x86_64-${{ matrix.helper }}-${{matrix.extension}}"
|
|
elif [ "${{ matrix.helper }}" != '' ]; then
|
|
mvn_ext="-Dplatform.classifier=macosx-x86_64-${{ matrix.helper }}"
|
|
elif [ "${{ matrix.extension }}" != '' ]; then
|
|
mvn_ext=" -Dplatform.classifier=macosx-x86_64-${{matrix.extension}}"
|
|
else
|
|
mvn_ext=" -Dlibnd4j.classifier=macosx-x86_64"
|
|
fi
|
|
cd ${GITHUB_WORKSPACE}/platform-tests && mvn -Djavacpp.platform=macosx-x86_64 ${mvn_ext} clean test
|