Skip to content

Commit b37103e

Browse files
committed
Add support to multi architecture docker image using a github action
1 parent c5e40da commit b37103e

File tree

3 files changed

+48
-4
lines changed

3 files changed

+48
-4
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Build and publish cfssl docker image
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*.*.*'
7+
8+
jobs:
9+
build-and-push-image:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: read
13+
packages: write
14+
steps:
15+
- name: Checkout repository
16+
uses: actions/checkout@v3
17+
with:
18+
fetch-depth: 0
19+
20+
- name: Get tag
21+
id: cfssl
22+
run: echo "::set-output name=tag::$(git describe --tags HEAD)"
23+
24+
- name: Set up QEMU
25+
uses: docker/setup-qemu-action@v2
26+
27+
- name: Set up Docker Buildx
28+
uses: docker/setup-buildx-action@v2
29+
30+
- name: Log in to the Docker hub
31+
uses: docker/login-action@v2
32+
with:
33+
username: ${{ secrets.DOCKERHUB_USERNAME }}
34+
password: ${{ secrets.DOCKERHUB_TOKEN }}
35+
36+
- name: Build and push
37+
uses: docker/build-push-action@v3
38+
with:
39+
context: .
40+
platforms: linux/amd64,linux/arm64,linux/s390x
41+
push: true
42+
tags: cfssl:${{ steps.cfssl.outputs.tag }}

Dockerfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
FROM golang:1.16.15@sha256:35fa3cfd4ec01a520f6986535d8f70a5eeef2d40fb8019ff626da24989bdd4f1
1+
FROM --platform=${BUILDPLATFORM} golang:1.19.3@sha256:d388153691a825844ebb3586dd04d1c60a2215522cc445701424205dffc8a83e
2+
3+
ARG TARGETOS TARGETARCH
24

35
WORKDIR /workdir
46
COPY . /workdir
57

68
RUN git clone https://github.com/cloudflare/cfssl_trust.git /etc/cfssl && \
79
make clean && \
8-
make all && cp bin/* /usr/bin/
10+
GOOS=${TARGETOS} GOARCH=${TARGETARCH} make all && cp bin/* /usr/bin/
911

1012
EXPOSE 8888
1113

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ all: bin/cfssl bin/cfssl-bundle bin/cfssl-certinfo bin/cfssl-newkey bin/cfssl-sc
99

1010
bin/%: $(shell find . -type f -name '*.go')
1111
@mkdir -p $(dir $@)
12-
go build -ldflags $(LDFLAGS) -o $@ ./cmd/$(@F)
12+
GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -ldflags $(LDFLAGS) -o $@ ./cmd/$(@F)
1313

1414
.PHONY: install
1515
install: install-cfssl install-cfssl-bundle install-cfssl-certinfo install-cfssl-newkey install-cfssl-scan install-cfssljson install-mkbundle install-multirootca
@@ -25,7 +25,7 @@ serve:
2525

2626
bin/goose: $(shell find vendor -type f -name '*.go')
2727
@mkdir -p $(dir $@)
28-
go build -o $@ ./vendor/bitbucket.org/liamstask/goose/cmd/goose
28+
GOOS=$(TARGETOS) GOARCH=$(TARGETARCH) go build -o $@ ./vendor/bitbucket.org/liamstask/goose/cmd/goose
2929

3030
.PHONY: clean
3131
clean:

0 commit comments

Comments
 (0)