name: Monitor vLLM Releases on: schedule: - cron: '0 0 * * *' # Every day at midnight workflow_dispatch: permissions: contents: read 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 }}