Skip to content

Commit fca4ae1

Browse files
authored
Merge pull request #11 from ooni/feat/ooniprobe-ffi-kotlin
feat: introduce ooniprobe-ffi crate with uniffi support
2 parents f7f0e58 + 125d2df commit fca4ae1

58 files changed

Lines changed: 4926 additions & 2227 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
name: Build Android AAR
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- main
8+
tags:
9+
- "v*"
10+
11+
jobs:
12+
build-android:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
19+
- name: Setup Java
20+
uses: actions/setup-java@v4
21+
with:
22+
distribution: temurin
23+
java-version: 17
24+
25+
- name: Setup Rust
26+
uses: dtolnay/rust-toolchain@stable
27+
28+
- name: Setup Android SDK
29+
uses: android-actions/setup-android@v3
30+
31+
- name: Install Android NDK (manual)
32+
run: |
33+
sdkmanager "ndk;27.0.12077973"
34+
echo "ANDROID_NDK_HOME=$ANDROID_HOME/ndk/27.0.12077973" >> $GITHUB_ENV
35+
36+
- name: Install cargo-ndk
37+
run: |
38+
cargo install cargo-ndk --locked
39+
40+
- name: Build for Android
41+
run: make android
42+
43+
- name: Upload AAR Artifact
44+
uses: actions/upload-artifact@v6
45+
with:
46+
name: ooniprobe-aar
47+
path: android/ooniprobe/build/outputs/aar/*.aar
48+
49+
publish-android:
50+
runs-on: ubuntu-latest
51+
needs: build-android
52+
53+
permissions:
54+
contents: write
55+
56+
steps:
57+
- name: Checkout
58+
uses: actions/checkout@v4
59+
with:
60+
fetch-depth: 0
61+
62+
- name: Set up JDK
63+
uses: actions/setup-java@v4
64+
with:
65+
java-version: '17'
66+
distribution: 'temurin'
67+
cache: 'maven'
68+
server-id: central
69+
server-username: MAVEN_USERNAME
70+
server-password: MAVEN_PASSWORD
71+
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
72+
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
73+
74+
- name: Download AAR artifact
75+
uses: actions/download-artifact@v4
76+
with:
77+
name: ooniprobe-aar
78+
path: maven/android
79+
80+
- name: Set Project Version
81+
working-directory: maven/android
82+
run: |
83+
if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
84+
VERSION="${GITHUB_REF_NAME#v}"
85+
else
86+
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-8)
87+
VERSION="${SHORT_SHA}"
88+
fi
89+
echo "Generated version: $VERSION"
90+
91+
mvn versions:set \
92+
-DnewVersion=${VERSION} \
93+
-DremoveSnapshot=true
94+
env:
95+
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
96+
97+
- name: Publish to Maven Central
98+
working-directory: maven/android
99+
run: |
100+
mvn clean deploy \
101+
-Dandroid.aar.name=$(ls *.aar | xargs basename) \
102+
--batch-mode \
103+
-DskipTests
104+
env:
105+
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
106+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
107+
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
Lines changed: 287 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,287 @@
1+
name: Build Desktop JARs
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- main
8+
tags:
9+
- "v*"
10+
11+
jobs:
12+
build-linux:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
19+
- name: Setup Rust
20+
uses: dtolnay/rust-toolchain@stable
21+
22+
- name: Setup Rust toolchain
23+
run: rustup update stable
24+
25+
- name: Setup Java 17
26+
uses: actions/setup-java@v4
27+
with:
28+
distribution: 'temurin'
29+
java-version: '17'
30+
31+
- name: Build Desktop JAR
32+
shell: bash
33+
run: |
34+
make desktop-linux
35+
36+
- name: Upload JAR Artifact
37+
uses: actions/upload-artifact@v4
38+
with:
39+
name: desktop-linux
40+
path: desktop/build/libs/*.jar
41+
42+
publish-linux:
43+
runs-on: ubuntu-latest
44+
needs: build-linux
45+
46+
permissions:
47+
contents: write
48+
49+
steps:
50+
- name: Checkout
51+
uses: actions/checkout@v4
52+
with:
53+
fetch-depth: 0
54+
55+
- name: Set up JDK
56+
uses: actions/setup-java@v4
57+
with:
58+
java-version: '17'
59+
distribution: 'temurin'
60+
cache: 'maven'
61+
server-id: central
62+
server-username: MAVEN_USERNAME
63+
server-password: MAVEN_PASSWORD
64+
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
65+
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
66+
67+
- name: Download JAR artifact
68+
uses: actions/download-artifact@v4
69+
with:
70+
name: desktop-linux
71+
path: maven/desktop
72+
73+
- name: Set Project Version
74+
working-directory: maven/desktop
75+
run: |
76+
ARTIFACT_ID="passport-linux"
77+
78+
if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
79+
VERSION="${GITHUB_REF_NAME#v}"
80+
else
81+
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-8)
82+
VERSION="${SHORT_SHA}"
83+
fi
84+
echo "Generated version: $VERSION"
85+
86+
sed -i "s|ARTIFACT_ID|${ARTIFACT_ID}|g" pom.xml
87+
88+
mvn versions:set \
89+
-DnewVersion=${VERSION} \
90+
-DremoveSnapshot=true
91+
env:
92+
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
93+
94+
- name: Publish to Maven Central
95+
working-directory: maven/desktop
96+
run: |
97+
mvn clean deploy \
98+
-Ddesktop.jar.name=$(ls *.jar | xargs basename) \
99+
-Ddesktop.classifier=linux \
100+
--batch-mode \
101+
-DskipTests
102+
env:
103+
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
104+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
105+
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
106+
107+
build-macos:
108+
runs-on: macos-latest
109+
110+
steps:
111+
- uses: actions/checkout@v4
112+
113+
- name: Setup Rust
114+
uses: dtolnay/rust-toolchain@stable
115+
116+
- run: rustup update stable
117+
118+
- name: Setup Java
119+
uses: actions/setup-java@v4
120+
with:
121+
distribution: temurin
122+
java-version: 17
123+
124+
- name: Build macOS JAR
125+
run: make desktop-macos
126+
127+
- name: Upload macOS Artifact
128+
uses: actions/upload-artifact@v4
129+
with:
130+
name: desktop-macos
131+
path: desktop/build/libs/*.jar
132+
133+
134+
publish-macos:
135+
runs-on: ubuntu-latest
136+
needs: build-macos
137+
138+
permissions:
139+
contents: write
140+
141+
steps:
142+
- uses: actions/checkout@v4
143+
with:
144+
fetch-depth: 0
145+
146+
- name: Setup Java + Maven Central
147+
uses: actions/setup-java@v4
148+
with:
149+
distribution: temurin
150+
java-version: 17
151+
cache: maven
152+
server-id: central
153+
server-username: MAVEN_USERNAME
154+
server-password: MAVEN_PASSWORD
155+
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
156+
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
157+
158+
- name: Download macOS Artifact
159+
uses: actions/download-artifact@v4
160+
with:
161+
name: desktop-macos
162+
path: maven/desktop
163+
164+
- name: Set Project Version
165+
working-directory: maven/desktop
166+
run: |
167+
ARTIFACT_ID="passport-macos"
168+
169+
if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
170+
VERSION="${GITHUB_REF_NAME#v}"
171+
else
172+
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-8)
173+
VERSION="${SHORT_SHA}"
174+
fi
175+
echo "Generated version: $VERSION"
176+
177+
sed -i "s|ARTIFACT_ID|${ARTIFACT_ID}|g" pom.xml
178+
179+
mvn versions:set \
180+
-DnewVersion=${VERSION} \
181+
-DremoveSnapshot=true
182+
env:
183+
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
184+
185+
- name: Publish to Maven Central
186+
working-directory: maven/desktop
187+
run: |
188+
mvn clean deploy \
189+
-Ddesktop.jar.name=$(ls *.jar | xargs basename) \
190+
-Ddesktop.classifier=macos \
191+
--batch-mode \
192+
-DskipTests
193+
env:
194+
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
195+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
196+
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
197+
198+
build-windows:
199+
runs-on: windows-latest
200+
201+
steps:
202+
- uses: actions/checkout@v4
203+
204+
- name: Setup Rust
205+
uses: dtolnay/rust-toolchain@stable
206+
207+
- run: rustup update stable
208+
209+
- name: Setup Java
210+
uses: actions/setup-java@v4
211+
with:
212+
distribution: temurin
213+
java-version: 17
214+
215+
- name: Build Windows JAR
216+
shell: bash
217+
run: make desktop-windows
218+
219+
- name: Upload Windows Artifact
220+
uses: actions/upload-artifact@v4
221+
with:
222+
name: desktop-windows
223+
path: desktop/build/libs/*.jar
224+
225+
publish-windows:
226+
runs-on: ubuntu-latest
227+
needs: build-windows
228+
229+
permissions:
230+
contents: write
231+
232+
steps:
233+
- uses: actions/checkout@v4
234+
with:
235+
fetch-depth: 0
236+
237+
- name: Setup Java + Maven Central
238+
uses: actions/setup-java@v4
239+
with:
240+
distribution: temurin
241+
java-version: 17
242+
cache: maven
243+
server-id: central
244+
server-username: MAVEN_USERNAME
245+
server-password: MAVEN_PASSWORD
246+
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
247+
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
248+
249+
- name: Download Windows Artifact
250+
uses: actions/download-artifact@v4
251+
with:
252+
name: desktop-windows
253+
path: maven/desktop
254+
255+
- name: Set Project Version
256+
working-directory: maven/desktop
257+
run: |
258+
ARTIFACT_ID="passport-windows"
259+
260+
if [[ "${GITHUB_REF_TYPE}" == "tag" ]]; then
261+
VERSION="${GITHUB_REF_NAME#v}"
262+
else
263+
SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-8)
264+
VERSION="${SHORT_SHA}"
265+
fi
266+
echo "Generated version: $VERSION"
267+
268+
sed -i "s|ARTIFACT_ID|${ARTIFACT_ID}|g" pom.xml
269+
270+
mvn versions:set \
271+
-DnewVersion=${VERSION} \
272+
-DremoveSnapshot=true
273+
env:
274+
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
275+
276+
- name: Publish to Maven Central
277+
working-directory: maven/desktop
278+
run: |
279+
mvn clean deploy \
280+
-Ddesktop.jar.name=$(ls *.jar | xargs basename) \
281+
-Ddesktop.classifier=windows \
282+
--batch-mode \
283+
-DskipTests
284+
env:
285+
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
286+
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
287+
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}

0 commit comments

Comments
 (0)