Skip to content

Commit

Permalink
Add make all-push rule
Browse files Browse the repository at this point in the history
  • Loading branch information
wongma7 committed Dec 8, 2021
1 parent 28a2940 commit ad4feb3
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 51 deletions.
30 changes: 18 additions & 12 deletions .github/workflows/container-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,24 @@ jobs:
uses: docker/setup-buildx-action@v1
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Push to Dockerhub registry
- name: Set environment variables
run: |
BRANCH=$(echo $GITHUB_REF | cut -d'/' -f3)
REPO=amazon/aws-fsx-csi-driver
if [ "$BRANCH" = "master" ]; then
TAG="latest"
REGISTRY_NAME=docker.io/amazon
BRANCH_OR_TAG=$(echo $GITHUB_REF | cut -d'/' -f3)
if [ "$BRANCH_OR_TAG" = "master" ]; then
GIT_TAG=$GITHUB_SHA
else
TAG=$BRANCH
GIT_TAG=$BRANCH_OR_TAG
fi
docker login -u ${{ secrets.DOCKERHUB_USER }} -p ${{ secrets.DOCKERHUB_TOKEN }}
docker buildx build \
-t $REPO:$TAG \
--platform=linux/arm64,linux/amd64 \
--progress plain \
--push .
echo "REGISTRY_NAME=$REGISTRY_NAME" >> $GITHUB_ENV
echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Push manifest list containing amazon linux based images to Docker Hub
run: |
export REGISTRY=$REGISTRY_NAME
export TAG=$GIT_TAG
make all-push
11 changes: 3 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,10 @@

FROM --platform=$BUILDPLATFORM golang:1.16.8-stretch as builder
WORKDIR /go/src/github.com/kubernetes-sigs/aws-fsx-csi-driver

ARG TARGETOS
ARG TARGETARCH
RUN echo "TARGETOS:$TARGETOS, TARGETARCH:$TARGETARCH"
RUN echo "I am running on $(uname -s)/$(uname -m)"

COPY . .

RUN GOOS=${TARGETOS} GOARCH=${TARGETARCH} make aws-fsx-csi-driver
ARG OS
ARG ARCH
RUN make $OS/$ARCH

FROM amazonlinux:2 AS linux-amazon
RUN yum update -y
Expand Down
85 changes: 54 additions & 31 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

VERSION=v0.6.0
VERSION=v0.7.1

PKG=github.com/kubernetes-sigs/aws-fsx-csi-driver
GIT_COMMIT?=$(shell git rev-parse HEAD)
Expand All @@ -24,9 +24,10 @@ GO111MODULE=on
GOPROXY=direct
GOPATH=$(shell go env GOPATH)
GOOS=$(shell go env GOOS)
GOARCH=$(shell go env GOARCH)
GOBIN=$(shell pwd)/bin

IMAGE?=amazon/aws-fsx-csi-driver
REGISTRY?=amazon
IMAGE?=$(REGISTRY)/aws-fsx-csi-driver
TAG?=$(GIT_COMMIT)

OUTPUT_TYPE?=docker
Expand All @@ -35,15 +36,59 @@ OS?=linux
ARCH?=amd64
OSVERSION?=amazon

IMAGE_PLATFORMS?=linux/arm64,linux/amd64
ALL_OS?=linux
ALL_ARCH_linux?=amd64 arm64
ALL_OSVERSION_linux?=amazon
ALL_OS_ARCH_OSVERSION_linux=$(foreach arch, $(ALL_ARCH_linux), $(foreach osversion, ${ALL_OSVERSION_linux}, linux-$(arch)-${osversion}))
ALL_OS_ARCH_OSVERSION=$(foreach os, $(ALL_OS), ${ALL_OS_ARCH_OSVERSION_${os}})

PLATFORM?=$(foreach arch, $(ALL_ARCH_linux), linux/$(arch))

# split words on hyphen, access by 1-index
word-hyphen = $(word $2,$(subst -, ,$1))

.EXPORT_ALL_VARIABLES:

.PHONY: aws-fsx-csi-driver
aws-fsx-csi-driver:
mkdir -p bin
@echo GOARCH:${GOARCH}
CGO_ENABLED=0 GOOS=linux go build -ldflags ${LDFLAGS} -o bin/aws-fsx-csi-driver ./cmd/
.PHONY: linux/$(ARCH) bin/aws-fsx-csi-driver
linux/$(ARCH): bin/aws-fsx-csi-driver
bin/aws-fsx-csi-driver: | bin
CGO_ENABLED=0 GOOS=linux GOARCH=$(ARCH) go build -ldflags ${LDFLAGS} -o bin/aws-fsx-csi-driver ./cmd/

all: all-image-docker

all-push:
docker buildx build \
--platform=$(PLATFORM) \
--build-arg OS=$(OS) \
--build-arg ARCH=$(ARCH) \
--progress=plain \
--target=$(OS)-$(OSVERSION) \
--output=type=registry \
-t=$(IMAGE):$(TAG) \
.
touch $@

all-image-docker: $(addprefix sub-image-docker-,$(ALL_OS_ARCH_OSVERSION_linux))

sub-image-%:
$(MAKE) OUTPUT_TYPE=$(call word-hyphen,$*,1) OS=$(call word-hyphen,$*,2) ARCH=$(call word-hyphen,$*,3) OSVERSION=$(call word-hyphen,$*,4) image

image: .image-$(TAG)-$(OS)-$(ARCH)-$(OSVERSION)
.image-$(TAG)-$(OS)-$(ARCH)-$(OSVERSION):
docker buildx build \
--platform=$(OS)/$(ARCH) \
--build-arg OS=$(OS) \
--build-arg ARCH=$(ARCH) \
--progress=plain \
--target=$(OS)-$(OSVERSION) \
--output=type=$(OUTPUT_TYPE) \
-t=$(IMAGE):$(TAG)-$(OS)-$(ARCH)-$(OSVERSION) \
.
touch $@

.PHONY: clean
clean:
rm -rf .*image-* bin/

bin /tmp/helm:
@mkdir -p $@
Expand Down Expand Up @@ -75,28 +120,6 @@ test-e2e:
GINKGO_SKIP="subPath.should.be.able.to.unmount.after.the.subpath.directory.is.deleted|\[Disruptive\]|\[Serial\]" \
./hack/e2e/run.sh

.PHONY: image
image: .image-$(TAG)-$(OS)-$(ARCH)-$(OSVERSION)
.image-$(TAG)-$(OS)-$(ARCH)-$(OSVERSION):
docker buildx build \
--platform=$(OS)/$(ARCH) \
--build-arg OS=$(OS) \
--build-arg ARCH=$(ARCH) \
--progress=plain \
--target=$(OS)-$(OSVERSION) \
--output=type=$(OUTPUT_TYPE) \
-t=$(IMAGE):$(TAG)-$(OS)-$(ARCH)-$(OSVERSION) \
.
touch $@

.PHONY: image-multi-arch--push
image-multi-arch--push:
docker buildx build \
-t $(IMAGE):latest \
--platform=$(IMAGE_PLATFORMS) \
--progress plain \
--push .

generate-kustomize: bin/helm
cd charts/aws-fsx-csi-driver && ../../bin/helm template kustomize . -s templates/csidriver.yaml > ../../deploy/kubernetes/base/csidriver.yaml
cd charts/aws-fsx-csi-driver && ../../bin/helm template kustomize . -s templates/node-daemonset.yaml > ../../deploy/kubernetes/base/node-daemonset.yaml
Expand Down

0 comments on commit ad4feb3

Please sign in to comment.