Artifact Management

Loading concept...

🏭 Artifact Management: Your Software Factory’s Treasure Vault

Imagine you’re a master toymaker. Every day, you build amazing toys. But what happens to them once they’re made? Where do you store them? How do you know which toy is which version?


🎯 The Big Picture

Think of artifacts like finished LEGO sets in their boxes. When your code gets “built,” it becomes a nice packaged box ready to use. Artifact Management is how you organize, store, and keep track of all those boxes!

graph TD A[📝 Your Code] --> B[🔨 Build Process] B --> C[📦 Artifact Created] C --> D[🏪 Artifact Repository] D --> E[🚀 Deploy to Users]

📦 Build Artifacts: What Gets Created?

What Are Build Artifacts?

Remember when you bake cookies? You start with ingredients (flour, sugar, eggs), mix them together, bake them, and out comes… cookies! 🍪

In software:

  • Ingredients = Your source code
  • Baking = The build process
  • Cookies = Build artifacts!

Common Types of Artifacts

Artifact Type What It Is Example
JAR/WAR Java application package myapp-1.0.jar
Docker Image Container ready to run myapp:v1.2.3
NPM Package JavaScript library lodash-4.17.21.tgz
Binary Compiled program myapp.exe
ZIP/TAR Compressed files release-2.0.zip

Real Example

# GitHub Actions creates artifact
- name: Build Application
  run: npm run build

- name: Upload Artifact
  uses: actions/upload-artifact@v3
  with:
    name: my-app-build
    path: dist/

Think of it like this: When you draw a picture, your drawing is the artifact. It’s the finished thing you can show to others!


🏪 Artifact Repositories: The Treasure Vault

What’s an Artifact Repository?

Imagine a giant library, but instead of books, it stores all your finished software packages. That’s an Artifact Repository!

graph TD A[🔨 Build Server] -->|Uploads| B[🏪 Artifact Repository] B -->|Downloads| C[📱 Dev Environment] B -->|Downloads| D[🖥️ Test Server] B -->|Downloads| E[🌍 Production]

Popular Artifact Repositories

Repository Best For Think of It As…
Nexus Java, Docker, npm A mega warehouse
Artifactory Everything A universal storage
Docker Hub Container images Instagram for containers
npm Registry JavaScript packages App Store for JS
GitHub Packages All types Built into GitHub

Why Use One?

🎯 One place for everything - No hunting for files!

🔐 Security - Control who can access what

Speed - Download artifacts fast

🔄 Sharing - Teams can share easily

Example: Publishing to a Repository

# Push Docker image to registry
docker push myregistry.com/myapp:1.0.0

# Publish npm package
npm publish

# Upload to Nexus
mvn deploy

🏷️ Artifact Versioning: Keeping Track

Why Version Numbers Matter

Imagine you have 10 LEGO sets, all called “Spaceship.” Confusing, right?

Versions help you know EXACTLY which one you’re talking about!

Semantic Versioning (SemVer)

The most popular way to version software:

MAJOR.MINOR.PATCH
  2  .  5  .  3
Part When to Change Example
MAJOR Breaking changes 1.0.0 → 2.0.0
MINOR New features (safe) 2.0.0 → 2.1.0
PATCH Bug fixes 2.1.0 → 2.1.1
graph TD A[v1.0.0] -->|Add feature| B[v1.1.0] B -->|Fix bug| C[v1.1.1] C -->|Breaking change| D[v2.0.0]

Other Versioning Strategies

📅 Date-based:

2024.12.16
myapp-20241216

🔢 Build number:

myapp-build-1234

🔗 Git commit hash:

myapp-a1b2c3d4

Best Practice Example

{
  "name": "my-awesome-app",
  "version": "2.3.1",
  "description": "Version tells everyone exactly what this is!"
}

Remember: Version numbers are like birthday candles - they tell you how old and mature something is! 🎂


🔒 Immutable Artifacts: The “No Touching” Rule

What Does “Immutable” Mean?

Imagine you write your name in wet cement. Once it dries, you can’t change it. That’s immutable!

For artifacts: Once created, NEVER change it.

Why Immutable Matters

graph TD A[v1.0.0 Created] -->|Deploy to Test| B[✅ Works!] B -->|Deploy to Production| C[✅ Same code!] D[v1.0.0 Changed] -->|Deploy to Test| E[✅ Works!] E -->|Deploy to Production| F[❌ Different code!]

The Dangers of Changing Artifacts

Mutable (Bad) Immutable (Good)
Same version, different code Same version, same code ALWAYS
“It worked yesterday!” bugs Predictable behavior
Debugging nightmare Easy to trace issues
Trust issues Full confidence

How to Stay Immutable

DO:

  • Create NEW version for ANY change
  • Use unique version numbers
  • Lock versions in dependencies

DON’T:

  • Overwrite existing versions
  • Use “latest” in production
  • Modify after publishing

Example: Proper Immutability

# BAD - Using mutable tag
image: myapp:latest  # Could be anything!

# GOOD - Using immutable version
image: myapp:2.3.1@sha256:abc123...

Think of it like a sealed letter. Once you seal it and mail it, you can’t open it and change what’s inside!


🗓️ Artifact Retention Policies: Spring Cleaning

What Are Retention Policies?

You can’t keep every drawing you’ve ever made, right? Your room would overflow!

Retention policies decide:

  • What to keep
  • How long to keep it
  • What to delete

Why Delete Old Artifacts?

💾 Storage costs money - Don’t pay for useless files!

🔍 Easier to find things - Less clutter = faster search

🛡️ Security - Old versions might have vulnerabilities

Common Retention Strategies

graph TD A[New Artifact Created] --> B{Keep Forever?} B -->|Production release| C[♾️ Keep Forever] B -->|Dev build| D{How old?} D -->|< 7 days| E[✅ Keep] D -->|> 7 days| F[🗑️ Delete]

Example Retention Policy

Artifact Type Keep For Why
Release versions Forever Need for rollback
RC (Release Candidates) 30 days Might need for testing
Dev builds 7 days Just for development
Failed builds 1 day Just for debugging

Implementing Retention

# Nexus retention policy example
cleanup:
  policies:
    - name: delete-old-snapshots
      criteria:
        lastDownloaded: 30
      action: DELETE

    - name: keep-releases
      criteria:
        releaseType: RELEASE
      action: KEEP

Pro Tips for Retention

📌 Always keep production releases - You might need to rollback!

📌 Automate cleanup - Don’t do it manually

📌 Monitor storage - Know when you’re running low

📌 Document your policy - Everyone should know the rules


🎯 Putting It All Together

Here’s how all five concepts work together:

graph TD A[👨‍💻 Developer writes code] --> B[🔨 CI/CD builds it] B --> C[📦 Build Artifact created] C --> D[🏷️ Version assigned: v2.3.1] D --> E[🔒 Marked as immutable] E --> F[🏪 Stored in repository] F --> G[🗓️ Retention policy applies] G -->|If old & unused| H[🗑️ Deleted] G -->|If important| I[💾 Kept forever]

🌟 Key Takeaways

Concept One-Liner
Build Artifacts Finished packages from your code
Artifact Repositories Safe storage for all your packages
Artifact Versioning Unique names so you know what’s what
Immutable Artifacts Never change once created
Retention Policies Rules for what to keep and delete

🎈 Remember!

Your artifacts are like precious toys from a factory. You build them carefully, label them properly, store them safely, never change them once boxed, and clean out the old ones regularly!

You’ve got this! 🚀

Loading story...

No Story Available

This concept doesn't have a story yet.

Story Preview

Story - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

Interactive Preview

Interactive - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Interactive Content

This concept doesn't have interactive content yet.

Cheatsheet Preview

Cheatsheet - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Cheatsheet Available

This concept doesn't have a cheatsheet yet.

Quiz Preview

Quiz - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Quiz Available

This concept doesn't have a quiz yet.