Skip to content

Commit a287a43

Browse files
committed
CI: Add FreeBSD build
1 parent 7704419 commit a287a43

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

.github/workflows/build.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,64 @@ jobs:
2222
- name: Run tests (macos)
2323
run: sudo "PATH=$PATH" cargo test --verbose
2424
if: runner.os == 'macOS'
25+
26+
build-freebsd:
27+
name: build (FreeBSD)
28+
runs-on: ubuntu-22.04
29+
30+
steps:
31+
- name: Checkout repository
32+
uses: actions/checkout@v4
33+
34+
- name: Install Rust
35+
uses: dtolnay/rust-toolchain@984d158d699777abbaa79de23de3134e60c187fa # stable branch
36+
37+
- name: Cross-compile crate
38+
run: |
39+
wget -q -O cross https://github.com/acj/freebsd-firecracker/releases/download/v0.0.10/cross
40+
chmod +x cross
41+
mv cross /usr/local/bin/cross
42+
43+
cross build --release --target x86_64-unknown-freebsd
44+
cross test --release --no-run --target x86_64-unknown-freebsd
45+
46+
- name: Launch Firecracker VM
47+
uses: acj/freebsd-firecracker-action@v0.1.1
48+
with:
49+
verbose: false
50+
pre-run: |
51+
rm -rf .cargo
52+
ln -s $HOME/.cargo .cargo
53+
54+
include_path="$(mktemp)"
55+
cat <<EOF > $include_path
56+
target
57+
target/x86_64-unknown-freebsd
58+
target/x86_64-unknown-freebsd/release
59+
target/x86_64-unknown-freebsd/release/deps
60+
target/x86_64-unknown-freebsd/release/deps/read_process_memory-*
61+
target/x86_64-unknown-freebsd/release/test
62+
EOF
63+
64+
rsync -r -e "ssh" \
65+
--relative \
66+
--copy-links \
67+
--include-from "$include_path" \
68+
--exclude "*" \
69+
. firecracker:
70+
rm -f "$exclude_path"
71+
run-in-vm: |
72+
mkdir -p /home/runner
73+
ln -s $(pwd)/.cargo /home/runner/.cargo
74+
75+
failed=0
76+
for testbin in $(find target/x86_64-unknown-freebsd/release/deps -type f -perm -u+x ! -name "*.d" -print); do
77+
if ! $testbin; then
78+
failed=1
79+
fi
80+
done
81+
82+
if [ $failed -ne 0 ]; then
83+
exit 1
84+
fi
85+
post-run: ""

0 commit comments

Comments
 (0)