Build and Package Management: Code to Artifact
Learn how code becomes a deployable artifact with Gradle, Poetry, Docker and Makefiles, plus dependency locking and artifact versioning.
What You'll Learn
Understanding Why Build and Package Management Exists
It is Friday evening in Dublin. A payments team re-runs a build that passed on Tuesday.
Recognising Build Tools Across Languages
Every language has its own build tools, and they all do roughly the same jobs.
Building Java Projects with Gradle
Gradle builds Java projects from a config file, and the same ideas carry over to other build tools.
Building Python Projects with Poetry
Poetry manages your Python dependencies, your virtual environment and your packaging from one config file.
Managing Dependencies and Versions Safely
Dependencies are code you did not write, so how you declare, split and update them has a real effect on stability and security.
Versioning and Storing Artifacts
An artifact with no clear version is a mystery in production.
Skills You'll Master
Curriculum Index10 topics
Understanding Why Build and Package Management Exists
It is Friday evening in Dublin. A payments team re-runs a build that passed on Tuesday.
Recognising Build Tools Across Languages
Every language has its own build tools, and they all do roughly the same jobs.
Building Java Projects with Gradle
Gradle builds Java projects from a config file, and the same ideas carry over to other build tools.
Building Python Projects with Poetry
Poetry manages your Python dependencies, your virtual environment and your packaging from one config file.
Managing Dependencies and Versions Safely
Dependencies are code you did not write, so how you declare, split and update them has a real effect on stability and...
Versioning and Storing Artifacts
An artifact with no clear version is a mystery in production.
Packaging Apps with Docker
Docker packages your app and everything it needs into one image.
Automating Commands with a Makefile
A Makefile gives your project short, consistent commands that humans and CI can both run.
Practicing the Full Workflow with a Reference Project
This lab takes a tiny Flask app from nothing to a versioned Docker image, using every tool in this module.
Reviewing Commands and Common Mistakes
This last topic gathers the commands you will actually use and the mistakes that cause most real build problems.
Career Impact
Roles that use the skills in this module.
DevOps Engineer
Site Reliability Engineer
Platform Engineer
Release Engineer
Next Modules
Related Guides
Practice on the Coding Sheet
Not a software engineer sheet. Every problem comes from real DevOps, SRE, Platform and Cloud interviews, from your first script to a system you build yourself.
Open the Coding SheetFrequently Asked Questions
A package manager finds, downloads and locks the libraries your project depends on. A build tool compiles, tests and packages your code into an artifact. Many modern tools do both jobs. Gradle and Poetry each manage dependencies and also build or package your project.
A lock file records the exact version of every dependency, including the dependencies of your dependencies. With it, your laptop, your teammate's machine and CI all install the same versions. Without it, each install may pick newer versions and builds drift apart.
The latest tag is only a name, and it can point to a different image tomorrow. You cannot tell which version is running or roll back to a known one. Deploy an exact version tag instead, such as 1.2.3 or 1.2.3 plus a git commit SHA.
No, but it is a handy habit. A Makefile gives your team short, memorable commands such as make test and make build, and your CI pipeline can call the same commands. It keeps long tool commands out of your head and out of your README.