diff --git a/.github/workflows/create-tag.yaml b/.github/workflows/create-tag.yaml new file mode 100644 index 0000000..996f5e0 --- /dev/null +++ b/.github/workflows/create-tag.yaml @@ -0,0 +1,39 @@ +name: OpenIM Create Tag + +on: + issue_comment: + types: [created] + pull_request_review_comment: + types: [created] + +jobs: + create_tag: + runs-on: ubuntu-latest + if: startsWith(github.event.comment.body, '/create tag') + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Create a new tag + env: + GH_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} + run: | + # Extract version number and tag comment from the issue or pull request comment + COMMENT="${{ github.event.comment.body }}" + VERSION=$(echo "$COMMENT" | awk -F ' ' '{print $3}') + TAG_COMMENT=$(echo "$COMMENT" | awk -F '"' '{print $2}') + + # Validate version number + if ! [[ $VERSION =~ ^v([0-9]+\.){2}[0-9]+$ ]]; then + echo "Invalid version number: $VERSION" + echo "The version number must match the pattern 'vX.Y.Z' where X, Y, and Z are integers." + exit 1 + fi + + # Create and push the tag + git tag -a "$VERSION" -m "$TAG_COMMENT" + git push origin "$VERSION" + echo "Tag '$VERSION' created with comment: $TAG_COMMENT" + + # Set output for subsequent steps, if necessary + echo "tag_created=$VERSION" >> $GITHUB_ENV