From d43b73fcc36d80dc3312f14a89ce847d136b669f Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 15 Nov 2021 14:06:08 +0800 Subject: [PATCH] modify release.yaml and prepare for krew (#30) Signed-off-by: hantmac --- .github/workflows/release.yaml | 108 ++++++++++++++++++++++----------- 1 file changed, 71 insertions(+), 37 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c2e5604..f858700 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -8,57 +8,91 @@ on: env: # Common versions GO_VERSION: '1.16' + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: build_and_upload: runs-on: ubuntu-18.04 + strategy: + matrix: + TARGETS: [ linux/amd64, darwin/amd64, windows/amd64, linux/arm64, darwin/arm64 ] + env: + GO_BUILD_ENV: GO111MODULE=on CGO_ENABLED=0 + DIST_DIRS: find * -type d -exec steps: - uses: actions/checkout@v2 - name: Setup Go uses: actions/setup-go@v2 with: go-version: ${{ env.GO_VERSION }} + - name: Get release + id: get_release + uses: bruceadams/get-release@v1.2.2 + - name: Get matrix + id: get_matrix + run: | + TARGETS=${{matrix.TARGETS}} + echo ::set-output name=OS::${TARGETS%/*} + echo ::set-output name=ARCH::${TARGETS#*/} + - name: Get ldflags + id: get_ldflags + run: | + LDFLAGS=$(./version.sh) + echo "LDFLAGS=${LDFLAGS}" >> $GITHUB_ENV - name: Build run: | - mkdir -p ./bin - LDFLAGS=$(./version.sh) - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "${LDFLAGS}" -o bin/kubectl-kruise_linux_amd64 cmd/plugin/main.go - CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "${LDFLAGS}" -o bin/kubectl-kruise_linux_arm64 cmd/plugin/main.go - CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "${LDFLAGS}" -o bin/kubectl-kruise_darwin_amd64 cmd/plugin/main.go - CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags "${LDFLAGS}" -o bin/kubectl-kruise_darwin_arm64 cmd/plugin/main.go - - name: Upload linux/amd64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ${{ env.GO_BUILD_ENV }} GOOS=${{ steps.get_matrix.outputs.OS }} GOARCH=${{ steps.get_matrix.outputs.ARCH }} \ + go build -ldflags "${{ env.LDFLAGS }}" \ + -o _bin/kruise/${{ steps.get_matrix.outputs.OS }}-${{ steps.get_matrix.outputs.ARCH }}/kubectl-kruise/kubectl-kruise -v \ + ./cmd/plugin/main.go + - name: Compress + run: | + cd _bin/kubectl-kruise && \ + ${{ env.DIST_DIRS }} cp ../../LICENSE {} \; && \ + ${{ env.DIST_DIRS }} cp ../../README.md {} \; && \ + ${{ env.DIST_DIRS }} tar -zcf kubectl-kruise-{}.tar.gz {} \; && \ + cd .. && \ + sha256sum kubectl-kruise/kubectl-kruise-* >> sha256-${{ steps.get_matrix.outputs.OS }}-${{ steps.get_matrix.outputs.ARCH }}.txt \ + - name: Upload Kubectl-kruise tar.gz + uses: actions/upload-release-asset@v1.0.2 with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ./bin/kubectl-kruise_linux_amd64 - asset_name: kubectl-kruise_linux_amd64 + upload_url: ${{ steps.get_release.outputs.upload_url }} + asset_path: ./_bin/kubectl-kruise/kubectl-kruise-${{ steps.get_matrix.outputs.OS }}-${{ steps.get_matrix.outputs.ARCH }}.tar.gz + asset_name: kubectl-kruise-${{ steps.get_matrix.outputs.OS }}-${{ steps.get_matrix.outputs.ARCH }}.tar.gz asset_content_type: binary/octet-stream - - name: Upload linux/arm64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Post sha256 + uses: actions/upload-artifact@v2 with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ./bin/kubectl-kruise_linux_arm64 - asset_name: kubectl-kruise_linux_arm64 - asset_content_type: binary/octet-stream - - name: Upload darwin/amd64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + name: sha256sums + path: ./_bin/sha256-${{ steps.get_matrix.outputs.OS }}-${{ steps.get_matrix.outputs.ARCH }}.txt + retention-days: 1 + upload-sha256sums-plugin: + needs: build + runs-on: ubuntu-latest + name: upload-sha256sums + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Get release + id: get_release + uses: bruceadams/get-release@v1.2.2 + - name: Download sha256sums + uses: actions/download-artifact@v2 with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ./bin/kubectl-kruise_darwin_amd64 - asset_name: kubectl-kruise_darwin_amd64 - asset_content_type: binary/octet-stream - - name: Upload darwin/arm64 - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + name: sha256sums + - shell: bash + run: | + for file in * + do + cat ${file} >> sha256sums.txt + done + - name: Upload Checksums + uses: actions/upload-release-asset@v1.0.2 with: - upload_url: ${{ github.event.release.upload_url }} - asset_path: ./bin/kubectl-kruise_darwin_arm64 - asset_name: kubectl-kruise_darwin_arm64 - asset_content_type: binary/octet-stream + upload_url: ${{ steps.get_release.outputs.upload_url }} + asset_path: sha256sums.txt + asset_name: sha256sums.txt + asset_content_type: text/plain +# first time manual upload krew +# - name: Update kubectl plugin version in krew-index +# uses: rajatjindal/krew-release-bot@v0.0.40 \ No newline at end of file