diff options
| -rw-r--r-- | .github/workflows/release.yml | 35 | ||||
| -rw-r--r-- | Makefile | 12 | ||||
| -rw-r--r-- | main.go | 3 |
3 files changed, 45 insertions, 5 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c5100f8 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,35 @@ +name: Release + +on: + push: + tags: ["v*"] + +jobs: + release: + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-go@v5 + with: + go-version-file: go.mod + + - name: Build binaries + env: + VERSION: ${{ github.ref_name }} + run: | + SOURCE_DATE_EPOCH=$(git log -1 --format=%ct) + mkdir -p dist + for GOARCH in amd64 arm64; do + CGO_ENABLED=0 GOOS=linux GOARCH=$GOARCH SOURCE_DATE_EPOCH=$SOURCE_DATE_EPOCH \ + go build -trimpath \ + -ldflags="-s -w -X main.version=${VERSION}" \ + -o dist/shoelaces-linux-${GOARCH} . + done + cd dist && sha256sum * > sha256sums.txt + + - uses: softprops/action-gh-release@v2 + with: + files: dist/* @@ -1,6 +1,7 @@ GO = go SCDOC = scdoc -LDFLAGS = "-s -w" +VERSION ?= dev +LDFLAGS = "-s -w -X main.version=$(VERSION)" pkgs = $(shell $(GO) list ./... | grep -v /vendor/) @@ -19,13 +20,14 @@ shoelaces.8: docs: shoelaces.8 test: fmt - $(GO) test -v $(pkgs) && \ - ./test/integ-test/integ_test.py -vv + $(GO) test -v $(pkgs) && \ + ./test/integ-test/integ_test.py -vv .PHONY: all clean docs binaries: linux windows linux: - GOOS=linux ${GO} build -o bin/shoelaces -ldflags ${LDFLAGS} + SOURCE_DATE_EPOCH=$(shell git log -1 --format=%ct) \ + CGO_ENABLED=0 GOOS=linux ${GO} build -trimpath -o bin/shoelaces -ldflags ${LDFLAGS} windows: - GOOS=windows ${GO} build -o bin/shoelaces.exe -ldflags ${LDFLAGS} + CGO_ENABLED=0 GOOS=windows ${GO} build -trimpath -o bin/shoelaces.exe -ldflags ${LDFLAGS} @@ -23,10 +23,13 @@ import ( "github.com/thousandeyes/shoelaces/internal/router" ) +var version = "dev" + func main() { env := environment.New() app := handlers.MiddlewareChain(env, router.ShoelacesRouter(env)) + env.Logger.Info("starting", "component", "main", "version", version) env.Logger.Info("listening", "component", "main", "transport", "http", "addr", env.BindAddr) env.Logger.Error("server exited", "component", "main", "err", http.ListenAndServe(env.BindAddr, app)) |
