diff options
| author | wujunyi <wu65830600@163.com> | 2023-09-26 01:57:38 +0800 |
|---|---|---|
| committer | Shelley-BaoYue <baoyue2@huawei.com> | 2023-11-21 15:07:03 +0800 |
| commit | d465024593427139c6654a5f8a03f79322b6d437 (patch) | |
| tree | 3fd837c83cd75fd648627ee1230a7d84535c7867 | |
| parent | Merge pull request #5154 from Shelley-BaoYue/bump-kubernetes-1.26.10 (diff) | |
| download | kubeedge-d465024593427139c6654a5f8a03f79322b6d437.tar.gz | |
feat: update to support release windows/amd64
Signed-off-by: wujunyi <wu65830600@163.com>
| -rw-r--r-- | .github/workflows/release.yml | 41 | ||||
| -rw-r--r-- | Makefile | 5 | ||||
| -rwxr-xr-x | hack/lib/golang.sh | 29 | ||||
| -rwxr-xr-x | hack/make-rules/release.sh | 96 |
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: @@ -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() { |
