Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

de-limit #18819

Open
wants to merge 18 commits into
base: merge-queue-test
Choose a base branch
from
44 changes: 44 additions & 0 deletions .github/actions/workflow-status/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: "Workflow Status"
description: "Ensures all required jobs succeeded and handles optional jobs correctly."

inputs:
required-jobs:
description: "Comma-separated list of required jobs (must succeed)."
required: true
optional-jobs:
description: "Comma-separated list of optional jobs (skipped is OK, but failure is not)."
required: false
default: ""

runs:
using: "composite"
steps:
- name: Check Jobs with github-script
uses: actions/github-script@v7
with:
script: |
const requiredJobs = "${{ inputs.required-jobs }}".split(",").map(job => job.trim());
const optionalJobs = "${{ inputs.optional-jobs }}".split(",").map(job => job.trim());


const needs = JSON.parse(process.env.NEEDS_CONTEXT);

// Check required jobs
for (const job of requiredJobs) {
const result = needs[job]?.result;
console.log(`Job: ${job}, Result: ${result}`);
if (result !== "success") {
core.setFailed(`Required job '${job}' did not succeed.`);
}
}

// Check optional jobs (treat skipped as success)
for (const job of optionalJobs) {
const result = needs[job]?.result || "success"; // Default to success if missing
console.log(`Job: ${job}, Result: ${result}`);
if (result === "failure") {
core.setFailed(`Optional job '${job}' failed.`);
}
}

console.log("Workflow was successful.");
75 changes: 49 additions & 26 deletions .github/workflows/pr-gate.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ on:
- reopened
- synchronize
- ready_for_review
branches:
- "main"
merge_group:

concurrency:
Expand All @@ -37,23 +35,32 @@ jobs:
pr-gate-build:
name: Build
if: github.event_name != 'pull_request' || !github.event.pull_request.draft
uses: ./.github/workflows/build-artifact.yaml
with:
version: "22.04"
runs-on: ubuntu-latest
steps:
- run: |
exit 0
# uses: ./.github/workflows/build-artifact.yaml
# with:
# version: "22.04"

smoke-tests:
if: false
needs: pr-gate-build
strategy:
fail-fast: false
matrix:
platform: [
"tt-beta-ubuntu-2204-n300-large-stable",
]
uses: ./.github/workflows/smoke.yaml
with:
docker-image: ${{ needs.pr-gate-build.outputs.ci-build-docker-image }}
package-artifact-name: ${{ needs.pr-gate-build.outputs.packages-artifact-name }}
runner: ${{ matrix.platform }}
runs-on: ubuntu-latest
steps:
- run: |
exit 0
#uses: ./.github/workflows/smoke.yaml
#with:
# docker-image: ${{ needs.pr-gate-build.outputs.ci-build-docker-image }}
# package-artifact-name: ${{ needs.pr-gate-build.outputs.packages-artifact-name }}
# runner: ${{ matrix.platform }}

# GitHub has so many design limitations it's not even funny.
# This job is purely so we can capture the essence of the workflow as a whole in our status checks.
Expand All @@ -64,21 +71,37 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check if all jobs passed
shell: bash
run: |
set -euo pipefail
# Required jobs
if [[ "${{ needs.pr-gate-build.outcome }}" != "success" ]]; then
echo "Some job(s) did not succeed."
exit 1
fi
uses: tenstorrent/tt-metal/.github/actions/workflow-status@afuller/test
with:
required-jobs: "pr-gate-build, smoke-tests"
optional-jobs: "smoke-tests"
env:
NEEDS_CONTEXT: '${{ toJSON(needs) }}'
# - name: Check if all jobs passed
# uses: actions/github-script@v7
# with:
# script: |
# const requiredJobs = ["pr-gate-build"];
# const optionalJobs = ["smoke-tests"];

# const needs = ${{ toJSON(needs) }};

# // Check required jobs
# for (const job of requiredJobs) {
# const result = needs[job]?.result;
# console.log(`Job: ${job}, Result: ${result}`);
# if (result !== "success") {
# core.setFailed(`Required job '${job}' did not succeed.`);
# }
# }

# Optional jobs
# These may be 'skipped' (neither success nor failure) if they were not required.
# Treat skipped as success.
if [[ "${{ needs.smoke-tests }}" == "failure" ]]; then
echo "Some job(s) failed."
exit 1
fi
# // Check optional jobs (treat skipped as success)
# for (const job of optionalJobs) {
# const result = needs[job]?.result || "success"; // Default to success if missing
# console.log(`Job: ${job}, Result: ${result}`);
# if (result === "failure") {
# core.setFailed(`Optional job '${job}' failed.`);
# }
# }

echo "Workflow was successful."
# console.log("Workflow was successful.");
Loading