2019-09-02
Building Docker images in a CI pipeline is a common task. And Actions makes it convenient to do.
In this article I show a way to build Docker images on Github Actions.
First I tried finding an action that does what I planned to do.
There is a Github maintained action under actions/docker
, but it looks to be using the old HCL syntax, not the new yaml one.
If there is no suitable action to find, defaulting to a run step always does the job.
A run step can run all the commands that you run on your laptop normally. If the necessary tools are installed of course.
Luckilly Actions have docker installed by default.
See it by running:
name: Docker build
on: [push]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Debug
run: |
docker version
name: Docker build
on: [push]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Docker build
run: |
docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD"
docker build -t laszlocloud/actions-test .
docker push laszlocloud/actions-test
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
The docker
commands don’t need much explanation, the only trick is in using the secrets.
Secrets needs to be first created in the repository settings, then included in a workflow step as an environment variable. See the documentation here
Onwards!
Are you running Kubernetes?
You can bootstrap logging, metrics and ingress with my new project, Gimlet Stack. Head over to gimlet.io and see if it helps you.