पाठ 2 / 25
Anatomy of a Workflow
on, permissions, jobs, steps.
Read a workflow top to bottom
A workflow has a name, an on block listing triggers, optional top-level permissions and concurrency, and jobs. Each job has a runs-on runner label and a list of steps; a step either uses an action (with with inputs) or runs shell commands. Jobs run in parallel by default and each starts on a fresh runner, so files are not shared between jobs unless passed as artifacts or outputs.
A complete CI workflow, linted
I checked this workflow with actionlint 1.7.12 (actionlint -oneline .github/workflows/ci.yml); the output and exit code are copied from that run. actionlint validates syntax, expressions, job dependencies and known actions offline; shellcheck was not installed, so shell scripts inside run: were not linted. The workflow was not executed on GitHub. The workflow tests on Node 20 and 22, cancels superseded runs, restricts the token to read access and uploads a build artifact; actionlint reports no problems.
name: CI
on:
push:
branches: [main]
pull_request:
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
node: [20, 22]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: npm
- run: npm ci
- run: npm test
build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
- uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
Output:
(no problems found) (exit code 0)
One workflow per purpose
Separate CI, release and housekeeping workflows; small files are easier to review and to permission correctly.
त्वरित जाँच: Do two jobs in the same workflow share files by default?
- No, each job runs on a fresh runner; use artifacts or outputs to pass data
- Yes, always
- Only on Windows runners
- Only if they have the same name
Answer
No, each job runs on a fresh runner; use artifacts or outputs to pass data — Jobs are isolated.