The code and data behind xeiaso.net
1VERSION 0.8
2FROM alpine:edge
3WORKDIR /app
4
5deps:
6 FROM golang:1.24-alpine
7 WORKDIR /app
8
9 COPY go.mod go.sum ./
10 RUN go mod download
11
12 SAVE ARTIFACT go.mod
13
14fonts:
15 FROM alpine:edge
16 WORKDIR /fonts
17 RUN apk add -U unzip ca-certificates curl \
18 && curl -Lo iosevka.zip https://cdn.xeiaso.net/static/pkg/iosevka/ttf.zip \
19 && unzip -d /fonts iosevka.zip
20
21 SAVE ARTIFACT /fonts/ttf
22
23dhall-json:
24 FROM alpine:edge
25 RUN apk add -U curl bzip2 ca-certificates \
26 && curl -L -o dhall-linux.tar.bz2 https://github.com/dhall-lang/dhall-haskell/releases/download/1.42.0/dhall-json-1.7.12-x86_64-linux.tar.bz2 \
27 && tar -xvjf dhall-linux.tar.bz2 \
28 && mv bin/dhall-to-json .
29
30 SAVE ARTIFACT dhall-to-json
31
32build-patreon-saasproxy:
33 FROM +deps
34 COPY . .
35
36 RUN --mount=type=cache,target=/root/.cache CGO_ENABLED=0 go build -gcflags "all=-N -l" -o patreon-saasproxy ./cmd/patreon-saasproxy
37
38 SAVE ARTIFACT patreon-saasproxy
39
40patreon-saasproxy:
41 FROM alpine:edge
42 WORKDIR /app
43
44 COPY +build-patreon-saasproxy/patreon-saasproxy /app/patreon-saasproxy
45
46 RUN apk add -U ca-certificates
47
48 CMD ["./patreon-saasproxy"]
49
50 LABEL org.opencontainers.image.source="https://github.com/Xe/site"
51
52 SAVE IMAGE --push ghcr.io/xe/site/patreon:latest
53
54build-xesite:
55 FROM +deps
56 COPY . .
57
58 RUN --mount=type=cache,target=/root/.cache CGO_ENABLED=0 go build -gcflags "all=-N -l" -o xesite ./cmd/xesite
59
60 SAVE ARTIFACT xesite
61
62xesite:
63 FROM alpine:edge
64 WORKDIR /app
65
66 RUN apk add -U ca-certificates deno typst mailcap
67 ENV TYPST_FONT_PATHS=/app/fonts
68
69 COPY +build-xesite/xesite /app/xesite
70 COPY +fonts/ttf /app/fonts
71 COPY +dhall-json/dhall-to-json /usr/local/bin/dhall-to-json
72
73 CMD ["/app/xesite"]
74
75 LABEL org.opencontainers.image.source="https://github.com/Xe/site"
76
77 SAVE IMAGE --push ghcr.io/xe/site/bin:latest
78
79all:
80 BUILD --platform=linux/amd64 +xesite
81 BUILD --platform=linux/amd64 +patreon-saasproxy