← Workflows

阅读中文版本

Artifact Caching Strategy

Optimize a CI/CD pipeline: cache build artifacts, parallelize tests, and confirm the pipeline is hermetic and reproducible.

intermediate~25 mincicdbuildquality

Objective

Cut pipeline runtime while keeping it hermetic so the same commit always produces the same artifact.

Environment

  • A working cicd environment with access to the target system and its tooling
  • Configuration and credentials for the cicd workflow installed and verified
  • A rollback or undo path documented before any change is applied

Steps

1. Enable build caching

Configure the pipeline to cache dependencies and intermediate build outputs keyed by the lockfile hash.

Expected state: Cache hits reduce install and build time on subsequent runs.

2. Parallelize the test suite

Split tests into independent shards that run concurrently and merge coverage at the end.

Expected state: Tests run in parallel with no shared state and coverage is merged correctly.

3. Verify hermeticity

Run the pipeline in a clean container with no host mounts and confirm it still passes.

Expected state: The pipeline passes without relying on host state or unmanaged secrets.

Decision points

Should tests share a database?

  • Each shard gets an isolated database
  • All shards share one database

Give each shard an isolated database to avoid cross-shard interference and flaky failures.

Expected outcome

Cut pipeline runtime while keeping it hermetic so the same commit always produces the same artifact. The change is verified and a rollback path is confirmed.

Verification

Cut pipeline runtime while keeping it hermetic so the same commit always produces the same artifact. Compare before and after metrics and confirm the expected state is reached.

Cleanup

Archive the run artifacts, remove temporary credentials, and update the runbook with any changes.

Overview

Optimize a CI/CD pipeline: cache build artifacts, parallelize tests, and confirm the pipeline is hermetic and reproducible. The goal is to cut pipeline runtime while keeping it hermetic so the same commit always produces the same artifact.

cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths: [node_modules/, dist/]

Steps

  1. Enable build caching. Configure the pipeline to cache dependencies and intermediate build outputs keyed by the lockfile hash. Expected: Cache hits reduce install and build time on subsequent runs.

  2. Parallelize the test suite. Split tests into independent shards that run concurrently and merge coverage at the end. Expected: Tests run in parallel with no shared state and coverage is merged correctly.

  3. Verify hermeticity. Run the pipeline in a clean container with no host mounts and confirm it still passes. Expected: The pipeline passes without relying on host state or unmanaged secrets.

Verification

Confirm the outcome by checking: cut pipeline runtime while keeping it hermetic so the same commit always produces the same artifact. Run the verification command and compare the result against the expected state. If any check fails, stop and investigate before continuing.

Decision points

  • Should tests share a database?
    • Each shard gets an isolated database
    • All shards share one database
    • Recommendation: Give each shard an isolated database to avoid cross-shard interference and flaky failures.