-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathEarthfile
60 lines (54 loc) · 2.01 KB
/
Earthfile
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
VERSION 0.8
FROM golang:1.22-bookworm
WORKDIR /workspace
all:
ARG VERSION=dev
BUILD --platform=linux/amd64 --platform=linux/arm64 +docker
COPY (+build/nsh --GOARCH=amd64) ./dist/nsh-linux-amd64
COPY (+build/nsh --GOARCH=arm64) ./dist/nsh-linux-arm64
COPY (+build/nsh --GOOS=darwin --GOARCH=amd64) ./dist/nsh-darwin-amd64
COPY (+build/nsh --GOOS=darwin --GOARCH=arm64) ./dist/nsh-darwin-arm64
COPY (+build/nsh --GOOS=windows --GOARCH=amd64) ./dist/nsh-windows-amd64.exe
RUN cd dist && find . -type f -exec sha256sum {} \; >> ../checksums.txt
SAVE ARTIFACT ./dist/nsh-linux-amd64 AS LOCAL dist/nsh-linux-amd64
SAVE ARTIFACT ./dist/nsh-linux-arm64 AS LOCAL dist/nsh-linux-arm64
SAVE ARTIFACT ./dist/nsh-darwin-amd64 AS LOCAL dist/nsh-darwin-amd64
SAVE ARTIFACT ./dist/nsh-darwin-arm64 AS LOCAL dist/nsh-darwin-arm64
SAVE ARTIFACT ./dist/nsh-windows-amd64.exe AS LOCAL dist/nsh-windows-amd64.exe
SAVE ARTIFACT ./checksums.txt AS LOCAL dist/checksums.txt
docker:
FROM registry.dpeckett.dev/debian:bookworm-ultraslim
ENV container=docker
COPY LICENSE /usr/share/doc/nsh/copyright
ARG TARGETARCH
COPY (+build/nsh --GOOS=linux --GOARCH=${TARGETARCH}) /usr/bin/nsh
ENTRYPOINT ["/usr/bin/nsh"]
ARG VERSION=dev
SAVE IMAGE --push ghcr.io/noisysockets/nsh:${VERSION}
SAVE IMAGE --push ghcr.io/noisysockets/nsh:latest
build:
ARG GOOS=linux
ARG GOARCH=amd64
COPY go.mod go.sum ./
RUN go mod download
COPY . .
ARG VERSION=dev
RUN CGO_ENABLED=0 go build -o nsh --ldflags "-s \
-X 'github.com/noisysockets/nsh/internal/constants.Version=${VERSION}'"
SAVE ARTIFACT ./nsh AS LOCAL dist/nsh-${GOOS}-${GOARCH}
tidy:
LOCALLY
RUN go mod tidy
RUN go fmt ./...
RUN for dir in $(find . -name 'go.mod'); do \
(cd "${dir%/go.mod}" && go mod tidy); \
done
lint:
FROM golangci/golangci-lint:v1.57.2
WORKDIR /workspace
COPY . ./
RUN golangci-lint run --timeout 5m ./...
test:
COPY . ./
RUN go test -coverprofile=coverage.out -v ./...
SAVE ARTIFACT ./coverage.out AS LOCAL coverage.out