-
Notifications
You must be signed in to change notification settings - Fork 0
203 lines (167 loc) · 6.33 KB
/
Copy pathci.yml
File metadata and controls
203 lines (167 loc) · 6.33 KB
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
env:
OPENSSL_PACKAGE_VERSION: 3.0.2-0ubuntu1.25
UBUNTU_SNAPSHOT: 20260702T000000Z
jobs:
crypto-pinned:
runs-on: ubuntu-22.04
timeout-minutes: 15
container:
image: ubuntu:22.04@sha256:0d779ea97881505f5ef0039336ee85edba27519bdba968c284c86ee066a973c8
defaults:
run:
shell: bash
steps:
- name: Install dependencies from the pinned Ubuntu snapshot
run: |
printf '%s\n' \
"deb [snapshot=${UBUNTU_SNAPSHOT}] http://archive.ubuntu.com/ubuntu jammy main" \
"deb [snapshot=${UBUNTU_SNAPSHOT}] http://archive.ubuntu.com/ubuntu jammy-updates main" \
"deb [snapshot=${UBUNTU_SNAPSHOT}] http://security.ubuntu.com/ubuntu jammy-security main" \
> /etc/apt/sources.list
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends \
build-essential \
ca-certificates \
curl \
git \
"libssl3=${OPENSSL_PACKAGE_VERSION}" \
"libssl-dev=${OPENSSL_PACKAGE_VERSION}" \
"openssl=${OPENSSL_PACKAGE_VERSION}"
- uses: actions/checkout@v5
- name: Install MoonBit
run: |
curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash
echo "$HOME/.moon/bin" >> "$GITHUB_PATH"
- name: Verify and record the exact crypto build identity
run: |
test "$(dpkg-query -W -f='${Version}' openssl)" = "$OPENSSL_PACKAGE_VERSION"
test "$(dpkg-query -W -f='${Version}' libssl3)" = "$OPENSSL_PACKAGE_VERSION"
test "$(dpkg-query -W -f='${Version}' libssl-dev)" = "$OPENSSL_PACKAGE_VERSION"
dpkg-query -W openssl libssl3 libssl-dev | tee openssl-packages.txt
openssl version -a | tee openssl-version.txt
moon version --all
- name: Resolve MoonBit dependencies
run: moon update
- name: Check and test against the pinned OpenSSL build
run: |
moon check --target native --warn-list +73
moon test --target native
- name: Archive pinned OpenSSL build identity
if: always()
uses: actions/upload-artifact@v4
with:
name: openssl-build-identity
path: |
openssl-packages.txt
openssl-version.txt
if-no-files-found: error
native:
runs-on: ubuntu-22.04
timeout-minutes: 15
steps:
- uses: actions/checkout@v5
- name: Check out pinned Rust oracle
uses: actions/checkout@v5
with:
repository: webrtc-rs/rtc
ref: a10cd2c18f7c4e646e83f6f00b792ef38ac3cdb2
path: upstream/rtc
- name: Install native dependencies
run: |
sudo apt-get update
sudo apt-get install --yes build-essential libssl-dev
- name: Install MoonBit
run: |
curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash
echo "$HOME/.moon/bin" >> "$GITHUB_PATH"
- name: Verify toolchain and OpenSSL
run: |
moon version --all
openssl version -a | tee openssl-version.txt
openssl version | grep -E '^OpenSSL 3\.'
- name: Resolve MoonBit dependencies
run: moon update
- name: Verify upstream inventory
run: |
scripts/audit-upstream \
--upstream upstream/rtc \
--write-ledger docs/upstream-coverage.json
git diff --exit-code -- docs/upstream-coverage.json
- name: Check formatting
run: moon fmt --check
- name: Strict C shim compile
run: |
cc -std=c11 -Wall -Wextra -Werror \
-I"$HOME/.moon/include" \
-fsyntax-only internal/crypto/openssl_shim.c
cc -std=c11 -Wall -Wextra -Werror \
-I"$HOME/.moon/include" \
-fsyntax-only runtime/async/clock.c
- name: Typecheck native packages
run: moon check --target native --warn-list +73
- name: Run native and documentation tests
run: moon test --target native
- name: Build native release benchmarks
run: moon bench --release --target native --no-parallelize --build-only
- name: Build fixed Rust interoperability peer
run: |
rustc --version | grep -F 'rustc 1.90.0'
cargo check --locked --manifest-path interop/rust-peer/Cargo.toml
- name: Run Rust DataChannel and audio/video interoperability in both roles
run: scripts/test-rust-interop
- name: Install pinned Node and Chromium interoperability dependencies
uses: actions/setup-node@v4
with:
node-version: 24.3.0
cache: npm
cache-dependency-path: interop/chromium/package-lock.json
- name: Install pinned Playwright and Chromium revision
working-directory: interop/chromium
run: |
npm ci
npx playwright install --with-deps chromium
- name: Run Chromium DataChannel and audio/video interoperability in both roles
run: scripts/test-chromium-interop
- name: Run DataChannel through digest-pinned coturn
run: scripts/test-coturn-interop
- name: Archive coturn log
if: always()
uses: actions/upload-artifact@v4
with:
name: coturn-log
path: ${{ runner.temp }}/rtc-mbt-coturn.log
if-no-files-found: ignore
- name: Verify generated public interfaces
run: |
moon info
test -z "$(git status --porcelain -- '*.mbti')"
git diff --exit-code -- '*.mbti'
- name: Archive OpenSSL build identity
uses: actions/upload-artifact@v4
with:
name: openssl-host-version
path: openssl-version.txt
asan:
runs-on: ubuntu-22.04
timeout-minutes: 20
steps:
- uses: actions/checkout@v5
- name: Install native dependencies
run: |
sudo apt-get update
sudo apt-get install --yes build-essential libasan8 libssl-dev
- name: Install MoonBit
run: |
curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash
echo "$HOME/.moon/bin" >> "$GITHUB_PATH"
- name: Resolve MoonBit dependencies
run: moon update
- name: Run C stubs and native test entries under ASan
run: scripts/run-asan