conditional CI execution

Use appropriate conditional statements in CI workflows to ensure steps execute under the right circumstances and handle different environments gracefully.

copy reviewer prompt

Prompt

Reviewer Prompt

Use appropriate conditional statements in CI workflows to ensure steps execute under the right circumstances and handle different environments gracefully.

Key practices:

  • Use if: $ for cleanup/finalization steps that must run regardless of previous step failures
  • Use environment-specific conditions like if: $ for steps that should only run on certain runner types
  • Implement fallback strategies when preferred infrastructure (like self-hosted runners) is unavailable
  • Ensure required workflow parameters are provided across all entrypoints when adding new required inputs

Example from the discussions:

- name: Publish artifact marking this job as done
  uses: actions/upload-artifact@v4
  if: $  # Ensures cleanup runs even if job fails
  with:
    # artifact configuration

- name: Setup Python
  if: $  # Only on GitHub-hosted
  uses: ./.github/actions/setup-python

- name: Change Mirror Priorities  
  if: $  # Skip on self-hosted
  uses: ./.github/actions/apt-mirrors

This approach prevents workflow failures due to missing infrastructure, ensures proper cleanup, and optimizes resource usage by skipping unnecessary steps on different runner types.

Source discussions