-
Notifications
You must be signed in to change notification settings - Fork 4
140 lines (131 loc) · 3.68 KB
/
build-crossplatform.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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 }}