← Workflows

阅读中文版本

Dependency Upgrade Workflow

Upgrade dependencies in small, reversible batches with lockfile verification, vulnerability checks, tests, staging validation, and a rollback plan.

intermediate~45 mindependenciessecuritymaintenance

Objective

Keep dependencies current and secure without introducing unverified behavior changes into production.

Environment

  • A lockfile committed to the repository
  • CI that runs install, build, lint, and tests
  • A staging environment representative of production
  • Access to changelogs and release notes

Steps

1. Inventory and prioritize

List outdated and vulnerable dependencies, separate security fixes from routine upgrades, and read release notes for breaking changes.

Expected state: A prioritized batch with known migration notes and owners.

2. Upgrade a small batch

Update one ecosystem area at a time, regenerate the lockfile, and avoid mixing unrelated major upgrades in one change.

Expected state: A reviewable diff limited to the intended packages and their transitive changes.

3. Verify locally and in CI

Run a clean install, lint, type-check, unit tests, and build. Run integration tests that exercise the upgraded libraries.

Expected state: All checks pass with the same commands used in CI.

4. Validate in staging

Deploy to staging and exercise critical user journeys, watching logs and metrics for runtime incompatibilities.

Expected state: No new errors or performance regressions in staging.

5. Release and monitor

Deploy gradually, monitor error and latency budgets, and keep the previous lockfile and artifact available for rollback.

Expected state: Production metrics remain stable after the upgrade.

Decision points

Should major upgrades be batched with routine updates?

  • One major upgrade per change
  • Batch all updates together

Keep major upgrades isolated so a regression can be attributed and reverted cleanly.

When is a security upgrade urgent enough to bypass the normal soak?

  • Exploitable vulnerability with a known fix
  • Low-severity advisory

Fast-track only when exposure is real; still run the minimum automated checks and keep rollback ready.

Expected outcome

Dependencies are upgraded with an auditable diff, passing tests, staging validation, and a tested rollback path.

Verification

Confirm a clean lockfile install, zero high-severity audit findings for the targeted packages, passing CI, successful staging journeys, and stable production metrics for the observation window.

Cleanup

Remove temporary compatibility shims and update the upgrade policy or automation schedule.

Small batches, clear rollback

A dependency upgrade is a behavior change, even when the API looks compatible. Keep each change attributable: one ecosystem area, one major version, one lockfile diff that reviewers can understand.

npm outdated
npm audit --audit-level=high
npm install package@latest
npm ci && npm test && npm run build

Gates

  1. Read the changelog and migration notes.
  2. Regenerate the lockfile and review transitive changes.
  3. Run clean install, lint, type-check, tests, and build.
  4. Exercise critical journeys in staging.
  5. Deploy gradually and watch the error budget.

Verification

  • npm ci succeeds from a clean checkout.
  • High-severity audit findings for the targeted packages are resolved.
  • Integration tests cover the upgraded behavior.
  • Staging journeys pass without new errors.
  • Production metrics remain stable during the observation window.

Rollback

Keep the previous lockfile and build artifact. Revert the upgrade commit and redeploy if a regression appears. Do not combine the upgrade with unrelated refactors; a mixed change makes rollback and diagnosis harder.