Rollout ci_job_inputs feature flag

Summary

This issue is to roll out the feature on production, that is currently behind the ci_job_inputs feature flag.

The CI Job Inputs feature allows users to define dynamic input values for their CI jobs, similar to CI config inputs. Users can retry manual jobs with new input values, making it easier to configure and debug jobs without relying solely on variables.

Owners

  • Most appropriate Slack channel to reach out to: #g_pipeline-authoring
  • Best individual to reach out to: @avielle

Expectations

What are we expecting to happen?

Users will be able to:

  • Define inputs in their job configurations using the inputs: keyword
  • Retry manual jobs with new input values via the UI and API
  • Use the ${{ job.inputs.input_name }} syntax for interpolation in job scripts

The Runner will interpolate job inputs before executing job scripts.

What can go wrong and how would we detect it?

  • API errors: Increased error rates on job retry/play endpoints when inputs are provided. Monitor API error rates and logs.
  • Validation failures: Jobs failing due to input type validation or size limit (20 inputs per job) errors. Check job failure rates and error logs.
  • Runner interpolation issues: Jobs failing if the Runner cannot properly interpolate input values. Monitor job failure rates on recent Runner versions.
  • Database performance: Potential N+1 queries or slow queries on ci_job_inputs table. Monitor database performance metrics.

Rollout Steps

Note: All /chatops commands that target production must be executed in the #production Slack channel and cross-posted (with the command results) to #g_pipeline-authoring.

Rollout on non-production environments

  • Enable on staging: /chatops run feature set ci_job_inputs true --staging
  • Verify the feature works as expected on staging-canary
    • Test creating a manual job with inputs defined in .gitlab-ci.yml
    • Test retrying/playing the job with new input values via the UI
    • Verify input interpolation works correctly in job scripts

Rollout on production

  • Enable for gitlab-org/gitlab: /chatops run feature set ci_job_inputs true --project=gitlab-org/gitlab
  • Monitor for 15+ minutes, verify no issues
  • Enable for 25% of projects: /chatops run feature set ci_job_inputs 25 --actors
  • Monitor for 15+ minutes
  • Enable for 50% of projects: /chatops run feature set ci_job_inputs 50 --actors
  • Monitor for 15+ minutes
  • Enable globally: /chatops run feature set ci_job_inputs true
  • Monitor for at least one day

Release the feature

  • Create a merge request to remove the ci_job_inputs feature flag
    • Remove all references to the feature flag from the codebase
    • Remove the YAML definitions for the feature from the repository
  • Once the cleanup MR is deployed, delete the feature flag: /chatops run feature delete ci_job_inputs --dev --pre --staging --staging-ref --production
  • Close this rollout issue

Rollback Steps

  • Disable on production: /chatops run feature set ci_job_inputs false
  • Disable on staging: /chatops run feature set ci_job_inputs false --staging
Edited by Avielle Wolfe