|
| 1 | +# Copyright (c) Advanced Micro Devices, Inc. All rights reserved. |
| 2 | +# |
| 3 | +# SPDX-License-Identifier: MIT |
| 4 | +# |
| 5 | +# Automatically opens a PR to sync README.md version shields whenever |
| 6 | +# docker/Dockerfile component ARGs are updated on main. |
| 7 | + |
| 8 | +name: AIC Update README Shields |
| 9 | + |
| 10 | +on: |
| 11 | + push: |
| 12 | + branches: [main] |
| 13 | + paths: [docker/Dockerfile] |
| 14 | + workflow_dispatch: |
| 15 | + |
| 16 | +jobs: |
| 17 | + update-shields: |
| 18 | + name: Sync README version shields |
| 19 | + runs-on: ubuntu-latest |
| 20 | + permissions: |
| 21 | + contents: write |
| 22 | + pull-requests: write |
| 23 | + |
| 24 | + steps: |
| 25 | + - uses: actions/checkout@v4 |
| 26 | + |
| 27 | + - name: Extract versions from Dockerfile |
| 28 | + id: vers |
| 29 | + run: | |
| 30 | + ROCM=$(grep '^FROM' docker/Dockerfile | grep -oP '\d+\.\d+\.\d+' | head -1) |
| 31 | + VLLM_VER=$(grep 'ARG VLLM_VERSION=' docker/Dockerfile | grep -oP '[\d.]+') |
| 32 | + VLLM_ROC=$(grep 'ARG VLLM_ROCM_VARIANT=' docker/Dockerfile | grep -oP 'rocm\w+') |
| 33 | + LMCACHE=$(grep 'ARG LMCACHE_REF=' docker/Dockerfile | grep -oP 'v[\d.]+') |
| 34 | + NIXL=$(grep 'ARG NIXL_REF=' docker/Dockerfile | grep -oP 'v[\d.]+') |
| 35 | + HSA=$(grep 'ARG HSA_SNOOP_REF=' docker/Dockerfile | grep -oP 'v[\d.]+') |
| 36 | + echo "rocm=$ROCM" >> "$GITHUB_OUTPUT" |
| 37 | + echo "vllm=${VLLM_VER}+${VLLM_ROC}" >> "$GITHUB_OUTPUT" |
| 38 | + echo "vllm_ver=$VLLM_VER" >> "$GITHUB_OUTPUT" |
| 39 | + echo "vllm_roc=$VLLM_ROC" >> "$GITHUB_OUTPUT" |
| 40 | + echo "lmcache=$LMCACHE" >> "$GITHUB_OUTPUT" |
| 41 | + echo "nixl=$NIXL" >> "$GITHUB_OUTPUT" |
| 42 | + echo "hsa=$HSA" >> "$GITHUB_OUTPUT" |
| 43 | +
|
| 44 | + - name: Update README shields and prose |
| 45 | + env: |
| 46 | + ROCM: ${{ steps.vers.outputs.rocm }} |
| 47 | + VLLM: ${{ steps.vers.outputs.vllm }} |
| 48 | + VLLM_VER: ${{ steps.vers.outputs.vllm_ver }} |
| 49 | + VLLM_ROC: ${{ steps.vers.outputs.vllm_roc }} |
| 50 | + LMCACHE: ${{ steps.vers.outputs.lmcache }} |
| 51 | + NIXL: ${{ steps.vers.outputs.nixl }} |
| 52 | + HSA: ${{ steps.vers.outputs.hsa }} |
| 53 | + run: | |
| 54 | + # Badge URLs |
| 55 | + sed -i "s|ROCm-[0-9.]*-green|ROCm-${ROCM}-green|g" README.md |
| 56 | + sed -i "s|vLLM-[^-]*-blue\.svg|vLLM-${VLLM}-blue.svg|" README.md |
| 57 | + sed -i "s|LMCache-v[0-9.]*-blue\.svg|LMCache-${LMCACHE}-blue.svg|" README.md |
| 58 | + sed -i "s|NIXL-v[0-9.]*-blue\.svg|NIXL-${NIXL}-blue.svg|" README.md |
| 59 | + sed -i "s|hsa--snoop-v[0-9.]*-blue\.svg|hsa--snoop-${HSA}-blue.svg|" README.md |
| 60 | +
|
| 61 | + # Stack overview diagram (line starting with "rocm/dev-ubuntu-24.04:") |
| 62 | + sed -i "s|rocm/dev-ubuntu-24.04:[0-9.]*-complete|rocm/dev-ubuntu-24.04:${ROCM}-complete|g" README.md |
| 63 | + sed -i "s|ROCm [0-9.]*\(, Python\)|ROCm ${ROCM}\1|g" README.md |
| 64 | + # vLLM in diagram/table (e.g. "v0.25.0+rocm723" or "0.25.0+rocm723") |
| 65 | + sed -i "s|vLLM v[0-9.+a-z]* (pre-built|vLLM v${VLLM} (pre-built|" README.md |
| 66 | + sed -i "s|v[0-9.]*+rocm[0-9]* (pre-built wheel, bundles torch)|v${VLLM} (pre-built wheel, bundles torch)|" README.md |
| 67 | + # vLLM source URL in component table |
| 68 | + sed -i "s|wheels\.vllm\.ai/rocm/[0-9.]*/rocm[0-9]*|wheels.vllm.ai/rocm/${VLLM_VER}/${VLLM_ROC}|" README.md |
| 69 | + # LMCache version in prose (table row) |
| 70 | + PATCH_COUNT=$(ls patches/lmcache/*.patch 2>/dev/null | wc -l) |
| 71 | + sed -i "s|\`v[0-9.]*\` + [0-9]* AMD patches|\`${LMCACHE}\` + ${PATCH_COUNT} AMD patches|" README.md |
| 72 | + # NIXL version in table row |
| 73 | + sed -i "s|\`v[0-9.]*\` + \`nixl-rocm|\`${NIXL}\` + \`nixl-rocm|" README.md |
| 74 | +
|
| 75 | + - name: Open PR if README changed |
| 76 | + uses: peter-evans/create-pull-request@v7 |
| 77 | + with: |
| 78 | + token: ${{ secrets.GITHUB_TOKEN }} |
| 79 | + commit-message: "docs: sync README shields with Dockerfile versions" |
| 80 | + title: "docs: sync README version shields with Dockerfile" |
| 81 | + body: | |
| 82 | + Automated update: README.md version shields and Stack overview prose |
| 83 | + synced from `docker/Dockerfile` ARGs. |
| 84 | +
|
| 85 | + | Component | Version | |
| 86 | + | --- | --- | |
| 87 | + | ROCm | `${{ steps.vers.outputs.rocm }}` | |
| 88 | + | vLLM | `${{ steps.vers.outputs.vllm }}` | |
| 89 | + | LMCache | `${{ steps.vers.outputs.lmcache }}` | |
| 90 | + | NIXL | `${{ steps.vers.outputs.nixl }}` | |
| 91 | + | hsa-snoop | `${{ steps.vers.outputs.hsa }}` | |
| 92 | +
|
| 93 | + Generated by the [AIC Update README Shields](${{ github.server_url }}/${{ github.repository }}/actions/workflows/aic-update-readme-shields.yml) workflow. |
| 94 | + branch: auto/readme-shields |
| 95 | + labels: documentation |
| 96 | + delete-branch: true |
0 commit comments