summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/release.yml41
-rw-r--r--Makefile5
-rwxr-xr-xhack/lib/golang.sh29
-rwxr-xr-xhack/make-rules/release.sh96
4 files changed, 113 insertions, 58 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7b7dbf7ec..883a84409 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -17,16 +17,25 @@ jobs:
target: [kubeedge, edgesite, keadm]
os: [linux]
ARM_VERSION: [GOARM7, GOARM8, ""]
+ include:
+ - target: kubeedge
+ os: windows
+ ARM_VERSION: ""
+ - target: keadm
+ os: windows
+ ARM_VERSION: ""
outputs:
- hash-kubeedge-amd64: ${{ steps.hash.outputs.hash-kubeedge-amd64 }}
- hash-kubeedge-arm64: ${{ steps.hash.outputs.hash-kubeedge-arm64 }}
- hash-kubeedge-arm: ${{ steps.hash.outputs.hash-kubeedge-arm }}
- hash-keadm-amd64: ${{ steps.hash.outputs.hash-keadm-amd64 }}
- hash-keadm-arm64: ${{ steps.hash.outputs.hash-keadm-arm64 }}
- hash-keadm-arm: ${{ steps.hash.outputs.hash-keadm-arm }}
- hash-edgesite-amd64: ${{ steps.hash.outputs.hash-edgesite-amd64 }}
- hash-edgesite-arm64: ${{ steps.hash.outputs.hash-edgesite-arm64 }}
- hash-edgesite-arm: ${{ steps.hash.outputs.hash-edgesite-arm }}
+ hash-kubeedge-linux-amd64: ${{ steps.hash.outputs.hash-kubeedge-linux-amd64 }}
+ hash-kubeedge-windows-amd64: ${{ steps.hash.outputs.hash-kubeedge-windows-amd64 }}
+ hash-kubeedge-linux-arm64: ${{ steps.hash.outputs.hash-kubeedge-linux-arm64 }}
+ hash-kubeedge-linux-arm: ${{ steps.hash.outputs.hash-kubeedge-linux-arm }}
+ hash-keadm-linux-amd64: ${{ steps.hash.outputs.hash-keadm-linux-amd64 }}
+ hash-keadm-linux-arm64: ${{ steps.hash.outputs.hash-keadm-linux-arm64 }}
+ hash-keadm-linux-arm: ${{ steps.hash.outputs.hash-keadm-linux-arm }}
+ hash-keadm-windows-amd64: ${{ steps.hash.outputs.hash-keadm-windows-amd64 }}
+ hash-edgesite-linux-amd64: ${{ steps.hash.outputs.hash-edgesite-linux-amd64 }}
+ hash-edgesite-linux-arm64: ${{ steps.hash.outputs.hash-edgesite-linux-arm64 }}
+ hash-edgesite-linux-arm: ${{ steps.hash.outputs.hash-edgesite-linux-arm }}
steps:
- name: checkout code
uses: actions/checkout@v3
@@ -35,10 +44,15 @@ jobs:
# 0 indicates all history for all branches and tags.
# for `git describe --tags` in Makefile.
fetch-depth: 0
- - name: Making and packaging
+ - name: Making and packaging(linux)
+ if: matrix.os == 'linux'
run: |
- docker pull kubeedge/build-tools:1.19.12-ke2
- make release WHAT=${{ matrix.target }} ARM_VERSION=${{ matrix.ARM_VERSION }}
+ docker pull kubeedge/build-tools:1.17.13-ke1
+ make release WHAT=${{ matrix.target }} ARM_VERSION=${{ matrix.ARM_VERSION }} OS=${{ matrix.os }} BUILD_WITH_CONTAINER=true
+ - name: Making and packaging(windows)
+ if: matrix.os == 'windows'
+ run: |
+ make release WHAT=${{ matrix.target }} ARM_VERSION=${{ matrix.ARM_VERSION }} OS=${{ matrix.os }} BUILD_WITH_CONTAINER=false
- name: Generate arch
run: |
if [ "${{ matrix.ARM_VERSION }}" = "GOARM7" ]; then echo "output_arch=arm" >> $GITHUB_ENV; elif [ ${{ matrix.ARM_VERSION }} = "GOARM8" ]; then echo "output_arch=arm64" >> $GITHUB_ENV; else echo "output_arch=amd64" >> $GITHUB_ENV; fi
@@ -47,7 +61,7 @@ jobs:
id: hash
run: |
cp _output/release/${{ github.ref_name }}/${{ matrix.target }}-${{ github.ref_name }}-${{ matrix.os }}-${{ env.output_arch }}.tar.gz .
- echo "hash-${{ matrix.target }}-${{ env.output_arch }}=$( \
+ echo "hash-${{ matrix.target }}-${{ matrix.os }}-${{ env.output_arch }}=$( \
sha256sum ${{ matrix.target }}-${{ github.ref_name }}-${{ matrix.os }}-${{ env.output_arch}}.tar.gz | base64 -w0 \
)" >> "$GITHUB_OUTPUT"
- name: Uploading assets...
@@ -70,6 +84,7 @@ jobs:
run: |
echo "$HASHES" | jq -r '.[] | @base64d' | sed "/^$/d" > hashes.txt
echo "hashes=$(cat hashes.txt | base64 -w0)" >> "$GITHUB_OUTPUT"
+ echo "hashes=$(cat hashes.txt | base64 -w0)"
# This step calls the generic workflow to generate provenance.
provenance:
diff --git a/Makefile b/Makefile
index 5bd93a80d..964769312 100644
--- a/Makefile
+++ b/Makefile
@@ -439,8 +439,9 @@ release:
@echo "$$RELEASE_HELP_INFO"
else ifeq ($(BUILD_WITH_CONTAINER),true)
release:
- $(RUN) hack/make-rules/release.sh $(WHAT) $(ARM_VERSION)
+ $(RUN) hack/make-rules/release.sh $(WHAT) $(ARM_VERSION) $(OS)
else
release:
- hack/make-rules/release.sh $(WHAT) $(ARM_VERSION)
+ sudo apt-get install -y mingw-w64
+ hack/make-rules/release.sh $(WHAT) $(ARM_VERSION) $(OS)
endif
diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh
index aa93125d1..11edbe08f 100755
--- a/hack/lib/golang.sh
+++ b/hack/lib/golang.sh
@@ -261,11 +261,17 @@ kubeedge::golang::cross_build_place_binaries() {
local -a targets=()
local goarm=${goarm:-${KUBEEDGE_ALL_CROSS_GOARMS[0]}}
+ local goos="linux"
+ local goarch="amd64"
for arg in "$@"; do
if [[ "${arg}" == GOARM* ]]; then
# Assume arguments starting with a dash are flags to pass to go.
goarm="${arg##*GOARM}"
+ elif [[ "${arg}" == GOOS* ]]; then
+ goos="${arg##*GOOS}"
+ elif [[ "${arg}" == GOARCH* ]]; then
+ goarch="${arg##*GOARCH}"
else
targets+=("$(kubeedge::golang::get_target_by_binary $arg)")
fi
@@ -288,16 +294,23 @@ kubeedge::golang::cross_build_place_binaries() {
mkdir -p ${KUBEEDGE_OUTPUT_BINPATH}
for bin in ${binaries[@]}; do
- echo "cross building $bin GOARM${goarm}"
local name="${bin##*/}"
- if [ "${goarm}" == "8" ]; then
- set -x
- GOARM="" # need to clear the value since golang compiler doesn't allow this env when building the binary for ARMv8.
- GOARCH=arm64 GOOS="linux" CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc go build -o ${KUBEEDGE_OUTPUT_BINPATH}/${name} -ldflags "$ldflags" $bin
- set +x
- elif [ "${goarm}" == "7" ]; then
+ if [ "${goos}" == "linux" ] ; then
+ echo "cross building $bin GOARM${goarm} ${goos} ${goarch}"
+ if [ "${goarm}" == "8" ]; then
+ set -x
+ GOARM="" # need to clear the value since golang compiler doesn't allow this env when building the binary for ARMv8.
+ GOARCH=arm64 GOOS=${goos} CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc go build -o ${KUBEEDGE_OUTPUT_BINPATH}/${name} -ldflags "$ldflags" $bin
+ set +x
+ elif [ "${goarm}" == "7" ]; then
+ set -x
+ GOARCH=arm GOOS=${goos} GOARM=${goarm} CGO_ENABLED=1 CC=arm-linux-gnueabihf-gcc go build -o ${KUBEEDGE_OUTPUT_BINPATH}/${name} -ldflags "$ldflags" $bin
+ set +x
+ fi
+ elif [ "${goos}" == "windows" ]; then
+ echo "cross building $bin ${goos} ${goarch}"
set -x
- GOARCH=arm GOOS="linux" GOARM=${goarm} CGO_ENABLED=1 CC=arm-linux-gnueabihf-gcc go build -o ${KUBEEDGE_OUTPUT_BINPATH}/${name} -ldflags "$ldflags" $bin
+ GOARCH=${goarch} GOOS=${goos} CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -o ${KUBEEDGE_OUTPUT_BINPATH}/${name} -ldflags "$ldflags" $bin
set +x
fi
done
diff --git a/hack/make-rules/release.sh b/hack/make-rules/release.sh
index 6eeea89b6..166fe9fb3 100755
--- a/hack/make-rules/release.sh
+++ b/hack/make-rules/release.sh
@@ -33,6 +33,7 @@ function release() {
local -a targets=()
local VERSION=""
local ARCH="amd64"
+ local OS="linux"
local arm_version=""
for arg in "$@"; do
@@ -42,6 +43,10 @@ function release() {
elif [[ "${arg}" == GOARM8 ]]; then
arm_version="GOARM8"
ARCH="arm64"
+ elif [[ "${arg}" == "linux" ]]; then
+ OS="linux"
+ elif [[ "${arg}" == windows ]]; then
+ OS="windows"
else
targets+=("${arg}")
fi
@@ -66,22 +71,28 @@ function release() {
build_edgesite_release $VERSION $ARCH
;;
"keadm")
- if [ "${ARCH}" == "amd64" ]; then
+ if [ "${ARCH}" == "amd64" ] && [ "${OS}" == "linux" ]; then
hack/make-rules/build.sh keadm
else
- hack/make-rules/crossbuild.sh keadm ${arm_version}
+ hack/make-rules/crossbuild.sh keadm ${arm_version} GOARCH${ARCH} GOOS${OS}
fi
- build_keadm_release $VERSION $ARCH
+ build_keadm_release $VERSION $ARCH $OS
;;
"kubeedge")
- if [ "${ARCH}" == "amd64" ]; then
- hack/make-rules/build.sh cloudcore admission edgecore csidriver iptablesmanager controllermanager
- else
- hack/make-rules/crossbuild.sh cloudcore admission edgecore csidriver iptablesmanager controllermanager ${arm_version}
+ if [ "${OS}" == "linux" ]; then
+ if [ "${ARCH}" == "amd64" ]; then
+ hack/make-rules/build.sh cloudcore admission edgecore csidriver iptablesmanager controllermanager
+ else
+ hack/make-rules/crossbuild.sh cloudcore admission edgecore csidriver iptablesmanager controllermanager ${arm_version} GOOS${OS} GOARCH${ARCH}
+ fi
fi
- build_kubeedge_release $VERSION $ARCH
+ if [ "${OS}" == "windows" ]; then
+ hack/make-rules/crossbuild.sh edgecore GOOS${OS} GOARCH${ARCH}
+ fi
+
+ build_kubeedge_release $VERSION $ARCH $OS
;;
*)
echo "not supported release:" $bin "only supported:" ${ALL_RELEASE_TARGETS[@]}
@@ -93,77 +104,92 @@ function release() {
function build_kubeedge_release() {
local VERSION=""
local ARCH="amd64"
+ local OS="linux"
for arg in "$@"; do
if [[ "${arg}" == v* ]]; then
VERSION="${arg}"
elif [[ "${arg}" == arm* ]]; then
ARCH="${arg}"
+ elif [[ "${arg}" == "windows" ]]; then
+ OS="windows"
fi
done
- echo "building kubeedge release:" ${VERSION} "ARCH:"${ARCH}
+ echo "building kubeedge release:" ${VERSION} "ARCH:"${ARCH} "OS:"${OS}
- mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud
- mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/admission
- mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/cloudcore
- mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/csidriver
- mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/iptablesmanager
- mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/controllermanager
- mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/edge
+ if [ "${OS}" == "linux" ]; then
+ mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud
+ mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/admission
+ mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/cloudcore
+ mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/csidriver
+ mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/iptablesmanager
+ mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/controllermanager
+ mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/edge
- echo ${VERSION} > _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/version
- cp _output/local/bin/admission _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/admission
- cp _output/local/bin/cloudcore _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/cloudcore
- cp _output/local/bin/csidriver _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/csidriver
- cp _output/local/bin/iptablesmanager _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/iptablesmanager
- cp _output/local/bin/controllermanager _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/cloud/controllermanager
+ cp _output/local/bin/admission _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/admission
+ cp _output/local/bin/cloudcore _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/cloudcore
+ cp _output/local/bin/csidriver _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/csidriver
+ cp _output/local/bin/iptablesmanager _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/iptablesmanager
+ cp _output/local/bin/controllermanager _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/cloud/controllermanager
+ cp _output/local/bin/edgecore _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/edge
- cp _output/local/bin/edgecore _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/edge
+ elif [ "${OS}" == "windows" ]; then
+ mkdir -p _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/edge
+ cp _output/local/bin/edgecore _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/edge/edgecore.exe
+ fi
+ echo ${VERSION} > _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/version
cd _output/release/${VERSION}
- tar -czvf ${KUBEEDGE_ROOT}/_output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}.tar.gz kubeedge-${VERSION}-linux-${ARCH}/
+ tar -czvf ${KUBEEDGE_ROOT}/_output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}.tar.gz kubeedge-${VERSION}-${OS}-${ARCH}/
cd $KUBEEDGE_ROOT
- rm -r _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}/
+ rm -r _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}/
#calculate sha512sum
#the below command got like this:
# d6db3c28b1991de781bf19a82fc5b24a1dbf9634e8edfa10e2ad8636baaf37ab3141ea8814db1f1c91119fccc9b7ff44d8ab9f3def536fd5262418035f527e86 kubeedge-v1.9.0-linux-amd64.tar.gz
- sum=$(sha512sum _output/release/${VERSION}/kubeedge-${VERSION}-linux-${ARCH}.tar.gz)
+ sum=$(sha512sum _output/release/${VERSION}/kubeedge-${VERSION}-${OS}-${ARCH}.tar.gz)
sumArray=($sum)
- echo ${sumArray[0]} > _output/release/${VERSION}/checksum_kubeedge-${VERSION}-linux-${ARCH}.tar.gz.txt
+ echo ${sumArray[0]} > _output/release/${VERSION}/checksum_kubeedge-${VERSION}-${OS}-${ARCH}.tar.gz.txt
}
function build_keadm_release() {
local VERSION=""
local ARCH="amd64"
+ local OS="linux"
for arg in "$@"; do
if [[ "${arg}" == v* ]]; then
VERSION="${arg}"
elif [[ "${arg}" == arm* ]]; then
ARCH="${arg}"
+ elif [[ "${arg}" == "windows" ]]; then
+ OS="windows"
fi
done
- echo "building keadm release:" ${VERSION} "ARCH:"${ARCH}
+ echo "building keadm release:" ${VERSION} "ARCH:"${ARCH} "OS:"${OS}
- mkdir -p _output/release/${VERSION}/keadm-${VERSION}-linux-${ARCH}/keadm
+ mkdir -p _output/release/${VERSION}/keadm-${VERSION}-${OS}-${ARCH}/keadm
- echo ${VERSION} > _output/release/${VERSION}/keadm-${VERSION}-linux-${ARCH}/version
- cp _output/local/bin/keadm _output/release/${VERSION}/keadm-${VERSION}-linux-${ARCH}/keadm
+ echo ${VERSION} > _output/release/${VERSION}/keadm-${VERSION}-${OS}-${ARCH}/version
+ if [ "${OS}" == "linux" ]; then
+ cp _output/local/bin/keadm _output/release/${VERSION}/keadm-${VERSION}-${OS}-${ARCH}/keadm
+ elif [ "${OS}" == "windows" ]; then
+ cp _output/local/bin/keadm _output/release/${VERSION}/keadm-${VERSION}-${OS}-${ARCH}/keadm/keadm.exe
+ fi
cd _output/release/${VERSION}
- tar -czvf ${KUBEEDGE_ROOT}/_output/release/${VERSION}/keadm-${VERSION}-linux-${ARCH}.tar.gz keadm-${VERSION}-linux-${ARCH}/
+ tar -czvf ${KUBEEDGE_ROOT}/_output/release/${VERSION}/keadm-${VERSION}-${OS}-${ARCH}.tar.gz keadm-${VERSION}-${OS}-${ARCH}/
cd $KUBEEDGE_ROOT
- rm -r _output/release/${VERSION}/keadm-${VERSION}-linux-${ARCH}
+ rm -r _output/release/${VERSION}/keadm-${VERSION}-${OS}-${ARCH}
#calculate sha512sum
- sum=$(sha512sum _output/release/${VERSION}/keadm-${VERSION}-linux-${ARCH}.tar.gz)
+ sum=$(sha512sum _output/release/${VERSION}/keadm-${VERSION}-${OS}-${ARCH}.tar.gz)
sumArray=($sum)
- echo ${sumArray[0]} > _output/release/${VERSION}/checksum_keadm-${VERSION}-linux-${ARCH}.tar.gz.txt
+ echo ${sumArray[0]} > _output/release/${VERSION}/checksum_keadm-${VERSION}-${OS}-${ARCH}.tar.gz.txt
}
function build_edgesite_release() {