-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathDockerfile.ci
More file actions
72 lines (64 loc) · 1.9 KB
/
Dockerfile.ci
File metadata and controls
72 lines (64 loc) · 1.9 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
# CI build image for octez-manager
# Contains OCaml, opam, and all public dependencies pre-installed
# Miaou is pinned at CI runtime
# Upgrade to OCaml 5.3 to fix bisect_ppx/dune compatibility issues in CI
# Previous 5.1 image caused indefinite hangs during coverage instrumentation
FROM ocaml/opam:alpine-ocaml-5.3 AS base
# Switch to root for system package installation
USER root
# Install system dependencies for static linking
RUN apk add --no-cache \
zlib-dev \
zlib-static \
gmp-dev \
gmp-static \
libffi-dev \
git \
m4 \
make \
patch \
gcc \
musl-dev
# Switch back to opam user
USER opam
WORKDIR /home/opam
# Update opam and install common dependencies that won't change often
RUN opam update && opam install -y \
dune \
ocamlformat \
cmdliner \
rresult \
yojson \
bos \
eio \
eio_main \
eio_posix \
cohttp-eio \
tls-eio \
tls \
ca-certs \
domain-name \
mirage-crypto-rng \
uri \
lambda-term \
linenoise \
ppx_deriving \
alcotest \
bisect_ppx
# Clean up opam cache to reduce image size
RUN opam clean -a -c -s --logs
# GitHub Actions runs containers as root by default
# Initialize opam for root user, pointing to the existing switch
USER root
RUN mkdir -p /root/.opam && \
cp -r /home/opam/.opam/config /root/.opam/ && \
ln -s /home/opam/.opam/5.3 /root/.opam/5.3 && \
ln -s /home/opam/.opam/repo /root/.opam/repo && \
ln -s /home/opam/.opam/download-cache /root/.opam/download-cache && \
opam switch set 5.3
ENV OPAM_SWITCH_PREFIX=/home/opam/.opam/5.3
ENV CAML_LD_LIBRARY_PATH=/home/opam/.opam/5.3/lib/stublibs:/home/opam/.opam/5.3/lib/ocaml/stublibs:/home/opam/.opam/5.3/lib/ocaml
ENV OCAML_TOPLEVEL_PATH=/home/opam/.opam/5.3/lib/toplevel
ENV PATH=/home/opam/.opam/5.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
WORKDIR /github/workspace
# trigger rebuild