diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 00d24f6..7d0b8f6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,22 +10,30 @@ on: - dev jobs: - test: - runs-on: amd64-runner - + build: + runs-on: ubuntu-latest + strategy: + matrix: + target: + - local + - docker-build + - go-build-release-darwin-amd64 + - go-build-release-darwin-arm64 + - go-build-release-freebsd-amd64 + - go-build-release-freebsd-arm64 + - go-build-release-linux-amd64 + - go-build-release-linux-arm32-v6 + - go-build-release-linux-arm32-v7 + - go-build-release-linux-riscv64 + - go-build-release-windows-amd64 steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - name: Checkout repository + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Set up Go uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0 with: go-version: 1.25 - - name: Build go - run: go build - - - name: Build Docker image - run: make docker-build-release - - - name: Build binaries - run: make go-build-release + - name: Build targets via `make` + run: make ${{ matrix.target }} diff --git a/Makefile b/Makefile index 4dfc1cb..bd174b6 100644 --- a/Makefile +++ b/Makefile @@ -1,25 +1,58 @@ +.PHONY: all local docker-build docker-build-release all: local +local: + CGO_ENABLED=0 go build -o ./bin/newt + +docker-build: + docker build -t fosrl/newt:latest . + docker-build-release: @if [ -z "$(tag)" ]; then \ echo "Error: tag is required. Usage: make docker-build-release tag="; \ exit 1; \ fi - docker buildx build --platform linux/arm/v7,linux/arm64,linux/amd64 -t fosrl/newt:latest -f Dockerfile --push . - docker buildx build --platform linux/arm/v7,linux/arm64,linux/amd64 -t fosrl/newt:$(tag) -f Dockerfile --push . + docker buildx build . \ + --platform linux/arm/v7,linux/arm64,linux/amd64 \ + -t fosrl/newt:latest \ + -t fosrl/newt:$(tag) \ + -f Dockerfile \ + --push -local: - CGO_ENABLED=0 go build -o ./bin/newt +.PHONY: go-build-release \ + go-build-release-linux-arm64 go-build-release-linux-arm32-v7 \ + go-build-release-linux-arm32-v6 go-build-release-linux-amd64 \ + go-build-release-linux-riscv64 go-build-release-darwin-arm64 \ + go-build-release-darwin-amd64 go-build-release-windows-amd64 \ + go-build-release-freebsd-amd64 go-build-release-freebsd-arm64 -go-build-release: +go-build-release-linux-arm64: CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o bin/newt_linux_arm64 + +go-build-release-linux-arm32-v7: CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o bin/newt_linux_arm32 + +go-build-release-linux-arm32-v6: CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 go build -o bin/newt_linux_arm32v6 + +go-build-release-linux-amd64: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/newt_linux_amd64 + +go-build-release-linux-riscv64: CGO_ENABLED=0 GOOS=linux GOARCH=riscv64 go build -o bin/newt_linux_riscv64 + +go-build-release-darwin-arm64: CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o bin/newt_darwin_arm64 + +go-build-release-darwin-amd64: CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o bin/newt_darwin_amd64 + +go-build-release-windows-amd64: CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o bin/newt_windows_amd64.exe + +go-build-release-freebsd-amd64: CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 go build -o bin/newt_freebsd_amd64 - CGO_ENABLED=0 GOOS=freebsd GOARCH=arm64 go build -o bin/newt_freebsd_arm64 \ No newline at end of file + +go-build-release-freebsd-arm64: + CGO_ENABLED=0 GOOS=freebsd GOARCH=arm64 go build -o bin/newt_freebsd_arm64