From 349aa8b3b77959183bb207a297e8489793c36c29 Mon Sep 17 00:00:00 2001 From: Mark Ison Date: Mon, 2 Nov 2020 10:59:46 +0000 Subject: [PATCH] Updated to build via GitHub Actions and convert to a multi-arch build Signed-off-by: Mark Ison --- .github/workflows/docker-tagged.yml | 46 +++++++++++++++++++++++++++++ .github/workflows/docker.yml | 35 ++++++++++++++++++++++ .travis.yml | 32 -------------------- Dockerfile | 11 +++++-- README.md | 2 +- 5 files changed, 90 insertions(+), 36 deletions(-) create mode 100644 .github/workflows/docker-tagged.yml create mode 100644 .github/workflows/docker.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/docker-tagged.yml b/.github/workflows/docker-tagged.yml new file mode 100644 index 0000000..e9ed056 --- /dev/null +++ b/.github/workflows/docker-tagged.yml @@ -0,0 +1,46 @@ +name: Docker Tagged Build + +on: + push: + tags: + - "*" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 1 + + - name: Get TAG + id: get_tag + run: echo ::set-output name=TAG::${GITHUB_REF#refs/tags/} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + + - name: Login to GHCR + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + registry: ghcr.io + + - name: Build image and push to container registies + id: docker_build + uses: docker/build-push-action@v2 + with: + platforms: linux/amd64,linux/arm/v7,linux/arm64 + push: true + tags: ghcr.io/openfaas/nats-connector:${{ steps.get_tag.outputs.TAG }} + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..358ac99 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,35 @@ +name: Docker Build + +on: + push: + branches: + - "*" + push_request: + branches: + - "*" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 1 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + with: + version: latest + + - name: Build + id: docker_build + uses: docker/build-push-action@v2 + with: + push: false + platforms: linux/amd64,linux/arm/v7,linux/arm64 + tags: ghcr.io/openfaas/nats-connector:latest-dev diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 6e50ac8..0000000 --- a/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -sudo: required - -language: go - -go: - - "1.10.x" - -services: - - docker - -addons: - apt: - packages: - - docker-ce - -script: - - make build - -after_success: - - if [ -z $DOCKER_NS ] ; then - export DOCKER_NS=openfaas; - fi - - - if [ ! -z "$TRAVIS_TAG" ] ; then - docker tag $DOCKER_NS/nats-connector:latest-dev $DOCKER_NS/nats-connector:$TRAVIS_TAG; - echo $DOCKER_PASSWORD | docker login -u=$DOCKER_USERNAME --password-stdin; - docker push $DOCKER_NS/nats-connector:$TRAVIS_TAG; - - docker tag $DOCKER_NS/nats-connector:latest-dev quay.io/$DOCKER_NS/nats-connector:$TRAVIS_TAG; - echo $QUAY_PASSWORD | docker login -u=$QUAY_USERNAME --password-stdin quay.io; - docker push quay.io/$DOCKER_NS/nats-connector:$TRAVIS_TAG; - fi \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index c544417..4f28818 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,9 @@ -FROM golang:1.13 as build +FROM --platform=${BUILDPLATFORM:-linux/amd64} golang:1.13 as build + +ARG TARGETPLATFORM +ARG BUILDPLATFORM +ARG TARGETOS +ARG TARGETARCH ENV GO111MODULE=on ENV CGO_ENABLED=0 @@ -16,9 +21,9 @@ COPY main.go . RUN test -z "$(gofmt -l $(find . -type f -name '*.go' -not -path "./vendor/*"))" RUN go test -mod=vendor -v ./... -RUN CGO_ENABLED=0 GOOS=linux go build -mod=vendor -a -ldflags "-s -w" -installsuffix cgo -o /usr/bin/connector +RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -mod=vendor -a -ldflags "-s -w" -installsuffix cgo -o /usr/bin/connector -FROM alpine:3.12 as ship +FROM --platform=${TARGETPLATFORM:-linux/amd64} alpine:3.12 as ship RUN apk add --no-cache ca-certificates COPY --from=build /usr/bin/connector /usr/bin/connector diff --git a/README.md b/README.md index 0b6efda..2a0be0d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # nats-connector -[![Build Status](https://travis-ci.com/openfaas-incubator/nats-connector.svg?branch=master)](https://travis-ci.com/openfaas-incubator/nats-connector) +[![Docker Build Status](https://github.com/openfaas-incubator/nats-connector/workflows/docker/badge.svg)](https://github.com/openfaas-incubator/nats-connector/actions) [![Go Report Card](https://goreportcard.com/badge/github.com/openfaas-incubator/nats-connector)](https://goreportcard.com/report/github.com/openfaas-incubator/nats-connector) [![GoDoc](https://godoc.org/github.com/openfaas-incubator/nats-connector?status.svg)](https://godoc.org/github.com/openfaas-incubator/nats-connector) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)