What Is a Build Artifact in Jenkins?

What Is a Build Artifact in Jenkins?

A friendly, step-by-step guide to the finished files that a Jenkins build produces, how Jenkins keeps them, and how teams pass them safely from one stage to the next.

Imagine a bakery. All day long the bakers measure flour, mix dough, and heat the ovens. But at the end of all that work, what does the customer actually take home? A loaf of bread in a paper bag. The mixing, the kneading, and the baking are only the process. The loaf is the result that people came for, and the shop must store it, label it, and hand it over without dropping it.

Jenkins works the same way. It runs builds, and a build is a process: download code, compile it, run tests, package it. But at the end, something useful comes out, such as a program file, a website bundle, a container image, or a test report. That useful output is called a build artifact. In this guide you will learn what a build artifact is, why it matters, how Jenkins stores and shares it, where teams keep artifacts for the long term, and which habits keep them safe and tidy. No earlier knowledge is needed, and every new word is explained the first time it appears.

1What Is a Build Artifact?

A build artifact is any file or bundle of files created by a build that is worth keeping, sharing, or using later.

Start with the word build. A build is one run of a Jenkins job. During a build, Jenkins follows the recipe in the job configuration: it fetches the code, compiles it, tests it, and packages it. The word artifact is used for the things that come out of the process at the end, the products rather than the process itself.

Not every file created during a build is an artifact. A build creates many temporary files, such as half-finished pieces and scratch notes. These are like the flour dust and dirty bowls in the kitchen: they are useful during the work but nobody wants to keep them. Only the files that people or other systems need afterward are picked out and saved as artifacts.

Examples of build artifacts

  • A program package, such as a Java archive file, a Windows installer, or a mobile app file, that users can install.
  • A website bundle, the ready-to-publish set of pages, images, and scripts.
  • A container image, a sealed box holding a program and everything it needs to run.
  • A library, a reusable piece of code packaged so other projects can use it.
  • Test reports, files that show which tests passed or failed.
  • Coverage and quality reports, which show how much code the tests touched and how clean it is.
  • Documentation, such as generated manuals.
  • Logs and diagnostic files, saved so people can investigate a failed build.
Everyday analogy

Think of a photographer at a wedding. During the day, the camera takes thousands of shots and stores blurry test frames on its memory card. At the end, the photographer picks the best photos and puts them into a finished album. The album is the artifact. The blurry test frames are only working files.

1
build produces the artifact, from one exact commit
Many
stages and teams may use the same artifact
Forever
released artifacts should be kept for a long time

2Why Build Artifacts Matter

The whole point of a build is to make something. The artifact is that something, so it deserves careful handling.

Without artifacts, a build would be like a factory whose finished products vanish at closing time. Think about what a team needs after a build finishes.

Delivery

Something to deploy

The program that runs on real servers is an artifact. Deployment means taking that artifact and installing it.

Proof

Something to inspect

Test reports and logs are artifacts that show whether the build was healthy. Without them, a red build is a mystery.

History

Something to trace

Keeping the artifact of every release lets a team reproduce, compare, or roll back to an older version.

Sharing

Something to pass on

A later stage or a different job often needs the output of an earlier one. The artifact is the parcel passed between them.

The most important idea: build once, deploy many

Good teams build their program once, save it as an artifact, and then use that exact same file everywhere: in testing, in staging, and in production. They never rebuild it for each environment. Why? Because every rebuild could differ slightly, for example if a library changed in between. If you test one file but ship another, you have not really tested what you shipped. Using the same artifact throughout removes that gap.

*
Tip

Repeat this sentence to yourself: “What I tested is exactly what I shipped.” A single saved artifact makes that sentence true.

3Core Concepts You Must Know

A handful of words unlock everything about artifacts. Learn these and the rest feels natural.

Run

Build

One single run of a Jenkins job. Builds are numbered, such as #1, #2, #3.

Output

Artifact

A file or bundle produced by a build that is kept for later use.

Folder

Workspace

The temporary folder on the build machine where code is downloaded and the work happens. Artifacts are found here first.

Machine

Agent

The worker computer that runs the build. Artifacts are created on the agent.

Brain

Controller

The central Jenkins server that coordinates everything and, by default, stores archived artifacts.

Save

Archiving

Copying chosen files out of the temporary workspace into permanent storage attached to the build.

Warehouse

Artifact repository

A dedicated storage system for finished packages, such as Nexus, Artifactory, or cloud storage. Built for long-term, organized keeping.

Number

Version

A label that says which edition of the artifact this is, such as 2.4.1, so people can tell them apart.

Code

Commit

The exact saved snapshot of the source code the artifact was built from. It ties the artifact back to its origin.

Check

Checksum

A short fingerprint calculated from a file’s contents. If even one bit changes, the checksum changes. Used to detect damage or tampering.

Track

Fingerprint

A Jenkins feature that records a file’s checksum so Jenkins can tell which builds produced and used a given file.

Stage

Pipeline and stage

The assembly line and its named phases. Artifacts are often created in one stage and used in a later one.

Artifact versus workspace file

This difference confuses many beginners, so let us make it very clear. The workspace is a temporary folder that may be cleaned or reused by the next build. A file that only exists in the workspace can disappear. An artifact is a file that has been deliberately saved, so it stays attached to that specific build even after the workspace is wiped.

4Architecture and Components

Several pieces work together to create, save, and share artifacts. Let us meet them.

A Jenkins system has one controller, the brain, and many agents, the workers. When a build runs on an agent, the agent produces files in its workspace. When Jenkins is told to archive them, the chosen files are sent from the agent to the controller, which stores them alongside the record of that build. By default, this happens inside the folder called JENKINS_HOME on the controller, in a location set aside for each build.

For bigger setups, teams do not want the controller to be a warehouse. They connect Jenkins to a separate artifact repository or cloud storage and let agents upload the finished files straight there.

flowchart LR
  SCM["Git Repository"] -->|"source code"| AGT["Build Agent"]
  AGT --> WS["Workspace with Build Output"]
  WS -->|"archive chosen files"| CTRL["Jenkins Controller"]
  CTRL --- HOME[("Build Record and Archived Artifacts")]
  WS -->|"upload package"| REPO[("Artifact Repository")]
  REPO -->|"download by version"| DEP["Deploy Stage"]
  HOME -->|"download from build page"| USER["Team Member"]
  CTRL -->|"record fingerprint"| FP[("Fingerprint Records")]
  DEP --> PROD["Production Servers"]
Figure 1: Artifacts are created on the agent, then saved either on the controller or in a separate artifact repository.

Walking through the picture

The agent downloads code from the Git repository into a workspace and builds it. The workspace now holds the build output. From there, two things can happen, and teams often do both. First, Jenkins can archive selected files, sending them to the controller so they are attached to the build page and can be downloaded by team members. Second, the pipeline can upload the finished package to an artifact repository, a proper warehouse where later stages and other teams can fetch it by name and version. A deploy stage then downloads the package from the repository and installs it on production servers. Meanwhile Jenkins can record a fingerprint of each file so that its journey can be traced.

i
Good to know

Jenkins also allows the storage of archived artifacts to be handled by a plugin, so that files go to cloud storage instead of the controller’s disk. This keeps the controller light and saves its disk space.

5How Jenkins Archives Artifacts

Archiving is the act of saving chosen files as permanent artifacts of a build. Let us see how it works from both the classic and the pipeline styles.

In a classic job

In a freestyle job, the Post-build Actions section contains an option called “Archive the artifacts”. You type which files to keep, using a simple pattern. For example, you can say “all files ending in a certain extension inside the target folder”. Patterns use wildcards, where a star means “anything”, so one short pattern can match many files.

In a pipeline

In a pipeline, a step called archiveArtifacts does the same job. It is normally placed in the post section or at the end of a build stage, and it takes the same kind of file pattern. Because the pipeline is written as text in a Jenkinsfile, the choice of what to keep is versioned and reviewed together with the code.

Useful options

OptionWhat it doesWhy you might use it
File patternChooses which files to archiveKeep only useful outputs, not every temporary file
ExcludesNames files to leave outSkip huge or sensitive files that happen to match the pattern
FingerprintRecords each file’s checksumTrace which builds made and used the file
Only if successfulArchives only when the build succeededAvoid saving broken outputs as if they were good
Allow empty archiveDoes not fail if no file matchesFor jobs where an artifact is sometimes not produced
Default excludesSkips typical junk such as version control foldersKeep archives clean
!
Warning

If the pattern matches nothing, Jenkins normally marks the build as failed, because it expected a product that is missing. That is often a helpful alarm, so think twice before turning it off.

Where do archived artifacts show up?

After a build, the build’s page in Jenkins shows a list of its artifacts with download links. There is also a “last successful build” shortcut for each job, so people can always fetch the newest good artifact from a stable link. Teams can also download all artifacts of a build together as one compressed bundle.

6How an Artifact Is Born: The Internal Lifecycle

Let us follow a single artifact from the moment code changes to the moment it reaches users.

1

A trigger fires

A developer pushes code, and the code host sends a message to Jenkins. Jenkins queues a build.

2

The code is fetched

An agent downloads the exact commit into its workspace.

3

The program is built

Build tools compile the code and produce the packaged output, such as a program file.

4

Tests run

Automatic tests check the build. Test reports are written as files.

5

Artifacts are saved

Jenkins archives the chosen files, and the pipeline uploads the main package to the artifact repository with a version label.

6

The artifact is promoted

The same package moves through testing, staging, and finally production, without being rebuilt.

7

The artifact is retired

After a policy period, old artifacts are cleaned up, while released versions are usually kept much longer.

sequenceDiagram
  participant D as Developer
  participant J as Jenkins Controller
  participant A as Build Agent
  participant R as Artifact Repository
  participant S as Staging Server
  participant P as Production Server
  D->>J: Push commit triggers build
  J->>A: Assign build
  A->>A: Compile, test, package
  A->>J: Archive reports and package
  A->>R: Upload package with version label
  J->>S: Deploy same package from repository
  S-->>J: Tests pass in staging
  J->>P: Deploy same package after approval
Figure 2: One package is built once and moved through each environment without being rebuilt.

An important idea: immutability

Once an artifact is published with a version label, it should never be changed. If version 2.4.1 is out in the world and someone quietly replaces the file behind that label, nobody can trust what “2.4.1” means anymore. If a fix is needed, publish a new version, such as 2.4.2. This rule is called immutability, meaning “cannot be changed”, and it is one of the most valuable habits in artifact management.

7Passing Files Between Stages: Stash Versus Archive

Beginners often ask: “I built a file in one stage. How do I use it in the next?” The answer depends on where the next stage runs.

When two stages run on the same agent, they share one workspace, so a file created earlier is simply still there. No special step is needed.

When stages run on different agents, each agent has its own separate workspace, and files do not travel by themselves. Jenkins offers two tools to help.

Short-lived

Stash and unstash

Stash means “put these files into a temporary box on the controller”. Unstash means “take them out on another agent”. The box lasts only as long as the running pipeline. Great for small or medium files passed between stages of the same run.

Long-lived

Archive artifacts

Saves files permanently with the build, so people can download them after the build ends. Meant for results people want to keep, not for passing files back and forth mid-run.

QuestionStash and unstashArchive artifacts
How long do the files last?Only for the current pipeline runAs long as the build is kept
Who can download them later?Nobody, they are internal helpersAnyone with permission, from the build page
Best file sizeSmall to mediumModerate; very large files belong in a repository
Main purposeMove files between agents inside one runKeep results for people and other jobs
flowchart LR
  B["Build Stage on Agent 1"] -->|"stash"| BOX[("Temporary Box on Controller")]
  BOX -->|"unstash"| T["Test Stage on Agent 2"]
  B -->|"archive"| KEEP[("Kept with the Build")]
  B -->|"upload"| REPO[("Artifact Repository")]
  REPO -->|"download by version"| D["Deploy Stage on Agent 3"]
Figure 3: Three ways to move or keep files: a short-lived box, permanent archive, and a shared warehouse.
Everyday analogy

Stash is like leaving a note on the kitchen table for the next shift: it is only useful for a short while. Archive is like putting a finished cake in the display case where customers can see it for days. An artifact repository is like the main warehouse that supplies many shops for years.

!
Warning

Do not stash or archive very large files, such as multi-gigabyte images, through the controller. It loads the brain of the system heavily. Send large files straight to an artifact repository or cloud storage.

8Artifact Repositories: The Long-Term Warehouse

Jenkins can keep artifacts, but it was not designed to be a full warehouse. Dedicated repositories do that job much better.

An artifact repository is a specialized server that stores finished packages, organizes them by name and version, controls who may read or write them, and keeps them safely for years. Popular examples include Nexus Repository, JFrog Artifactory, cloud storage services, and container registries for container images.

Why not just keep everything in Jenkins?

Keeping artifacts in Jenkins

  • Simple, with no extra system to install
  • Files are attached to the exact build that made them
  • Easy download links on the build page

Its limits

  • Uses the controller’s disk, which can fill up
  • Files disappear when old builds are discarded
  • Poor organization by version and package type
  • Other tools cannot easily download them by version name

Using an artifact repository

  • Organized by name, type, and version
  • Built for large files and long-term keeping
  • Tools such as build systems and deployment tools can fetch from it directly
  • Offers access control, cleanup rules, and scanning

Its costs

  • One more system to run, secure, and back up
  • Credentials must be managed for uploads and downloads
  • Needs a naming and versioning discipline

Kinds of repositories

Packages

Language package repositories

Store libraries and programs for a certain language ecosystem, such as Java archives, JavaScript packages, or Python packages.

Images

Container registries

Store container images, which are sealed boxes holding a program and everything it needs. Deployment tools pull images from here.

Generic

Generic file storage

Cloud object storage or file servers that hold any kind of file, often used for installers, bundles, and reports.

Proxy

Caching proxies

A repository that also keeps copies of outside libraries your build downloads, speeding up builds and protecting you if the outside site goes down.

*
Tip

A healthy pattern is to archive small helpful things, such as test reports and logs, in Jenkins, and publish the main deliverable packages to an artifact repository.

9Versioning and Naming Artifacts

A pile of files with names like final, final2, and really-final is a nightmare. Good naming and versioning prevent it.

Every artifact should carry a version, a label that tells you which edition it is. A very common style is semantic versioning, which uses three numbers separated by dots, such as 2.4.1. The first number changes for big, possibly breaking changes, the second for new features, and the third for small fixes. The pattern helps everyone guess how risky an upgrade is.

What to put in the name and label

  • The project name, so you know what it is.
  • The version number, so you know which edition.
  • The build number or commit identity, so you can trace it back to the exact build and code.
  • The type or target, such as the operating system it is for.

Two kinds of builds

Many teams separate snapshot artifacts from release artifacts. A snapshot is a work-in-progress build, made from ongoing development, which can be replaced by newer snapshots. A release is a final, blessed build, published once and never changed. Repositories often have separate areas for the two, with stricter rules for releases.

Everyday analogy

Think of a book publisher. Draft copies with scribbles in the margin are snapshots and get thrown away often. The printed edition with an official number on its cover page is a release. If a typo is found, the publisher does not sneak a fix into copies already sold. They print a new edition with a new number.

i
Good to know

The Jenkins build number alone is not a great version, because it restarts if a job is recreated and has no meaning about the change. Use it as extra tracing information, alongside a real version.

10Fingerprints and Traceability

Jenkins can remember the fingerprint of a file, so that it can answer questions like “which build made this?” and “where was it used?”

A checksum is a short code calculated from the exact contents of a file. Even a tiny change to the file produces a totally different checksum. Jenkins can record this fingerprint when it archives a file. Later, when another job downloads or uses that file, Jenkins can record that use too.

This creates a trail. If you find a mysterious file running in production, you can look up its fingerprint in Jenkins and learn which job and build produced it, and which other builds used it. It is like the serial number on a product that lets a manufacturer trace it back to the factory line and the batch of parts.

Traceability from code to production

A complete chain looks like this: a commit identifies the code, the build records that commit, the artifact carries the build’s fingerprint and version, and the deployment records which artifact went to which environment. With this chain, the question “What code is running in production right now?” has a clear, quick answer.

flowchart LR
  C["Commit"] --> B["Build Number"]
  B --> A["Artifact with Version and Fingerprint"]
  A --> R["Repository Entry"]
  R --> D1["Deployed to Staging"]
  R --> D2["Deployed to Production"]
  D2 --> Q{"Question: which code is live?"}
  Q -->|"follow the chain back"| C
Figure 4: A trace chain from the live system all the way back to the exact code commit.
*
Tip

Turn on fingerprinting for the important deliverable files. It costs almost nothing and pays off enormously during an incident.

11Retention and Housekeeping

Artifacts pile up. Without a cleanup plan, they slowly eat all the disk space.

Every build that archives artifacts adds more files. A job that runs fifty times a day, each time saving a big package, can fill a disk in weeks. When the controller’s disk is full, Jenkins can slow down or stop, which stops every team.

Discard old builds

The job configuration has a “discard old builds” option. You can keep builds for a number of days, or only a certain number of the newest builds. There is also a separate limit for how many builds keep their artifacts, so you can keep the build history and logs for a long time while deleting the heavy files sooner. That is a clever way to save space while keeping the story of what happened.

Days

Keep by age

Delete builds older than a set number of days, such as sixty. Good for ordinary work.

Count

Keep by number

Keep only the newest N builds, such as thirty. Predictable disk use.

Artifacts

Limit artifacts separately

Keep logs longer but delete large files sooner, since files are what use the disk.

Protect

Keep this build forever

A person can mark an important build, such as a release, so that cleanup skips it.

Retention in the repository

Artifact repositories have their own cleanup rules. A common policy is to delete old snapshots aggressively, for example keeping only the last ten, while keeping released versions for years, since customers may still run them. The best policy depends on your legal and business needs, for example how long you must be able to reproduce a shipped version.

Kind of artifactTypical keeping timeReason
Snapshot or pull request buildsDays to a few weeksQuickly replaced by newer builds
Test reports and logsWeeks to monthsUseful for investigating recent failures and trends
Release packagesYears, sometimes indefinitelyNeeded for rollback, support, and audits
Container images in useAs long as they run somewhereDeleting one can break a live system
!
Warning

Never rely on Jenkins’ own storage as the only home of a released package. When old builds are discarded, the package goes with them. Publish releases to a proper repository with its own protection and backup.

12Performance and Scalability

Moving files around costs time and network effort. Smart habits keep it cheap.

Size

Archive only what you need

Choose patterns carefully. Saving an entire workspace is slow and wasteful. Pick the deliverables and useful reports only.

Size

Compress big bundles

Pack many small files into one compressed bundle. One file moves faster than thousands of tiny ones.

Route

Upload directly from the agent

Send big packages from the agent straight to the repository, not through the controller.

Route

Use storage close to the builds

A repository in the same network or cloud region as the agents makes uploads and downloads much faster.

Layers

Use layer caching for images

Container images are built in layers. Reusing unchanged layers means only the changed part is uploaded each time.

Cache

Cache dependencies

Downloaded libraries can be cached so builds do not fetch the same files again and again.

At large scale, remember that many builds times big files equals a lot of network traffic. A company with hundreds of builds per hour, each uploading a package of several hundred megabytes, needs storage and network capacity to match. Measure how long the archive and upload steps take, and watch for slow growth.

13High Availability and Reliability

What if a disk breaks, a server fails, or an upload gets cut halfway? Good design expects trouble.

The controller disk fails

Artifacts stored only on the controller are lost unless backed up. Regularly back up JENKINS_HOME, or better, keep important artifacts in a separate, replicated repository.

An upload is interrupted

A half-uploaded file may look complete but be broken. Verify checksums after upload, and make the pipeline fail if the check does not match.

The repository is temporarily down

Builds can fail at the upload step. Retry settings with waiting time smooth over brief outages, and a highly available repository reduces the risk further.

A bad artifact is published

Because published versions are immutable, the fix is to publish a corrected new version and stop deploying the bad one. Keeping older good versions makes rollback simple.

Storage runs out

Monitor disk use and set retention rules before it happens. Alerts at seventy or eighty percent full leave time to act.

i
Good to know

Repositories often replicate data across several machines or locations, so that losing one machine does not lose any package. Ask your storage system how it protects data before you depend on it.

14Security of Build Artifacts

An artifact is what actually runs on your servers and in your customers’ hands. If it is tampered with, the damage can be huge.

Threats to think about

  • Tampering. An attacker swaps a good package for a harmful one somewhere between build and deployment.
  • Leaked secrets. A password or key accidentally ends up inside an archived file, such as a log or configuration bundle.
  • Vulnerable ingredients. The package contains an outside library with a known security hole.
  • Unauthorized access. The wrong person downloads, changes, or deletes packages.

Protective habits

Trust

Checksums and signing

Record a checksum, and digitally sign important packages, so receivers can verify that the file is genuine and unchanged.

Access

Least privilege

Builds get write access only where needed. Deployment tools get read-only access. Nobody gets more than they need.

Secrets

Keep secrets out of artifacts

Store secrets in the Jenkins credentials store, and check that logs and bundles do not print them.

Scan

Scan for known weaknesses

Run tools that check the package’s ingredients for known security holes before publishing.

List

Keep a parts list

Some teams produce a software bill of materials, a list of all ingredients inside a package, so they can quickly tell whether a newly discovered weakness affects them.

Lock

Immutable releases

Do not allow released versions to be overwritten. Only new versions can be added.

A special caution about viewing artifacts in the browser

Jenkins protects its users by applying strict safety rules when someone opens an archived file directly in the browser. For example, a web page saved as an artifact may show with its scripts blocked, because a build could produce harmful pages. If you need to publish reports as viewable pages, use the proper plugin for that or a separate hosting place, rather than loosening the safety rules for the whole server.

!
Warning

Do not weaken Jenkins’ browser safety rules just to make one report look nicer. Those rules protect everyone on the server from harmful scripts hidden in build output.

15Monitoring, Logging, and Metrics

A healthy artifact process is watched like a patient in a clinic.

Size

Artifact size over time

A package that quietly doubles in size may contain junk files or an unwanted library. Trend charts reveal it early.

Space

Disk usage

Watch the disk of the controller and of the repository. Set alerts before they are full.

Speed

Archive and upload time

If saving artifacts takes longer each week, look for bloated patterns or slow storage.

Errors

Upload and download failures

A rising number of failures suggests network or repository trouble that will soon hurt deployments.

Jenkins shows the artifact list and sizes on each build’s page, and its console output records the archive and upload steps. Many teams also send numbers to tools such as Prometheus and view them on Grafana dashboards, and keep logs in a central search system. Repository products usually show their own usage reports, download counts, and cleanup history.

16Advantages, Disadvantages, and Trade-offs

Keeping artifacts is essential, but every design choice has a price.

Advantages of managing artifacts well

  • One tested package can be promoted through every environment
  • Easy rollback to any earlier version
  • Reports are kept for later investigation
  • Full traceability from live system back to code
  • Other jobs and teams can reuse outputs
  • Faster deployments, since nothing is rebuilt

Disadvantages and costs

  • Storage grows constantly and needs cleanup rules
  • Large files are slow to move
  • Repositories are extra systems to run and secure
  • Versioning needs discipline from every team
  • Secrets or vulnerable parts may be hidden inside packages

Choosing where to keep artifacts

ChoiceGood forWatch out for
Archive in JenkinsSmall reports, logs, and quick sharing with the teamDisk use on the controller, and loss when builds are discarded
Cloud storage through a Jenkins pluginLarger archives without loading the controller’s diskCost, access rules, and plugin compatibility
Dedicated artifact repositoryRelease packages, libraries, and container imagesExtra system to run, credentials to manage
Both Jenkins and a repositoryReports in Jenkins, deliverables in the repositoryKeeping the two consistent
Build once. Keep it safe. Ship the same file everywhere.

17Design Patterns and Anti-Patterns

A pattern is a proven habit. An anti-pattern is a tempting shortcut that usually hurts later.

Patterns that work

Build once, deploy many

Create the package once and promote that exact file through testing, staging, and production.

Immutable, versioned releases

Publish each release under a unique version and never overwrite it. Fixes get new versions.

Separate reports from deliverables

Keep reports and logs in Jenkins for a short time, and publish deliverables to a repository for a long time.

Trace every artifact

Attach the commit identity and build number to each package, and fingerprint key files.

Promotion between repositories

Publish new builds to a “testing” area, and only after they pass checks, promote the same package to a “release” area.

Scan before you publish

Check packages for known weaknesses and leaked secrets before they enter the release area.

Anti-patterns to avoid

ANTI-PATTERN 01Avoid
The pattern

Rebuilding the program separately for Test, Staging, and Production.

Why it hurts

Each rebuild might differ slightly, so what you tested may not be what you shipped. Bugs appear only in production.

The better way

Build once, save the artifact, and deploy that same file in every environment, changing only the settings around it.

ANTI-PATTERN 02Avoid
The pattern

Archiving the entire workspace “just in case”.

Why it hurts

The disk fills quickly with useless files, builds slow down, and secrets in temporary files may be saved by accident.

The better way

Archive only named deliverables and useful reports, using precise patterns.

ANTI-PATTERN 03Avoid
The pattern

Overwriting a released version with a fixed file under the same version number.

Why it hurts

Nobody can trust what a version number means, caches may serve the old file, and audits become impossible.

The better way

Publish a new version and retire the bad one.

ANTI-PATTERN 04Avoid
The pattern

Using a “latest” label as the only way to identify a package.

Why it hurts

“Latest” changes over time, so two servers pulling at different moments may get different files, and rollback has no clear target.

The better way

Always deploy by an exact version or an exact fingerprint, and treat “latest” only as a convenience label.

ANTI-PATTERN 05Avoid
The pattern

Keeping Jenkins as the only home of released packages.

Why it hurts

When old builds are discarded or the disk fails, the packages vanish with them.

The better way

Publish releases to a protected, backed-up artifact repository.

18Best Practices and Common Mistakes

These habits separate a calm delivery process from a chaotic one.

Best practices

  1. Build once and promote the same artifact through all environments.
  2. Give every artifact a clear version, ideally semantic, plus the build number and commit identity for tracing.
  3. Never overwrite a released version. Publish a new one.
  4. Archive only what people need, using careful file patterns and excludes.
  5. Publish deliverables to an artifact repository, and keep short-lived reports in Jenkins.
  6. Turn on fingerprints for important files to make tracing easy.
  7. Verify checksums after upload and download, and sign important packages.
  8. Set retention rules in both Jenkins and the repository so storage never fills up.
  9. Protect release builds from automatic cleanup by keeping them in the repository.
  10. Keep secrets out of artifacts, and check logs and bundles for accidental leaks.
  11. Scan packages for known weaknesses before publishing.
  12. Use least privilege so builds can write only where they must and deployments can only read.
  13. Monitor size, speed, and disk use, and set alerts before problems become outages.
  14. Back up the controller’s storage and the repository, and practice restoring.

Common mistakes

Mistake

Wrong file pattern

A pattern that matches nothing fails the build, and one that matches everything fills the disk. Test your patterns.

Mistake

No cleanup plan

Artifacts pile up quietly until the disk is full and Jenkins stops.

Mistake

Assuming files travel between agents

A file created on one agent is not on another. Use stash, archive, or a repository.

Mistake

Archiving broken outputs

Saving the output of failed builds as if it were good confuses everyone. Consider archiving deliverables only on success.

Mistake

Secrets inside logs

Printing passwords into a log that gets archived exposes them to anyone with access.

Mistake

Losing the link to the code

Artifacts with no commit or build information cannot be traced. Always attach it.

*
Tip

Test your setup with one question: “If a customer reports a bug in version 2.4.1, can I download that exact package and find the exact code in five minutes?” If yes, your artifact process is healthy.

19Real-World Usage

Build artifacts sit at the center of nearly every real delivery pipeline. Here are common ways teams use them.

The web service release

A team builds a container image once, pushes it to a container registry with a version label, deploys it to a testing environment, then to staging, and finally to production. The identical image runs everywhere, so a bug that appears in production can be reproduced exactly in staging.

The shared library

One team builds a library and publishes it to a package repository. Dozens of other teams’ builds download the library by version. Each consumer chooses when to upgrade, and the repository keeps every old version available.

Mobile app builds

Jenkins builds the app on the right kind of machine, archives the installable file, and uploads it to a testing distribution service. Testers download each build by number, and the release version is kept for the store submission.

Test evidence for audits

Regulated teams, such as banks, archive test reports and approval records with each release build. Auditors can later see exactly what tests ran and who approved the release.

Fast rollback

After a bad release, operations staff simply redeploy the previous version from the repository within minutes, without rebuilding anything.

Large engineering organizations

Companies running Jenkins at large scale, with thousands of pipelines, commonly rely on central artifact repositories and strict versioning so that every team can find and reuse packages, and so that security fixes to shared components reach everyone. Internet-scale companies such as Netflix have publicly described using Jenkins as part of their delivery flow alongside other tools.

A typical growth story

A small team begins by archiving one program file in Jenkins and downloading it by hand. Soon the disk fills, so they set retention limits. Then a release goes wrong and nobody can find the old version, so they adopt an artifact repository and semantic versions. Later they add fingerprints and commit information for tracing, followed by security scans and signing before publishing. At each step the change was small, and the team never had to start over.

20Frequently Asked Questions

Q1What is a build artifact in Jenkins?
It is a file or bundle of files produced by a build that is saved for later use, such as a program package, a container image, a library, or a test report.
Q2What is the difference between a build and an artifact?
A build is the process, one run of a job. An artifact is a product of that process that is kept afterward.
Q3What is the difference between the workspace and an artifact?
The workspace is a temporary folder that may be wiped or reused. An artifact is a file that was deliberately saved and stays attached to its build even after the workspace is cleaned.
Q4How do I save artifacts in Jenkins?
In a classic job, use the “Archive the artifacts” post-build action. In a pipeline, use the archiveArtifacts step, usually after the build stage or in the post section, and give it a pattern that matches the files you want.
Q5Where does Jenkins store archived artifacts?
By default, on the controller, inside the JENKINS_HOME folder, in a location for each build. With the right plugin, they can be stored in cloud storage instead.
Q6What is the difference between stash and archive?
Stash is a short-lived way to pass files between stages or agents inside one pipeline run. Archive keeps files permanently with the build, so people can download them later.
Q7Why not just keep everything in Jenkins?
Jenkins storage uses the controller’s disk, loses files when old builds are discarded, and does not organize packages by version for other tools. A dedicated artifact repository is built for that job.
Q8What is an artifact repository?
A server that stores finished packages, organizes them by name and version, controls access, and keeps them for the long term. Examples include Nexus, Artifactory, cloud storage, and container registries.
Q9What does “build once, deploy many” mean?
Create the package one time, then use that exact same file in every environment. It ensures that what you tested is exactly what you ship.
Q10What is a fingerprint in Jenkins?
A recorded checksum of a file. Jenkins uses it to track which build created the file and which other builds used it, giving you a trail for tracing.
Q11Why did my build fail with “no artifacts found”?
The file pattern matched nothing, usually because the file was not created, was created in a different folder, or the pattern has a typo. Check the workspace contents and fix the pattern, or allow an empty archive if that is truly expected.
Q12How long should I keep artifacts?
It depends. Snapshots and pull request builds can go after days or weeks. Test reports may be kept for months. Release packages are usually kept for years, or as long as the version may be running or supported.
Q13Can I change a published artifact?
You should not. Released versions should be immutable. If something is wrong, publish a new version with a new number and stop using the bad one.
Q14Are container images artifacts too?
Yes. A container image is a very common artifact. It is usually pushed to a container registry with a version label, and later pulled by deployment tools.
Q15How do I keep artifacts secure?
Use checksums and signing, give each system only the access it needs, keep secrets out of files and logs, scan packages for known weaknesses, make releases immutable, and keep Jenkins and its plugins updated.

21Summary and Key Takeaways

You started in a bakery holding a loaf of bread and finished with a full picture of how Jenkins produces, keeps, and shares the results of its work.

Key Takeaways

  • A build artifact is the useful output of a build. It may be a program package, a container image, a library, or a test report, saved so it can be used later.
  • Workspace files are temporary; artifacts are saved on purpose. Jenkins archives chosen files with the build, while long-term packages belong in a dedicated artifact repository.
  • Build once, deploy many. Promote the same artifact through every environment so that what you tested is exactly what you ship.
  • Use stash for short trips and archive or a repository for keeping. Never assume a file created on one agent exists on another.
  • Version and trace everything. Use clear version numbers, record the commit and build number, turn on fingerprints, and never overwrite a released version.
  • Plan the cleanup. Set retention rules in Jenkins and in the repository, and keep release packages somewhere protected and backed up.
  • Guard the product. Verify checksums, sign key packages, scan for known weaknesses, keep secrets out of files, and limit who can write or delete.