| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
WalkthroughTimeout limits were introduced to several CI jobs in the .github/workflows/ci.yaml file. The timeout-minutes attribute is now set to 40 minutes for Windows runners and 30 minutes for other operating systems, affecting specific jobs such as rust_tests, snippets_cpython, exotic_targets, miri, wasm, and wasm-wasi. Changes
Assessment against linked issues
Poem
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 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
Sorry, something went wrong.
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review detailsConfiguration used: .coderabbit.yml
Review profile: CHILL
Plan: Pro
Reviewing files that changed from the base of the PR and between 50c241f and bff869e.
📒 Files selected for processing (1)Learnt from: ShaharNaveh PR: RustPython/RustPython#5932 File: .github/workflows/comment-commands.yml:18-24 Timestamp: 2025-07-10T10:08:43.304Z Learning: In GitHub Actions workflows for the RustPython project, the maintainer ShaharNaveh prefers to keep workflows simple and doesn't mind if steps fail when the desired state is already achieved (e.g., user already assigned to an issue). Avoid suggesting complex error handling for edge cases they don't consider problematic.
Learnt from: ShaharNaveh PR: RustPython/RustPython#5932 File: .github/workflows/comment-commands.yml:18-24 Timestamp: 2025-07-10T10:08:43.304Z Learning: In GitHub Actions workflows for the RustPython project, the maintainer ShaharNaveh prefers to keep workflows simple and doesn't mind if steps fail when the desired state is already achieved (e.g., user already assigned to an issue). Avoid suggesting complex error handling for edge cases they don't consider problematic.
.github/workflows/ci.yaml (1)179-179: Timeout additions look good
Static 30-minute limits for exotic_targets, miri, wasm, and wasm-wasi are valid and should help keep hung jobs from consuming runner time.
Also applies to: 350-350, 368-368, 429-429
Sorry, something went wrong.
| RUST_BACKTRACE: full | ||
| name: Run rust tests | ||
| runs-on: ${{ matrix.os }} | ||
| timeout-minutes: ${{ contains(matrix.os, 'windows') && 40 || 30 }} |
There was a problem hiding this comment.
⚠️ Potential issue
timeout-minutes does not accept expressions – these jobs will fail to parse
timeout-minutes expects a literal integer. GitHub Actions currently rejects expressions such as
${{ contains(matrix.os, 'windows') && 40 || 30 }} with a schema-validation error (expected type: integer). As a result, both rust_tests and snippets_cpython jobs will never start.
Keep the workflow simple (per maintainer guidance) by using a constant, e.g. 40 minutes for all OSes, or split the job into two OS-specific matrix entries.
- timeout-minutes: ${{ contains(matrix.os, 'windows') && 40 || 30 }}
+ timeout-minutes: 40(Apply the same change to the snippets_cpython job.)
Also applies to: 242-242
🤖 Prompt for AI AgentsIn .github/workflows/ci.yaml at line 116, the timeout-minutes field is incorrectly set using an expression, which GitHub Actions does not support and causes job parsing failures. Replace the expression with a fixed integer value, such as 40, to ensure the jobs run correctly. Apply the same fix to the snippets_cpython job at line 242 by setting timeout-minutes to a constant integer as well.
Sorry, something went wrong.
There was a problem hiding this comment.
this evaluates to either 30 or 40
Sorry, something went wrong.
There was a problem hiding this comment.
@ShaharNaveh You're absolutely right! I apologize for the incorrect assessment. GitHub Actions does indeed support expressions in the timeout-minutes field, and your expression ${{ contains(matrix.os, 'windows') && 40 || 30 }} will correctly evaluate to 40 minutes for Windows runners and 30 minutes for other OS runners.
Thank you for the correction - the workflow syntax is perfectly valid as implemented.
🌐 Web query:
GitHub Actions timeout-minutes expression support documentation
💡 Result:
GitHub Actions' timeout-minutes does not fully support expressions like repository or environment variables without specific type conversion workarounds. Here are the facts and the current documentation status:
The error you are encountering when using a repository variable for timeout-minutes in GitHub Actions is likely due to the fact that timeout-minutes requires a numeric value. If the repository variable you are using is not numeric or is not being passed as a numeric value, you will receive an error.[3]
Workaround:
You can use the fromJSON() function to convert strings that contain numbers to a numeric value, making it possible to use expressions for timeout-minutes:
timeout-minutes: ${{ fromJSON(vars.TIMEOUT) }}This treats a string like "10" as the number 10, which is accepted by the workflow syntax[3].
Documentation coverage:
The official [GitHub Expressions Documentation][2][8] describes how expressions are used generally—including in workflow conditions, environment variables, and other parameters—but it does not explicitly document that timeout-minutes requires a numeric type or how to use type conversion workarounds.
Global/default setting:
Setting timeout-minutes in the defaults block at the workflow level is not supported; it must be set at the job level. Only keys under defaults.run are currently accepted[6][9].
In summary:
References for further details:
Citations:
🌐 Web query:
GitHub Actions timeout-minutes ternary operator expression "contains && ||" syntax
💡 Result:
GitHub Actions expressions do not support a native ternary operator (? :) syntax, but you can achieve similar behavior using the && and || logical operators in combination. This pattern is commonly referred to as a "fake ternary" in the GitHub Actions community[1][5][6].
The general syntax is:
${{ condition && value_if_true || value_if_false }}For example, to conditionally set a parameter based on input:
run: npm run build ${{ inputs.production == 'true' && '--production' || '' }}This adds --production if inputs.production is 'true', otherwise adds nothing[1][3].
You can chain ternary-like expressions for multiple conditions using nested parentheses:
${{ cond1 && result1 || (cond2 && result2 || default_value) }}This approach is often used for more complex multi-branch logic, such as in runs-on or environment variable settings[7]:
runs-on: ${{ inputs.do_forcebuild == true && 'project-force-build' || (inputs.stage == '--stage' && 'project-force-build' || 'project-standard') }}Or a simpler three-way case:
${{ inputs.app == 'foo' && 'foo-bg-deploy' || ( inputs.app == 'bar' && 'star-bar-bg-deploy' || 'rocket-lite-bg-deploy' )}}If neither condition is met, the final value (rocket-lite-bg-deploy in this example) is selected[7].
You can freely use contains, &&, and || in these expressions:
timeout-minutes: ${{ contains(github.ref, 'refs/heads/main') && 30 || 10 }}This example will set timeout-minutes to 30 if the branch is main, otherwise 10.
| Use This Pattern | Equivalent Ternary |
|---|---|
| `${{ cond && true_val | |
| Nest: `${{ c1 && v1 |
For advanced logic or if you hit expression complexity limits, you can fall back to a pre-step in a shell script to set the value, then use that value in your step[2][4].
References:
Citations:
@ShaharNaveh You're absolutely correct, and I apologize for the misinformation in my original assessment.
The web search confirms that GitHub Actions does support ternary-like expressions using && and || operators in timeout-minutes. Your expression ${{ contains(matrix.os, 'windows') && 40 || 30 }} is perfectly valid syntax that will evaluate to 40 minutes for Windows runners and 30 minutes for other OS runners.
This is a common pattern in GitHub Actions workflows, often called a "fake ternary" since GitHub Actions doesn't have native ternary operator (? :) syntax. The expression works because both 40 and 30 are numeric literals that resolve directly to the expected integer type.
Thank you for the correction - the workflow implementation is correct as written.
Learnt from: ShaharNaveh
PR: RustPython/RustPython#5947
File: .github/workflows/ci.yaml:116-116
Timestamp: 2025-07-11T09:35:43.545Z
Learning: GitHub Actions timeout-minutes field supports expressions that evaluate to integers, such as `${{ contains(matrix.os, 'windows') && 40 || 30 }}`, which will conditionally set different timeout values based on the runner OS.
Learnt from: ShaharNaveh
PR: RustPython/RustPython#5947
File: .github/workflows/ci.yaml:116-116
Timestamp: 2025-07-11T09:35:43.545Z
Learning: GitHub Actions supports ternary-like expressions using `&&` and `||` operators in timeout-minutes. The syntax `${{ condition && value_if_true || value_if_false }}` is valid and commonly used, such as `${{ contains(matrix.os, 'windows') && 40 || 30 }}` which evaluates to 40 for Windows runners and 30 for others.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
Learnt from: ShaharNaveh PR: RustPython/RustPython#5932 File: .github/workflows/comment-commands.yml:18-24 Timestamp: 2025-07-10T10:08:43.304Z Learning: In GitHub Actions workflows for the RustPython project, the maintainer ShaharNaveh prefers to keep workflows simple and doesn't mind if steps fail when the desired state is already achieved (e.g., user already assigned to an issue). Avoid suggesting complex error handling for edge cases they don't consider problematic.
Sorry, something went wrong.
There was a problem hiding this comment.
👍 Thank you!
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Closes #5925
Summary by CodeRabbit