6
6
branches : [main]
7
7
8
8
jobs :
9
- build-test :
9
+
10
+ automerge-dependencies :
10
11
runs-on : macos-14
11
12
env :
12
13
LOCAL_BUILD : true
13
14
DEVELOPER_DIR : /Applications/Xcode_15.4.app
15
+ concurrency :
16
+ group : automerge-dependencies-${{ github.head_ref || github.run_id }}
17
+ cancel-in-progress : true
14
18
steps :
15
- - uses : actions/checkout@v3
19
+ - uses : actions/checkout@v4
20
+ - name : Cache Automerge XCFramework and library
21
+ id : cache-automerge
22
+ uses : actions/cache@v4
23
+ with :
24
+ path : |
25
+ automergeFFI.xcframework
26
+ automergeFFI.xcframework.zip
27
+ libuniffi_automerge.a
28
+ libuniffi_automerge_threads.a
29
+ key : automerge-dependencies-{{ hashFiles(AutomergeUniffi/automerge.swift) }}-{{ hashFiles(rust/Cargo.lock) }}
16
30
- uses : actions-rs/toolchain@v1
17
31
with :
18
32
profile : minimal
19
- toolchain : 1.78 .0
33
+ toolchain : 1.81 .0
20
34
default : true
21
- - name : get xcode information
22
- run : |
23
- xcodebuild -version
24
- swift --version
25
- - name : build xcframework
35
+ - name : Select Xcode 15.4
36
+ run : sudo xcode-select -s /Applications/Xcode_15.4.app
37
+ - name : Build Automerge XCFramework and library
38
+ if : steps.cache-automerge.outputs.cache-hit != 'true'
26
39
run : ./scripts/build-xcframework.sh
27
- - name : compress framework
40
+ - name : Compress Automerge XCFramework
41
+ if : steps.cache-automerge.outputs.cache-hit != 'true'
28
42
run : ./scripts/compress-framework.sh
43
+ - uses : actions/upload-artifact@v4
44
+ if : steps.cache-automerge.outputs.cache-hit != 'true'
45
+ with :
46
+ name : libuniffi_automerge
47
+ path : |
48
+ libuniffi_automerge.a
49
+ libuniffi_automerge_threads.a
50
+
51
+ mac :
52
+ runs-on : macos-14
53
+ needs : automerge-dependencies
54
+ steps :
55
+ - uses : actions/checkout@v4
56
+ - name : Select Xcode 15.4
57
+ run : sudo xcode-select -s /Applications/Xcode_15.4.app
58
+ - name : Restore Automerge XCFramework and library
59
+ uses : actions/cache/restore@v4
60
+ with :
61
+ path : |
62
+ automergeFFI.xcframework
63
+ automergeFFI.xcframework.zip
64
+ libuniffi_automerge.a
65
+ libuniffi_automerge_threads.a
66
+ key : automerge-dependencies-{{ hashFiles(AutomergeUniffi/automerge.swift) }}-{{ hashFiles(rust/Cargo.lock) }}
67
+ - name : Get swift version
68
+ run : swift --version
29
69
- name : Swift tests
30
70
run : swift test
31
71
32
- build-wasm32-unknown-wasi :
72
+ wasm :
33
73
runs-on : ubuntu-latest
74
+ needs : automerge-dependencies
75
+ strategy :
76
+ matrix :
77
+ include :
78
+ - toolchain : swift-DEVELOPMENT-SNAPSHOT-2024-10-08-a
79
+ swift-sdk : swift-wasm-DEVELOPMENT-SNAPSHOT-2024-10-15-a
80
+ checksum : 229cd9d3b0ed582c7ef7c3064888ad78764e4743b5a770df92554a94513f53fb
34
81
steps :
35
82
- uses : actions/checkout@v4
36
- - uses : actions-rs/toolchain@v1
37
- with :
38
- profile : minimal
39
- toolchain : 1.78.0
40
- default : true
41
- - run : rustup target add wasm32-wasi
42
- - uses : swiftwasm/setup-swiftwasm@v1
83
+ - uses : bytecodealliance/actions/wasmtime/setup@v1
84
+ - name : Restore Automerge XCFramework and library
85
+ uses : actions/cache/restore@v4
43
86
with :
44
- swift-version : " wasm-5.9.1-RELEASE"
45
- # - run: cargo build --manifest-path rust/Cargo.toml --target wasm32-wasi --release
46
- - run : scripts/ci/wasi-regen-swift.sh
47
- - uses : actions/upload-artifact@v4
87
+ path : |
88
+ automergeFFI.xcframework
89
+ automergeFFI.xcframework.zip
90
+ libuniffi_automerge.a
91
+ libuniffi_automerge_threads.a
92
+ key : automerge-dependencies-{{ hashFiles(AutomergeUniffi/automerge.swift) }}-{{ hashFiles(rust/Cargo.lock) }}
93
+ - name : Cache Toolchain for WebAssembly
94
+ id : cache-wasm-toolchain
95
+ uses : actions/cache@v4
48
96
with :
49
- name : libuniffi_automerge-wasm32-unknown-wasi.a
50
- path : ./rust/target/wasm32-wasi/release/libuniffi_automerge.a
51
- - run : swift build --triple wasm32-unknown-wasi
97
+ path : /tmp/swift-toolchain.tar.gz
98
+ key : wasm-toolchain-${{ matrix.checksum }}
99
+ - name : Download Toolchain for WebAssembly
100
+ if : steps.cache-wasm-toolchain.outputs.cache-hit != 'true'
101
+ run : |
102
+ SWIFT_TOOLCHAIN_TAG="${{ matrix.toolchain }}"
103
+ set -ex
104
+ curl -f -o /tmp/swift-toolchain.tar.gz "https://download.swift.org/development/ubuntu2204/$SWIFT_TOOLCHAIN_TAG/$SWIFT_TOOLCHAIN_TAG-ubuntu22.04.tar.gz"
105
+ - name : Install Swift and Swift SDK for WebAssembly
106
+ run : |
107
+ PREFIX=/opt/swift
108
+ SWIFT_SDK_TAG="${{ matrix.swift-sdk }}"
109
+ set -ex
110
+ sudo mkdir -p $PREFIX; sudo tar -xzf /tmp/swift-toolchain.tar.gz -C $PREFIX --strip-component 1
111
+ $PREFIX/usr/bin/swift sdk install "https://github.com/swiftwasm/swift/releases/download/$SWIFT_SDK_TAG/$SWIFT_SDK_TAG-wasm32-unknown-wasi.artifactbundle.zip" --checksum ${{ matrix.checksum }}
112
+ echo "$PREFIX/usr/bin" >> $GITHUB_PATH
113
+ - name : Build tests
114
+ run : swift build --swift-sdk wasm32-unknown-wasi --build-tests -Xlinker "`pwd`/libuniffi_automerge.a" -Xlinker -z -Xlinker stack-size=$((1024 * 1024))
115
+ - name : Run tests
116
+ run : wasmtime run --wasm max-wasm-stack=$((1024 * 1024)) --dir . .build/debug/AutomergePackageTests.wasm
52
117
53
118
rustfmt :
54
119
runs-on : macos-latest
55
120
steps :
56
- - uses : actions/checkout@v3
121
+ - uses : actions/checkout@v4
57
122
- uses : actions-rs/toolchain@v1
58
123
with :
59
124
profile : minimal
60
- toolchain : 1.78 .0
125
+ toolchain : 1.81 .0
61
126
default : true
62
127
components : rustfmt
63
128
- name : Clippy
@@ -66,11 +131,11 @@ jobs:
66
131
clippy :
67
132
runs-on : macos-latest
68
133
steps :
69
- - uses : actions/checkout@v3
134
+ - uses : actions/checkout@v4
70
135
- uses : actions-rs/toolchain@v1
71
136
with :
72
137
profile : minimal
73
- toolchain : 1.78 .0
138
+ toolchain : 1.81 .0
74
139
default : true
75
140
components : clippy
76
141
- name : Clippy
0 commit comments