You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A Reusable Workflow of the Docker GitHub Actions steps. Enhanced with learnings from production use.
⚠️DO NOT call this workflow directly, rather, use it as a template repository and fork it for your own reusable workflow. I might change this workflow at anytime, based on new GHA features or learnings, and your calling workflow might break. ⚠️
Reasons to use this workflow
Easier to start with than hand-building all the Docker Actions into a single workflow.
Provides inline docs based on real-world usage of this workflow.
Gives you inputs so you can reuse this workflow across many repositories and only needing the full workflow stored in a central repository.
New in 2023: Example template to use the reusable workflow twice, in an "image promotion" style of dual registries (one for devs and PRs, one for production after PR merges)
Copy my "calling" workflow templates/call-docker-build.yaml to all the repositories you want to build images in and change it to point to the forked workflow above.
"But what does this workflow really do beyond just docker build?"
Clone the repository
Setup QEMU for multi-platform building (via buildx) via docker/setup-qemu-action
Setup buildx for awesome and fast building via docker/setup-buildx-action
Log into Docker Hub and/or GHCR
Add labels and tags via docker/metadata-action
Build and push image via docker/build-push-action with GitHub-based layer caching
Reports tags and labels in the PR comments
What other ways can I use this workflow?
I have a more advanced example of using this reusable workflow to do a "promotion" style workflow of:
On PR creation, build and push to a "dev" registry (GHCR)
On PR merge, build and push to a "prod" registry (Docker Hub)
Create a GitOps YAML update PR to update image tags
Notify of GitOps PR creation in Slack
I've added that example to my github-actions-templates repository. It calls the reusable reusable-docker-build.yaml file in this repository.
This repository is part of my example DevOps repositories on GitHub Actions