aboutsummaryrefslogtreecommitdiff
path: root/Earthfile
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-03-05 05:58:41 -0800
committerFuwn <[email protected]>2024-03-05 05:58:41 -0800
commit71f4b701d0341323f03e33d96f8db59796bbe6ad (patch)
tree0158bc5f527ce0c5fd28086f7b5c9e37f141661e /Earthfile
parentfeat(rustc): bump nightly (diff)
downloadlocus-71f4b701d0341323f03e33d96f8db59796bbe6ad.tar.xz
locus-71f4b701d0341323f03e33d96f8db59796bbe6ad.zip
ci(earthly): switch to earthly from docker
Diffstat (limited to 'Earthfile')
-rw-r--r--Earthfile62
1 files changed, 62 insertions, 0 deletions
diff --git a/Earthfile b/Earthfile
new file mode 100644
index 0000000..a6cd4ae
--- /dev/null
+++ b/Earthfile
@@ -0,0 +1,62 @@
+VERSION 0.7
+
+docker:
+ ARG tag=latest
+
+ FROM gcr.io/distroless/static:nonroot
+
+ WORKDIR /locus
+
+ COPY +build/locus .
+ COPY +build/content ./content
+
+ # CBA
+ USER root
+
+ EXPOSE 1965
+
+ ENTRYPOINT ["./locus"]
+
+ SAVE IMAGE --push fuwn/locus:$tag
+
+deps:
+ ARG rustc="nightly-2024-02-01"
+
+ FROM clux/muslrust:$rustc
+
+ RUN curl "https://static.rust-lang.org/rustup/archive/${RUSTUP_VER}/${RUST_ARCH}/rustup-init" -o rustup-init \
+ && chmod +x rustup-init \
+ && ./rustup-init -y --default-toolchain $rustc --profile minimal \
+ && rm rustup-init
+ RUN ~/.cargo/bin/rustup target add x86_64-unknown-linux-musl
+ RUN echo "[build]\ntarget = \"x86_64-unknown-linux-musl\"" > ~/.cargo/config
+ RUN rustup component add rust-src --toolchain nightly-2024-02-01-x86_64-unknown-linux-gnu
+
+build:
+ FROM +deps
+
+ WORKDIR /source
+
+ RUN cargo new locus
+
+ WORKDIR /source/locus
+
+ COPY amenadiel/ ./amenadiel/
+ COPY Cargo.* .
+
+ RUN cargo build --release -Zbuild-std
+
+ COPY .git .git
+ COPY content content
+ COPY src src
+ COPY build.rs build.rs
+ COPY yarte.toml yarte.toml
+
+ RUN --mount=type=cache,target=/source/locus/target \
+ --mount=type=cache,target=/root/.cargo/registry \
+ cargo build --release --bin locus \
+ && strip -s /source/locus/target/x86_64-unknown-linux-musl/release/locus \
+ && mv /source/locus/target/x86_64-unknown-linux-musl/release/locus .
+
+ SAVE ARTIFACT /source/locus/locus
+ SAVE ARTIFACT /source/locus/content