From 8a91450c46f88ce6609b9e50b200e6e0784b411f Mon Sep 17 00:00:00 2001 From: huangzhangshu Date: Thu, 9 Nov 2023 21:43:30 +0800 Subject: [PATCH] chore: adjust release workflow --- .github/workflows/package-version.yml | 57 ++---- .github/workflows/release-create.yml | 20 +- .github/workflows/release-helm-chart.yml | 93 +++++---- .github/workflows/release-image.yml | 91 +++++---- .github/workflows/release-publish.yml | 238 ++++------------------- .github/workflows/release-version.yml | 59 ++++-- 6 files changed, 206 insertions(+), 352 deletions(-) diff --git a/.github/workflows/package-version.yml b/.github/workflows/package-version.yml index 955bd4e69f31..e85ed017be89 100644 --- a/.github/workflows/package-version.yml +++ b/.github/workflows/package-version.yml @@ -4,51 +4,22 @@ on: workflow_dispatch: inputs: release_version: - description: 'The tag name of release' - required: true + description: 'The version of release' + required: false + default: '' + content: + description: 'The request content' + required: false default: '' -run-name: ref_name:${{ github.ref_name }} release_version:${{ inputs.release_version }} - -env: - GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - PACKAGE_BOT_WEBHOOK: ${{ secrets.PACKAGE_BOT_WEBHOOK }} - +run-name: ref_name:${{ github.ref_name }} release_version:${{ inputs.release_version }} ${{ inputs.content }} jobs: package-version: - runs-on: ubuntu-latest - steps: - - name: checkout branch ${{ github.ref_name }} - uses: actions/checkout@v4 - - - name: package message - run: | - bash .github/utils/utils.sh --type 11 \ - --tag-name "${{ inputs.release_version }}" \ - --bot-webhook ${{ env.PACKAGE_BOT_WEBHOOK }} - - - name: package check - run: | - bash .github/utils/utils.sh --type 7 --tag-name "${{ inputs.release_version }}" - - - name: push tag - uses: mathieudutour/github-tag-action@v6.1 - with: - custom_tag: ${{ inputs.release_version }} - github_token: ${{ env.GITHUB_TOKEN }} - tag_prefix: "" - - send-message: - runs-on: ubuntu-latest - needs: package-version - if: ${{ failure() || cancelled() }} - steps: - - uses: actions/checkout@v4 - - name: send message - run: | - bash .github/utils/utils.sh --type 12 \ - --tag-name ${{ inputs.release_version }} \ - --content "package\u00a0${{ inputs.release_version }}\u00a0error" \ - --bot-webhook ${{ env.PACKAGE_BOT_WEBHOOK }} \ - --run-url "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" + uses: apecloud/apecloud-cd/.github/workflows/release-version.yml@v0.1.38 + with: + RELEASE_VERSION: "${{ inputs.release_version }}" + CONTENT: "${{ inputs.content }}" + APECD_REF: "v0.1.38" + BOT_TYPE: "package" + secrets: inherit diff --git a/.github/workflows/release-create.yml b/.github/workflows/release-create.yml index b71f795b6142..388b729e9587 100644 --- a/.github/workflows/release-create.yml +++ b/.github/workflows/release-create.yml @@ -10,7 +10,7 @@ env: RELEASE_BOT_WEBHOOK: ${{ secrets.RELEASE_BOT_WEBHOOK }} jobs: - publish: + release-create: name: create a release runs-on: ubuntu-latest outputs: @@ -48,15 +48,11 @@ jobs: run: ./.github/utils/sanitize_release_body.sh send-message: - runs-on: ubuntu-latest - needs: publish + needs: [ release-create ] if: ${{ failure() || cancelled() }} - steps: - - uses: actions/checkout@v4 - - name: send message - run: | - bash .github/utils/utils.sh --type 12 \ - --tag-name ${{ needs.publish.outputs.rel-version }} \ - --content "release\u00a0${{ needs.publish.outputs.rel-version }}\u00a0create\u00a0error"\ - --bot-webhook ${{ env.RELEASE_BOT_WEBHOOK }} \ - --run-url "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" \ No newline at end of file + uses: apecloud/apecloud-cd/.github/workflows/feishui-message.yml@v0.1.38 + with: + TYPE: "2" + CONTENT: "create release ${{ needs.release-create.outputs.rel-version }} error" + APECD_REF: "v0.1.38" + secrets: inherit diff --git a/.github/workflows/release-helm-chart.yml b/.github/workflows/release-helm-chart.yml index 7b47f79d7011..338ef484af50 100644 --- a/.github/workflows/release-helm-chart.yml +++ b/.github/workflows/release-helm-chart.yml @@ -3,8 +3,8 @@ name: RELEASE-CHART on: workflow_dispatch: inputs: - chart_version: - description: 'The version of helm chart' + release_version: + description: 'The release version of helm chart' required: true default: '' release: @@ -18,29 +18,29 @@ env: jobs: - chart-version: + release-version: runs-on: ubuntu-latest outputs: - chart-version: ${{ steps.get_version.outputs.chart_version }} - chart-version-bump: ${{ steps.get_version.outputs.chart_version_bump }} + release-version: ${{ steps.get_release_version.outputs.release_version }} + release-version-bump: ${{ steps.get_release_version.outputs.release_version_bump }} steps: - - name: Get Chart Version - id: get_version + - name: Get Release Version + id: get_release_version run: | - VERSION=${{ inputs.chart_version }} - if [ -z "$VERSION" ]; then - VERSION=${{ env.RELEASE_VERSION }} + RELEASE_VERSION=${{ inputs.release_version }} + if [ -z "$RELEASE_VERSION" ]; then + RELEASE_VERSION=${{ env.RELEASE_VERSION }} fi - echo chart_version=$VERSION >> $GITHUB_OUTPUT - VERSION_BUMP="${VERSION/v/}" - echo chart_version_bump=$VERSION_BUMP >> $GITHUB_OUTPUT + echo release_version=$RELEASE_VERSION >> $GITHUB_OUTPUT + RELEASE_VERSION_BUMP="${RELEASE_VERSION/v/}" + echo release_version_bump=$RELEASE_VERSION_BUMP >> $GITHUB_OUTPUT release-chart: - needs: chart-version + needs: release-version uses: apecloud/apecloud-cd/.github/workflows/release-charts.yml@v0.1.37 with: MAKE_OPS: "bump-chart-ver" - VERSION: "${{ needs.chart-version.outputs.chart-version }}" + VERSION: "${{ needs.release-version.outputs.release-version }}" CHART_NAME: "kubeblocks" CHART_DIR: "deploy/helm" DEP_CHART_DIR: "deploy/helm/depend-charts" @@ -48,65 +48,76 @@ jobs: secrets: inherit release-addons-chart: - needs: chart-version - uses: apecloud/apecloud-cd/.github/workflows/release-charts.yml@v0.1.37 + needs: release-version + uses: apecloud/apecloud-cd/.github/workflows/release-charts.yml@v0.1.38 with: GITHUB_REPO: "apecloud/kubeblocks-addons" - VERSION: "${{ needs.chart-version.outputs.chart-version }}" + VERSION: "${{ needs.release-version.outputs.release-version }}" CHART_DIR: "addons" - APECD_REF: "v0.1.37" + APECD_REF: "v0.1.38" + GITHUB_REF: ${{ github.ref }} secrets: inherit release-charts-image: - needs: [ chart-version, release-chart, release-addons-chart ] + needs: [ release-version, release-chart, release-addons-chart ] uses: apecloud/apecloud-cd/.github/workflows/release-image-cache.yml@v0.1.24 with: - MAKE_OPS_PRE: "helm-package VERSION=${{ needs.chart-version.outputs.chart-version-bump }}" + MAKE_OPS_PRE: "helm-package VERSION=${{ needs.release-version.outputs.release-version-bump }}" IMG: "apecloud/kubeblocks-charts" - VERSION: "${{ needs.chart-version.outputs.chart-version }}" + VERSION: "${{ needs.release-version.outputs.release-version }}" GO_VERSION: "1.21" APECD_REF: "v0.1.24" DOCKERFILE_PATH: "./docker/Dockerfile-charts" secrets: inherit - send-message: + release-message: runs-on: ubuntu-latest needs: release-charts-image + outputs: + content-result: ${{ steps.release_message.outputs.content_result }} + release-version: ${{ steps.release_message.outputs.release_version }} if: ${{ always() && github.event.action == 'published' }} steps: - uses: actions/checkout@v4 - - name: send message - id: send_message + - name: release message + id: release_message run: | - release_result="${{ env.RELEASE_VERSION }}-chart" - touch ${release_result} - echo 'release-result='${release_result} >> $GITHUB_OUTPUT + ARTIFACT_KEY="${{ env.RELEASE_VERSION }}-chart" + touch ${ARTIFACT_KEY} + echo 'artifact_key='${ARTIFACT_KEY} >> $GITHUB_OUTPUT - CONTENT="release\u00a0${{ env.RELEASE_VERSION }}\u00a0chart\u00a0error" + CONTENT="error" if [[ "${{ needs.release-charts-image.result }}" == "success" ]]; then - CONTENT="release\u00a0${{ env.RELEASE_VERSION }}\u00a0chart\u00a0success" - echo "success" > ${release_result} + CONTENT="success" + echo "success" > ${ARTIFACT_KEY} else - echo "error" > ${release_result} + echo "error" > ${ARTIFACT_KEY} fi - - bash .github/utils/utils.sh --type 12 \ - --tag-name ${{ env.RELEASE_VERSION }} \ - --content "${CONTENT}"\ - --bot-webhook ${{ env.RELEASE_BOT_WEBHOOK }} \ - --run-url "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" + echo 'content_result='$CONTENT >> $GITHUB_OUTPUT + echo release_version=${{ env.RELEASE_VERSION }} >> $GITHUB_OUTPUT - name: delete cache continue-on-error: true run: | - bash .github/utils/utils.sh --type 17 --tag-name "${{ steps.send_message.outputs.release-result }}" + bash .github/utils/utils.sh --type 17 --tag-name "${{ steps.release_message.outputs.artifact_key }}" - name: Save Artifact id: cache-artifact-save uses: actions/cache/save@v3 with: path: | - ${{ steps.send_message.outputs.release-result }} - key: ${{ steps.send_message.outputs.release-result }} + ${{ steps.release_message.outputs.artifact_key }} + key: ${{ steps.release_message.outputs.artifact_key }} + + send-message: + needs: [ release-message ] + if: ${{ always() && github.event.action == 'published' }} + uses: apecloud/apecloud-cd/.github/workflows/feishui-message.yml@v0.1.38 + with: + TYPE: "2" + CONTENT: "release chart ${{ needs.release-message.outputs.release-version }} ${{ needs.release-message.outputs.content-result }}" + APECD_REF: "v0.1.38" + secrets: inherit + diff --git a/.github/workflows/release-image.yml b/.github/workflows/release-image.yml index b6b21bc9c6bc..d2c45b1d87e4 100644 --- a/.github/workflows/release-image.yml +++ b/.github/workflows/release-image.yml @@ -5,8 +5,8 @@ on: - cron: '0 0 * * 1-5' # Runs at 00:00 UTC on Mon to Friday workflow_dispatch: inputs: - image_tag: - description: 'image tag' + release_version: + description: 'The release version of image' required: false default: 'latest' release: @@ -20,104 +20,113 @@ env: jobs: - image-tag: + release-version: runs-on: ubuntu-latest outputs: - tag-name: ${{ steps.get_tag_name.outputs.tag_name }} + release-version: ${{ steps.get_release_version.outputs.release_version }} steps: - - name: Get Tag Name - id: get_tag_name + - name: Get Release Version + id: get_release_version run: | - TAG_NAME="latest" - if [[ ! -z "${{ inputs.image_tag }}" ]]; then - TAG_NAME="${{ inputs.image_tag }}" + RELEASE_VERSION="latest" + if [[ ! -z "${{ inputs.release_version }}" ]]; then + RELEASE_VERSION="${{ inputs.release_version }}" elif [[ "${{ env.RELEASE_VERSION }}" == "main" ]]; then - TAG_NAME="latest" + RELEASE_VERSION="latest" elif [[ ! -z "${{ env.RELEASE_VERSION }}" ]]; then - TAG_NAME=${{ env.RELEASE_VERSION }} + RELEASE_VERSION=${{ env.RELEASE_VERSION }} fi - echo tag_name=$TAG_NAME >> $GITHUB_OUTPUT + echo release_version=$RELEASE_VERSION >> $GITHUB_OUTPUT release-image: - needs: image-tag + needs: release-version uses: apecloud/apecloud-cd/.github/workflows/release-image-cache.yml@v0.1.24 with: MAKE_OPS_PRE: "generate" IMG: "apecloud/kubeblocks" - VERSION: "${{ needs.image-tag.outputs.tag-name }}" + VERSION: "${{ needs.release-version.outputs.release-version }}" GO_VERSION: "1.21" APECD_REF: "v0.1.24" DOCKERFILE_PATH: "./docker/Dockerfile" secrets: inherit release-tools-image: - needs: image-tag + needs: release-version uses: apecloud/apecloud-cd/.github/workflows/release-image-cache.yml@v0.1.24 with: MAKE_OPS_PRE: "module generate test-go-generate" IMG: "apecloud/kubeblocks-tools" - VERSION: "${{ needs.image-tag.outputs.tag-name }}" + VERSION: "${{ needs.release-version.outputs.release-version }}" GO_VERSION: "1.21" APECD_REF: "v0.1.24" DOCKERFILE_PATH: "./docker/Dockerfile-tools" secrets: inherit release-datascript-image: - needs: image-tag + needs: release-version uses: apecloud/apecloud-cd/.github/workflows/release-image-cache.yml@v0.1.24 with: IMG: "apecloud/kubeblocks-datascript" - VERSION: "${{ needs.image-tag.outputs.tag-name }}" + VERSION: "${{ needs.release-version.outputs.release-version }}" APECD_REF: "v0.1.24" DOCKERFILE_PATH: "./docker/Dockerfile-datascript" secrets: inherit release-dataprotection-image: - needs: image-tag + needs: release-version uses: apecloud/apecloud-cd/.github/workflows/release-image-cache.yml@v0.1.24 with: IMG: "apecloud/kubeblocks-dataprotection" - VERSION: "${{ needs.image-tag.outputs.tag-name }}" + VERSION: "${{ needs.release-version.outputs.release-version }}" APECD_REF: "v0.1.24" DOCKERFILE_PATH: "./docker/Dockerfile-dataprotection" secrets: inherit - send-message: + release-message: runs-on: ubuntu-latest - needs: [ release-image, release-tools-image, release-datascript-image] + needs: [ release-image, release-tools-image, release-datascript-image, release-dataprotection-image ] + outputs: + content-result: ${{ steps.release_message.outputs.content_result }} + release-version: ${{ steps.release_message.outputs.release_version }} if: ${{ always() && github.event.action == 'published' }} steps: - uses: actions/checkout@v4 - - name: send message - id: send_message + - name: release message + id: release_message run: | - release_result="${{ env.RELEASE_VERSION }}-image" - touch ${release_result} - echo 'release-result='${release_result} >> $GITHUB_OUTPUT + ARTIFACT_KEY="${{ env.RELEASE_VERSION }}-image" + touch ${ARTIFACT_KEY} + echo 'artifact_key='${ARTIFACT_KEY} >> $GITHUB_OUTPUT - CONTENT="release\u00a0${{ env.RELEASE_VERSION }}\u00a0image\u00a0error" - if [[ "${{ needs.release-image.result }}" == "success" && "${{ needs.release-tools-image.result }}" == "success" && "${{ needs.release-datascript-image.result }}" == "success" ]]; then - CONTENT="release\u00a0${{ env.RELEASE_VERSION }}\u00a0image\u00a0success" - echo "success" > ${release_result} + CONTENT="error" + if [[ "${{ needs.release-image.result }}" == "success" && "${{ needs.release-tools-image.result }}" == "success" && "${{ needs.release-datascript-image.result }}" == "success" && "${{ needs.release-dataprotection-image.result }}" == "success" ]]; then + CONTENT="success" + echo "success" > ${ARTIFACT_KEY} else - echo "error" > ${release_result} + echo "error" > ${ARTIFACT_KEY} fi - - bash .github/utils/utils.sh --type 12 \ - --tag-name ${{ env.RELEASE_VERSION }} \ - --content "${CONTENT}"\ - --bot-webhook ${{ env.RELEASE_BOT_WEBHOOK }} \ - --run-url "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" + echo 'content_result='$CONTENT >> $GITHUB_OUTPUT + echo release_version=${{ env.RELEASE_VERSION }} >> $GITHUB_OUTPUT - name: delete cache continue-on-error: true run: | - bash .github/utils/utils.sh --type 17 --tag-name "${{ steps.send_message.outputs.release-result }}" + bash .github/utils/utils.sh --type 17 --tag-name "${{ steps.release_message.outputs.artifact_key }}" - name: Save Artifact id: cache-artifact-save uses: actions/cache/save@v3 with: path: | - ${{ steps.send_message.outputs.release-result }} - key: ${{ steps.send_message.outputs.release-result }} + ${{ steps.release_message.outputs.artifact_key }} + key: ${{ steps.release_message.outputs.artifact_key }} + + send-message: + needs: [ release-message ] + if: ${{ always() && github.event.action == 'published' }} + uses: apecloud/apecloud-cd/.github/workflows/feishui-message.yml@v0.1.38 + with: + TYPE: "2" + CONTENT: "release image ${{ needs.release-message.outputs.release-version }} ${{ needs.release-message.outputs.content-result }}" + APECD_REF: "v0.1.38" + secrets: inherit diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 4953ae3ad667..b99ce4304069 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -6,222 +6,68 @@ on: - published env: - GH_TOKEN: ${{ github.token }} - GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - TAG_NAME: ${{ github.ref_name }} - GO_VERSION: "1.21" - CLI_NAME: 'kbcli' - CLI_REPO: 'apecloud/kbcli' - GITLAB_KBCLI_PROJECT_ID: 85948 - GITLAB_ACCESS_TOKEN: ${{ secrets.GITLAB_ACCESS_TOKEN }} + RELEASE_VERSION: ${{ github.ref_name }} RELEASE_BOT_WEBHOOK: ${{ secrets.RELEASE_BOT_WEBHOOK }} - FURY_TOKEN: ${{ secrets.FURY_UPLOAD_TOKEN }} - FURY_ACCOUNT: ${{ secrets.FURY_ACCOUNT }} - GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} - PASSPHRASE: ${{ secrets.PASSPHRASE }} jobs: - create-release-kbcli: - name: Create Release kbcli - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: create release ${{ env.CLI_NAME }} - id: create_release - uses: softprops/action-gh-release@v1 - with: - tag_name: ${{ env.TAG_NAME }} - name: KubeBlocks ${{ env.TAG_NAME }} - repository: ${{ env.CLI_REPO }} - token: ${{ env.GITHUB_TOKEN }} - prerelease: true - - name: create gitlab release ${{ env.CLI_NAME }} - run: | - bash ${{ github.workspace }}/.github/utils/release_gitlab.sh \ - --type 1 \ - --project-id ${{ env.GITLAB_KBCLI_PROJECT_ID }} \ - --tag-name ${{ env.TAG_NAME }} \ - --access-token ${{ env.GITLAB_ACCESS_TOKEN }} - - gorelease-assert: - needs: create-release-kbcli - name: Upload and release kbcli - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: install lib - run: | - sudo apt-get update - sudo apt-get install -y --no-install-recommends \ - libbtrfs-dev \ - libdevmapper-dev \ - libgpgme-dev - - - name: Setup Go - uses: actions/setup-go@v4 - with: - go-version: ${{ env.GO_VERSION }} - - - name: Import GPG key - id: import_gpg - uses: crazy-max/ghaction-import-gpg@v5 - with: - gpg_private_key: ${{ env.GPG_PRIVATE_KEY }} - passphrase: ${{ env.PASSPHRASE }} - - - uses: goreleaser/goreleaser-action@v4 - with: - distribution: goreleaser - version: latest - args: release --config ${{ github.workspace }}/.goreleaser.yaml --clean - env: - GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }} - GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }} - - - name: upload .rpm and .deb to fury.io - run: | - for file in $(find "${{ github.workspace }}/dist" -type f | grep -E '\.(deb|rpm)$'); do - echo "Processing file: $file" - curl -F package=@$file https://${{ env.FURY_TOKEN }}@push.fury.io/${{ env.FURY_ACCOUNT }}/ - done - - - name: get kbcli's release upload url - run: | - echo 'UPLOAD_URL='`bash ${{ github.workspace }}/.github/utils/utils.sh \ - --tag-name ${{ env.TAG_NAME }} \ - --type 3 \ - --github-repo ${{ env.CLI_REPO }} \ - --github-token ${{ env.GITHUB_TOKEN }}` >> $GITHUB_ENV - - - name: upload kbcli.exe to kbcli's release page for winget - uses: actions/upload-release-asset@main - with: - upload_url: ${{ env.UPLOAD_URL }} - asset_path: ${{ github.workspace }}/dist/kbcli_windows_amd64_v1/${{ env.CLI_NAME }}.exe - asset_name: ${{ env.CLI_NAME }}.exe - asset_content_type: application/octet-stream - - - name: Upload kbcli Artifact - uses: actions/upload-artifact@v3 - with: - name: ${{ env.TAG_NAME }}-kbcli - path: | - ./dist/*.tar.gz - ./dist/*.zip - if-no-files-found: error - retention-days: 1 - - upload-release-assert: - needs: gorelease-assert - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - os: [linux-amd64, linux-arm64, darwin-amd64, darwin-arm64, windows-amd64, windows-arm64] - steps: - - uses: actions/checkout@v4 - - name: Download kbcli Artifact - uses: actions/download-artifact@v3.0.2 - with: - name: ${{ env.TAG_NAME }}-kbcli - path: ${{ github.workspace }}/dist - - - name: upload assets to gitlab - run: | - for file in $(find "${{ github.workspace }}/dist" -type f | grep -E '\.(gz|zip)$'); do - if [[ "$file" == *"${{ matrix.os }}"* ]]; then - echo "Processing file: $file" - filename=$(basename "$file") - bash ${{ github.workspace }}/.github/utils/release_gitlab.sh \ - --type 2 \ - --project-id ${{ env.GITLAB_KBCLI_PROJECT_ID }} \ - --tag-name ${{ env.TAG_NAME }} \ - --asset-path $file \ - --asset-name $filename \ - --access-token ${{ env.GITLAB_ACCESS_TOKEN }} - fi - done - # to github.com/apelcould/kubeblocks/release - - name: Get release - id: get_release - uses: bruceadams/get-release@v1.3.2 - - - name: upload release asset ${{ matrix.os }} - if: ${{ matrix.os != 'windows-amd64' && matrix.os != 'windows-arm64' }} - continue-on-error: true - uses: actions/upload-release-asset@main - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ${{ github.workspace }}/dist/${{ env.CLI_NAME }}-${{ matrix.os }}-${{ env.TAG_NAME }}.tar.gz - asset_name: ${{ env.CLI_NAME }}-${{ matrix.os }}-${{ env.TAG_NAME }}.tar.gz - asset_content_type: application/gzip - - - name: upload release asset ${{ matrix.os }} - if: ${{ matrix.os == 'windows-amd64' || matrix.os == 'windows-arm64' }} - continue-on-error: true - uses: actions/upload-release-asset@main - with: - upload_url: ${{ steps.get_release.outputs.upload_url }} - asset_path: ${{ github.workspace }}/dist/${{ env.CLI_NAME }}-${{ matrix.os }}-${{ env.TAG_NAME }}.zip - asset_name: ${{ env.CLI_NAME }}-${{ matrix.os }}-${{ env.TAG_NAME }}.zip - asset_content_type: application/zip - - remove-artifact: - needs: upload-release-assert - runs-on: ubuntu-latest - steps: - - name: Remove kbcli Artifact - uses: geekyeggo/delete-artifact@v2 - with: - name: ${{ env.TAG_NAME }}-kbcli + release-kbcli: + uses: apecloud/kbcli/.github/workflows/release-kbcli.yml@main + with: + KBCLI_REF: ${{ github.ref }} + secrets: inherit - send-message: + release-message: runs-on: ubuntu-latest - needs: upload-release-assert + needs: release-kbcli outputs: - tag-name: ${{ steps.send_message.outputs.tag_name }} + content-result: ${{ steps.release_message.outputs.content_result }} + release-version: ${{ steps.release_message.outputs.release_version }} if: ${{ always() && github.event.action == 'published' }} steps: - uses: actions/checkout@v4 - - name: send message - id: send_message + - name: release message + id: release_message run: | - release_result="${{ env.TAG_NAME }}-kbcli" - touch ${release_result} - echo 'release-result='${release_result} >> $GITHUB_OUTPUT + ARTIFACT_KEY="${{ env.RELEASE_VERSION }}-kbcli" + touch ${ARTIFACT_KEY} + echo 'artifact_key='${ARTIFACT_KEY} >> $GITHUB_OUTPUT - CONTENT="release\u00a0${{ env.TAG_NAME }}\u00a0kbcli\u00a0error" - if [[ "${{ needs.upload-release-assert.result }}" == "success" ]]; then - CONTENT="release\u00a0${{ env.TAG_NAME }}\u00a0kbcli\u00a0success" - echo "success" > ${release_result} + CONTENT="error" + if [[ "${{ needs.release-kbcli.result }}" == "success" ]]; then + CONTENT="success" + echo "success" > ${ARTIFACT_KEY} else - echo "error" > ${release_result} + echo "error" > ${ARTIFACT_KEY} fi - - bash .github/utils/utils.sh --type 12 \ - --tag-name ${{ env.TAG_NAME }} \ - --content "${CONTENT}"\ - --bot-webhook ${{ env.RELEASE_BOT_WEBHOOK }} \ - --run-url "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" - - echo tag_name=${{ env.TAG_NAME }} >> $GITHUB_OUTPUT + echo 'content_result='$CONTENT >> $GITHUB_OUTPUT + echo release_version=${{ env.RELEASE_VERSION }} >> $GITHUB_OUTPUT - name: delete cache continue-on-error: true run: | - bash .github/utils/utils.sh --type 17 --tag-name "${{ steps.send_message.outputs.release-result }}" + bash .github/utils/utils.sh --type 17 --tag-name "${{ steps.release_message.outputs.artifact_key }}" - name: Save Artifact id: cache-artifact-save uses: actions/cache/save@v3 with: path: | - ${{ steps.send_message.outputs.release-result }} - key: ${{ steps.send_message.outputs.release-result }} + ${{ steps.release_message.outputs.artifact_key }} + key: ${{ steps.release_message.outputs.artifact_key }} + + send-message: + needs: [ release-message ] + if: ${{ always() && github.event.action == 'published' }} + uses: apecloud/apecloud-cd/.github/workflows/feishui-message.yml@v0.1.38 + with: + TYPE: "2" + CONTENT: "release kbcli ${{ needs.release-message.outputs.release-version }} ${{ needs.release-message.outputs.content-result }}" + APECD_REF: "v0.1.38" + secrets: inherit release-result: if: github.event.action == 'published' - needs: [ send-message ] + needs: [ release-message ] runs-on: ubuntu-latest strategy: matrix: @@ -232,18 +78,18 @@ jobs: uses: actions/cache/restore@v3 with: path: | - ${{ env.TAG_NAME }}-${{ matrix.type }} - key: ${{ env.TAG_NAME }}-${{ matrix.type }} + ${{ env.RELEASE_VERSION }}-${{ matrix.type }} + key: ${{ env.RELEASE_VERSION }}-${{ matrix.type }} - name: check release result run: | - release_result=$( cat ${{ env.TAG_NAME }}-${{ matrix.type }} ) + release_result=$( cat ${{ env.RELEASE_VERSION }}-${{ matrix.type }} ) if [[ "$release_result" != "success" ]]; then exit 1 fi e2e-kbcli: - needs: [ send-message, release-result ] + needs: [ release-message, release-result ] uses: apecloud/apecloud-cd/.github/workflows/trigger-workflow.yml@v0.1.35 strategy: fail-fast: false @@ -254,7 +100,7 @@ jobs: BRANCH_NAME: "main" WORKFLOW_ID: "e2e-kbcli.yml" APECD_REF: "v0.1.35" - VERSION: "${{ needs.send-message.outputs.tag-name }}" + VERSION: "${{ needs.release-message.outputs.release-version }}" EXTRA_ARGS: "TEST_TYPE=${{ matrix.test-type }}" secrets: inherit @@ -269,4 +115,4 @@ jobs: - name: delete ${{ matrix.type }} cache continue-on-error: true run: | - bash .github/utils/utils.sh --type 17 --tag-name "${{ env.TAG_NAME }}-${{ matrix.type }}" + bash .github/utils/utils.sh --type 17 --tag-name "${{ env.RELEASE_VERSION }}-${{ matrix.type }}" diff --git a/.github/workflows/release-version.yml b/.github/workflows/release-version.yml index 16b05939f923..3888909142d2 100644 --- a/.github/workflows/release-version.yml +++ b/.github/workflows/release-version.yml @@ -4,7 +4,7 @@ on: workflow_dispatch: inputs: release_version: - description: 'The tag name of release' + description: 'The version of release' required: true default: '' @@ -12,11 +12,18 @@ run-name: ref_name:${{ github.ref_name }} release_version:${{ inputs.release_ver env: GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - RELEASE_BOT_WEBHOOK: ${{ secrets.RELEASE_BOT_WEBHOOK }} GO_VERSION: "1.21" jobs: release-message: + uses: apecloud/apecloud-cd/.github/workflows/feishui-message.yml@v0.1.38 + with: + TYPE: "1" + VERSION: "${{ inputs.release_version }}" + APECD_REF: "v0.1.38" + secrets: inherit + + trigger-mode: runs-on: ubuntu-latest outputs: matrix: ${{ steps.get_trigger_mode.outputs.matrix }} @@ -25,10 +32,6 @@ jobs: - name: release message id: get_trigger_mode run: | - bash .github/utils/utils.sh --type 11 \ - --tag-name "${{ inputs.release_version }}" \ - --bot-webhook ${{ env.RELEASE_BOT_WEBHOOK }} - TEST_PACKAGES=`bash .github/utils/utils.sh --type 16 \ --trigger-type "[test]" \ --test-pkgs "${{ vars.TEST_PKGS }}" \ @@ -38,11 +41,11 @@ jobs: echo "matrix={\"include\":[$TEST_PACKAGES]}" >> $GITHUB_OUTPUT release-test: - needs: release-message + needs: [ trigger-mode ] runs-on: ubuntu-latest strategy: fail-fast: true - matrix: ${{ fromJSON(needs.release-message.outputs.matrix) }} + matrix: ${{ fromJSON(needs.trigger-mode.outputs.matrix) }} steps: - uses: actions/checkout@v4 - name: install lib @@ -87,16 +90,34 @@ jobs: github_token: ${{ env.GITHUB_TOKEN }} tag_prefix: "" + release-addons-version: + needs: release-test + uses: apecloud/apecloud-cd/.github/workflows/trigger-workflow.yml@v0.1.38 + with: + GITHUB_REPO: "apecloud/kubeblocks-addons" + BRANCH_NAME: "${{ github.ref_name }}" + WORKFLOW_ID: "release-version.yml" + VERSION: "${{ inputs.release_version }}" + APECD_REF: "v0.1.38" + secrets: inherit + + release-kbcli-version: + needs: release-test + uses: apecloud/apecloud-cd/.github/workflows/trigger-workflow.yml@v0.1.38 + with: + GITHUB_REPO: "apecloud/kbcli" + BRANCH_NAME: "${{ github.ref_name }}" + WORKFLOW_ID: "release-version.yml" + VERSION: "${{ inputs.release_version }}" + APECD_REF: "v0.1.38" + secrets: inherit + send-message: - runs-on: ubuntu-latest - needs: release-version + needs: [ release-version, release-addons-version, release-kbcli-version ] if: ${{ failure() || cancelled() }} - steps: - - uses: actions/checkout@v4 - - name: send message - run: | - bash .github/utils/utils.sh --type 12 \ - --tag-name ${{ inputs.release_version }} \ - --content "release\u00a0${{ inputs.release_version }}\u00a0error"\ - --bot-webhook ${{ env.RELEASE_BOT_WEBHOOK }} \ - --run-url "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" \ No newline at end of file + uses: apecloud/apecloud-cd/.github/workflows/feishui-message.yml@v0.1.38 + with: + TYPE: "2" + CONTENT: "release ${{ inputs.release_version }} error" + APECD_REF: "v0.1.38" + secrets: inherit