From 5b296437998aa0748434e3556b225ec290aada0e Mon Sep 17 00:00:00 2001 From: velaraptor-runpod Date: Thu, 30 Apr 2026 19:55:29 -0500 Subject: [PATCH] feat: add notifications for new prs, issues, and new releases of vllm --- .github/workflows/release.yml | 24 +++++-- .github/workflows/slack-pr-issue-notify.yml | 56 +++++++++++++++++ .github/workflows/slack-vllm-monitor.yml | 69 +++++++++++++++++++++ 3 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/slack-pr-issue-notify.yml create mode 100644 .github/workflows/slack-vllm-monitor.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 37a55c9..3fd1e60 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -76,11 +76,23 @@ jobs: - name: Release Summary run: | - echo "🚀 Release completed!" + echo "Release completed!" echo "Version: ${{ env.RELEASE_VERSION }}" echo "Docker Image: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMG }}:${{ env.RELEASE_VERSION }}" - if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then - echo "Trigger: Manual workflow dispatch" - else - echo "Trigger: GitHub release (tag: ${{ github.ref_name }})" - fi + + - name: Notify Slack + run: | + curl -sf -X POST "${{ secrets.SLACK_WEBHOOK_URL }}" \ + -H "Content-Type: application/json" \ + -d '{ + "text": ":rocket: New :runpod-new-whiteonpurple: Runpod worker-vllm release: *${{ env.RELEASE_VERSION }}*", + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":banana-dance: *New Release — worker-vllm ${{ env.RELEASE_VERSION }}*\n*Docker:* `${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMG }}:${{ env.RELEASE_VERSION }}`\n" + } + } + ] + }' diff --git a/.github/workflows/slack-pr-issue-notify.yml b/.github/workflows/slack-pr-issue-notify.yml new file mode 100644 index 0000000..a4857e1 --- /dev/null +++ b/.github/workflows/slack-pr-issue-notify.yml @@ -0,0 +1,56 @@ +name: Slack PR and Issue Notifications + +on: + pull_request: + types: [opened] + issues: + types: [opened] + +jobs: + notify: + runs-on: ubuntu-latest + steps: + - name: Notify Slack - New PR + if: github.event_name == 'pull_request' + run: | + curl -sf -X POST "${{ secrets.SLACK_WEBHOOK_URL }}" \ + -H "Content-Type: application/json" \ + -d '{ + "text": ":rocket: New PR in worker-vllm: *${{ github.event.pull_request.title }}*", + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":rocket: *New Pull Request — worker-vllm*\n*<${{ github.event.pull_request.html_url }}|${{ github.event.pull_request.title }}>*\nOpened by *${{ github.event.pull_request.user.login }}*" + } + }, + { + "type": "context", + "elements": [ + { + "type": "mrkdwn", + "text": "${{ github.event.pull_request.base.ref }} ← ${{ github.event.pull_request.head.ref }}" + } + ] + } + ] + }' + + - name: Notify Slack - New Issue + if: github.event_name == 'issues' + run: | + curl -sf -X POST "${{ secrets.SLACK_WEBHOOK_URL }}" \ + -H "Content-Type: application/json" \ + -d '{ + "text": ":bug: New issue in worker-vllm: *${{ github.event.issue.title }}*", + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":bug: *New Issue — worker-vllm*\n*<${{ github.event.issue.html_url }}|${{ github.event.issue.title }}>*\nOpened by *${{ github.event.issue.user.login }}*" + } + } + ] + }' diff --git a/.github/workflows/slack-vllm-monitor.yml b/.github/workflows/slack-vllm-monitor.yml new file mode 100644 index 0000000..281c95c --- /dev/null +++ b/.github/workflows/slack-vllm-monitor.yml @@ -0,0 +1,69 @@ +name: Monitor vLLM Releases + +on: + schedule: + - cron: '0 0 * * *' # Every day at midnight + workflow_dispatch: + +jobs: + check-vllm-release: + runs-on: ubuntu-latest + steps: + - name: Restore last known vLLM tag + uses: actions/cache/restore@v4 + with: + path: .vllm-last-tag + key: vllm-tag-${{ github.run_id }} + restore-keys: vllm-tag- + + - name: Get latest vLLM release + id: vllm + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + response=$(curl -sf https://api.github.com/repos/vllm-project/vllm/releases/latest \ + -H "Authorization: Bearer $GH_TOKEN") + echo "tag=$(echo "$response" | jq -r '.tag_name')" >> $GITHUB_OUTPUT + echo "url=$(echo "$response" | jq -r '.html_url')" >> $GITHUB_OUTPUT + echo "name=$(echo "$response" | jq -r '.name')" >> $GITHUB_OUTPUT + + - name: Check if new release + id: check + run: | + last=$(cat .vllm-last-tag 2>/dev/null || echo "") + current="${{ steps.vllm.outputs.tag }}" + echo "Last: $last Current: $current" + if [ -n "$current" ] && [ "$last" != "$current" ]; then + echo "is_new=true" >> $GITHUB_OUTPUT + else + echo "is_new=false" >> $GITHUB_OUTPUT + fi + + - name: Notify Slack + if: steps.check.outputs.is_new == 'true' + run: | + curl -sf -X POST "${{ secrets.SLACK_WEBHOOK_URL }}" \ + -H "Content-Type: application/json" \ + -d '{ + "text": ":rocket: New vLLM release: *${{ steps.vllm.outputs.tag }}*", + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":rocket: *New vLLM Release: ${{ steps.vllm.outputs.tag }}*\n<${{ steps.vllm.outputs.url }}|View on GitHub>" + } + } + ] + }' + + - name: Save new tag + if: steps.check.outputs.is_new == 'true' + run: echo "${{ steps.vllm.outputs.tag }}" > .vllm-last-tag + + - name: Update cache + if: steps.check.outputs.is_new == 'true' + uses: actions/cache/save@v4 + with: + path: .vllm-last-tag + key: vllm-tag-${{ steps.vllm.outputs.tag }}