Do You Make Daily Builds?

It is easy to break the build: you forget to commit a new file, or your change conflicts with a colleague's. The longer the breakage goes unnoticed, the harder the culprit is to find. Spolsky's answer was an automatic full build every night. On the Microsoft Excel team, whoever broke the build had to babysit the builds until someone else broke it.

Daily builds have become continuous integration (CI): a server builds and tests every push and every pull request within minutes, and a red check blocks the merge. Feedback arrives while the change is still fresh in your head.

.github/workflows/ci.yml: build and test every push and pull requestYAML
name: CI
on:
  push:
    branches: [main]
  pull_request:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: actions/setup-node@v7
        with:
          node-version: 24
          cache: npm
      - run: npm ci
      - run: npm run ci

The workflow calls the same npm 2,036 run ci script from One-Step Builds, so CI and your laptop can never disagree about what "build" means. Many teams also run a nightly scheduled job (on: schedule) for slow end-to-end suites and dependency audits, the direct descendant of the daily build.

From commit to production: where the Joel Test questions live in a modern pipeline
From commit to production: where the Joel Test questions live in a modern pipeline