Merge pull request #109 from ptkis/opencv-490 #193
Workflow file for this run
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
# https://github.com/marketplace/actions/run-on-architecture | |
# https://github.com/openpnp/opencv/pull/56 | |
# https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix | |
# https://github.com/openpnp/opencv/actions | |
# https://github.com/openpnp/opencv/pull/59/files | |
# https://stackoverflow.com/questions/57498605/github-actions-share-workspace-artifacts-between-jobs?rq=1 | |
# https://github.com/actions/upload-artifact | |
# https://github.com/actions/download-artifact | |
# TODO | |
# - maybe consider doing an arm64 test with run on? | |
# - see if I can remove more hardcoded paths and such using the matrix variables. | |
name: Build OpenPnP OpenCV Distribution | |
on: | |
push: | |
pull_request: | |
jobs: | |
build_linux_arm: | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
java: [8] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v2 | |
- name: Setup JDK ${{ matrix.java }} | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{ matrix.java }} | |
- name: Get Version Info | |
run: | | |
echo "POM_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.long -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION_SHORT=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.short -q -DforceStdout)" >> $GITHUB_ENV | |
- name: Build OpenCV on Arm | |
uses: uraimo/[email protected] | |
with: | |
arch: armv7 | |
distro: ubuntu18.04 | |
# Not required, but speeds up builds | |
githubToken: ${{ github.token }} | |
# Create an artifacts directory | |
setup: | | |
mkdir -p "${PWD}/artifacts" | |
# Mount the artifacts directory as /artifacts in the container | |
# Also mount the checked out repo as /host_repo so we can do a test build. | |
dockerRunArgs: | | |
--volume "${PWD}/artifacts:/artifacts" | |
--volume "${PWD}:/host_repo" | |
run: | | |
apt-get update -q -y | |
apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 | |
# TODO: I'd like to get this path automatically somehow. I think it might be | |
# in /etc/environment but sourcing it didn't seem to work. Need to figure out | |
# where it would be after starting a new shell. | |
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf | |
wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null | |
unzip ${{ env.OPENCV_VERSION }} > /dev/null | |
cd opencv-${{ env.OPENCV_VERSION }} | |
mkdir build | |
cd build | |
cmake \ | |
-D OPENCV_FORCE_3RDPARTY_BUILD=ON \ | |
-D BUILD_JAVA=ON \ | |
-D BUILD_FAT_JAVA_LIB=ON \ | |
-D OPENCV_ENABLE_NONFREE=ON \ | |
-D BUILD_SHARED_LIBS=OFF \ | |
-D BUILD_PERF_TESTS=OFF \ | |
-D BUILD_TESTS=OFF \ | |
-D BUILD_EXAMPLES=OFF \ | |
-D BUILD_DOCS=OFF \ | |
-D BUILD_PACKAGE=OFF \ | |
-D BUILD_opencv_python2=OFF \ | |
-D BUILD_opencv_python3=OFF \ | |
-D BUILD_opencv_apps=OFF \ | |
-D BUILD_opencv_gapi=OFF \ | |
-D CMAKE_BUILD_TYPE=RELEASE \ | |
.. | |
make -j4 | |
# Copy the build artifacts to the /artifacts directory, which will be | |
# used by the host to upload them. | |
mkdir -p /artifacts/bin | |
mkdir -p /artifacts/lib | |
cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin | |
cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib | |
# And also copy the build artifacts to the repo, so we can do a test build. | |
# Note that we use the repo checked out on the host so that we can use | |
# actions/checkout for the Git stuff, rather than having to mess with | |
# the authentication in this container. | |
cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream | |
cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7 | |
# Peform a test build in the host repo, which now contains all of the | |
# build artifacts. | |
cd /host_repo | |
mvn -B test | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ubuntu-18.04-arm | |
path: | | |
artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar | |
artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so | |
build_linux_arm64: | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
java: [15] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v2 | |
- name: Setup JDK ${{ matrix.java }} | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{ matrix.java }} | |
- name: Get Version Info | |
run: | | |
echo "POM_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.long -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION_SHORT=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.short -q -DforceStdout)" >> $GITHUB_ENV | |
- name: Build OpenCV on Arm64 | |
uses: uraimo/[email protected] | |
with: | |
arch: aarch64 | |
distro: ubuntu18.04 | |
# Not required, but speeds up builds | |
githubToken: ${{ github.token }} | |
# Create an artifacts directory | |
setup: | | |
mkdir -p "${PWD}/artifacts" | |
# Mount the artifacts directory as /artifacts in the container | |
# Also mount the checked out repo as /host_repo so we can do a test build. | |
dockerRunArgs: | | |
--volume "${PWD}/artifacts:/artifacts" | |
--volume "${PWD}:/host_repo" | |
run: | | |
apt-get update -q -y | |
apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 | |
# TODO: I'd like to get this path automatically somehow. I think it might be | |
# in /etc/environment but sourcing it didn't seem to work. Need to figure out | |
# where it would be after starting a new shell. | |
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 | |
wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null | |
unzip ${{ env.OPENCV_VERSION }} > /dev/null | |
cd opencv-${{ env.OPENCV_VERSION }} | |
mkdir build | |
cd build | |
cmake \ | |
-D OPENCV_FORCE_3RDPARTY_BUILD=ON \ | |
-D BUILD_JAVA=ON \ | |
-D BUILD_FAT_JAVA_LIB=ON \ | |
-D OPENCV_ENABLE_NONFREE=ON \ | |
-D BUILD_SHARED_LIBS=OFF \ | |
-D BUILD_PERF_TESTS=OFF \ | |
-D BUILD_TESTS=OFF \ | |
-D BUILD_EXAMPLES=OFF \ | |
-D BUILD_DOCS=OFF \ | |
-D BUILD_PACKAGE=OFF \ | |
-D BUILD_opencv_python2=OFF \ | |
-D BUILD_opencv_python3=OFF \ | |
-D BUILD_opencv_apps=OFF \ | |
-D BUILD_opencv_gapi=OFF \ | |
-D CMAKE_BUILD_TYPE=RELEASE \ | |
.. | |
make -j4 | |
# Copy the build artifacts to the /artifacts directory, which will be | |
# used by the host to upload them. | |
mkdir -p /artifacts/bin | |
mkdir -p /artifacts/lib | |
cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin | |
cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib | |
# And also copy the build artifacts to the repo, so we can do a test build. | |
# Note that we use the repo checked out on the host so that we can use | |
# actions/checkout for the Git stuff, rather than having to mess with | |
# the authentication in this container. | |
cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream | |
cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv8 | |
# Peform a test build in the host repo, which now contains all of the | |
# build artifacts. | |
cd /host_repo | |
mvn -B test | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ubuntu-18.04-arm64 | |
path: | | |
artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar | |
artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so | |
# Build native libraries for Linux and Mac. Uploads the libraries | |
# as artifacts which are used in subsequent jobs. | |
build_mac_linux_x64: | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, macos-11] | |
java: [8] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v2 | |
- name: Setup JDK ${{ matrix.java }} | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{ matrix.java }} | |
- name: Get Version Info | |
run: | | |
echo "POM_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.long -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION_SHORT=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.short -q -DforceStdout)" >> $GITHUB_ENV | |
- name: Build OpenCV | |
run: | | |
wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null | |
unzip ${{ env.OPENCV_VERSION }} > /dev/null | |
cd opencv-${{ env.OPENCV_VERSION }} | |
mkdir build | |
cd build | |
cmake \ | |
-D OPENCV_FORCE_3RDPARTY_BUILD=ON \ | |
-D BUILD_JAVA=ON \ | |
-D BUILD_FAT_JAVA_LIB=ON \ | |
-D OPENCV_ENABLE_NONFREE=ON \ | |
-D BUILD_SHARED_LIBS=OFF \ | |
-D BUILD_PERF_TESTS=OFF \ | |
-D BUILD_TESTS=OFF \ | |
-D BUILD_EXAMPLES=OFF \ | |
-D BUILD_DOCS=OFF \ | |
-D BUILD_PACKAGE=OFF \ | |
-D BUILD_opencv_python2=OFF \ | |
-D BUILD_opencv_python3=OFF \ | |
-D BUILD_opencv_apps=OFF \ | |
-D BUILD_opencv_gapi=OFF \ | |
-D CMAKE_BUILD_TYPE=RELEASE \ | |
.. | |
make -j8 | |
- name: Copy Libraries | |
run: | | |
cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : | |
cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 || : | |
cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 || : | |
- name: Build with Maven | |
run: mvn -B test | |
- name: Upload Libraries | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ matrix.os }} | |
path: | | |
opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar | |
opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so | |
opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib | |
# Build Apple Silicon Mac native binary. | |
# See https://cmake.org/cmake/help/v3.23/variable/CMAKE_APPLE_SILICON_PROCESSOR.html | |
build_mac_aarch64: | |
strategy: | |
matrix: | |
java: [18] | |
runs-on: [macos-13-xlarge] | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v2 | |
- name: Setup JDK ${{ matrix.java }} | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
architecture: aarch64 | |
java-version: ${{ matrix.java }} | |
- name: Get Version Info | |
run: | | |
echo "POM_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.long -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION_SHORT=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.short -q -DforceStdout)" >> $GITHUB_ENV | |
- name: Build OpenCV | |
run: | | |
wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null | |
unzip ${{ env.OPENCV_VERSION }} > /dev/null | |
cd opencv-${{ env.OPENCV_VERSION }} | |
mkdir build | |
cd build | |
cmake \ | |
-D OPENCV_FORCE_3RDPARTY_BUILD=ON \ | |
-D BUILD_JAVA=ON \ | |
-D BUILD_FAT_JAVA_LIB=ON \ | |
-D OPENCV_ENABLE_NONFREE=ON \ | |
-D BUILD_SHARED_LIBS=OFF \ | |
-D BUILD_PERF_TESTS=OFF \ | |
-D BUILD_TESTS=OFF \ | |
-D BUILD_EXAMPLES=OFF \ | |
-D BUILD_DOCS=OFF \ | |
-D BUILD_PACKAGE=OFF \ | |
-D BUILD_opencv_python2=OFF \ | |
-D BUILD_opencv_python3=OFF \ | |
-D BUILD_opencv_apps=OFF \ | |
-D BUILD_opencv_gapi=OFF \ | |
-D CMAKE_BUILD_TYPE=RELEASE \ | |
-D CMAKE_APPLE_SILICON_PROCESSOR=arm64 \ | |
-D CMAKE_CXX_STANDARD=17 \ | |
.. | |
make -j8 | |
- name: Copy Libraries | |
run: | | |
cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : | |
cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 || : | |
- name: Build with Maven | |
run: mvn -B test | |
- name: Upload Libraries | |
uses: actions/upload-artifact@v2 | |
with: | |
name: macos-aarch64 | |
path: | | |
opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar | |
opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib | |
# Downloads the Windows distribution from OpenCV, extracts it and uploads | |
# the native libraries as artifacts for use by subsequent jobs. This is | |
# in leiu of building the native libraries on Windows. | |
build_windows: | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
java: [15] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v2 | |
- name: Setup JDK ${{ matrix.java }} | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{ matrix.java }} | |
- name: Get Version Info | |
run: | | |
echo "POM_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.long -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION_SHORT=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.short -q -DforceStdout)" >> $GITHUB_ENV | |
- name: Download Windows Distribution | |
run: wget -O opencv-${{ env.OPENCV_VERSION }}.exe https://github.com/opencv/opencv/releases/download/${{ env.OPENCV_VERSION }}/opencv-${{ env.OPENCV_VERSION }}-windows.exe | |
- name: Extract Windows Distribution | |
run: 7z x opencv-${{ env.OPENCV_VERSION }}.exe | |
- name: Upload Libraries | |
uses: actions/upload-artifact@v2 | |
with: | |
name: windows-2016 | |
path: opencv/build/java | |
# Download and combine the artifacts from the above jobs and build the | |
# distribution jar. Uploads it as an artifact for subsequent steps. | |
build_dist: | |
needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
java: [8] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v2 | |
- name: Setup JDK ${{ matrix.java }} | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{ matrix.java }} | |
- name: Get Version Info | |
run: | | |
echo "POM_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.long -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION_SHORT=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.short -q -DforceStdout)" >> $GITHUB_ENV | |
- name: Download Libraries | |
uses: actions/download-artifact@v2 | |
- name: Copy Binaries | |
run: | | |
cp macos-11/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream | |
cp macos-11/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 | |
cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 | |
cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 | |
cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 | |
cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 | |
cp windows-2016/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 | |
cp windows-2016/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 | |
- name: Build with Maven | |
run: mvn -B install | |
- name: Upload Distribution | |
uses: actions/upload-artifact@v2 | |
with: | |
name: dist | |
path: target/opencv* | |
# Downloads the distribution jar that was built above and runs | |
# a short smoke test on it on many platforms and versions of | |
# Java. This is intended to ensure that the built jar | |
# runs on all of the supported targets. | |
test: | |
needs: build_dist | |
strategy: | |
matrix: | |
os: [macos-11, windows-2019, ubuntu-20.04, ubuntu-22.04] | |
java: [8, 9, 10, 11, 12, 13, 14, 15] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v2 | |
- name: Setup JDK ${{ matrix.java }} | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{ matrix.java }} | |
- name: Get Version Info | |
shell: bash | |
run: | | |
echo "POM_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.long -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION_SHORT=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.short -q -DforceStdout)" >> $GITHUB_ENV | |
- name: Download Distribution | |
uses: actions/download-artifact@v2 | |
with: | |
name: dist | |
- name: Run Test | |
shell: bash | |
run: java -cp opencv-${{ env.POM_VERSION }}.jar nu.pattern.PrintVersion | |
publish: | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
needs: test | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
java: [8] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v2 | |
- name: Setup JDK ${{ matrix.java }} | |
uses: actions/setup-java@v1 | |
with: | |
java-version: ${{ matrix.java }} | |
server-id: ossrh | |
server-username: OSSRH_USERNAME | |
server-password: OSSRH_PASSWORD | |
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} | |
gpg-passphrase: MAVEN_GPG_PASSPHRASE | |
- name: Get Version Info | |
run: | | |
echo "POM_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.long -q -DforceStdout)" >> $GITHUB_ENV | |
echo "OPENCV_VERSION_SHORT=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.short -q -DforceStdout)" >> $GITHUB_ENV | |
- name: Download Libraries | |
uses: actions/download-artifact@v2 | |
- name: Copy Binaries | |
run: | | |
cp macos-11/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream | |
cp macos-11/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 | |
cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 | |
cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 | |
cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 | |
cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 | |
cp windows-2016/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 | |
cp windows-2016/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 | |
- name: Publish to Apache Maven Central | |
run: mvn -B -e clean deploy -P release-sign-artifacts | |
env: | |
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} | |
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} | |