mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-01-03 06:08:42 +00:00
Release windows build for server too (#2012)
and other build enhancements
This commit is contained in:
parent
572449b845
commit
2e851ba4a0
4 changed files with 39 additions and 23 deletions
|
@ -9,6 +9,8 @@ when:
|
||||||
variables:
|
variables:
|
||||||
- &golang_image 'golang:1.20.2'
|
- &golang_image 'golang:1.20.2'
|
||||||
- &node_image 'node:18-alpine'
|
- &node_image 'node:18-alpine'
|
||||||
|
- &xgo_image 'techknowlogick/xgo:go-1.20.2'
|
||||||
|
- &xgo_version 'go-1.20.2'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
build-web:
|
build-web:
|
||||||
|
@ -26,11 +28,19 @@ steps:
|
||||||
commands:
|
commands:
|
||||||
- go mod vendor
|
- go mod vendor
|
||||||
|
|
||||||
build-server:
|
cross-compile-server:
|
||||||
group: build
|
group: build
|
||||||
image: *golang_image
|
image: *xgo_image
|
||||||
|
pull: true
|
||||||
commands:
|
commands:
|
||||||
- make release-server
|
- apt update
|
||||||
|
- apt install -y tree
|
||||||
|
- make cross-compile-server
|
||||||
|
environment:
|
||||||
|
PLATFORMS: linux|arm64/v8;linux|amd64;windows|amd64
|
||||||
|
TAGS: bindata sqlite sqlite_unlock_notify netgo
|
||||||
|
XGO_VERSION: *xgo_version
|
||||||
|
TARGZ: '1'
|
||||||
|
|
||||||
build-agent:
|
build-agent:
|
||||||
group: build
|
group: build
|
||||||
|
|
42
Makefile
42
Makefile
|
@ -3,6 +3,11 @@ GO_PACKAGES ?= $(shell go list ./... | grep -v /vendor/)
|
||||||
TARGETOS ?= linux
|
TARGETOS ?= linux
|
||||||
TARGETARCH ?= amd64
|
TARGETARCH ?= amd64
|
||||||
|
|
||||||
|
BIN_SUFFIX :=
|
||||||
|
ifeq ($(TARGETOS),windows)
|
||||||
|
BIN_SUFFIX := .exe
|
||||||
|
endif
|
||||||
|
|
||||||
VERSION ?= next
|
VERSION ?= next
|
||||||
VERSION_NUMBER ?= 0.0.0
|
VERSION_NUMBER ?= 0.0.0
|
||||||
ifneq ($(CI_COMMIT_TAG),)
|
ifneq ($(CI_COMMIT_TAG),)
|
||||||
|
@ -22,7 +27,7 @@ CGO_ENABLED ?= 1 # only used to compile server
|
||||||
|
|
||||||
HAS_GO = $(shell hash go > /dev/null 2>&1 && echo "GO" || echo "NOGO" )
|
HAS_GO = $(shell hash go > /dev/null 2>&1 && echo "GO" || echo "NOGO" )
|
||||||
ifeq ($(HAS_GO),GO)
|
ifeq ($(HAS_GO),GO)
|
||||||
XGO_VERSION ?= go-1.19.x
|
XGO_VERSION ?= go-1.20.x
|
||||||
CGO_CFLAGS ?= $(shell go env CGO_CFLAGS)
|
CGO_CFLAGS ?= $(shell go env CGO_CFLAGS)
|
||||||
endif
|
endif
|
||||||
CGO_CFLAGS ?=
|
CGO_CFLAGS ?=
|
||||||
|
@ -197,43 +202,44 @@ release-server-xgo: check-xgo ## Create server binaries for release using xgo
|
||||||
|
|
||||||
CGO_CFLAGS="$(CGO_CFLAGS)" xgo -go $(XGO_VERSION) -dest ./dist/server/$(TARGETOS)-$(TARGETARCH_XGO) -tags 'netgo osusergo $(TAGS)' -ldflags '-linkmode external $(LDFLAGS)' -targets '$(TARGETOS)/$(TARGETARCH_XGO)' -out woodpecker-server -pkg cmd/server .
|
CGO_CFLAGS="$(CGO_CFLAGS)" xgo -go $(XGO_VERSION) -dest ./dist/server/$(TARGETOS)-$(TARGETARCH_XGO) -tags 'netgo osusergo $(TAGS)' -ldflags '-linkmode external $(LDFLAGS)' -targets '$(TARGETOS)/$(TARGETARCH_XGO)' -out woodpecker-server -pkg cmd/server .
|
||||||
mkdir -p ./dist/server/$(TARGETOS)/$(TARGETARCH_BUILDX)
|
mkdir -p ./dist/server/$(TARGETOS)/$(TARGETARCH_BUILDX)
|
||||||
mv /build/woodpecker-server-$(TARGETOS)-$(TARGETARCH_XGO) ./dist/server/$(TARGETOS)/$(TARGETARCH_BUILDX)/woodpecker-server
|
mv /build/woodpecker-server-$(TARGETOS)*-$(TARGETARCH_XGO)$(BIN_SUFFIX) ./dist/server/$(TARGETOS)/$(TARGETARCH_BUILDX)/woodpecker-server$(BIN_SUFFIX)
|
||||||
|
[ "${TARGZ}" -eq "1" ] && tar -cvzf dist/woodpecker-server_$(TARGETOS)_$(TARGETARCH_BUILDX).tar.gz -C dist/server/$(TARGETOS)/$(TARGETARCH_BUILDX) woodpecker-server$(BIN_SUFFIX) || echo "skip tar.gz binary"
|
||||||
|
|
||||||
release-server: ## Create server binaries for release
|
release-server: ## Create server binaries for release
|
||||||
# compile
|
# compile
|
||||||
GOOS=linux GOARCH=amd64 CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -o dist/server/linux_amd64/woodpecker-server github.com/woodpecker-ci/woodpecker/cmd/server
|
GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) CGO_ENABLED=${CGO_ENABLED} go build -ldflags '${LDFLAGS}' -o dist/server/$(TARGETOS)_$(TARGETARCH)/woodpecker-server$(BIN_SUFFIX) github.com/woodpecker-ci/woodpecker/cmd/server
|
||||||
# tar binary files
|
# tar binary files
|
||||||
tar -cvzf dist/woodpecker-server_linux_amd64.tar.gz -C dist/server/linux_amd64 woodpecker-server
|
tar -cvzf dist/woodpecker-server_$(TARGETOS)_$(TARGETARCH).tar.gz -C dist/server/$(TARGETOS)_$(TARGETARCH) woodpecker-server$(BIN_SUFFIX)
|
||||||
|
|
||||||
release-agent: ## Create agent binaries for release
|
release-agent: ## Create agent binaries for release
|
||||||
# compile
|
# compile
|
||||||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/linux_amd64/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/linux_amd64/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
||||||
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/linux_arm64/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/linux_arm64/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
||||||
GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/linux_arm/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/linux_arm/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
||||||
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/windows_amd64/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/windows_amd64/woodpecker-agent.exe github.com/woodpecker-ci/woodpecker/cmd/agent
|
||||||
GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/darwin_amd64/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/darwin_amd64/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
||||||
GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/darwin_arm64/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/agent/darwin_arm64/woodpecker-agent github.com/woodpecker-ci/woodpecker/cmd/agent
|
||||||
# tar binary files
|
# tar binary files
|
||||||
tar -cvzf dist/woodpecker-agent_linux_amd64.tar.gz -C dist/agent/linux_amd64 woodpecker-agent
|
tar -cvzf dist/woodpecker-agent_linux_amd64.tar.gz -C dist/agent/linux_amd64 woodpecker-agent
|
||||||
tar -cvzf dist/woodpecker-agent_linux_arm64.tar.gz -C dist/agent/linux_arm64 woodpecker-agent
|
tar -cvzf dist/woodpecker-agent_linux_arm64.tar.gz -C dist/agent/linux_arm64 woodpecker-agent
|
||||||
tar -cvzf dist/woodpecker-agent_linux_arm.tar.gz -C dist/agent/linux_arm woodpecker-agent
|
tar -cvzf dist/woodpecker-agent_linux_arm.tar.gz -C dist/agent/linux_arm woodpecker-agent
|
||||||
tar -cvzf dist/woodpecker-agent_windows_amd64.tar.gz -C dist/agent/windows_amd64 woodpecker-agent
|
tar -cvzf dist/woodpecker-agent_windows_amd64.tar.gz -C dist/agent/windows_amd64 woodpecker-agent.exe
|
||||||
tar -cvzf dist/woodpecker-agent_darwin_amd64.tar.gz -C dist/agent/darwin_amd64 woodpecker-agent
|
tar -cvzf dist/woodpecker-agent_darwin_amd64.tar.gz -C dist/agent/darwin_amd64 woodpecker-agent
|
||||||
tar -cvzf dist/woodpecker-agent_darwin_arm64.tar.gz -C dist/agent/darwin_arm64 woodpecker-agent
|
tar -cvzf dist/woodpecker-agent_darwin_arm64.tar.gz -C dist/agent/darwin_arm64 woodpecker-agent
|
||||||
|
|
||||||
release-cli: ## Create cli binaries for release
|
release-cli: ## Create cli binaries for release
|
||||||
# compile
|
# compile
|
||||||
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/linux_amd64/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/linux_amd64/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
||||||
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/linux_arm64/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/linux_arm64/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
||||||
GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/linux_arm/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/linux_arm/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
||||||
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/windows_amd64/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/windows_amd64/woodpecker-cli.exe github.com/woodpecker-ci/woodpecker/cmd/cli
|
||||||
GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/darwin_amd64/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/darwin_amd64/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
||||||
GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/darwin_arm64/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -ldflags '${LDFLAGS}' -o dist/cli/darwin_arm64/woodpecker-cli github.com/woodpecker-ci/woodpecker/cmd/cli
|
||||||
# tar binary files
|
# tar binary files
|
||||||
tar -cvzf dist/woodpecker-cli_linux_amd64.tar.gz -C dist/cli/linux_amd64 woodpecker-cli
|
tar -cvzf dist/woodpecker-cli_linux_amd64.tar.gz -C dist/cli/linux_amd64 woodpecker-cli
|
||||||
tar -cvzf dist/woodpecker-cli_linux_arm64.tar.gz -C dist/cli/linux_arm64 woodpecker-cli
|
tar -cvzf dist/woodpecker-cli_linux_arm64.tar.gz -C dist/cli/linux_arm64 woodpecker-cli
|
||||||
tar -cvzf dist/woodpecker-cli_linux_arm.tar.gz -C dist/cli/linux_arm woodpecker-cli
|
tar -cvzf dist/woodpecker-cli_linux_arm.tar.gz -C dist/cli/linux_arm woodpecker-cli
|
||||||
tar -cvzf dist/woodpecker-cli_windows_amd64.tar.gz -C dist/cli/windows_amd64 woodpecker-cli
|
tar -cvzf dist/woodpecker-cli_windows_amd64.tar.gz -C dist/cli/windows_amd64 woodpecker-cli.exe
|
||||||
tar -cvzf dist/woodpecker-cli_darwin_amd64.tar.gz -C dist/cli/darwin_amd64 woodpecker-cli
|
tar -cvzf dist/woodpecker-cli_darwin_amd64.tar.gz -C dist/cli/darwin_amd64 woodpecker-cli
|
||||||
tar -cvzf dist/woodpecker-cli_darwin_arm64.tar.gz -C dist/cli/darwin_arm64 woodpecker-cli
|
tar -cvzf dist/woodpecker-cli_darwin_arm64.tar.gz -C dist/cli/darwin_arm64 woodpecker-cli
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ description: Woodpecker CLI
|
||||||
homepage: https://github.com/woodpecker-ci/woodpecker
|
homepage: https://github.com/woodpecker-ci/woodpecker
|
||||||
license: Apache 2.0
|
license: Apache 2.0
|
||||||
maintainer: Woodpecker Authors <maintainer@woodpecker-ci.org>
|
maintainer: Woodpecker Authors <maintainer@woodpecker-ci.org>
|
||||||
section: daemon/system
|
section: utils
|
||||||
contents:
|
contents:
|
||||||
- src: ./dist/cli/linux_amd64/woodpecker-cli
|
- src: ./dist/cli/linux_amd64/woodpecker-cli
|
||||||
dst: /usr/local/bin/woodpecker
|
dst: /usr/local/bin/woodpecker
|
||||||
|
|
|
@ -8,5 +8,5 @@ license: Apache 2.0
|
||||||
maintainer: Woodpecker Authors <maintainer@woodpecker-ci.org>
|
maintainer: Woodpecker Authors <maintainer@woodpecker-ci.org>
|
||||||
section: daemon/system
|
section: daemon/system
|
||||||
contents:
|
contents:
|
||||||
- src: ./dist/server/linux_amd64/woodpecker-server
|
- src: ./dist/server/linux/amd64/woodpecker-server
|
||||||
dst: /usr/local/bin/woodpecker-server
|
dst: /usr/local/bin/woodpecker-server
|
||||||
|
|
Loading…
Reference in a new issue