I have a very simple **pipeline** that has a **1 stage** and **1 job** that **prints** `Hello World`.

I would like the stage to be **triggered based only on the schedule** (not when I push).

```
schedules:
- cron: "*/5 * * * *"
  displayName: Run every 5 Mins
  branches:
    include:
    - main
  always: true  

stages:
- stage: BatchRun
  displayName: Batch Run
  condition: and(always(), eq(variables['Build.Reason'], 'Schedule'))
  jobs:
  - job: Echo
    steps:
    - script: 'Hello World'

```

Currently, there are 2 problems

1. The stage is triggered when I push.
2. the job is skipped with a message `The job was skipped.` I have no information as to why.

I have tried with different condition `eq(variables['Build.Reason'], 'Schedule')`

I have also tried having another stage before the stage with the condition.

```
- stage: A
  jobs:
  - job: A1
    steps:
      - script: echo Hello Stage A!

```

I have looked at Microsoft's [documentation](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml).