Merge branch 'master' into dependabot/maven/org.apache.maven.plugins-… #122
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: Cross-Platform C Build | |
on: push | |
env: | |
QEMU_IMAGE: tonistiigi/binfmt:qemu-v5.0.1 | |
BUILD_JDK: 11 | |
VERSION_SUFFIX: '' | |
jobs: | |
# | |
# show the available qemu platforms to have a list of all platforms | |
# | |
qemu_show_platform_info: | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
- | |
name: Set up QEMU for all platforms | |
id: qemu | |
uses: docker/setup-qemu-action@v2 | |
with: | |
image: ${{ env.QEMU_IMAGE }} | |
platforms: all | |
- | |
name: Available platforms | |
run: echo ${{ steps.qemu.outputs.platforms }} | |
# | |
# build the different platforms using QEMU | |
# | |
qemu_platform_object_files: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- platform: linux/amd64 | |
- platform: linux/arm64 | |
- platform: linux/s390x | |
- platform: linux/arm/v7 | |
#- platform: linux/arm/v6 | |
- platform: linux/ppc64le | |
#- platform: linux/riscv64 | |
#- platform: linux/386 | |
#- platform: linux/mips64le | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
- | |
name: Set up QEMU for ${{ matrix.platform }} | |
id: qemu | |
uses: docker/setup-qemu-action@v2 | |
with: | |
image: ${{ env.QEMU_IMAGE }} | |
platforms: ${{ matrix.platform }} | |
- | |
name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- | |
name: Login to DockerHub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- | |
name: Build on ${{ matrix.platform }} | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
platforms: ${{ matrix.platform }} | |
outputs: "type=tar,dest=image.tar" | |
- | |
name: Show it | |
run: | | |
ls -alR image.tar | |
tar -tvf image.tar | |
- | |
name: Extract shared library | |
run: | | |
tar --wildcards -xvf image.tar openssl4j/target/libopenssl4j-*.so | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: shared_objects | |
path: openssl4j/target/*.so | |
# | |
# deploy the openssl4j-objects artifact to github packages | |
# | |
deploy_openssl4j_objects: | |
needs: qemu_platform_object_files | |
runs-on: ubuntu-latest | |
steps: | |
- | |
name: Checkout | |
uses: actions/checkout@v3 | |
- | |
uses: actions/download-artifact@v3 | |
with: | |
name: shared_objects | |
path: openssl4j-objects/src/main/resources/objects | |
- | |
name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'adopt' | |
java-version: ${{ env.BUILD_JDK }} | |
- | |
name: Cache local Maven repository | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2/repository | |
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | |
restore-keys: | | |
${{ runner.os }}-maven- | |
- | |
name: Set by-date version with Maven | |
run: mvn versions:set -DnewVersion=$(date +"%Y-%m-%d-%H-%M-%S")${{ env.VERSION_SUFFIX }} | |
working-directory: openssl4j-objects | |
- | |
name: Build with Maven | |
run: mvn -B package --file pom.xml | |
working-directory: openssl4j-objects | |
- | |
uses: actions/upload-artifact@v3 | |
with: | |
name: openssl4j-objects | |
path: openssl4j-objects/target/*.jar | |
- | |
name: Publish package to Github | |
run: mvn -Pgithub --batch-mode deploy | |
working-directory: openssl4j-objects | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |