Skip to content

Commit 05a4864

Browse files
committed
Add Makefile, update github actions, fix build cache
1 parent 1c35ab4 commit 05a4864

File tree

9 files changed

+550
-11
lines changed

9 files changed

+550
-11
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,4 @@ jobs:
1717
- uses: actions/setup-go@v4
1818
with:
1919
go-version: 1.21.8
20-
- run: cd ${GITHUB_WORKSPACE}/rocketpool-cli && go build .
21-
- run: cd ${GITHUB_WORKSPACE}/rocketpool && go build .
20+
- run: make rocketpool-cli rocketpool-daemon

.github/workflows/lint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
# args: --issues-exit-code=0
3535

3636
# For now, Smart Node will only enforce goimports linting
37-
args: --disable-all --enable goimports
37+
args: --disable-all --enable goimports addons/... shared/... rocketpool/... rocketpool-cli/...
3838

3939
# Optional: show only new issues if it's a pull request. The default value is `false`.
4040
# only-new-issues: true

.github/workflows/unit-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ jobs:
1717
- uses: actions/setup-go@v4
1818
with:
1919
go-version: 1.21.8
20-
- run: go test ./... -timeout 30m
20+
- run: make test

Makefile

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
BUILD_DIR=build
2+
CLI_DIR=${BUILD_DIR}/cli
3+
DAEMON_DIR=${BUILD_DIR}/daemon
4+
5+
CLI_TARGET_OOS:=linux darwin
6+
ARCHS:=arm64 amd64
7+
8+
CLI_TARGET_STRINGS:=$(foreach oos,$(CLI_TARGET_OOS), $(foreach arch,$(ARCHS),${CLI_DIR}/rocketpool-cli-$(oos)-$(arch)))
9+
DAEMON_TARGET_STRINGS:=$(foreach arch,$(ARCHS),${DAEMON_DIR}/rocketpool-daemon-linux-$(arch))
10+
11+
MODULES:=$(foreach path,$(shell find . -name go.mod),$(dir $(path)))
12+
MODULE_GLOBS:=$(foreach module,$(MODULES),$(module)...)
13+
14+
define rocketpool-cli-template
15+
.PHONY: ${CLI_DIR}/rocketpool-cli-$1-$2
16+
${CLI_DIR}/rocketpool-cli-$1-$2: ${CLI_DIR}
17+
@echo "Building rocketpool-cli-$1-$2"
18+
CGO_ENABLED=0 GOOS=$1 GOARCH=$2 go build -o $$@ ./rocketpool-cli/rocketpool-cli.go
19+
endef
20+
21+
.PHONY: all
22+
all: lint rocketpool-cli rocketpool-daemon
23+
24+
.PHONY: rocketpool-cli
25+
rocketpool-cli: $(CLI_TARGET_STRINGS)
26+
27+
.PHONY: rocketpool-daemon
28+
rocketpool-daemon: ${DAEMON_DIR}
29+
docker build -t rocketpool/smartnode-builder:latest -f docker/smartnode-builder .
30+
docker run --env OWNER=$(shell id -u):$(shell id -g) --rm -v $(PWD):/src -v $(PWD)/${DAEMON_DIR}:/out -v /tmp/docker-go-build:/root/.cache/go-build rocketpool/smartnode-builder:latest /src/rocketpool/build.sh
31+
32+
${CLI_DIR}:
33+
mkdir -p ${CLI_DIR}
34+
${DAEMON_DIR}:
35+
mkdir -p ${DAEMON_DIR}
36+
37+
$(foreach oos,$(CLI_TARGET_OOS),$(foreach arch,$(ARCHS),$(eval $(call rocketpool-cli-template,$(oos),$(arch)))))
38+
39+
.PHONY: clean
40+
clean:
41+
rm -rf build
42+
43+
.PHONY: lint
44+
lint:
45+
@echo $(MODULE_GLOBS)
46+
golangci-lint run --disable-all --enable goimports $(MODULE_GLOBS)
47+
48+
.PHONY: test
49+
test:
50+
go test -test.timeout 20m $(MODULE_GLOBS)

daemon-build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# Get the platform type and run the build script if possible
44
PLATFORM=$(uname -s)
55
if [ "$PLATFORM" = "Linux" ]; then
6-
docker run --rm -v $PWD:/smartnode rocketpool/smartnode-builder:latest /smartnode/rocketpool/build.sh
6+
docker run --rm -v $PWD:/src rocketpool/smartnode-builder:latest /smartnode/rocketpool/build.sh
77
else
88
echo "Platform ${PLATFORM} is not supported by this script, please build the daemon manually."
99
exit 1

docker/rocketpool-dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FROM debian:bookworm-slim
22

33
ARG TARGETARCH
4-
COPY ./rocketpool/rocketpool-daemon-linux-${TARGETARCH} /go/bin/rocketpool
4+
COPY ./build/daemon/rocketpool-daemon-linux-${TARGETARCH} /go/bin/rocketpool
55

66
RUN apt update && apt install ca-certificates -y
77

docker/smartnode-builder

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,13 @@ RUN apt update && apt install -y \
1212
wget
1313

1414
# Cache go dependencies
15-
COPY . /src
15+
COPY ./go.work /src/go.work
16+
COPY ./go.work.sum /src/go.work.sum
17+
COPY ./addons/go.mod /src/addons/go.mod
18+
COPY ./rocketpool/go.mod /src/rocketpool/go.mod
19+
COPY ./rocketpool-cli/go.mod /src/rocketpool-cli/go.mod
20+
COPY ./shared/go.mod /src/shared/go.mod
1621
WORKDIR /src
17-
RUN go work sync
22+
RUN go mod download -x
1823
WORKDIR /
1924
RUN rm -rf /src

go.work.sum

Lines changed: 478 additions & 0 deletions
Large diffs are not rendered by default.

rocketpool/build.sh

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
#!/bin/bash
2+
set -x
23

34
export CGO_ENABLED=1
4-
cd /smartnode/rocketpool
5+
cd $(dirname "$0")
56

67
# Build x64 version
7-
CGO_CFLAGS="-O -D__BLST_PORTABLE__" GOARCH=amd64 GOOS=linux go build -o rocketpool-daemon-linux-amd64 rocketpool.go
8+
CGO_CFLAGS="-O -D__BLST_PORTABLE__" GOARCH=amd64 GOOS=linux go build -o /out/rocketpool-daemon-linux-amd64 rocketpool.go
89

910
# Build the arm64 version
10-
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-cpp CGO_CFLAGS="-O -D__BLST_PORTABLE__" GOARCH=arm64 GOOS=linux go build -o rocketpool-daemon-linux-arm64 rocketpool.go
11+
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-cpp CGO_CFLAGS="-O -D__BLST_PORTABLE__" GOARCH=arm64 GOOS=linux go build -o /out/rocketpool-daemon-linux-arm64 rocketpool.go
12+
13+
if [ -z "${OWNER}" ]; then
14+
exit 0
15+
fi
16+
17+
chown ${OWNER} /out/*

0 commit comments

Comments
 (0)