Skip to content

Commit cb85d4c

Browse files
committed
Merge branch 'develop' of https://github.com/futo-org/polycentric into develop
2 parents 4583a04 + 15f0416 commit cb85d4c

125 files changed

Lines changed: 8219 additions & 4693 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cirrus.yml

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,20 @@
1-
build_ios_device_task:
2-
name: buildRsCoreIOSDevice
1+
build_ios_task:
2+
name: buildReactNativeIOS
33
macos_instance:
44
image: ghcr.io/cirruslabs/macos-sequoia-xcode:26.2
5-
buildRsCoreIOSDevice_script:
5+
build_script:
66
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
77
- source "$HOME/.cargo/env"
8-
- cd packages/rs-core
9-
- brew install just protobuf llvm
10-
- just build-ffi-ios
11-
- cp ../../target/aarch64-apple-ios/release-rs-core/libpolycentric_core.a ../../libpolycentric_core-ios-device.a
8+
- brew install just protobuf cmake ninja clang-format pnpm
9+
- cd packages/react-native
10+
- |
11+
rustup target add \
12+
aarch64-apple-ios \
13+
aarch64-apple-ios-sim \
14+
x86_64-apple-ios
15+
- pnpm i
16+
- pnpm ubrn:ios
1217
binary_artifacts:
13-
path: 'libpolycentric_core-ios-device.a'
14-
15-
build_ios_sim_arm64_task:
16-
name: buildRsCoreIOSSimArm64
17-
macos_instance:
18-
image: ghcr.io/cirruslabs/macos-sequoia-xcode:26.2
19-
buildRsCoreIOSSimArm64_script:
20-
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
21-
- source "$HOME/.cargo/env"
22-
- cd packages/rs-core
23-
- brew install just protobuf llvm
24-
- just build-ffi-ios-sim
25-
- cp ../../target/aarch64-apple-ios-sim/release-rs-core/libpolycentric_core.a ../../libpolycentric_core-ios-sim-arm64.a
26-
binary_artifacts:
27-
path: 'libpolycentric_core-ios-sim-arm64.a'
28-
29-
build_ios_sim_x86_task:
30-
name: buildRsCoreIOSSimX86
31-
macos_instance:
32-
image: ghcr.io/cirruslabs/macos-sequoia-xcode:26.2
33-
buildRsCoreIOSSimX86_script:
34-
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
35-
- source "$HOME/.cargo/env"
36-
- cd packages/rs-core
37-
- brew install just protobuf llvm
38-
- just build-ffi-ios-sim-x86
39-
- cp ../../target/x86_64-apple-ios/release-rs-core/libpolycentric_core.a ../../libpolycentric_core-ios-sim-x86_64.a
40-
binary_artifacts:
41-
path: 'libpolycentric_core-ios-sim-x86_64.a'
18+
path: 'packages/react-native/ios/**/*'
19+
xcframework_artifacts:
20+
path: 'packages/react-native/PolycentricReactNativeFramework.xcframework/**/*'

.dockerignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@
22
**/node_modules
33
apps/polycentric/dist
44
**/.git
5+
6+
# iOS-only artifacts produced by rn-ios-build — not used by the web image,
7+
# and the xcframework alone is ~hundreds of MB.
8+
packages/react-native/PolycentricReactNativeFramework.xcframework
9+
**/*.a

.gitlab-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
include:
2+
- local: '.gitlab/ci/setup_images.yml'
23
- local: '.gitlab/ci/build_rs_core.yml'
34
- local: '.gitlab/ci/build_js_sdks.yml'
45
- local: '.gitlab/ci/build_rn_sdk.yml'

.gitlab/ci/build_app.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,13 @@
55
when: always
66
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
77
changes:
8-
- packages/**/*
98
- apps/**/*
109
- .gitlab/ci/build_app.yml
1110
- .gitlab/ci/deploy_app.yml
1211
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
1312
when: never
1413
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
1514
changes:
16-
- packages/**/*
1715
- apps/**/*
1816
- .gitlab/ci/build_app.yml
1917
- .gitlab/ci/deploy_app.yml
@@ -25,7 +23,7 @@
2523
artifacts: true
2624
- job: js-sdks-build
2725
artifacts: true
28-
- job: rs-sdk-build-wasm-browser
26+
- job: rs-core-uniffi-web-build
2927
artifacts: true
3028

3129
app-web-image:
@@ -52,7 +50,7 @@ app-web-image:
5250
stage: build
5351
image: node:24-slim
5452
before_script:
55-
- npm install -g pnpm@9.5.0
53+
- npm install -g pnpm@10.19.0
5654
- pnpm config set @polycentric:registry https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/
5755
- pnpm install
5856
- apt-get update && apt-get install -y --no-install-recommends git

.gitlab/ci/build_js_sdks.yml

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,42 +5,46 @@
55
when: always
66
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
77
changes:
8-
- packages/**/*
9-
- apps/**/*
8+
- packages/js-*/**/*
109
- .gitlab/ci/build_js_sdks.yml
1110
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
1211
when: never
1312
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
1413
changes:
15-
- packages/**/*
16-
- apps/**/*
14+
- packages/js-*/**/*
1715
- .gitlab/ci/build_js_sdks.yml
1816

1917
.js-sdks-base:
2018
extends: .js-sdk-workflow
2119
before_script:
22-
- npm install -g pnpm@9.5.0
20+
- npm install -g pnpm@10.19.0
2321
- pnpm config set @polycentric:registry https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/
2422
- pnpm install
25-
needs:
26-
- job: rs-sdk-build-wasm-browser
27-
artifacts: true
2823

2924
js-sdks-format-check:
3025
extends: .js-sdks-base
31-
stage: build
26+
stage: check
3227
script:
3328
- pnpm format
29+
allow_failure: true
3430

3531
js-sdks-build:
3632
extends: .js-sdks-base
3733
stage: build
3834
script:
39-
- pnpm build
35+
- pnpm --filter='./packages/js-*' run build
4036
artifacts:
4137
paths:
4238
- packages/js-*/dist
4339
expire_in: 1 week
40+
needs:
41+
- job: rs-core-uniffi-web-build
42+
artifacts: true
43+
rules:
44+
- !reference [.js-sdk-workflow, rules]
45+
- !reference [.rs-core-workflow, rules]
46+
- !reference [.rn-sdk-workflow, rules]
47+
- !reference [.app-workflow, rules]
4448

4549
.js-sdks-publish-npm:
4650
rules:

.gitlab/ci/build_rn_sdk.yml

Lines changed: 83 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,117 @@
11
.rn-sdk-workflow:
2-
image: node:24-slim
32
rules:
43
- if: $CI_COMMIT_TAG =~ /^rn-sdk-/
54
when: always
65
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
76
changes:
8-
- packages/**/*
9-
- apps/**/*
7+
- packages/react-native/**/*
108
- .gitlab/ci/build_rn_sdk.yml
119
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
1210
when: never
1311
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
1412
changes:
15-
- packages/**/*
16-
- apps/**/*
13+
- packages/react-native/**/*
1714
- .gitlab/ci/build_rn_sdk.yml
1815

16+
rn-android-build:
17+
extends: .rn-sdk-workflow
18+
image: $RUST_IMAGE
19+
stage: build
20+
rules:
21+
- !reference [.rn-sdk-workflow, rules]
22+
- !reference [.rs-core-workflow, rules]
23+
- !reference [.app-workflow, rules]
24+
cache:
25+
- key:
26+
files:
27+
- pnpm-lock.yaml
28+
prefix: ubrn-target
29+
paths:
30+
- node_modules/.pnpm/uniffi-bindgen-react-native@*/node_modules/uniffi-bindgen-react-native/target
31+
script:
32+
- cd packages/react-native
33+
- |
34+
rustup target add \
35+
aarch64-linux-android \
36+
armv7-linux-androideabi \
37+
i686-linux-android \
38+
x86_64-linux-android
39+
- pnpm i
40+
- pnpm ubrn:android --release
41+
artifacts:
42+
paths:
43+
- packages/react-native/android/src/main/jniLibs
44+
expire_in: 1 week
45+
46+
.rn-sdk-ios-build:
47+
extends: .rn-sdk-workflow
48+
stage: build
49+
rules:
50+
- !reference [.rn-sdk-workflow, rules]
51+
- !reference [.rs-core-workflow, rules]
52+
- !reference [.app-workflow, rules]
53+
tags:
54+
- macscript
55+
variables:
56+
GIT_STRATEGY: clone
57+
before_script:
58+
- env | grep '^CI_' > .cienv
59+
artifacts:
60+
expire_in: 1 week
61+
62+
rn-ios-build:
63+
extends: .rn-sdk-ios-build
64+
script:
65+
- |
66+
cirrus run buildReactNativeIOS \
67+
--artifacts-dir . \
68+
--env-file .cienv
69+
- mkdir -p packages/react-native/ios
70+
- cp -R buildReactNativeIOS/binary/packages/react-native/ios/. packages/react-native/ios/
71+
- cp -R buildReactNativeIOS/xcframework/packages/react-native/PolycentricReactNativeFramework.xcframework packages/react-native/
72+
artifacts:
73+
paths:
74+
- packages/react-native/ios
75+
- packages/react-native/PolycentricReactNativeFramework.xcframework
76+
expire_in: 1 week
77+
78+
rn-ios-tart-prune:
79+
extends: .rn-sdk-ios-build
80+
needs:
81+
- job: rn-ios-build
82+
artifacts: false
83+
before_script: []
84+
script:
85+
- tart prune --entries vms --older-than 2
86+
1987
.rn-sdk-base:
2088
extends: .rn-sdk-workflow
89+
image: node:24-slim
2190
before_script:
22-
- npm install -g pnpm@9.5.0
91+
- npm install -g pnpm@10.19.0
2392
- pnpm config set @polycentric:registry https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/
2493
- pnpm install
2594
needs:
2695
- job: js-sdks-build
2796
artifacts: true
28-
- job: rs-sdk-build-android-arm64
29-
artifacts: true
30-
- job: rs-sdk-build-android-armv7
97+
- job: rn-android-build
3198
artifacts: true
32-
- job: rs-sdk-build-android-x86
99+
- job: rn-ios-build
33100
artifacts: true
34-
- job: rs-sdk-build-android-x86_64
35-
artifacts: true
36-
- job: rs-sdk-build-ios-device
37-
artifacts: true
38-
- job: rs-sdk-build-wasm-browser
101+
- job: rs-core-uniffi-web-build
39102
artifacts: true
40103

41104
rn-sdk-build:
42105
extends: .rn-sdk-base
43106
stage: build
44107
script:
45-
- mkdir -p packages/react-native/android/libs/arm64-v8a
46-
- cp target/aarch64-linux-android/release-rs-core/libpolycentric_core.a packages/react-native/android/libs/arm64-v8a/
47-
- mkdir -p packages/react-native/android/libs/armeabi-v7a
48-
- cp target/armv7-linux-androideabi/release-rs-core/libpolycentric_core.a packages/react-native/android/libs/armeabi-v7a/
49-
- mkdir -p packages/react-native/android/libs/x86
50-
- cp target/i686-linux-android/release-rs-core/libpolycentric_core.a packages/react-native/android/libs/x86/
51-
- mkdir -p packages/react-native/android/libs/x86_64
52-
- cp target/x86_64-linux-android/release-rs-core/libpolycentric_core.a packages/react-native/android/libs/x86_64/
53-
- mkdir -p packages/react-native/ios/libs/aarch64-apple-ios
54-
- cp buildRsCoreIOSDevice/binary/libpolycentric_core-ios-device.a packages/react-native/ios/libs/aarch64-apple-ios/libpolycentric_core.a
55108
- cd packages/react-native
56109
- pnpm build
57110
artifacts:
58111
paths:
59-
- packages/react-native/lib
60-
- packages/react-native/android/libs
61-
- packages/react-native/ios/libs
112+
- packages/react-native
62113
expire_in: 1 week
114+
rules:
115+
- !reference [.rn-sdk-workflow, rules]
116+
- !reference [.rs-core-workflow, rules]
117+
- !reference [.app-workflow, rules]

0 commit comments

Comments
 (0)