diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e924dd54..5cfadcd3 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -23,7 +23,7 @@ jobs: - 8086:8086 env: PROJECT_PATH: /go/src/github.com/analogj/scrutiny - CGO_ENABLED: 1 + STATIC: true steps: - name: Git run: | @@ -34,7 +34,7 @@ jobs: uses: actions/checkout@v2 - name: Test run: | - make clean binary-test-coverage + make binary-clean binary-test-coverage - name: Generate coverage report uses: codecov/codecov-action@v2 with: @@ -44,31 +44,40 @@ jobs: verbose: true build: name: Build ${{ matrix.cfg.goos }}/${{ matrix.cfg.goarch }} - needs: release runs-on: ${{ matrix.cfg.on }} env: GOOS: ${{ matrix.cfg.goos }} GOARCH: ${{ matrix.cfg.goarch }} GOARM: ${{ matrix.cfg.goarm }} + ZIG_CROSS_COMPILE_TARGET: ${{ matrix.cfg.zig_cc_target }} + STATIC: true strategy: matrix: cfg: - { on: ubuntu-latest, goos: linux, goarch: amd64 } - - { on: ubuntu-latest, goos: linux, goarch: arm, goarm: 5 } - - { on: ubuntu-latest, goos: linux, goarch: arm, goarm: 6 } - - { on: ubuntu-latest, goos: linux, goarch: arm, goarm: 7 } - - { on: ubuntu-latest, goos: linux, goarch: arm64 } + - { on: ubuntu-latest, goos: linux, goarch: arm, goarm: 5, zig_cc_target: armv5-linux } + - { on: ubuntu-latest, goos: linux, goarch: arm, goarm: 6, zig_cc_target: armv6-linux } + - { on: ubuntu-latest, goos: linux, goarch: arm, goarm: 7, zig_cc_target: armv7-linux } + - { on: ubuntu-latest, goos: linux, goarch: arm64, zig_cc_target: aarch64v8-linux } - { on: macos-latest, goos: darwin, goarch: amd64 } - - { on: macos-latest, goos: darwin, goarch: arm64 } - - { on: macos-latest, goos: freebsd, goarch: amd64 } - - { on: macos-latest, goos: freebsd, goarch: arm64 } - - { on: windows-latest, goos: windows, goarch: amd64 } - - { on: windows-latest, goos: windows, goarch: arm64 } + - { on: macos-latest, goos: darwin, goarch: arm64, zig_cc_target: aarch64v8-macos } + - { on: macos-latest, goos: freebsd, goarch: amd64, zig_cc_target: x86_64-freebsd } + - { on: macos-latest, goos: freebsd, goarch: arm64, zig_cc_target: aarch64v8-freebsd } + - { on: windows-latest, goos: windows, goarch: amd64, zig_cc_target: x86_64-windows-gnu } + - { on: windows-latest, goos: windows, goarch: arm64, zig_cc_target: aarch64v8-windows-gnu } steps: + - name: Checkout + uses: actions/checkout@v2 + - uses: goto-bus-stop/setup-zig@v1 + with: + version: v0.9 - name: Build Binaries run: | - make clean binary-all + zig version + which zig + echo $PATH + make binary-clean binary-all - name: Archive uses: actions/upload-artifact@v2 with: diff --git a/Makefile b/Makefile index e7f80c47..df3a9c53 100644 --- a/Makefile +++ b/Makefile @@ -9,9 +9,24 @@ GO_WORKSPACE ?= /go/src/github.com/analogj/scrutiny COLLECTOR_BINARY_NAME = scrutiny-collector-metrics WEB_BINARY_NAME = scrutiny-web LD_FLAGS = + +WEB_STATIC_TAGS = +COLLECTOR_STATIC_TAGS = + + +# enable to build static binaries. ifdef STATIC LD_FLAGS := $(LD_FLAGS) -extldflags=-static +WEB_STATIC_TAGS := $(WEB_STATIC_TAGS) -tags "static netgo sqlite_omit_load_extension" +COLLECTOR_STATIC_TAGS := $(COLLECTOR_STATIC_TAGS) -tags "static netgo" endif +#enable to do cross compilation (build windows/mac binaries on linux) +ifdef ZIG_CROSS_COMPILE_TARGET +ZIG_BINARY != which zig +export CC = $(ZIG_BINARY) cc -target $(ZIG_CROSS_COMPILE_TARGET) +export CXX = $(ZIG_BINARY) cc -target $(ZIG_CROSS_COMPILE_TARGET) +endif + ifdef GOOS COLLECTOR_BINARY_NAME := $(COLLECTOR_BINARY_NAME)-$(GOOS) WEB_BINARY_NAME := $(WEB_BINARY_NAME)-$(GOOS) @@ -38,7 +53,8 @@ endif all: binary-all .PHONY: binary-all -binary-all: binary-web binary-collector binary-frontend +binary-all: binary-collector binary-web + @echo "building all" .PHONY: binary-clean binary-clean: @@ -46,6 +62,8 @@ binary-clean: .PHONY: binary-dep binary-dep: + env + go env go mod vendor .PHONY: binary-test @@ -58,7 +76,7 @@ binary-test-coverage: binary-dep .PHONY: binary-collector binary-collector: binary-dep - go build -ldflags "$(LD_FLAGS)" -o $(COLLECTOR_BINARY_NAME) -tags "static netgo" ./collector/cmd/collector-metrics/ + go build -ldflags "$(LD_FLAGS)" -o $(COLLECTOR_BINARY_NAME) $(COLLECTOR_STATIC_TAGS) ./collector/cmd/collector-metrics/ ifneq ($(OS),Windows_NT) chmod +x $(COLLECTOR_BINARY_NAME) file $(COLLECTOR_BINARY_NAME) || true @@ -68,7 +86,7 @@ endif .PHONY: binary-web binary-web: binary-dep - go build -ldflags "$(LD_FLAGS)" -o $(WEB_BINARY_NAME) -tags "static netgo sqlite_omit_load_extension" ./webapp/backend/cmd/scrutiny/ + go build -ldflags "$(LD_FLAGS)" -o $(WEB_BINARY_NAME) $(WEB_STATIC_TAGS) ./webapp/backend/cmd/scrutiny/ ifneq ($(OS),Windows_NT) chmod +x $(WEB_BINARY_NAME) file $(WEB_BINARY_NAME) || true