Skip to content

Commit 7a47561

Browse files
committed
CI: Test the compatibility between the development and release versions
At the moment, there is no constraint between the versions of the OCaml/Unikraft packages (aka the ones currently using the version number 1.0.0) and the Unikraft ones (aka the ones currently using the version number 0.18.0). So this adds the possibility to test in CI the compatibility between various versions, in particular between packages released to the opam-repository and packages in development.
1 parent 523446f commit 7a47561

File tree

1 file changed

+49
-25
lines changed

1 file changed

+49
-25
lines changed

.github/workflows/build.yml

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,68 +16,92 @@ jobs:
1616
test:
1717
name: Run examples on both architectures
1818
runs-on: ubuntu-latest
19+
strategy:
20+
fail-fast: false
21+
matrix:
22+
include:
23+
- ocukver: dev
24+
ukver: dev
25+
- ocukver: dev
26+
ukver: 0.18.0
27+
# The released OCaml/Unikraft packages sometimes fail to build because
28+
# the patches fail to apply
29+
# - ocukver: 1.0.0
30+
# ukver: dev
1931
steps:
2032
- name: Checkout code
2133
uses: actions/checkout@v4
2234
- name: Read the version number from gen_opams.ml
23-
run: |
24-
printf 'OCUKVER=%s\n' \
25-
"$(awk '/^let version_ocaml_/ {gsub(/"/,"");print $4;}' gen_opams.ml)" \
26-
>> "$GITHUB_ENV"
27-
printf 'UKVER=%s\n' \
28-
"$(awk '/^let version_unikraft/ {gsub(/"/,"");print $4;}' gen_opams.ml)" \
29-
>> "$GITHUB_ENV"
35+
env:
36+
OCUKVER: ${{ matrix.ocukver }}
37+
UKVER: ${{ matrix.ukver }}
38+
run: |
39+
# OCaml/Unikraft version number
40+
V="$(awk '/^let version_o/ {gsub(/"/,"");print $4;}' gen_opams.ml)"
41+
[[ "$OCUKVER" = dev ]] && OCUKVER="$V"
42+
printf 'OCUKVER=%s\n' "$OCUKVER" >> "$GITHUB_ENV"
43+
# Unikraft version number
44+
U="$(awk '/^let version_u/ {gsub(/"/,"");print $4;}' gen_opams.ml)"
45+
[[ "$UKVER" = dev ]] && UKVER="$U"
46+
printf 'UKVER=%s\n' "$UKVER" >> "$GITHUB_ENV"
47+
# Log
48+
printf 'Dev versions:\n- OCaml/Unikraft: %s\n- Unikraft: %s\n' \
49+
"$V" "$U"
3050
- name: Install OCaml compiler
3151
uses: ocaml/setup-ocaml@v3
3252
with:
3353
ocaml-compiler: 5.3.0
3454
# We need to pin our packages with their real version numbers, to
3555
# satisfy the dependency bounds of the other packages
3656
opam-pin: false
37-
- name: Pin packages
57+
- name: Pin Unikraft packages
3858
run: |
3959
opam pin add -yn "https://github.com/mirage/unikraft.git#$UKVER+mirage"
4060
opam pin add -yn "https://github.com/mirage/unikraft-lib-musl.git#$UKVER+mirage"
41-
opam pin add -yn ocaml-unikraft.$OCUKVER .
42-
opam pin add -yn ocaml-unikraft-arm64.$OCUKVER .
4361
opam pin add -yn ocaml-unikraft-backend-firecracker.$UKVER .
4462
opam pin add -yn ocaml-unikraft-backend-firecracker-arm64.$UKVER .
4563
opam pin add -yn ocaml-unikraft-backend-firecracker-x86_64.$UKVER .
4664
opam pin add -yn ocaml-unikraft-backend-qemu.$UKVER .
4765
opam pin add -yn ocaml-unikraft-backend-qemu-arm64.$UKVER .
4866
opam pin add -yn ocaml-unikraft-backend-qemu-x86_64.$UKVER .
49-
opam pin add -yn ocaml-unikraft-default-arm64.$OCUKVER .
50-
opam pin add -yn ocaml-unikraft-default-x86_64.$OCUKVER .
5167
opam pin add -yn ocaml-unikraft-option-debug.$UKVER .
5268
opam pin add -yn ocaml-unikraft-toolchain-arm64.$UKVER .
5369
opam pin add -yn ocaml-unikraft-toolchain-x86_64.$UKVER .
70+
if: ${{ matrix.ukver == 'dev' }}
71+
- name: Pin OCaml/Unikraft packages
72+
run: |
73+
opam pin add -yn ocaml-unikraft.$OCUKVER .
74+
opam pin add -yn ocaml-unikraft-arm64.$OCUKVER .
75+
opam pin add -yn ocaml-unikraft-default-arm64.$OCUKVER .
76+
opam pin add -yn ocaml-unikraft-default-x86_64.$OCUKVER .
5477
opam pin add -yn ocaml-unikraft-x86_64.$OCUKVER .
78+
if: ${{ matrix.ocukver == 'dev' }}
5579
- name: Install extra packages
5680
run: |
5781
sudo apt-get update -y
5882
sudo apt-get install -y qemu-system-x86 qemu-system-arm
5983
opam install dune
6084
- name: Install arch-specific packages
6185
run: |
62-
opam install \
63-
ocaml-unikraft-x86_64 \
64-
ocaml-unikraft-backend-qemu-x86_64 \
65-
ocaml-unikraft-backend-firecracker-x86_64 \
66-
ocaml-unikraft-arm64 \
67-
ocaml-unikraft-backend-qemu-arm64 \
68-
ocaml-unikraft-backend-firecracker-arm64
86+
opam install \
87+
ocaml-unikraft-x86_64.$OCUKVER \
88+
ocaml-unikraft-backend-qemu-x86_64.$UKVER \
89+
ocaml-unikraft-backend-firecracker-x86_64.$UKVER \
90+
ocaml-unikraft-arm64.$OCUKVER \
91+
ocaml-unikraft-backend-qemu-arm64.$UKVER \
92+
ocaml-unikraft-backend-firecracker-arm64.$UKVER
6993
- name: Show configuration
7094
run: |
7195
opam exec -- ocamlc -config
7296
opam config list
7397
opam list
7498
- name: Install default packages
7599
run: |
76-
opam install \
77-
ocaml-unikraft \
78-
ocaml-unikraft-default-arm64 \
79-
ocaml-unikraft-backend-qemu \
80-
ocaml-unikraft-backend-firecracker
100+
opam install \
101+
ocaml-unikraft.$OCUKVER \
102+
ocaml-unikraft-default-arm64.$OCUKVER \
103+
ocaml-unikraft-backend-qemu.$UKVER \
104+
ocaml-unikraft-backend-firecracker.$UKVER
81105
- name: Show toolchain configuration
82106
run: |
83107
opam exec -- ocamlfind -toolchain unikraft ocamlc -config
@@ -89,7 +113,7 @@ jobs:
89113
opam exec -- dune runtest
90114
- name: Install the other default packages
91115
run: |
92-
opam install ocaml-unikraft-default-x86_64
116+
opam install ocaml-unikraft-default-x86_64.$OCUKVER
93117
- name: Show configuration
94118
run: |
95119
opam exec -- ocamlfind -toolchain unikraft ocamlc -config

0 commit comments

Comments
 (0)