From f6789fa245c951147062fbf849ad652a54be2670 Mon Sep 17 00:00:00 2001 From: David Stotijn Date: Sun, 1 Nov 2020 19:01:07 +0100 Subject: [PATCH] Tidy up manual build process --- .dockerignore | 1 - .goreleaser.yml | 5 ----- Dockerfile | 1 + Makefile | 29 +++++++++-------------------- README.md | 16 ++++++++++++++-- 5 files changed, 24 insertions(+), 28 deletions(-) diff --git a/.dockerignore b/.dockerignore index d037211..a25e622 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,3 @@ -**/rice-box.go /admin/.env /admin/.next /admin/dist diff --git a/.goreleaser.yml b/.goreleaser.yml index f385691..f94729d 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -2,11 +2,6 @@ env: - GO111MODULE=on - CGO_ENABLED=1 -before: - hooks: - - make clean - - make embed - builds: - id: hetty-darwin-amd64 main: ./cmd/hetty diff --git a/Dockerfile b/Dockerfile index a5f0a81..202804b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,6 +9,7 @@ COPY go.mod go.sum ./ RUN go mod download COPY cmd ./cmd COPY pkg ./pkg +RUN rm -f cmd/hetty/rice-box.go RUN go build ./cmd/hetty FROM node:${NODE_VERSION}-alpine AS node-builder diff --git a/Makefile b/Makefile index 21e0c44..7aa4f9f 100644 --- a/Makefile +++ b/Makefile @@ -1,35 +1,26 @@ PACKAGE_NAME := github.com/dstotijn/hetty GOLANG_CROSS_VERSION ?= v1.15.2 -setup: - go mod download - go generate ./... -.PHONY: setup - +.PHONY: embed embed: - go install github.com/GeertJohan/go.rice/rice + NEXT_TELEMETRY_DISABLED=1 cd admin && yarn install && yarn run export cd cmd/hetty && rice embed-go -.PHONY: embed -build: embed - env CGO_ENABLED=1 go build ./cmd/hetty .PHONY: build +build: embed + CGO_ENABLED=1 go build ./cmd/hetty -clean: - rm -rf cmd/hetty/rice-box.go -.PHONY: clean - -release-dry-run: +.PHONY: release-dry-run +release-dry-run: embed @docker run \ --rm \ -v `pwd`:/go/src/$(PACKAGE_NAME) \ - -v `pwd`/admin/dist:/go/src/$(PACKAGE_NAME)/admin/dist \ -w /go/src/$(PACKAGE_NAME) \ troian/golang-cross:${GOLANG_CROSS_VERSION} \ --rm-dist --skip-validate --skip-publish -.PHONY: release-dry-run -release: +.PHONY: release +release: embed @if [ ! -f ".release-env" ]; then \ echo "\033[91mFile \`.release-env\` is missing.\033[0m";\ exit 1;\ @@ -37,9 +28,7 @@ release: @docker run \ --rm \ -v `pwd`:/go/src/$(PACKAGE_NAME) \ - -v `pwd`/admin/dist:/go/src/$(PACKAGE_NAME)/admin/dist \ -w /go/src/$(PACKAGE_NAME) \ --env-file .release-env \ troian/golang-cross:${GOLANG_CROSS_VERSION} \ - release --rm-dist -.PHONY: release \ No newline at end of file + release --rm-dist \ No newline at end of file diff --git a/README.md b/README.md index 0b274bb..657b042 100644 --- a/README.md +++ b/README.md @@ -37,11 +37,23 @@ and web based admin interface. ### Build from source +#### Prerequisites + +- [Go](https://golang.org/) +- [Yarn](https://yarnpkg.com/) +- [go.rice](https://github.com/GeertJohan/go.rice) + Hetty depends on SQLite (via [mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)) -and needs `cgo` to compile. +and needs `cgo` to compile. Additionally, the static resources for the admin interface +(Next.js) need to be generated via [Yarn](https://yarnpkg.com/) and embedded in +a `.go` file with [go.rice](https://github.com/GeertJohan/go.rice) beforehand. + +Clone the repository and use the `build` make target to create a binary: ``` -$ GO111MODULE=auto CGO_ENABLED=1 go get -u github.com/dstotijn/hetty/cmd/hetty +$ git clone git@github.com:dstotijn/hetty.git +$ cd hetty +$ make build ``` ### Docker