# What Is a GitHub Actions Workflow? Jobs, Steps, and Triggers

> A GitHub Actions workflow is a YAML file that defines when and how your CI runs. Learn how events, jobs, steps, and runners fit together.

Source: https://latchkey.dev/learn/ci-cd-concepts/what-is-a-github-actions-workflow  
Updated: 2026-06-25

A workflow is just a YAML file in `.github/workflows/` that says: when this event happens, run these jobs on these runners.

GitHub Actions automates CI/CD through workflows - declarative YAML files that bind events to the work they trigger. Understanding the four nouns (event, job, step, runner) makes the whole model click.

## Events trigger workflows

A workflow declares the events it listens for in its `on:` block - a push, a pull request, a schedule, or a manual dispatch. When a matching event fires, GitHub queues the workflow.

```Triggers
on:
  push:
    branches: [main]
  pull_request:
```

## Jobs run on runners

A workflow contains one or more jobs. Each job runs on a fresh runner and, by default, jobs run in parallel. Use `needs:` to make one job wait for another, forming a dependency graph.

## Steps do the work

Each job is an ordered list of steps. A step either runs a shell command (`run:`) or invokes a reusable action (`uses:`). Steps in a job share the same runner and filesystem, so earlier steps set up state for later ones.

```A minimal job
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci && npm test
```

## Putting it together

Event → workflow → jobs (on runners, possibly parallel) → steps (in order). Everything else - matrices, caching, artifacts, permissions - layers on top of this core shape.

## FAQ

### What is What is a GitHub Actions Workflow? Jobs, Steps, and triggers?

GitHub Actions automates CI/CD through workflows - declarative YAML files that bind events to the work they trigger. Understanding the four nouns (event, job, step, runner) makes the whole model click.

### Events trigger workflows?

A workflow declares the events it listens for in its on: block - a push, a pull request, a schedule, or a manual dispatch. When a matching event fires, GitHub queues the workflow.

### Jobs run on runners?

A workflow contains one or more jobs. Each job runs on a fresh runner and, by default, jobs run in parallel. Use needs: to make one job wait for another, forming a dependency graph.

### Steps do the work?

Each job is an ordered list of steps. A step either runs a shell command (run:) or invokes a reusable action (uses:). Steps in a job share the same runner and filesystem, so earlier steps set up state for later ones.

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
