Start here. This is the direct spoken answer to practice first.
Why this question matters
Repeatable delivery depends on knowing which output was built and exactly what gets deployed. Rebuilding or changing that output between environments weakens traceability and makes failures harder to reproduce.
A build artifact is a stored, versioned output of the build with provenance, such as a published .NET archive, frontend bundle, or container image. That artifact may already be the deployable unit. A deployment package is the target-consumable form when the platform needs extra packaging or metadata. The important rule is to build once, identify the exact output, and promote that same output through environments instead of rebuilding different code for each one.