Skip to content

chore: Update CI workflows to use bigger runner#9915

Merged
ogabrielluiz merged 5 commits into
mainfrom
update-runs-on-labels
Sep 18, 2025
Merged

chore: Update CI workflows to use bigger runner#9915
ogabrielluiz merged 5 commits into
mainfrom
update-runs-on-labels

Conversation

@ogabrielluiz
Copy link
Copy Markdown
Contributor

@ogabrielluiz ogabrielluiz commented Sep 18, 2025

  • Added ARM64 support to the runs-on attribute in ci.yml, python_test.yml, and typescript_test.yml, ensuring compatibility with the langflow-ai-arm64-40gb environment.
  • Enhanced the logic for determining the runner to improve flexibility in specifying custom runners across all workflows.

Summary by CodeRabbit

  • Chores
    • CI workflows updated to accept runner selection via input (string or JSON array), defaulting to ubuntu-latest.
    • Added option to target a self-hosted ARM64 high‑memory runner.
    • Applied across backend/frontend tests, Python/TypeScript test workflows, nightly builds, releases, and Docker build/test.
    • Enables targeting ARM64 for builds and tests, improving performance and platform coverage without changing existing behavior.

- Modified the `runs-on` attribute in both `docker_test.yml` and `docker-build.yml` to include ARM64 support, ensuring compatibility with the langflow-ai-arm64-40gb environment.
- Added ARM64 support to the `runs-on` attribute in both `nightly_build.yml` and `release.yml`, ensuring compatibility with the langflow-ai-arm64-40gb environment.
- Enhanced the logic for determining the runner to improve flexibility in specifying custom runners.
- Added ARM64 support to the `runs-on` attribute in `ci.yml`, `python_test.yml`, and `typescript_test.yml`, ensuring compatibility with the langflow-ai-arm64-40gb environment.
- Enhanced the logic for determining the runner to improve flexibility in specifying custom runners across all workflows.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Sep 18, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

Multiple GitHub Actions workflows were updated to support dynamic runner selection via either a plain string or a JSON array string, defaulting to ubuntu-latest. A new multi-label self-hosted ARM64 runner option "[self-hosted, linux, ARM64, langflow-ai-arm64-40gb]" was added. Docker workflows were pointed to the multi-label runner.

Changes

Cohort / File(s) Summary of changes
Dynamic runs-on resolution for CI and tests
.github/workflows/ci.yml, .github/workflows/python_test.yml, .github/workflows/typescript_test.yml, .github/workflows/nightly_build.yml, .github/workflows/release.yml
Added input option "[self-hosted, linux, ARM64, langflow-ai-arm64-40gb]". Updated runs-on to resolve to: JSON-parsed array if input starts with “[”, else raw string, else 'ubuntu-latest'. Applied to relevant jobs in each workflow (backend/frontend tests, Python jobs, TS jobs, nightly, and release CI).
Docker workflows pinned to multi-label self-hosted ARM64 runner
.github/workflows/docker-build.yml, .github/workflows/docker_test.yml
Changed runs-on from self-hosted to [self-hosted, linux, ARM64, langflow-ai-arm64-40gb] for docker build, build_components, and test-docker jobs. No step logic changes.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant U as Workflow dispatch / caller
  participant G as GitHub Actions
  participant R as Runner(s)

  U->>G: Provide inputs.runs-on / runs_on
  rect rgba(225,240,255,0.5)
    note over G: Resolve runs-on
    alt Input starts with "["
      G->>G: fromJSON(inputs.runs-on)
      G->>G: runs-on = array of labels
    else Input provided (string)
      G->>G: runs-on = string label
    else No input
      G->>G: runs-on = "ubuntu-latest"
    end
  end
  G->>R: Schedule job on matching runner
  note over R: May target [self-hosted, linux, ARM64, langflow-ai-arm64-40gb]
  R-->>G: Execute job steps
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

enhancement, size:L

Suggested reviewers

  • jordanrfrazier
  • mfortman11

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "chore: Update CI workflows to use bigger runner" succinctly and accurately captures the primary change in the diff—updating multiple GitHub Actions workflows to target a larger ARM64 self-hosted runner (langflow-ai-arm64-40gb) and associated runs-on logic—using a conventional "chore" prefix and clear phrasing appropriate for repository history.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Sep 18, 2025

Frontend Unit Test Coverage Report

Coverage Summary

Lines Statements Branches Functions
Coverage: 9%
8.88% (2313/26031) 4.32% (849/19628) 6.2% (350/5637)

Unit Test Results

Tests Skipped Failures Errors Time
1046 0 💤 0 ❌ 0 🔥 14.945s ⏱️

@codecov
Copy link
Copy Markdown

codecov Bot commented Sep 18, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 23.04%. Comparing base (bcccefc) to head (df88a0d).
⚠️ Report is 1 commits behind head on main.

❌ Your project status has failed because the head coverage (8.12%) is below the target coverage (10.00%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##             main    #9915   +/-   ##
=======================================
  Coverage   23.04%   23.04%           
=======================================
  Files        1085     1085           
  Lines       39733    39733           
  Branches     5420     5420           
=======================================
+ Hits         9157     9158    +1     
+ Misses      30421    30420    -1     
  Partials      155      155           
Flag Coverage Δ
backend 46.93% <ø> (+<0.01%) ⬆️
frontend 8.12% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 12

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/typescript_test.yml (1)

307-315: Self-hosted detection is brittle with multi-label arrays. Use contains() on the stringified input.

Equality checks miss "[self-hosted, ...]". Switch to contains over the coalesced value.

Apply this diff:

-      - name: Install Playwright Browser Dependencies
-        if: steps.cache-playwright.outputs.cache-hit != 'true' && inputs.runs-on != 'self-hosted'
+      - name: Install Playwright Browser Dependencies
+        if: steps.cache-playwright.outputs.cache-hit != 'true' && !contains(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'] || '')), 'self-hosted')
         run: |
           cd ./src/frontend
           npx playwright install --with-deps chromium

-      - name: Install Playwright Browsers (Self-Hosted)
-        if: steps.cache-playwright.outputs.cache-hit != 'true' && inputs.runs-on == 'self-hosted'
+      - name: Install Playwright Browsers (Self-Hosted)
+        if: steps.cache-playwright.outputs.cache-hit != 'true' && contains(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'] || '')), 'self-hosted')
         run: |
           cd ./src/frontend
           npx playwright install chromium
🧹 Nitpick comments (6)
.github/workflows/docker_test.yml (2)

19-19: Unknown custom runner label in lint; add to actionlint config.

actionlint flags "langflow-ai-arm64-40gb" as unknown. Add this label under runner-labels in your actionlint config to silence false positives for your self-hosted runner.


23-34: Echoing env context inside same step renders empty. Use shell var instead.

${{ env.* }} is evaluated before the step runs; echo will print blank. Use $CONTAINER_RUNTIME.

Apply this diff:

-          echo "Using container runtime: ${{ env.CONTAINER_RUNTIME }}"
+          echo "Using container runtime: $CONTAINER_RUNTIME"
.github/workflows/docker-build.yml (4)

186-186: Unknown custom runner label in lint; add to actionlint config.

Add "langflow-ai-arm64-40gb" to actionlint's allowed runner labels to avoid false positives.


259-259: Same as above for build_components job.

Extend actionlint config for this label.


218-236: Cross-arch builds on ARM64 may fail without QEMU.

Add setup-qemu to guarantee linux/amd64 builds on an ARM64 self-hosted runner.

Apply this diff (place before Buildx setup; repeat similarly in build_components job):

+      - name: Set up QEMU (for cross-arch build)
+        uses: docker/setup-qemu-action@v3
+        with:
+          platforms: all

289-297: Mirror QEMU setup in build_components.

Add setup-qemu here too for consistency.

+      - name: Set up QEMU (for cross-arch build)
+        uses: docker/setup-qemu-action@v3
+        with:
+          platforms: all
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bcccefc and 2e73be9.

📒 Files selected for processing (7)
  • .github/workflows/ci.yml (3 hunks)
  • .github/workflows/docker-build.yml (2 hunks)
  • .github/workflows/docker_test.yml (1 hunks)
  • .github/workflows/nightly_build.yml (3 hunks)
  • .github/workflows/python_test.yml (5 hunks)
  • .github/workflows/release.yml (2 hunks)
  • .github/workflows/typescript_test.yml (4 hunks)
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/docker_test.yml

19-19: label "langflow-ai-arm64-40gb" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

.github/workflows/docker-build.yml

186-186: label "langflow-ai-arm64-40gb" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)


259-259: label "langflow-ai-arm64-40gb" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 1
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 5
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 2
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 3
  • GitHub Check: Run Backend Tests / Unit Tests - Python 3.10 - Group 4
  • GitHub Check: Run Backend Tests / Integration Tests - Python 3.10
  • GitHub Check: Test Starter Templates
  • GitHub Check: Run Frontend Unit Tests / Frontend Jest Unit Tests
🔇 Additional comments (5)
.github/workflows/nightly_build.yml (1)

13-13: Runner option addition LGTM.

.github/workflows/typescript_test.yml (1)

63-64: Runner option addition LGTM.

.github/workflows/release.yml (1)

54-55: Runner option addition LGTM.

.github/workflows/ci.yml (1)

52-53: Runner option addition LGTM.

.github/workflows/python_test.yml (1)

46-47: Runner option addition LGTM.

Comment thread .github/workflows/ci.yml Outdated
Comment on lines 196 to 197
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
secrets:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Bracket access for 'runs-on' and support workflow_dispatch context.

Use inputs['runs-on'] and coalesce with github.event.inputs for top-level runs.

Apply this diff:

-      runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
+      runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
secrets:
runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
secrets:
🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 196-197, replace the current runs-on
expression to use bracket access for the inputs key and add a fallback to
workflow_dispatch inputs: use inputs['runs-on'] (instead of inputs.runs-on) with
the same startsWith/fromJSON parsing logic, then coalesce with
github.event.inputs['runs-on'], and finally default to 'ubuntu-latest'; ensure
the bracketed key is used consistently and the precedence is: parsed
inputs['runs-on'] → raw inputs['runs-on'] → github.event.inputs['runs-on'] →
'ubuntu-latest'.

Comment thread .github/workflows/ci.yml Outdated
Comment on lines 218 to 219
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
secrets:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Same fix for test-frontend job.

-      runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
+      runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In .github/workflows/ci.yml around lines 218 to 219, the test-frontend job's
runs-on value needs the same conditional handling as other jobs; replace the
current runs-on with the expression that evaluates inputs.runs-on (checking for
JSON array with startsWith/ fromJSON) and falls back to 'ubuntu-latest' so the
job accepts either a single runner or a JSON array input consistently.

Comment thread .github/workflows/nightly_build.yml Outdated
Comment on lines 158 to 159
runs-on: ${{ (inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') && fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}
secrets:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Broken context: use github.event.inputs for workflow_dispatch.

In top-level workflows, inputs.* is not guaranteed. Use github.event.inputs.runs_on (and keep JSON detection).

Apply this diff:

-      runs-on: ${{ (inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') && fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}
+      runs-on: ${{ ((github.event.inputs.runs_on || inputs.runs_on) && (startsWith(format('{0}', (github.event.inputs.runs_on || inputs.runs_on)), '[') && fromJSON((github.event.inputs.runs_on || inputs.runs_on)) || (github.event.inputs.runs_on || inputs.runs_on))) || 'ubuntu-latest' }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
runs-on: ${{ (inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') && fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}
secrets:
runs-on: ${{ ((github.event.inputs.runs_on || inputs.runs_on) && (startsWith(format('{0}', (github.event.inputs.runs_on || inputs.runs_on)), '[') && fromJSON((github.event.inputs.runs_on || inputs.runs_on)) || (github.event.inputs.runs_on || inputs.runs_on))) || 'ubuntu-latest' }}
secrets:
🤖 Prompt for AI Agents
.github/workflows/nightly_build.yml around lines 158 to 159: the current
expression reads inputs.runs_on but top-level workflows should read
workflow_dispatch inputs from github.event.inputs; update the expression to use
github.event.inputs.runs_on (preserving the existing JSON detection logic that
checks startsWith(format(...),'[') and fromJSON(...)) while keeping the existing
fallback to 'ubuntu-latest' so the runs-on resolves correctly in both direct and
JSON-array cases.

Comment on lines 171 to 173
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
runs-on: ${{ inputs.runs_on || 'ubuntu-latest' }}
runs-on: ${{ (inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') && fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}
secrets:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Same fix for backend-unit-tests job.

-      runs-on: ${{ (inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') && fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}
+      runs-on: ${{ ((github.event.inputs.runs_on || inputs.runs_on) && (startsWith(format('{0}', (github.event.inputs.runs_on || inputs.runs_on)), '[') && fromJSON((github.event.inputs.runs_on || inputs.runs_on)) || (github.event.inputs.runs_on || inputs.runs_on))) || 'ubuntu-latest' }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
runs-on: ${{ inputs.runs_on || 'ubuntu-latest' }}
runs-on: ${{ (inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') && fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}
secrets:
python-versions: '["3.10", "3.11", "3.12", "3.13"]'
runs-on: ${{ ((github.event.inputs.runs_on || inputs.runs_on) && (startsWith(format('{0}', (github.event.inputs.runs_on || inputs.runs_on)), '[') && fromJSON((github.event.inputs.runs_on || inputs.runs_on)) || (github.event.inputs.runs_on || inputs.runs_on))) || 'ubuntu-latest' }}
secrets:
🤖 Prompt for AI Agents
In .github/workflows/nightly_build.yml around lines 171 to 173, apply the same
fix to the backend-unit-tests job: replace its static runs-on (and matching
python-versions entry if present) with the dynamic expression used here (i.e.,
use python-versions: '["3.10", "3.11", "3.12", "3.13"]' and set runs-on to ${{
(inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') &&
fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}), ensuring
the backend-unit-tests job accepts inputs.runs_on arrays or single values the
same way as the current job.

Comment thread .github/workflows/python_test.yml Outdated
Comment on lines 59 to 60
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
strategy:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Bracket access + workflow_dispatch context.

Fix property access and support manual runs.

-    runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
+    runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
strategy:
runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
strategy:
🤖 Prompt for AI Agents
.github/workflows/python_test.yml around lines 59 to 60: the current runs-on
expression doesn't handle manual (workflow_dispatch) runs and uses dot-style
access for an input name containing a hyphen; update the expression to detect
manual runs via github.event_name == 'workflow_dispatch' and, when present, use
bracket access to read the dispatched input (github.event.inputs['runs-on'])
falling back to the normal inputs.runs-on and finally to 'ubuntu-latest';
implement this by replacing the current runs-on line with a conditional that
checks github.event_name and uses bracket access for the 'runs-on' property.

Comment thread .github/workflows/python_test.yml Outdated
Comment on lines 172 to 173
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
strategy:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Repeat the runs-on fix for test-cli.

-    runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
+    runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
strategy:
runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
strategy:
🤖 Prompt for AI Agents
.github/workflows/python_test.yml lines 172-173: the dynamic runs-on expression
used here should also be applied to the test-cli job but currently isn't; locate
the test-cli job's runs-on key and replace its value with the same expression:
use the conditional that checks inputs.runs-on, handles JSON arrays via
startsWith/ fromJSON, and falls back to 'ubuntu-latest' so the test-cli job
supports both string and array inputs consistently.

Comment thread .github/workflows/release.yml Outdated
Comment on lines 68 to 69
runs-on: ${{ (inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') && fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}
secrets: inherit
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix context for workflow_dispatch and keep JSON-array support.

Use github.event.inputs.runs_on (with fallback) to avoid expression errors.

Apply this diff:

-      runs-on: ${{ (inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') && fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}
+      runs-on: ${{ (((github.event.inputs.runs_on || inputs.runs_on) && (startsWith(format('{0}', (github.event.inputs.runs_on || inputs.runs_on)), '[') && fromJSON((github.event.inputs.runs_on || inputs.runs_on)) || (github.event.inputs.runs_on || inputs.runs_on))) || 'ubuntu-latest') }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
runs-on: ${{ (inputs.runs_on && (startsWith(format('{0}', inputs.runs_on), '[') && fromJSON(inputs.runs_on) || inputs.runs_on)) || 'ubuntu-latest' }}
secrets: inherit
runs-on: ${{ (((github.event.inputs.runs_on || inputs.runs_on) && (startsWith(format('{0}', (github.event.inputs.runs_on || inputs.runs_on)), '[') && fromJSON((github.event.inputs.runs_on || inputs.runs_on)) || (github.event.inputs.runs_on || inputs.runs_on))) || 'ubuntu-latest') }}
secrets: inherit
🤖 Prompt for AI Agents
In .github/workflows/release.yml around lines 68 to 69, the current expression
uses inputs.runs_on which can cause expression errors for workflow_dispatch
events; update the runs-on expression to reference github.event.inputs.runs_on
(with the same JSON-array detection and fallback behavior) so it reads
conceptually: use github.event.inputs.runs_on if present, detect and parse a
JSON array when the input starts with '[' and otherwise use the scalar value,
and fall back to 'ubuntu-latest' when absent; keep the secrets: inherit line
as-is.

Comment on lines 75 to 78
determine-test-suite:
name: Determine Test Suites and Shard Distribution
runs-on: ${{ inputs.runs-on || 'ubuntu-latest' }}
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
outputs:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Two fixes: bracket access for 'runs-on' and workflow_dispatch context.

  • Property names with hyphens require bracket notation.
  • Support top-level workflow_dispatch via github.event.inputs.

Apply this diff:

-    runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
+    runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
determine-test-suite:
name: Determine Test Suites and Shard Distribution
runs-on: ${{ inputs.runs-on || 'ubuntu-latest' }}
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
outputs:
determine-test-suite:
name: Determine Test Suites and Shard Distribution
runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
outputs:
🤖 Prompt for AI Agents
.github/workflows/typescript_test.yml around lines 75-78: the expression uses
dotted access for the input name with a hyphen and doesn't account for top-level
workflow_dispatch inputs; change dotted property access to bracket notation for
'runs-on' (e.g., inputs['runs-on']) everywhere in the expression and add a
fallback to github.event.inputs['runs-on'] so the runs-on value is read from
workflow_dispatch top-level inputs when present, keeping the existing array
detection and fromJSON logic and falling back to 'ubuntu-latest'.

Comment on lines 262 to 264
name: Playwright Tests - Shard ${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
runs-on: ${{ inputs.runs-on || 'ubuntu-latest' }}
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
if: ${{ needs.determine-test-suite.outputs.test_grep != '' }}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Repeat the same runs-on fix here.

-    runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
+    runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
name: Playwright Tests - Shard ${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
runs-on: ${{ inputs.runs-on || 'ubuntu-latest' }}
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
if: ${{ needs.determine-test-suite.outputs.test_grep != '' }}
name: Playwright Tests - Shard ${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
if: ${{ needs.determine-test-suite.outputs.test_grep != '' }}
🤖 Prompt for AI Agents
.github/workflows/typescript_test.yml around lines 262 to 264: the runs-on
expression for the Playwright Tests job should use the same robust handling as
elsewhere to support inputs.runs-on being a JSON array or a simple string;
update the runs-on line to evaluate inputs.runs-on by checking
startsWith(format('{0}', inputs.runs-on), '[') and parsing with fromJSON when
appropriate, falling back to inputs.runs-on, and then defaulting to
'ubuntu-latest' if empty — mirror the exact expression used in the other job to
ensure consistent behavior.

Comment on lines 363 to 365
needs: setup-and-test
runs-on: ${{ inputs.runs-on || 'ubuntu-latest' }}
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
if: always()
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Repeat runs-on bracket/context fix for merge-reports.

-    runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
+    runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
needs: setup-and-test
runs-on: ${{ inputs.runs-on || 'ubuntu-latest' }}
runs-on: ${{ (inputs.runs-on && (startsWith(format('{0}', inputs.runs-on), '[') && fromJSON(inputs.runs-on) || inputs.runs-on)) || 'ubuntu-latest' }}
if: always()
needs: setup-and-test
runs-on: ${{ (((inputs['runs-on'] || github.event.inputs['runs-on']) && (startsWith(format('{0}', (inputs['runs-on'] || github.event.inputs['runs-on'])), '[') && fromJSON((inputs['runs-on'] || github.event.inputs['runs-on'])) || (inputs['runs-on'] || github.event.inputs['runs-on']))) || 'ubuntu-latest') }}
if: always()
🤖 Prompt for AI Agents
.github/workflows/typescript_test.yml around lines 363 to 365: the merge-reports
job's runs-on line must use the same bracket/JSON-aware expression used
elsewhere, so replace the current runs-on value with the conditional expression
that checks inputs.runs-on, uses startsWith(format('{0}', inputs.runs-on), '[')
to detect JSON array and fromJSON(inputs.runs-on) when present, otherwise falls
back to inputs.runs-on, and finally defaults to 'ubuntu-latest'; leave the needs
and if lines intact.

- Introduced steps to display Docker system usage before and after cleanup in the `docker-build.yml` workflow.
- Added commands to prune unused Docker objects and volumes, enhancing resource management during the build process.
- Refactored the `runs-on` attribute in `ci.yml`, `nightly_build.yml`, `python_test.yml`, `release.yml`, and `typescript_test.yml` to use a consistent syntax for better readability and maintainability.
- Enhanced the logic to allow for more flexible runner specifications, improving compatibility across different environments.
@sonarqubecloud
Copy link
Copy Markdown

@ogabrielluiz ogabrielluiz merged commit be18541 into main Sep 18, 2025
31 of 33 checks passed
@ogabrielluiz ogabrielluiz deleted the update-runs-on-labels branch September 18, 2025 19:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant