support arm64 and 386

This commit is contained in:
p_caiwfeng
2022-02-15 17:37:49 +08:00
parent 1c55e92e1a
commit cee42b2900
6 changed files with 84 additions and 60 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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 系统,可以使用下面这条命令构建:

View File

@@ -1,5 +1,6 @@
//go:build windows && x86
// +build windows,x86
//go:build windows && (x86 || 386)
// +build windows
// +build x86 386
package wintun

View File

@@ -1,5 +1,5 @@
//go:build !amd64 && !arm64
// +build !amd64,!arm64
//go:build !amd64 && !arm64 && !x86 && !386
// +build !amd64,!arm64,!x86,!386
package pkg