Native Image CI job

Currently no Windows support. GraalVM in version 22.1.0 has a bug on windows. See https://github.com/oracle/graal/issues/4502
This commit is contained in:
Kevin R 2022-06-08 10:05:01 +02:00
parent 1757e939e1
commit 3181ebfd13
No known key found for this signature in database
GPG key ID: A4AD5E0732960C98

108
.github/workflows/native-image.yml vendored Normal file
View file

@ -0,0 +1,108 @@
name: Build Native Image
on:
push:
branches:
- '*'
tags:
- 'v*'
jobs:
native-image:
env:
LIBSIGNAL_VERSION: 0.17.0
strategy:
fail-fast: false
matrix:
job_name:
- linux-amd64
- macos-amd64
#- windows-amd64
include:
- job_name: linux-amd64
os: ubuntu-latest
- job_name: macos-amd64
os: macOS-latest
#- job_name: windows-amd64
# os: windows-latest
name: ${{ matrix.job_name }}
runs-on: ${{ matrix.os }}
steps:
# git checkout
- name: Checkout the repository
uses: actions/checkout@v3
# Add libs
- name: Add lib on *nix x86
run: |
curl -Lo /tmp/libsignal_jni.so.tar.gz "https://github.com/exquo/signal-libs-build/releases/download/libsignal-client_v${LIBSIGNAL_VERSION}/libsignal_jni.so-v${LIBSIGNAL_VERSION}-x86_64-unknown-linux-gnu.tar.gz"
tar -C lib/src/main/resources/ -xzf "/tmp/libsignal_jni.so.tar.gz"
if: success() && matrix.os == 'ubuntu-latest'
- name: Add lib on Mac x86
run: |
curl -Lo /tmp/libsignal_jni.dylib.tar.gz "https://github.com/exquo/signal-libs-build/releases/download/libsignal-client_v${LIBSIGNAL_VERSION}/libsignal_jni.dylib-v${LIBSIGNAL_VERSION}-x86_64-apple-darwin.tar.gz"
tar -C lib/src/main/resources/ -xzf "/tmp/libsignal_jni.dylib.tar.gz"
if: success() && matrix.os == 'macOS-latest'
#- name: Add lib on Windows
# run: Invoke-WebRequest -Uri https://github.com/signalapp/libsignal/releases/latest/download/signal_jni.dll -OutFile lib/src/main/resources/signal_jni.dll
# if: success() && matrix.os == 'windows-latest'
# install build dependencies (windows only)
#- name: Configure Developer Command Prompt for Microsoft Visual C++ on Windows
# uses: ilammy/msvc-dev-cmd@v1.10.0
# if: matrix.os == 'windows-latest'
#- name: Configure MSBuild on Windows
# uses: microsoft/setup-msbuild@v1
# if: matrix.os == 'windows-latest'
# set up graalvm
- name: Set up GraalVM environment
uses: ayltai/setup-graalvm@v1
with:
java-version: 17
graalvm-version: 22.1.0
native-image: true
# build native image
- name: Build Native Image
run: ./gradlew nativeCompile
# package native image
- name: Build Package on *nix x86
run: |
VERSION=$(./gradlew properties -q | grep "version:" | awk '{print $2}')
mkdir -p signal-cli-${VERSION}-${{ matrix.job_name }}/
mv ./build/native/nativeCompile/signal-cli signal-cli-${VERSION}-${{ matrix.job_name }}
zip -r signal-cli-${VERSION}-${{ matrix.job_name }}.zip ./signal-cli-${VERSION}-${{ matrix.job_name }}
if: success() && matrix.os == 'ubuntu-latest'
- name: Build Package on Mac x86
run: |
VERSION=$(./gradlew properties -q | grep "version:" | awk '{print $2}')
mkdir -p signal-cli-${VERSION}-${{ matrix.job_name }}/
mv ./build/native/nativeCompile/signal-cli signal-cli-${VERSION}-${{ matrix.job_name }}
zip -r signal-cli-${VERSION}-${{ matrix.job_name }}.zip ./signal-cli-${VERSION}-${{ matrix.job_name }}
if: success() && matrix.os == 'macOS-latest'
#- name: Build Package on Windows
# run: |
# $VERSION = .\gradlew.bat properties -q | Select-String -Pattern 'version:' | Select-Object -First 1
# New-Item "./signal-cli-${VERSION}-${{ matrix.job_name }}/" -ItemType Directory -ea 0
# Move-Item -Path ./build/native/nativeCompile/signal-cli.exe -Destination "./signal-cli-${VERSION}-${{ matrix.job_name }}"
# Compress-Archive -Path "./signal-cli-${VERSION}-${{ matrix.job_name }}" -Update -DestinationPath ./signal-cli-${VERSION}-${{ matrix.job_name }}.zip
# if: success() && matrix.os == 'windows-latest'
# publish artifact
- name: Publish artifact
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.job_name }}
path: signal-cli-*-${{ matrix.job_name }}.zip