Products Release Notes and Tag #142
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Products Release Notes and Tag | |
| defaults: | |
| run: | |
| shell: bash | |
| env: | |
| TOKEN: ${{ secrets.X_TOKEN }} | |
| RELEASE_URL: ${{ vars.RELEASE_URL }} | |
| SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} | |
| SSH_CONFIG: ${{ secrets.SSH_CONFIG }} | |
| LOCAL_HOST: ${{ secrets.LOCAL_HOST }} | |
| LOCAL_PORT: ${{ secrets.LOCAL_PORT }} | |
| OSS_EP: ${{ secrets.OSS_EP }} | |
| OSS_AK: ${{ secrets.OSS_AK }} | |
| OSS_SK: ${{ secrets.OSS_SK }} | |
| OSS_BK: ${{ secrets.OSS_BK }} | |
| OSS_MODE: ${{ secrets.OSS_MODE }} | |
| CONNECT_SERVER: ${{ secrets.CONNECT_SERVER }} | |
| CONNECT_PORT: ${{ secrets.CONNECT_PORT }} | |
| CONNECT_KEY: ${{ secrets.CONNECT_KEY }} | |
| CONNECT_TIMEOUT: ${{ vars.CONNECT_TIMEOUT }} | |
| CONNECT_MODE: ${{ vars.CONNECT_MODE }} | |
| CONNECT_METHOD: ${{ secrets.CONNECT_METHOD }} | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| OPERATION: | |
| description: 'Create PR/TAG' | |
| required: true | |
| type: choice | |
| options: ['PR', 'TAG', 'RELEASE'] | |
| default: "PR" | |
| FRAMEWORK_PUBLISH: | |
| description: 'Products with Framework' | |
| required: false | |
| type: boolean | |
| default: false | |
| FRAMEWORK_PUBLISH_VERSION: | |
| description: 'Publish Framework Version' | |
| required: false | |
| default: "1.4.0" | |
| AGENT_PUBLISH: | |
| description: 'Products with Agent' | |
| required: false | |
| type: boolean | |
| default: false | |
| AGENT_PUBLISH_VERSION: | |
| description: 'Publish Products Release Version' | |
| required: false | |
| default: "1.31.0-2453" | |
| CONSOLE_PUBLISH: | |
| description: 'Products with Console' | |
| required: false | |
| type: boolean | |
| default: false | |
| CONSOLE_PUBLISH_VERSION: | |
| description: 'Publish Console Version' | |
| required: false | |
| default: "1.30.3-2407" | |
| GATEWAY_PUBLISH: | |
| description: 'Products with Gateway' | |
| required: false | |
| type: boolean | |
| default: false | |
| GATEWAY_PUBLISH_VERSION: | |
| description: 'Publish Gateway Version' | |
| required: false | |
| default: "1.30.3-2407" | |
| LOADGEN_PUBLISH: | |
| description: 'Products with Loadgen' | |
| required: false | |
| type: boolean | |
| default: false | |
| LOADGEN_PUBLISH_VERSION: | |
| description: 'Publish Loadgen Version' | |
| required: false | |
| default: "1.30.3-2407" | |
| EASYSEARCH_PUBLISH: | |
| description: 'Products with Easysearch' | |
| required: false | |
| type: boolean | |
| default: false | |
| EASYSEARCH_PUBLISH_VERSION: | |
| description: 'Publish Easysearch Version' | |
| required: false | |
| default: "2.1.3-2719" | |
| COCOAPP_PUBLISH: | |
| description: 'Products with Coco App' | |
| required: false | |
| type: boolean | |
| default: false | |
| COCOAPP_PUBLISH_VERSION: | |
| description: 'Publish Coco App Version' | |
| required: false | |
| default: "0.10.0-2619" | |
| COCOSERVER_PUBLISH: | |
| description: 'Products with Coco Server' | |
| required: false | |
| type: boolean | |
| default: false | |
| COCOSERVER_PUBLISH_VERSION: | |
| description: 'Publish Coco Server Version' | |
| required: false | |
| default: "0.12.0-2201" | |
| jobs: | |
| generate-matrix: | |
| name: Generate Matrix for ${{ inputs.OPERATION }} | |
| runs-on: ubuntu-latest | |
| outputs: | |
| matrix: ${{ steps.gen-matrix.outputs.matrix }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Generate matrix | |
| id: gen-matrix | |
| env: | |
| AGENT_PUBLISH: ${{ inputs.AGENT_PUBLISH }} | |
| CONSOLE_PUBLISH: ${{ inputs.CONSOLE_PUBLISH }} | |
| GATEWAY_PUBLISH: ${{ inputs.GATEWAY_PUBLISH }} | |
| LOADGEN_PUBLISH: ${{ inputs.LOADGEN_PUBLISH }} | |
| FRAMEWORK_PUBLISH: ${{ inputs.FRAMEWORK_PUBLISH }} | |
| EASYSEARCH_PUBLISH: ${{ inputs.EASYSEARCH_PUBLISH }} | |
| COCO_APP_PUBLISH: ${{ inputs.COCOAPP_PUBLISH }} | |
| COCO_SERVER_PUBLISH: ${{ inputs.COCOSERVER_PUBLISH }} | |
| AGENT_PUBLISH_VERSION: ${{ inputs.AGENT_PUBLISH_VERSION }} | |
| CONSOLE_PUBLISH_VERSION: ${{ inputs.CONSOLE_PUBLISH_VERSION }} | |
| GATEWAY_PUBLISH_VERSION: ${{ inputs.GATEWAY_PUBLISH_VERSION }} | |
| LOADGEN_PUBLISH_VERSION: ${{ inputs.LOADGEN_PUBLISH_VERSION }} | |
| FRAMEWORK_PUBLISH_VERSION: ${{ inputs.FRAMEWORK_PUBLISH_VERSION }} | |
| EASYSEARCH_PUBLISH_VERSION: ${{ inputs.EASYSEARCH_PUBLISH_VERSION }} | |
| COCO_APP_PUBLISH_VERSION: ${{ inputs.COCOAPP_PUBLISH_VERSION }} | |
| COCO_SERVER_PUBLISH_VERSION: ${{ inputs.COCOSERVER_PUBLISH_VERSION }} | |
| run: | | |
| matrix=$($GITHUB_WORKSPACE/scripts/go-matrix.sh) | |
| echo "matrix=$matrix" >> "$GITHUB_OUTPUT" | |
| cat "$GITHUB_OUTPUT" | |
| create-pr: | |
| needs: generate-matrix | |
| if: ${{ inputs.OPERATION == 'PR' }} | |
| name: Create PR for ${{ matrix.product }} with version ${{ matrix.publish_version }} | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| strategy: | |
| fail-fast: false | |
| max-parallel: 1 | |
| matrix: | |
| include: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} | |
| env: | |
| PRODUCT: ${{ matrix.product }} | |
| PUBLISH_VERSION: ${{ matrix.publish_version }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup bootstrap | |
| uses: ./containers/bootstrap | |
| - name: Set up env for PR | |
| run: | | |
| if [[ -z "$PUBLISH_VERSION" ]]; then | |
| echo "Error: Version is empty for $PRODUCT" | |
| exit 1 | |
| fi | |
| PR_BRANCH="ci_release_$PUBLISH_VERSION" | |
| PR_MESSAGE="chore: update release notes for publish $PUBLISH_VERSION" | |
| echo "PNAME=$PRODUCT" >> $GITHUB_ENV | |
| echo "VERSION=$PUBLISH_VERSION" >> $GITHUB_ENV | |
| echo "PR_BRANCH=$PR_BRANCH" >> $GITHUB_ENV | |
| echo "PR_MESSAGE=$PR_MESSAGE" >> $GITHUB_ENV | |
| - name: Run connect in background (Easysearch only) | |
| if: ${{ matrix.product == 'easysearch' }} | |
| run: | | |
| connect -c "$GITHUB_WORKSPACE/.net.json" >/dev/null 2>&1 & | |
| echo "Connect started with pid $!" | |
| sleep 5 | |
| - name: Checkout code for ${{ matrix.product }} | |
| timeout-minutes: 30 | |
| run: | | |
| if [[ "$PRODUCT" == "easysearch" ]]; then | |
| git clone ${{ secrets.SSH_GIT_REPO }}/$PRODUCT $GITHUB_WORKSPACE/$PRODUCT | |
| else | |
| git clone ${{ vars.GIT_SSH_REPO }}/$PRODUCT $GITHUB_WORKSPACE/$PRODUCT | |
| fi | |
| cd $GITHUB_WORKSPACE/$PRODUCT && echo Checkout $PNAME repo $(git log -1 --pretty=format:"%h, %ad, %an, %s") | |
| git config user.name github-actions | |
| git config user.email github-actions@github.com | |
| - name: Create Branch and update release notes & data | |
| continue-on-error: true | |
| env: | |
| DO_AGENT: ${{ inputs.AGENT_PUBLISH }} | |
| DO_CONSOLE: ${{ inputs.CONSOLE_PUBLISH }} | |
| DO_GATEWAY: ${{ inputs.GATEWAY_PUBLISH }} | |
| DO_LOADGEN: ${{ inputs.LOADGEN_PUBLISH }} | |
| DO_EZS: ${{ inputs.EASYSEARCH_PUBLISH }} | |
| DO_COCO_APP: ${{ inputs.COCOAPP_PUBLISH }} | |
| DO_COCO_SERVER: ${{ inputs.COCOSERVER_PUBLISH }} | |
| AGENT_VERSION: ${{ inputs.AGENT_PUBLISH_VERSION }} | |
| CONSOLE_VERSION: ${{ inputs.CONSOLE_PUBLISH_VERSION }} | |
| GATEWAY_VERSION: ${{ inputs.GATEWAY_PUBLISH_VERSION }} | |
| LOADGEN_VERSION: ${{ inputs.LOADGEN_PUBLISH_VERSION }} | |
| EASYSEARCH_VERSION: ${{ inputs.EASYSEARCH_PUBLISH_VERSION }} | |
| COCO_APP_VERSION: ${{ inputs.COCOAPP_PUBLISH_VERSION }} | |
| COCO_SERVER_VERSION: ${{ inputs.COCOSERVER_PUBLISH_VERSION }} | |
| run: | | |
| VAR_NAME="${PRODUCT^^}_PUBLISH_VERSION" | |
| VERSION="${!VAR_NAME}" | |
| FRAMEWORK_VER=${{ inputs.FRAMEWORK_PUBLISH_VERSION }} | |
| EZS_VER=${{ inputs.EASYSEARCH_PUBLISH_VERSION }} | |
| cd $GITHUB_WORKSPACE/$PRODUCT | |
| # Check if the branch already exists | |
| if git ls-remote --heads origin "$PR_BRANCH" | grep -q "$PR_BRANCH"; then | |
| echo "Branch $PR_BRANCH found. Deleting remote branch..." | |
| git push origin --delete "$PR_BRANCH" | |
| fi | |
| echo "Create Branch $PR_BRANCH for $PRODUCT" | |
| git checkout -b "$PR_BRANCH" | |
| PUBLISH="$(echo "$VERSION" | sed 's/-.*//') ($(date +'%Y-%m-%d'))" | |
| PRODUCT_NAME=$(echo "$PRODUCT" | sed 's/./\u&/') | |
| for f in en zh; do | |
| if [[ ! -d docs/content.$f ]]; then continue; fi | |
| FRAMEWORK_UPDATE_NOTES="- This release includes updates from the underlying [Framework](https://docs.infinilabs.com/framework/main), which resolves several common issues and enhances overall stability and performance. While there are no direct changes to ${PRODUCT_NAME} itself, the improvements inherited from Framework benefit ${PRODUCT_NAME} indirectly." | |
| if [[ "$f" == "zh" ]]; then | |
| FRAMEWORK_UPDATE_NOTES="- 此版本包含了底层 [Framework](https://docs.infinilabs.com/framework/main) 的更新,解决了一些常见问题,并增强了整体稳定性和性能。虽然 ${PRODUCT_NAME} 本身没有直接的变更,但从 Framework 中继承的改进间接地使 ${PRODUCT_NAME} 受益。" | |
| fi | |
| if ! grep -wq "$(echo "$VERSION" | sed 's/-.*//')" docs/content.$f/docs/release-notes/_index.md; then | |
| if [[ "$PRODUCT" == "console" || "$PRODUCT" == "agent" || "$PRODUCT" == "gateway" || "$PRODUCT" == "loadgen" ]]; then | |
| sed -i "0,/^[[:space:]]*###\{1,2\}[[:space:]]*✈️[[:space:]]*Improvements[[:space:]]*$/s||&\n$FRAMEWORK_UPDATE_NOTES|" docs/content.$f/docs/release-notes/_index.md | |
| fi | |
| sed -i "s/## Latest.*/## $PUBLISH/" docs/content.$f/docs/release-notes/_index.md | |
| sed -i -e "/^## $PUBLISH/i ## Latest (In development) \\n### ❌ Breaking changes \\n### 🚀 Features \\n### 🐛 Bug fix \\n### ✈️ Improvements \\n" docs/content.$f/docs/release-notes/_index.md | |
| git add docs/content.$f/docs/release-notes/_index.md | |
| fi | |
| done | |
| if [[ -d docs/data ]]; then | |
| sed -i "s/version:.*/version: '$VERSION',/" docs/data/quick_start.yaml | |
| if [[ "$PRODUCT" == "easysearch" ]]; then | |
| sed -i "19s/version:.*/version: '$EZS_VER'/" docs/data/quick_start.yaml | |
| fi | |
| if [[ "$PRODUCT" == "console" ]]; then | |
| sed -i "44s/version:.*/version: '$VERSION',/" docs/data/quick_start.yaml | |
| fi | |
| git add docs/data/quick_start.yaml | |
| fi | |
| - name: Create Commit Message | |
| id: commit_and_push | |
| run: | | |
| cd $GITHUB_WORKSPACE/$PRODUCT | |
| if [[ -n $(git status --porcelain) ]]; then | |
| echo "✅ Changes detected. Proceeding with commit and push..." | |
| git commit -m "$PR_MESSAGE" | |
| git push origin "$PR_BRANCH" | |
| echo "changes_pushed=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "🤷 No changes detected. Skipping commit and push." | |
| echo "changes_pushed=false" >> $GITHUB_OUTPUT | |
| fi | |
| if [[ "$PRODUCT" == "easysearch" ]]; then | |
| git remote set-url origin https://${{ secrets.HTTP_GIT_REPO }}/infini/$PRODUCT | |
| fi | |
| - name: Create Github Pull Request | |
| if: ${{ steps.commit_and_push.outputs.changes_pushed == 'true' && matrix.product != 'easysearch' }} | |
| env: | |
| GH_TOKEN: ${{ secrets.REPO_PAT }} | |
| run: | | |
| cd $GITHUB_WORKSPACE/$PRODUCT | |
| if ! gh label list --repo "${{vars.GIT_REPO}}/$PRODUCT" | grep -q "auto-merge"; then | |
| gh label create "auto-merge" --repo "${{vars.GIT_REPO}}/$PRODUCT" --description "Automatically merge this PR" --color 34d058 --force | |
| fi | |
| if ! gh label list --repo "${{vars.GIT_REPO}}/$PRODUCT" | grep -q "automated"; then | |
| gh label create "automated" --repo "${{vars.GIT_REPO}}/$PRODUCT" --description "Automated create this PR" --color 34d058 --force | |
| fi | |
| gh pr create --title "$PR_MESSAGE" \ | |
| --body "This PR create by github actions to updates the release notes." \ | |
| --base main \ | |
| --head "$PR_BRANCH" \ | |
| --label "auto-merge" \ | |
| --label "automated" | |
| - name: Create Pull Request (Gitea) | |
| if: ${{ steps.commit_and_push.outputs.changes_pushed == 'true' && matrix.product == 'easysearch' }} | |
| uses: infinilabs/gitea-pr@v0 | |
| env: | |
| https_proxy: http://${{ secrets.LOCAL_HOST }}:${{ secrets.LOCAL_PORT }} | |
| with: | |
| url: https://${{ secrets.HTTP_GIT_REPO}}/$PRODUCT | |
| token: ${{ secrets.GITEA_TOKEN }} | |
| path: ${{ env.PNAME }} | |
| base: main | |
| branch: ${{ env.PR_BRANCH}} | |
| assignee : hardy | |
| tea-version: 0.9.2 | |
| pr-label: "auto-merge, automated" | |
| create-tag: | |
| needs: generate-matrix | |
| if: ${{ inputs.OPERATION == 'TAG' }} | |
| name: Create TAG for ${{ matrix.product }} | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| strategy: | |
| fail-fast: false | |
| max-parallel: 1 | |
| matrix: | |
| include: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} | |
| env: | |
| PRODUCT: ${{ matrix.product }} | |
| PUBLISH_VERSION: ${{ matrix.publish_version }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup bootstrap | |
| uses: ./containers/bootstrap | |
| - name: Set up env for TAG | |
| run: | | |
| if [[ -z "$PUBLISH_VERSION" ]]; then | |
| echo "Error: Version is empty for $PRODUCT" | |
| exit 1 | |
| fi | |
| echo "PNAME=$PRODUCT" >> $GITHUB_ENV | |
| echo "VERSION=$PUBLISH_VERSION" >> $GITHUB_ENV | |
| - name: Run connect in background (Easysearch only) | |
| if: ${{ matrix.product == 'easysearch' }} | |
| run: | | |
| connect -c "$GITHUB_WORKSPACE/.net.json" >/dev/null 2>&1 & | |
| echo "Connect started with pid $!" | |
| sleep 5 | |
| - name: Checkout and create tag for ${{ matrix.product }} | |
| env: | |
| SSH_GIT_REPO: ${{ secrets.SSH_GIT_REPO }} | |
| GIT_SSH_REPO: ${{ vars.GIT_SSH_REPO }} | |
| run: | | |
| REPO="$PRODUCT" | |
| GIT_BASE=$([[ "$PRODUCT" == "easysearch" ]] && echo "$SSH_GIT_REPO" || echo "$GIT_SSH_REPO") | |
| git clone $GIT_BASE/$REPO $GITHUB_WORKSPACE/$REPO | |
| cd $GITHUB_WORKSPACE/$REPO | |
| git config user.name github-actions && git config user.email github-actions@github.com | |
| # Check if the tag already exists, if yes, skip to avoid duplicate tag error | |
| PVER=$(echo "v$VERSION" | sed 's/-.*//') | |
| git rev-parse --verify "refs/tags/$PVER" 2>/dev/null && echo "Tag $PVER exists" && exit 0 | |
| # Create and push tag | |
| git tag -a $PVER -m "Release $PVER" && git push origin $PVER | |
| # Sync enterprise-plugins tag (only for framework/coco-server) | |
| if [[ "$REPO" =~ ^(framework|coco-server)$ ]]; then | |
| PLUGIN="${REPO}-enterprise-plugins" | |
| git clone $GIT_BASE/$PLUGIN $GITHUB_WORKSPACE/$PLUGIN | |
| cd $GITHUB_WORKSPACE/$PLUGIN | |
| git config user.name github-actions && git config user.email github-actions@github.com | |
| git rev-parse --verify "refs/tags/$PVER" 2>/dev/null || { git tag -a $PVER -m "Release $PVER" && git push origin $PVER; } | |
| fi | |
| update-repo: | |
| name: Update framework tag version in CI repo | |
| runs-on: ubuntu-latest | |
| if: ${{ inputs.OPERATION == 'TAG' && inputs.FRAMEWORK_PUBLISH == 'true' }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Update release version in workflow files | |
| run: | | |
| TAG="${{ inputs.FRAMEWORK_PUBLISH_VERSION }}" | |
| cd $GITHUB_WORKSPACE/.github/workflows | |
| source $GITHUB_WORKSPACE/scripts/update_publish_version.sh | |
| update_yaml_version "release.yml" "FRAMEWORK_PUBLISH_VERSION" "${TAG}" | |
| - name: Create bumpver pull request | |
| uses: peter-evans/create-pull-request@v8 | |
| id: create-pr | |
| with: | |
| token: ${{ secrets.REPO_PAT }} | |
| commit-message: "bumpver: taged framework ${{ inputs.FRAMEWORK_PUBLISH_VERSION }}" | |
| branch: "release/release-${{ github.run_id }}" | |
| title: "bumpver: taged framework ${{ inputs.FRAMEWORK_PUBLISH_VERSION }}" | |
| body: "Automated version update for taged framework ${{ inputs.FRAMEWORK_PUBLISH_VERSION }}" | |
| labels: "auto-merge, automated" | |
| delete-branch: true | |
| add-paths: | | |
| .github/workflows/release.yml | |
| - name: Auto-merge the pr | |
| if: ${{ steps.create-pr.outputs.pull-request-url }} | |
| env: | |
| PR_URL: ${{ steps.create-pr.outputs.pull-request-url }} | |
| GH_TOKEN: ${{ secrets.REPO_PAT }} | |
| run: gh pr merge "$PR_URL" --squash | |
| release-metadata: | |
| if: ${{ inputs.OPERATION == 'RELEASE' }} | |
| name: Update Release Metadata & .latest | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup bootstrap | |
| uses: ./containers/bootstrap | |
| - name: Update GitHub Variables | |
| env: | |
| GH_TOKEN: ${{ secrets.REPO_PAT }} | |
| DO_AGENT: ${{ inputs.AGENT_PUBLISH }} | |
| DO_CONSOLE: ${{ inputs.CONSOLE_PUBLISH }} | |
| DO_GATEWAY: ${{ inputs.GATEWAY_PUBLISH }} | |
| DO_LOADGEN: ${{ inputs.LOADGEN_PUBLISH }} | |
| DO_EZS: ${{ inputs.EASYSEARCH_PUBLISH }} | |
| DO_COCO_APP: ${{ inputs.COCOAPP_PUBLISH }} | |
| DO_COCO_SERVER: ${{ inputs.COCOSERVER_PUBLISH }} | |
| run: | | |
| AGENT_VER=${{ inputs.AGENT_PUBLISH_VERSION }} | |
| CONSOLE_VER=${{ inputs.CONSOLE_PUBLISH_VERSION }} | |
| GATEWAY_VER=${{ inputs.GATEWAY_PUBLISH_VERSION }} | |
| LOADGEN_VER=${{ inputs.LOADGEN_PUBLISH_VERSION }} | |
| EZS_VER=${{ inputs.EASYSEARCH_PUBLISH_VERSION }} | |
| COCO_APP_VER=${{ inputs.COCOAPP_PUBLISH_VERSION }} | |
| COCO_VER=${{ inputs.COCOSERVER_PUBLISH_VERSION }} | |
| # 1. Update Global Product Version (Console, Agent, Gateway...) | |
| if [[ "$DO_AGENT" == "true" ]]; then | |
| if [[ ! -z "$AGENT_VER" && "$AGENT_VER" =~ ^([0-9]+\.[0-9]+\.[0-9]+)(-[a-zA-Z0-9_.-]+)?$ ]]; then | |
| VER_CLEAN="${AGENT_VER%%-*}" | |
| echo "Updating GitHub agent release version to $VER_CLEAN" | |
| gh variable set AGENT_PUBLISH_VERSION --body "$VER_CLEAN" | |
| else | |
| echo "::warning:: Products publish selected but version invalid: $AGENT_VER" | |
| fi | |
| elif [[ "$DO_CONSOLE" == "true" ]]; then | |
| if [[ ! -z "$CONSOLE_VER" && "$CONSOLE_VER" =~ ^([0-9]+\.[0-9]+\.[0-9]+)(-[a-zA-Z0-9_.-]+)?$ ]]; then | |
| VER_CLEAN="${CONSOLE_VER%%-*}" | |
| echo "Updating GitHub console release version to $VER_CLEAN" | |
| gh variable set CONSOLE_PUBLISH_VERSION --body "$VER_CLEAN" | |
| else | |
| echo "::warning:: Products publish selected but version invalid: $CONSOLE_VER" | |
| fi | |
| elif [[ "$DO_GATEWAY" == "true" ]]; then | |
| if [[ ! -z "$GATEWAY_VER" && "$GATEWAY_VER" =~ ^([0-9]+\.[0-9]+\.[0-9]+)(-[a-zA-Z0-9_.-]+)?$ ]]; then | |
| VER_CLEAN="${GATEWAY_VER%%-*}" | |
| echo "Updating GitHub gateway release version to $VER_CLEAN" | |
| gh variable set GATEWAY_PUBLISH_VERSION --body "$VER_CLEAN" | |
| else | |
| echo "::warning:: Products publish selected but version invalid: $GATEWAY_VER" | |
| fi | |
| elif [[ "$DO_LOADGEN" == "true" ]]; then | |
| if [[ ! -z "$LOADGEN_VER" && "$LOADGEN_VER" =~ ^([0-9]+\.[0-9]+\.[0-9]+)(-[a-zA-Z0-9_.-]+)?$ ]]; then | |
| VER_CLEAN="${LOADGEN_VER%%-*}" | |
| echo "Updating GitHub loadgen release version to $VER_CLEAN" | |
| gh variable set LOADGEN_PUBLISH_VERSION --body "$VER_CLEAN" | |
| else | |
| echo "::warning:: Products publish selected but version invalid: $LOADGEN_VER" | |
| fi | |
| fi | |
| # 2. Update Easysearch Version | |
| if [[ "$DO_EZS" == "true" ]]; then | |
| if [[ ! -z "$EZS_VER" && "$EZS_VER" =~ ^([0-9]+\.[0-9]+\.[0-9]+)(-[a-zA-Z0-9_.-]+)?$ ]]; then | |
| EZS_VER_CLEAN="${EZS_VER%%-*}" | |
| echo "Updating GitHub release Easysearch version to $EZS_VER_CLEAN" | |
| gh variable set EASYSEARCH_PUBLISH_VERSION --body "$EZS_VER_CLEAN" | |
| fi | |
| else | |
| echo "Skipping Easysearch variable update." | |
| fi | |
| # 3. Update Coco Versions | |
| if [[ "$DO_COCO_APP" == "true" || "$DO_COCO_SERVER" == "true" ]]; then | |
| if [[ ! -z "$COCO_APP_VER" && "$COCO_APP_VER" =~ ^([0-9]+\.[0-9]+\.[0-9]+)(-[a-zA-Z0-9_.-]+)?$ ]]; then | |
| COCO_APP_VER_CLEAN="${COCO_APP_VER%%-*}" | |
| echo "Updating GitHub release Coco app version to $COCO_APP_VER_CLEAN" | |
| gh variable set COCO_APP_PUBLISH_VERSION --body "$COCO_APP_VER_CLEAN" | |
| fi | |
| if [[ ! -z "$COCO_VER" && "$COCO_VER" =~ ^([0-9]+\.[0-9]+\.[0-9]+)(-[a-zA-Z0-9_.-]+)?$ ]]; then | |
| COCO_VER_CLEAN="${COCO_VER%%-*}" | |
| echo "Updating GitHub release Coco server version to $COCO_VER_CLEAN" | |
| gh variable set COCO_PUBLISH_VERSION --body "$COCO_VER_CLEAN" | |
| fi | |
| else | |
| echo "Skipping Coco variable update." | |
| fi | |
| - name: Update .latest file and upload to OSS | |
| env: | |
| DO_AGENT: ${{ inputs.AGENT_PUBLISH }} | |
| DO_CONSOLE: ${{ inputs.CONSOLE_PUBLISH }} | |
| DO_GATEWAY: ${{ inputs.GATEWAY_PUBLISH }} | |
| DO_LOADGEN: ${{ inputs.LOADGEN_PUBLISH }} | |
| DO_EZS: ${{ inputs.EASYSEARCH_PUBLISH }} | |
| DO_COCO_APP: ${{ inputs.COCOAPP_PUBLISH }} | |
| DO_COCO_SERVER: ${{ inputs.COCOSERVER_PUBLISH }} | |
| run: | | |
| IN_AGENT_VER=${{ inputs.AGENT_PUBLISH_VERSION }} | |
| IN_CONSOLE_VER=${{ inputs.CONSOLE_PUBLISH_VERSION }} | |
| IN_GATEWAY_VER=${{ inputs.GATEWAY_PUBLISH_VERSION }} | |
| IN_LOADGEN_VER=${{ inputs.LOADGEN_PUBLISH_VERSION }} | |
| IN_EZS_VER=${{ inputs.EASYSEARCH_PUBLISH_VERSION }} | |
| IN_COCO_APP_VER=${{ inputs.COCOAPP_PUBLISH_VERSION }} | |
| IN_COCO_VER=${{ inputs.COCOSERVER_PUBLISH_VERSION }} | |
| fname=".latest" | |
| if [[ ! -f "/tmp/$fname" ]]; then | |
| echo "Downloading current .latest from $RELEASE_URL/$fname..." | |
| wget -q --show-progress --progress=bar:force:noscroll "$RELEASE_URL/$fname" -P /tmp | |
| fi | |
| if [[ "$DO_AGENT" == "true" ]]; then | |
| FINAL_AGENT_VER="$IN_AGENT_VER" | |
| else | |
| FINAL_AGENT_VER=$(jq -r .agent "/tmp/$fname") | |
| echo "Agent publish skipped, keeping existing version: $FINAL_AGENT_VER" | |
| fi | |
| if [[ "$DO_CONSOLE" == "true" ]]; then | |
| FINAL_CONSOLE_VER="$IN_CONSOLE_VER" | |
| else | |
| FINAL_CONSOLE_VER=$(jq -r .console "/tmp/$fname") | |
| echo "Console publish skipped, keeping existing version: $FINAL_CONSOLE_VER" | |
| fi | |
| if [[ "$DO_GATEWAY" == "true" ]]; then | |
| FINAL_GATEWAY_VER="$IN_GATEWAY_VER" | |
| else | |
| FINAL_GATEWAY_VER=$(jq -r .gateway "/tmp/$fname") | |
| echo "Gateway publish skipped, keeping existing version: $FINAL_GATEWAY_VER" | |
| fi | |
| if [[ "$DO_LOADGEN" == "true" ]]; then | |
| FINAL_LOADGEN_VER="$IN_LOADGEN_VER" | |
| else | |
| FINAL_LOADGEN_VER=$(jq -r .loadgen "/tmp/$fname") | |
| echo "Loadgen publish skipped, keeping existing version: $FINAL_LOADGEN_VER" | |
| fi | |
| if [[ "$DO_EZS" == "true" ]]; then | |
| SUFFIX=${IN_VER#*-} | |
| if [[ "$IN_VER" == *"-"* ]] && [[ "$IN_EZS_VER" != *"-"* ]] && [[ -n "$SUFFIX" ]]; then | |
| FINAL_EZS_VER="${IN_EZS_VER}-$SUFFIX" | |
| else | |
| FINAL_EZS_VER="$IN_EZS_VER" | |
| fi | |
| else | |
| FINAL_EZS_VER=$(jq -r .easysearch "/tmp/$fname") | |
| echo "Easysearch publish skipped, keeping existing version: $FINAL_EZS_VER" | |
| fi | |
| if [[ "$DO_COCO_APP" == "true" || "$DO_COCO_SERVER" == "true" ]]; then | |
| SUFFIX=${IN_VER#*-} | |
| if [[ "$IN_VER" == *"-"* ]] && [[ "$IN_COCO_APP_VER" != *"-"* ]] && [[ -n "$SUFFIX" ]]; then | |
| FINAL_COCO_APP_VER="${IN_COCO_APP_VER}-$SUFFIX" | |
| else | |
| FINAL_COCO_APP_VER="$IN_COCO_APP_VER" | |
| fi | |
| if [[ "$IN_VER" == *"-"* ]] && [[ "$IN_COCO_VER" != *"-"* ]] && [[ -n "$SUFFIX" ]]; then | |
| FINAL_COCO_VER="${IN_COCO_VER}-$SUFFIX" | |
| else | |
| FINAL_COCO_VER="$IN_COCO_VER" | |
| fi | |
| else | |
| FINAL_COCO_APP_VER=$(jq -r '."coco-app"' "/tmp/$fname") | |
| FINAL_COCO_VER=$(jq -r '."coco-server"' "/tmp/$fname") | |
| echo "Coco publish skipped, keeping existing versions." | |
| fi | |
| echo "Updating local .latest file..." | |
| jq --arg agent_version "$FINAL_AGENT_VER" \ | |
| --arg console_version "$FINAL_CONSOLE_VER" \ | |
| --arg gateway_version "$FINAL_GATEWAY_VER" \ | |
| --arg loadgen_version "$FINAL_LOADGEN_VER" \ | |
| --arg easysearch_version "$FINAL_EZS_VER" \ | |
| --arg coco_app_version "$FINAL_COCO_APP_VER" \ | |
| --arg coco_version "$FINAL_COCO_VER" \ | |
| '.console=$console_version | .gateway=$gateway_version | .agent=$agent_version | ."coco-app"=$coco_app_version | ."coco-server"=$coco_version | .easysearch=$easysearch_version | .loadgen=$loadgen_version' \ | |
| "/tmp/$fname" > $GITHUB_WORKSPACE/$fname | |
| if $GITHUB_WORKSPACE/scripts/version_compare "/tmp/$fname" "$GITHUB_WORKSPACE/$fname"; then | |
| echo "Files are the same, no need to upload." | |
| else | |
| echo "Files are different, uploading to OSS..." | |
| oss upload -c $GITHUB_WORKSPACE/.oss.yml -o -f $GITHUB_WORKSPACE/$fname | |
| fi | |
| - name: Update Easysearch .versions.json | |
| if: ${{ inputs.EASYSEARCH_PUBLISH == true }} | |
| env: | |
| EZS_VER: ${{ inputs.EASYSEARCH_PUBLISH_VERSION }} | |
| run: | | |
| PNAME=easysearch | |
| VERSIONS_FILE="$GITHUB_WORKSPACE/products/$PNAME/publish/.versions.json" | |
| UPLOAD_FILE=/tmp/.versions.json | |
| # Parse version and build number from format like "2.1.0-2661" | |
| if [[ "$EZS_VER" =~ ^([0-9]+\.[0-9]+\.[0-9]+)-([0-9]+)$ ]]; then | |
| VER_CLEAN="${BASH_REMATCH[1]}" | |
| BUILD_NUM="${BASH_REMATCH[2]}" | |
| elif [[ "$EZS_VER" =~ ^([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then | |
| VER_CLEAN="$EZS_VER" | |
| BUILD_NUM="" | |
| else | |
| echo "::warning:: Invalid EASYSEARCH_PUBLISH_VERSION format: $EZS_VER, skipping .versions.json update." | |
| exit 0 | |
| fi | |
| echo "Updating .versions.json for Easysearch $VER_CLEAN (build: $BUILD_NUM)" | |
| DEFAULT_PLATFORMS='["linux-amd64","linux-arm64","mac-amd64","mac-arm64","windows-amd64"]' | |
| if jq -e --arg ver "$VER_CLEAN" '.[$ver]' "$VERSIONS_FILE" > /dev/null 2>&1; then | |
| echo "Version $VER_CLEAN exists, updating build_number to $BUILD_NUM" | |
| UPDATED=$(jq --arg ver "$VER_CLEAN" --argjson bn "$BUILD_NUM" \ | |
| '.[$ver].build_number = $bn' "$VERSIONS_FILE") | |
| else | |
| echo "Version $VER_CLEAN not found, inserting new entry" | |
| UPDATED=$(jq --arg ver "$VER_CLEAN" --argjson bn "$BUILD_NUM" \ | |
| --argjson platforms "$DEFAULT_PLATFORMS" \ | |
| '{($ver): {"platforms": $platforms, "build_number": $bn}} + .' \ | |
| "$VERSIONS_FILE") | |
| fi | |
| echo "$UPDATED" > "$VERSIONS_FILE" | |
| echo "$UPDATED" > "$UPLOAD_FILE" | |
| echo "EZS_VER_CLEAN=$VER_CLEAN" >> $GITHUB_ENV | |
| echo "EZS_BUILD_NUM=$BUILD_NUM" >> $GITHUB_ENV | |
| - name: Create pull request for .versions.json | |
| if: ${{ inputs.EASYSEARCH_PUBLISH == true }} | |
| uses: peter-evans/create-pull-request@v8 | |
| id: create-versions-pr | |
| with: | |
| token: ${{ secrets.REPO_PAT }} | |
| commit-message: "bumpver: update easysearch .versions.json for ${{ env.EZS_VER_CLEAN }} (build ${{ env.EZS_BUILD_NUM }})" | |
| branch: "release/easysearch-versions-${{ github.run_id }}" | |
| title: "bumpver: update easysearch .versions.json for ${{ env.EZS_VER_CLEAN }} (build ${{ env.EZS_BUILD_NUM }})" | |
| body: "Automated update of Easysearch versions metadata for ${{ env.EZS_VER_CLEAN }}-${{ env.EZS_BUILD_NUM }}" | |
| labels: "auto-merge, automated" | |
| delete-branch: true | |
| add-paths: | | |
| products/easysearch/publish/.versions.json | |
| - name: Auto-merge versions.json PR | |
| if: ${{ steps.create-versions-pr.outputs.pull-request-url }} | |
| env: | |
| PR_URL: ${{ steps.create-versions-pr.outputs.pull-request-url }} | |
| GH_TOKEN: ${{ secrets.REPO_PAT }} | |
| run: | | |
| PNAME=easysearch | |
| VERSIONS_FILE=/tmp/.versions.json | |
| jq -r 'keys_unsorted[:3][]' $VERSIONS_FILE | |
| # upload to oss | |
| echo "Upload $VERSIONS_FILE to oss" | |
| oss upload -c $GITHUB_WORKSPACE/.oss.yml -o -k $PNAME -f $VERSIONS_FILE | |
| # auto merge pr for change | |
| echo "Auto merge the pr $PR_URL" | |
| gh pr merge "$PR_URL" --squash | |
| release-files: | |
| if: ${{ inputs.OPERATION == 'RELEASE' }} | |
| name: Update Release files from snapshot to stable | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup bootstrap | |
| uses: ./containers/bootstrap | |
| - name: Move products files from snapshot to stable | |
| env: | |
| DO_AGENT: ${{ inputs.AGENT_PUBLISH }} | |
| DO_CONSOLE: ${{ inputs.CONSOLE_PUBLISH }} | |
| DO_GATEWAY: ${{ inputs.GATEWAY_PUBLISH }} | |
| DO_LOADGEN: ${{ inputs.LOADGEN_PUBLISH }} | |
| DO_EZS: ${{ inputs.EASYSEARCH_PUBLISH }} | |
| DO_COCO_APP: ${{ inputs.COCOAPP_PUBLISH }} | |
| DO_COCO_SERVER: ${{ inputs.COCOSERVER_PUBLISH }} | |
| AGENT_VER: ${{ inputs.AGENT_PUBLISH_VERSION }} | |
| CONSOLE_VER: ${{ inputs.CONSOLE_PUBLISH_VERSION }} | |
| GATEWAY_VER: ${{ inputs.GATEWAY_PUBLISH_VERSION }} | |
| LOADGEN_VER: ${{ inputs.LOADGEN_PUBLISH_VERSION }} | |
| EZS_VER: ${{ inputs.EASYSEARCH_PUBLISH_VERSION}} | |
| COCO_VER: ${{ inputs.COCOSERVER_PUBLISH_VERSION}} | |
| COCO_APP_VER: ${{ inputs.COCOAPP_PUBLISH_VERSION}} | |
| run: | | |
| if [[ "$DO_AGENT" == "true" ]]; then | |
| echo "Move Products agent-${AGENT_VER} from snapshot to stable" | |
| oss move -p agent --prefix agent-${AGENT_VER} | |
| fi | |
| if [[ "$DO_CONSOLE" == "true" ]]; then | |
| echo "Move Products console-${CONSOLE_VER} from snapshot to stable" | |
| oss move -p console --prefix console-${CONSOLE_VER} | |
| fi | |
| if [[ "$DO_GATEWAY" == "true" ]]; then | |
| echo "Move Products gateway-${GATEWAY_VER} from snapshot to stable" | |
| oss move -p gateway --prefix gateway-${GATEWAY_VER} | |
| fi | |
| if [[ "$DO_LOADGEN" == "true" ]]; then | |
| echo "Move Products loadgen-${LOADGEN_VER} from snapshot to stable" | |
| oss move -p loadgen --prefix loadgen-${LOADGEN_VER} | |
| fi | |
| if [[ "$DO_EZS" == "true" ]]; then | |
| echo "Move easysearch-${EZS_VER} from snapshot to stable" | |
| oss move -p easysearch --prefix easysearch-${EZS_VER} | |
| echo "Move easysearch-${EZS_VER} bundle from snapshot/bundle to stable/bundle" | |
| oss move -p easysearch -s bundle --prefix easysearch-${EZS_VER} | |
| fi | |
| if [[ "$DO_COCO_APP" == "true" ]]; then | |
| echo "Move coco-app-${COCO_APP_VER} from snapshot to stable" | |
| oss move -p coco-app --prefix coco-app-${COCO_APP_VER} | |
| fi | |
| if [[ "$DO_COCO_SERVER" == "true" ]]; then | |
| echo "Move coco-server-${COCO_VER} from snapshot to stable" | |
| oss move -p coco-server --prefix coco-server-${COCO_VER} | |
| fi | |
| release-official-website: | |
| needs: [release-metadata, release-files] | |
| if: ${{ inputs.OPERATION == 'RELEASE' }} | |
| name: Update Official Website | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup bootstrap | |
| uses: ./containers/bootstrap | |
| - name: Install Python dependencies | |
| run: pip install requests pyyaml | |
| - name: Run connect in background | |
| run: | | |
| connect -c "$GITHUB_WORKSPACE/.net.json" >/dev/null 2>&1 & | |
| echo "Connect started with pid $!" | |
| sleep 5 | |
| - name: Checkout official-website-cn | |
| timeout-minutes: 30 | |
| run: | | |
| git clone --depth 1 --sparse ${{ secrets.SSH_GIT_REPO }}/official-website-cn $GITHUB_WORKSPACE/official-website-cn | |
| cd $GITHUB_WORKSPACE/official-website-cn | |
| git sparse-checkout set data | |
| echo "Checkout repo $(git log -1 --pretty=format:'%h, %ad, %an, %s')" | |
| git config user.name github-actions | |
| git config user.email github-actions@github.com | |
| - name: Create branch and update version data | |
| env: | |
| DO_AGENT: ${{ inputs.AGENT_PUBLISH }} | |
| DO_CONSOLE: ${{ inputs.CONSOLE_PUBLISH }} | |
| DO_GATEWAY: ${{ inputs.GATEWAY_PUBLISH }} | |
| DO_LOADGEN: ${{ inputs.LOADGEN_PUBLISH }} | |
| DO_EZS: ${{ inputs.EASYSEARCH_PUBLISH }} | |
| DO_COCO_APP: ${{ inputs.COCOAPP_PUBLISH }} | |
| DO_COCO_SERVER: ${{ inputs.COCOSERVER_PUBLISH }} | |
| AGENT_VER: ${{ inputs.AGENT_PUBLISH_VERSION }} | |
| CONSOLE_VER: ${{ inputs.CONSOLE_PUBLISH_VERSION }} | |
| GATEWAY_VER: ${{ inputs.GATEWAY_PUBLISH_VERSION }} | |
| LOADGEN_VER: ${{ inputs.LOADGEN_PUBLISH_VERSION }} | |
| EZS_VER: ${{ inputs.EASYSEARCH_PUBLISH_VERSION }} | |
| COCO_VER: ${{ inputs.COCOSERVER_PUBLISH_VERSION }} | |
| COCO_APP_VER: ${{ inputs.COCOAPP_PUBLISH_VERSION }} | |
| run: | | |
| BUILD_DATE=$(date +'%Y-%m-%d') | |
| PR_BRANCH="ci_release_website_$(date +'%Y%m%d_%H%M%S')" | |
| PR_MESSAGE="chore: update product versions for release" | |
| echo "PR_BRANCH=$PR_BRANCH" >> $GITHUB_ENV | |
| echo "PR_MESSAGE=$PR_MESSAGE" >> $GITHUB_ENV | |
| cd $GITHUB_WORKSPACE/official-website-cn | |
| if git ls-remote --heads origin "$PR_BRANCH" | grep -q "$PR_BRANCH"; then | |
| echo "Branch $PR_BRANCH found. Deleting remote branch..." | |
| git push origin --delete "$PR_BRANCH" | |
| fi | |
| git checkout -b "$PR_BRANCH" | |
| run_update() { | |
| local pname=$1 full_ver=$2 | |
| local ver_main="${full_ver%%-*}" | |
| local build_num="${full_ver#*-}" | |
| CODE_BASE_PATH="$GITHUB_WORKSPACE/official-website-cn" \ | |
| VERSION="$ver_main" BUILD_NUMBER="$build_num" \ | |
| BUILD_DATE="$BUILD_DATE" PNAME="$pname" \ | |
| LATEST_URL="https://release.infinilabs.com/.latest" \ | |
| python3 $GITHUB_WORKSPACE/scripts/update_version.py | |
| } | |
| if [[ "$DO_AGENT" == "true" ]]; then | |
| run_update "agent" "$AGENT_VER" | |
| fi | |
| if [[ "$DO_CONSOLE" == "true" ]]; then | |
| run_update "console" "$CONSOLE_VER" | |
| fi | |
| if [[ "$DO_GATEWAY" == "true" ]]; then | |
| run_update "gateway" "$GATEWAY_VER" | |
| fi | |
| if [[ "$DO_LOADGEN" == "true" ]]; then | |
| run_update "loadgen" "$LOADGEN_VER" | |
| fi | |
| if [[ "$DO_EZS" == "true" ]]; then | |
| run_update "easysearch" "$EZS_VER" | |
| fi | |
| if [[ "$DO_COCO_SERVER" == "true" ]]; then | |
| run_update "coco-server" "$COCO_VER" | |
| fi | |
| if [[ "$DO_COCO_APP" == "true" ]]; then | |
| run_update "coco-app" "$COCO_APP_VER" | |
| fi | |
| - name: Commit and push | |
| id: commit_and_push | |
| run: | | |
| cd $GITHUB_WORKSPACE/official-website-cn | |
| if [[ -n $(git status --porcelain) ]]; then | |
| echo "✅ Changes detected. Proceeding with commit and push..." | |
| git add -A | |
| git commit -m "$PR_MESSAGE" | |
| git push origin "$PR_BRANCH" | |
| echo "changes_pushed=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "🤷 No changes detected. Skipping commit and push." | |
| echo "changes_pushed=false" >> $GITHUB_OUTPUT | |
| fi | |
| git remote set-url origin https://${{ secrets.HTTP_GIT_REPO }}/infini/official-website-cn | |
| - name: Create Pull Request (Gitea) | |
| if: ${{ steps.commit_and_push.outputs.changes_pushed == 'true' }} | |
| uses: infinilabs/gitea-pr@v0 | |
| env: | |
| https_proxy: http://${{ secrets.LOCAL_HOST }}:${{ secrets.LOCAL_PORT }} | |
| with: | |
| url: https://${{ secrets.HTTP_GIT_REPO }} | |
| token: ${{ secrets.GITEA_TOKEN }} | |
| path: official-website-cn | |
| base: master | |
| branch: ${{ env.PR_BRANCH }} | |
| assignee: hardy | |
| tea-version: 0.9.2 | |
| pr-label: "auto-merge, automated" | |
| publish-coco-website: | |
| needs: release-metadata | |
| if: ${{ inputs.OPERATION == 'RELEASE' && inputs.COCOSERVER_PUBLISH == true }} | |
| name: Publish Coco Website | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Publish Website Tag | |
| run: | | |
| COCO_VER=${{ inputs.COCOSERVER_PUBLISH_VERSION }} | |
| git clone ${{ vars.GIT_SSH_REPO }}/coco-website $GITHUB_WORKSPACE/coco-website | |
| cd $GITHUB_WORKSPACE/coco-website | |
| git config user.name github-actions | |
| git config user.email github-actions@github.com | |
| PVER=$(echo "v$COCO_VER" | sed 's/-.*//') | |
| if git rev-parse --verify "refs/tags/$PVER" >/dev/null 2>&1; then | |
| echo "Tag $PVER already exists for coco-website" | |
| else | |
| git tag -a $PVER -m "Release $PVER" | |
| git push origin $PVER | |
| echo "Tag $PVER created." | |
| fi | |
| notify_on_failure: | |
| runs-on: ubuntu-latest | |
| needs: [create-pr, create-tag, release-metadata, publish-coco-website, release-official-website] | |
| if: failure() | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Notify message via feishu | |
| env: | |
| FEISHU_BOT_URL: ${{ secrets.FEISHU_BOT_WEBHOOK_URL }} | |
| REPO_NAME: ${{ github.repository }} | |
| WORKFLOW_NAME: ${{ github.workflow }} | |
| RUN_ID: ${{ github.run_id }} | |
| ACTOR: ${{ github.triggering_actor }} | |
| SERVER_URL: ${{ github.server_url }} | |
| run: $GITHUB_WORKSPACE/scripts/feishu_message.sh |