diff --git a/.github/scripts/check_signal.sh b/.github/scripts/check_signal.sh new file mode 100755 index 00000000000..eeaeb1a75a9 --- /dev/null +++ b/.github/scripts/check_signal.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# This script attempts to download a pre-checks artifact from a GitHub workflow up to 5 times. +# If the artifact is found and the signal indicates success, the workflow continues. +# If the signal indicates failure, the workflow is skipped with details printed. +# If the artifact cannot be downloaded after all retries, the workflow exits with an error. + +set -e + +ARTIFACT_NAME="checks-signal-${GITHUB_SHA:-${1}}" +MAX_RETRIES=5 + +for i in $(seq 1 $MAX_RETRIES); do + echo "Attempt $i: Downloading artifact..." + if gh run download --name "$ARTIFACT_NAME"; then + if [ -f checks_signal.txt ]; then + echo "Artifact $ARTIFACT_NAME downloaded successfully." + SIGNAL=$(head -n 1 checks_signal.txt) + if [ "$SIGNAL" = "success" ]; then + echo "Pre-checks passed, continuing workflow." + exit 0 + else + echo "Pre-checks failed, skipping workflow. Details:" + tail -n +2 checks_signal.txt + exit 78 # 78 = neutral/skip + fi + fi + fi + echo "Artifact not found, retrying in 30s..." + sleep 30 +done + +echo "Failed to download pre-checks artifact after $MAX_RETRIES attempts. Exiting workflow." +exit 1 diff --git a/.github/workflows/aiter-test.yaml b/.github/workflows/aiter-test.yaml index 8624fcc6dc9..f010eab246c 100644 --- a/.github/workflows/aiter-test.yaml +++ b/.github/workflows/aiter-test.yaml @@ -15,8 +15,21 @@ env: DOCKER_IMAGE: "rocm/pytorch:latest" jobs: + check-signal: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download and check signal artifact + run: ./.github/scripts/check_signal.sh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_SHA: ${{ github.sha }} + define-runners: runs-on: ubuntu-latest + needs: [check-signal] outputs: standard_runners: ${{ steps.machines.outputs.standard_runners }} multigpu_runners: ${{ steps.machines.outputs.multigpu_runners }} diff --git a/.github/workflows/black.yaml b/.github/workflows/black.yaml deleted file mode 100644 index bb6176e9ace..00000000000 --- a/.github/workflows/black.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: Black -on: [push, pull_request] -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: psf/black@stable diff --git a/.github/workflows/deps.yaml b/.github/workflows/deps.yaml deleted file mode 100644 index 317db75290e..00000000000 --- a/.github/workflows/deps.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: Check Repository Dependency - -on: - push: - branches: [ "**" ] - pull_request: - branches: [ "main" ] - -jobs: - check-ck: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - submodules: 'recursive' - - - name: Verify 3rdparty commits - run: ./.github/scripts/check_deps.sh diff --git a/.github/workflows/pre-checks.yaml b/.github/workflows/pre-checks.yaml new file mode 100644 index 00000000000..6bc1cd6b9a3 --- /dev/null +++ b/.github/workflows/pre-checks.yaml @@ -0,0 +1,88 @@ +name: Checks + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + check-ck: + name: Check Repository Dependency + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: Verify 3rdparty commits + run: ./.github/scripts/check_deps.sh + + black: + name: Check Code Style with Black + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Run Black + uses: psf/black@stable + + ruff: + name: Check Code Style with Ruff + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Set up Python environment + uses: actions/setup-python@v2 + with: + python-version: "3.12" + - name: Install dependencies + run: pip3 install ruff + - name: Install reviewdog + uses: reviewdog/action-setup@e04ffabe3898a0af8d0fb1af00c188831c4b5893 + - name: Run ruff with reviewdog + env: + REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + ruff check . -e | reviewdog -efm="%f:%l:%c: %m" -diff="git diff FETCH_HEAD" -reporter=github-pr-check -tee + + upload-success-artifact: + name: Upload Success Signal + runs-on: ubuntu-latest + needs: [check-ck, black, ruff] + steps: + - name: Create success signal file + run: echo "success" > checks_signal.txt + + - name: Upload success artifact + uses: actions/upload-artifact@v4 + with: + name: checks-signal-${{ github.sha }} + path: checks_signal.txt + + upload-failure-artifact: + name: Upload Failure Signal + runs-on: ubuntu-latest + needs: [check-ck, black, ruff] + if: ${{ always() && (needs.check-ck.result != 'success' || needs.black.result != 'success' || needs.ruff.result != 'success') }} + steps: + - name: Create failure signal file with failed jobs + run: | + echo "failure" > checks_signal.txt + if [ "${{ needs.check-ck.result }}" != "success" ]; then + echo "FAILED: check-ck (${{ needs.check-ck.result }})" >> checks_signal.txt + fi + if [ "${{ needs.black.result }}" != "success" ]; then + echo "FAILED: black (${{ needs.black.result }})" >> checks_signal.txt + fi + if [ "${{ needs.ruff.result }}" != "success" ]; then + echo "FAILED: ruff (${{ needs.ruff.result }})" >> checks_signal.txt + fi + + - name: Upload failure artifact + uses: actions/upload-artifact@v4 + with: + name: checks-signal-${{ github.sha }} + path: checks_signal.txt diff --git a/.github/workflows/ruff.yaml b/.github/workflows/ruff.yaml deleted file mode 100644 index c0d9ea1b0e8..00000000000 --- a/.github/workflows/ruff.yaml +++ /dev/null @@ -1,20 +0,0 @@ -name: Linter -on: [pull_request] -jobs: - ruff_black: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python environment - uses: actions/setup-python@v2 - with: - python-version: "3.8" - - name: install dependencies - run: pip3 install ruff black - - name: install reviewdog - uses: reviewdog/action-setup@e04ffabe3898a0af8d0fb1af00c188831c4b5893 - - name: ruff - env: - REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - ruff check . -e | reviewdog -efm="%f:%l:%c: %m" -diff="git diff FETCH_HEAD" -reporter=github-pr-check -tee diff --git a/.github/workflows/sglang_downstream.yaml b/.github/workflows/sglang_downstream.yaml index 20fd9b0a913..3c66e3b6ec3 100644 --- a/.github/workflows/sglang_downstream.yaml +++ b/.github/workflows/sglang_downstream.yaml @@ -12,8 +12,21 @@ concurrency: cancel-in-progress: true jobs: + check-signal: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download and check signal artifact + run: ./.github/scripts/check_signal.sh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_SHA: ${{ github.sha }} + sglang: name: sglang integration + needs: [check-signal] runs-on: aiter-1gpu-runner env: SGL_BRANCH: v0.5.3 diff --git a/.github/workflows/triton-test.yaml b/.github/workflows/triton-test.yaml index 9afe70c0195..41b9bb29b78 100644 --- a/.github/workflows/triton-test.yaml +++ b/.github/workflows/triton-test.yaml @@ -12,8 +12,21 @@ concurrency: cancel-in-progress: true jobs: + check-signal: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download and check signal artifact + run: ./.github/scripts/check_signal.sh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_SHA: ${{ github.sha }} + triton: runs-on: aiter-1gpu-runner + needs: [check-signal] env: DOCKER_IMAGE: "rocm/pytorch:latest" TRITON_TEST: "op_tests/triton_tests/" diff --git a/.github/workflows/vllm_benchmark.yaml b/.github/workflows/vllm_benchmark.yaml index 0717057a7ba..debfab84554 100644 --- a/.github/workflows/vllm_benchmark.yaml +++ b/.github/workflows/vllm_benchmark.yaml @@ -19,8 +19,21 @@ env: GITHUB_COMMIT_SHA: ${{ github.event.pull_request.head.sha || github.event.head_commit.id }} jobs: + check-signal: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download and check signal artifact + run: ./.github/scripts/check_signal.sh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_SHA: ${{ github.sha }} + build_vllm_image: if: ${{ !github.event.pull_request.head.repo.fork }} + needs: [check-signal] runs-on: aiter-1gpu-runner steps: