Forum Discussion

Asher_Manangan_HyLogic's avatar
Asher_Manangan_HyLogic
Copper Contributor
Sep 18, 2023

Manual Input in Azure Pipeline

Hi Team,

May I know if it is possible to perform a manual input stage in a CICD pipeline before it undergo into a different stage? Such that I will supply the required parameters during the CICD execution and the run will be used on other stages of the pipeline.

Thanks,
Asher Manangan

2 Replies

  • Yes, it's absolutely possible to include a manual input stage in a CI/CD pipeline. This is commonly done using approval gates or manual intervention steps where user input is required before proceeding to the next stage. Here's how it typically works depending on the CI/CD platform:

    🛠 Common CI/CD Platforms & Manual Input Support

    Azure DevOps

    • Use the Manual Intervention task in release pipelines.
    • You can also use environment approvals where a user must approve and optionally provide input before deployment continues.

    GitHub Actions

    • Use the workflow_dispatch event to trigger workflows manually with input parameters.
    • Combine with inputs to allow users to specify values at runtime.

    GitLab CI/CD

    • Use when: manual in job definitions.
    • You can also use trigger with dynamic parameters.

    Jenkins

    • Use the Input Step in pipelines (input directive in scripted or declarative pipelines).
    • This pauses the pipeline and waits for user input.

    Example: GitHub Actions Manual Input

    name: Deploy with Manual Input
    
    on:
      workflow_dispatch:
        inputs:
          environment:
            description: 'Environment to deploy to'
            required: true
            default: 'staging'
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Deploy to ${{ github.event.inputs.environment }}
            run: echo "Deploying to ${{ github.event.inputs.environment }}"

     

  • You can use the ManualValidation@1 task inside an agentless job like this:

    jobs:
    - job: waitForInput
      displayName: 'Wait for manual input'
      pool: server
      timeoutInMinutes: 4320  # Optional: job timeout (e.g. 3 days)
      steps:
      - task: ManualValidation@1
        inputs:
          notifyUsers: 'email address removed for privacy reasons'
          instructions: 'Please enter parameters and approve to continue.'
          onTimeout: 'reject'  # Options: 'reject' or 'resume'

    This will pause the pipeline and notify the specified users. Once approved, the pipeline continues to the next stage.

     

    Passing Parameters to Later Stages

    While the manual validation step itself doesn’t collect typed input directly, you can:

    • Use pipeline variables or runtime parameters defined at the start of the run.
    • Combine with approval gates or custom scripts to inject values before proceeding.

    If you need true form-style input mid-pipeline, you might need to integrate with external tools (like a web form or Power Automate flow) that update pipeline variables via the Azure DevOps REST API.

Resources