diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b7a3fd57..be7f1f9e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,6 +9,18 @@ jobs: build: name: Create Release runs-on: ubuntu-latest + strategy: + matrix: + os-arch: [ + kubevpn-darwin-amd64, + kubevpn-darwin-arm64, + kubevpn-windows-amd64.exe, + kubevpn-windows-arm64.exe, + kubevpn-windows-386.exe, + kubevpn-linux-amd64, + kubevpn-linux-arm64, + kubevpn-linux-386, + ] steps: - name: Set up Go uses: actions/setup-go@v2 @@ -48,38 +60,16 @@ jobs: with: name: UPLOAD_URL path: UPLOAD_URL - - name: Build kubevpn-linux - run: make kubevpn-linux - - name: Upload Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: kubevpn-linux-amd64 - asset_name: kubevpn-linux-amd64 - asset_content_type: application/octet-stream - - name: Build kubevpn-macos - run: make kubevpn-macos - - name: Upload Release Asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: kubevpn-darwin-amd64 - asset_name: kubevpn-darwin-amd64 - asset_content_type: application/octet-stream + - name: Build kubevpn-all-arch + run: make all - - name: Build kubevpn-windows - run: make kubevpn-windows - name: Upload Release Asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: kubevpn-windows-amd64.exe - asset_name: kubevpn-windows-amd64.exe + asset_path: ${{ matrix.os-arch }} + asset_name: ${{ matrix.os-arch }} asset_content_type: application/octet-stream diff --git a/Makefile b/Makefile index d24621d0..e40e062c 100644 --- a/Makefile +++ b/Makefile @@ -9,50 +9,83 @@ GOARCH := $(shell go env GOHOSTARCH) TARGET := kubevpn-${GOOS}-${GOARCH} OS_ARCH := ${GOOS}/${GOARCH} +FOLDER := github.com/wencaiwulue/kubevpn/cmd/kubevpn +CONTROL_PLANE_FOLDER := github.com/wencaiwulue/kubevpn/pkg/controlplane/cmd/server + # Setup the -ldflags option for go build here, interpolate the variable values LDFLAGS=--ldflags "-w -s \ - -X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.Version=${VERSION} \ - -X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.BuildTime=${BUILD_TIME} \ - -X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.GitCommit=${GIT_COMMIT} \ - -X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.Branch=${BRANCH} \ - -X github.com/wencaiwulue/kubevpn/cmd/kubevpn/cmds.OsArch=${OS_ARCH} \ + -X ${FOLDER}/cmds.Version=${VERSION} \ + -X ${FOLDER}/cmds.BuildTime=${BUILD_TIME} \ + -X ${FOLDER}/cmds.GitCommit=${GIT_COMMIT} \ + -X ${FOLDER}/cmds.Branch=${BRANCH} \ + -X ${FOLDER}/cmds.OsArch=${OS_ARCH} \ " -.PHONY: kubevpn-macos -kubevpn-macos: - CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-darwin-amd64 github.com/wencaiwulue/kubevpn/cmd/kubevpn +.PHONY: all +all: kubevpn-darwin-amd64 kubevpn-darwin-arm64 \ +kubevpn-windows-amd64 kubevpn-windows-386 kubevpn-windows-arm64 \ +kubevpn-linux-amd64 kubevpn-linux-386 kubevpn-linux-arm64 \ +image image-mesh image-control-plane + +# ---------darwin----------- +.PHONY: kubevpn-darwin-amd64 +kubevpn-darwin-amd64: + CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-darwin-amd64 ${FOLDER} chmod +x kubevpn-darwin-amd64 cp kubevpn-darwin-amd64 /usr/local/bin/kubevpn +.PHONY: kubevpn-darwin-arm64 +kubevpn-darwin-arm64: + CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build ${LDFLAGS} -o kubevpn-darwin-arm64 ${FOLDER} + chmod +x kubevpn-darwin-arm64 + cp kubevpn-darwin-arm64 /usr/local/bin/kubevpn +# ---------darwin----------- -.PHONY: kubevpn-windows -kubevpn-windows: - CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-windows-amd64.exe github.com/wencaiwulue/kubevpn/cmd/kubevpn +# ---------windows----------- +.PHONY: kubevpn-windows-amd64 +kubevpn-windows-amd64: + CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-windows-amd64.exe ${FOLDER} +.PHONY: kubevpn-windows-arm64 +kubevpn-windows-arm64: + CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build ${LDFLAGS} -o kubevpn-windows-arm64.exe ${FOLDER} +.PHONY: kubevpn-windows-386 +kubevpn-windows-386: + CGO_ENABLED=0 GOOS=windows GOARCH=386 go build ${LDFLAGS} -o kubevpn-windows-386.exe ${FOLDER} +# ---------windows----------- -.PHONY: kubevpn-linux -kubevpn-linux: - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-linux-amd64 github.com/wencaiwulue/kubevpn/cmd/kubevpn +# ---------linux----------- +.PHONY: kubevpn-linux-amd64 +kubevpn-linux-amd64: + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${LDFLAGS} -o kubevpn-linux-amd64 ${FOLDER} chmod +x kubevpn-linux-amd64 cp kubevpn-linux-amd64 /usr/local/bin/kubevpn - -.PHONY: control-plane-linux -control-plane-linux: - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o envoy-xds-server github.com/wencaiwulue/kubevpn/pkg/controlplane/cmd/server - chmod +x envoy-xds-server +.PHONY: kubevpn-linux-arm64 +kubevpn-linux-arm64: + CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${LDFLAGS} -o kubevpn-linux-arm64 ${FOLDER} + chmod +x kubevpn-linux-arm64 + cp kubevpn-linux-arm64 /usr/local/bin/kubevpn +.PHONY: kubevpn-linux-386 +kubevpn-linux-386: + CGO_ENABLED=0 GOOS=linux GOARCH=386 go build ${LDFLAGS} -o kubevpn-linux-386 ${FOLDER} + chmod +x kubevpn-linux-386 + cp kubevpn-linux-386 /usr/local/bin/kubevpn +# ---------linux----------- .PHONY: image -image: kubevpn-linux +image: kubevpn-linux-amd64 mv kubevpn-linux-amd64 kubevpn docker build -t naison/kubevpn:v2 -f ./dockerfile/server/Dockerfile . rm -fr kubevpn docker push naison/kubevpn:v2 -.PHONY: image_mesh -image_mesh: +.PHONY: image-mesh +image-mesh: docker build -t naison/kubevpnmesh:v2 -f ./dockerfile/mesh/Dockerfile . docker push naison/kubevpnmesh:v2 -.PHONY: image_control_plane -image_control_plane: control-plane-linux +.PHONY: image-control-plane +image-control-plane: + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o envoy-xds-server ${CONTROL_PLANE_FOLDER} + chmod +x envoy-xds-server docker build -t naison/envoy-xds-server:latest -f ./dockerfile/controlplane/Dockerfile . rm -fr envoy-xds-server docker push naison/envoy-xds-server:latest diff --git a/README.md b/README.md index 43a30220..52825dde 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ kubernetes cluster service can also access your local service ```shell git clone https://github.com/wencaiwulue/kubevpn.git cd kubevpn -make kubevpn-linux -make kubevpn-macos -make kubevpn-windows +make kubevpn-linux-amd64 +make kubevpn-darwin-amd64 +make kubevpn-windows-amd64 ``` if you are using windows, you can build by this command: diff --git a/README_ZH.md b/README_ZH.md index 93c8d16d..9fa996f0 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -9,9 +9,9 @@ ```shell git clone https://github.com/wencaiwulue/kubevpn.git cd kubevpn -make kubevpn-linux -make kubevpn-macos -make kubevpn-windows +make kubevpn-linux-amd64 +make kubevpn-darwin-amd64 +make kubevpn-windows-amd64 ``` 如果你在使用 Windows 系统,可以使用下面这条命令构建: diff --git a/driver/wintun/x86.go b/driver/wintun/x86.go index cea7c79c..e74f1a91 100644 --- a/driver/wintun/x86.go +++ b/driver/wintun/x86.go @@ -1,5 +1,6 @@ -//go:build windows && x86 -// +build windows,x86 +//go:build windows && (x86 || 386) +// +build windows +// +build x86 386 package wintun diff --git a/pkg/route_table_by_net.go b/pkg/route_table_by_net.go index fc0c3e6e..622d315f 100644 --- a/pkg/route_table_by_net.go +++ b/pkg/route_table_by_net.go @@ -1,5 +1,5 @@ -//go:build !amd64 && !arm64 -// +build !amd64,!arm64 +//go:build !amd64 && !arm64 && !x86 && !386 +// +build !amd64,!arm64,!x86,!386 package pkg