build: provides earthfile for nightly build
Earthly is a build tool, it uses buildkitd to create reproducable and highly cacheable builds. It is used by a new experimental nightly build to easily create storj-up images. (but can be used for any ad-hoc storj-up cluster to create the images). To make the nightly more robust, I would prefer to commit the helper files (today I do a rebase every time, but sometimes it fails). More detailed information about Earthly can be found at https://earthly.dev or https://www.youtube.com/watch?v=nChpMEdOaCQ Change-Id: I683601e0558aca53b45ed3819c46c909534f8b15
This commit is contained in:
parent
8c8688ca6b
commit
29aac75d80
4
.earthlyignore
Normal file
4
.earthlyignore
Normal file
@ -0,0 +1,4 @@
|
||||
build
|
||||
.build
|
||||
release
|
||||
node_modules
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -43,3 +43,7 @@ resource.syso
|
||||
# storj-up automatically generates these files and should not be commit
|
||||
/docker-compose.yaml
|
||||
/.history/
|
||||
dist
|
||||
|
||||
# intellij project level runners. Add them explicitly if you would like to share.
|
||||
.run
|
||||
|
155
Earthfile
Normal file
155
Earthfile
Normal file
@ -0,0 +1,155 @@
|
||||
VERSION 0.6
|
||||
FROM golang:1.18
|
||||
WORKDIR /go/storj
|
||||
|
||||
multinode-web:
|
||||
FROM node:18
|
||||
WORKDIR /build
|
||||
COPY web/multinode .
|
||||
RUN ./build.sh
|
||||
SAVE ARTIFACT dist AS LOCAL web/storagenode/dist
|
||||
|
||||
wasm:
|
||||
FROM storjlabs/ci
|
||||
ENV TAG=earthly
|
||||
COPY go.mod .
|
||||
COPY go.sum .
|
||||
COPY satellite/console/wasm satellite/console/wasm
|
||||
COPY satellite/console/consolewasm satellite/console/consolewasm
|
||||
COPY scripts scripts
|
||||
RUN scripts/build-wasm.sh
|
||||
SAVE ARTIFACT release/earthly/wasm wasm AS LOCAL web/satellite/static/wasm
|
||||
|
||||
storagenode-web:
|
||||
FROM node:18
|
||||
WORKDIR /build
|
||||
COPY web/storagenode .
|
||||
RUN ./build.sh
|
||||
SAVE ARTIFACT dist AS LOCAL web/storagenode/dist
|
||||
SAVE ARTIFACT static AS LOCAL web/storagenode/static
|
||||
|
||||
satellite-web:
|
||||
FROM node:18
|
||||
WORKDIR /build
|
||||
COPY web/satellite .
|
||||
RUN ./build.sh
|
||||
COPY +wasm/wasm static/wasm
|
||||
SAVE ARTIFACT dist AS LOCAL web/satellite/dist
|
||||
SAVE ARTIFACT static AS LOCAL web/satellite/static
|
||||
|
||||
storagenode-bin:
|
||||
COPY go.mod go.mod
|
||||
COPY go.sum go.sum
|
||||
COPY private private
|
||||
COPY cmd/storagenode cmd/storagenode
|
||||
COPY storage storage
|
||||
COPY storagenode storagenode
|
||||
COPY multinode multinode
|
||||
COPY web/storagenode web/storagenode
|
||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||
--mount=type=cache,target=/go/pkg/mod \
|
||||
go build -o release/earthly/storagenode storj.io/storj/cmd/storagenode
|
||||
SAVE ARTIFACT release/earthly binaries AS LOCAL release/earthly
|
||||
|
||||
build-binaries:
|
||||
COPY . .
|
||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||
--mount=type=cache,target=/go/pkg/mod \
|
||||
go build -o release/earthly/satellite storj.io/storj/cmd/satellite
|
||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||
--mount=type=cache,target=/go/pkg/mod \
|
||||
go build -o release/earthly/uplink storj.io/storj/cmd/uplink
|
||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||
--mount=type=cache,target=/go/pkg/mod \
|
||||
go build -o release/earthly/identity storj.io/storj/cmd/identity
|
||||
SAVE ARTIFACT release/earthly binaries AS LOCAL release/earthly
|
||||
|
||||
build-storjup:
|
||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||
--mount=type=cache,target=/go/pkg/mod \
|
||||
CGO_ENABLED=0 go install storj.io/storj-up@25258f9
|
||||
SAVE ARTIFACT /go/bin binaries AS LOCAL dist/up
|
||||
|
||||
|
||||
deploy-remote:
|
||||
FROM ubuntu
|
||||
RUN apt-get update && apt-get install -y git wget unzip
|
||||
RUN cd /tmp && wget https://releases.hashicorp.com/nomad/1.3.5/nomad_1.3.5_linux_amd64.zip -O nomad.zip && unzip nomad.zip && mv nomad /usr/local/bin && rm nomad.zip
|
||||
COPY +build-storjup/binaries /usr/local/bin
|
||||
COPY .git .git
|
||||
ARG TAG=$(git rev-parse --short HEAD)
|
||||
ARG IMAGE=img.dev.storj.io/dev/storj
|
||||
BUILD +build-tagged-image --TAG=$TAG --IMAGE=$IMAGE
|
||||
ARG --required nomad
|
||||
ARG --required ip
|
||||
COPY scripts/deploy/deploy-nightly.sh .
|
||||
ENV NOMAD_ADDR=$nomad
|
||||
ENV IP=$ip
|
||||
ENV IMAGE=$IMAGE
|
||||
RUN --push ./deploy-nightly.sh
|
||||
|
||||
deploy-local:
|
||||
COPY +build-storjup/binaries /usr/local/bin
|
||||
COPY .git .git
|
||||
ARG TAG=$(git rev-parse --short HEAD)
|
||||
ARG IMAGE=img.dev.storj.io/dev/storj
|
||||
BUILD +build-tagged-image --TAG=$TAG --IMAGE=$IMAGE
|
||||
WORKDIR /opt/storj-up
|
||||
RUN storj-up init db,minimal,edge
|
||||
RUN storj-up image satellite-api,storagenode $IMAGE:$TAG
|
||||
SAVE ARTIFACT /opt/storj-up/docker-compose.yaml compose AS LOCAL docker-compose.yaml
|
||||
|
||||
build-image:
|
||||
FROM storjlabs/ci
|
||||
COPY .git .git
|
||||
ARG IMAGE=img.dev.storj.io/dev/storj
|
||||
ARG TAG=$(git rev-parse --short HEAD)
|
||||
BUILD +build-tagged-image --TAG=$TAG --IMAGE=$IMAGE
|
||||
|
||||
build-tagged-image:
|
||||
ARG --required TAG
|
||||
ARG --required IMAGE
|
||||
FROM img.dev.storj.io/storjup/base:20221011-2
|
||||
COPY +multinode-web/dist /var/lib/storj/storj/web/multinode/dist
|
||||
COPY +satellite-web/dist /var/lib/storj/storj/web/satellite/dist
|
||||
COPY +satellite-web/static /var/lib/storj/storj/web/satellite/static
|
||||
COPY +storagenode-web/dist /var/lib/storj/storj/web/storagenode/dist
|
||||
COPY +storagenode-web/static /var/lib/storj/storj/web/storagenode/static
|
||||
COPY +build-binaries/binaries /var/lib/storj/go/bin/
|
||||
COPY +storagenode-bin/binaries /var/lib/storj/go/bin/
|
||||
COPY +build-storjup/binaries /var/lib/storj/go/bin/
|
||||
SAVE IMAGE --push $IMAGE:$TAG $IMAGE:latest
|
||||
|
||||
run:
|
||||
LOCALLY
|
||||
RUN docker-compose up
|
||||
|
||||
test:
|
||||
COPY . .
|
||||
RUN go install github.com/mfridman/tparse@36f80740879e24ba6695649290a240c5908ffcbb
|
||||
RUN mkdir build
|
||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||
--mount=type=cache,target=/go/pkg/mod \
|
||||
go test -json ./... | tee build/tests.json
|
||||
SAVE ARTIFACT build/tests.json AS LOCAL build/tests.json
|
||||
|
||||
integration:
|
||||
COPY +build/storj-up /usr/local/bin/storj-up
|
||||
COPY test/test.sh .
|
||||
WITH DOCKER
|
||||
RUN ./test.sh
|
||||
END
|
||||
|
||||
check-format:
|
||||
COPY . .
|
||||
RUN mkdir build
|
||||
RUN bash -c '[[ $(git status --short) == "" ]] || (echo "Before formatting, please commit all your work!!! (Formatter will format only last commit)" && exit -1)'
|
||||
RUN git show --name-only --pretty=format: | grep ".go" | xargs --no-run-if-empty -n1 gofmt -s -w
|
||||
RUN git diff > build/format.patch
|
||||
SAVE ARTIFACT build/format.patch
|
||||
|
||||
format:
|
||||
LOCALLY
|
||||
COPY +check-format/format.patch build/format.patch
|
||||
RUN git apply --allow-empty build/format.patch
|
||||
RUN git status
|
7
scripts/deploy/deploy-nightly.sh
Executable file
7
scripts/deploy/deploy-nightly.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -ex
|
||||
storj-up init nomad --name=core --ip=$IP minimal,gc
|
||||
storj-up image satellite-api,storagenode,gc $IMAGE
|
||||
storj-up persist storagenode,satellite-api,gc
|
||||
storj-up env set satellite-api STORJ_DATABASE_OPTIONS_MIGRATION_UNSAFE=snapshot,testdata
|
||||
nomad run storj.hcl
|
Loading…
Reference in New Issue
Block a user