From d8cb836b4d6ca22fc487bc5cca1a3f88ad77fa4d Mon Sep 17 00:00:00 2001 From: aptalca Date: Wed, 26 May 2021 22:58:53 -0400 Subject: [PATCH] add versioning --- .github/workflows/BuildImage.yml | 12 +++++++++++- Dockerfile | 32 +++++++++++++++++++------------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/.github/workflows/BuildImage.yml b/.github/workflows/BuildImage.yml index af720ae..93a5bf7 100644 --- a/.github/workflows/BuildImage.yml +++ b/.github/workflows/BuildImage.yml @@ -15,14 +15,20 @@ jobs: - name: Build image run: | - docker build --no-cache -t ${{ github.sha }} . + CLOUDFLARED_TAG=$(curl -s https://api.github.com/repos/cloudflare/cloudflared/releases/latest | jq -rc ".tag_name") + echo "CLOUDFLARED_TAG=${CLOUDFLARED_TAG}" >> $GITHUB_ENV + docker build --no-cache --build-arg CLOUDFLARED_TAG=${CLOUDFLARED_TAG} -t ${{ github.sha }} . - name: Tag image if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) }} run: | docker tag ${{ github.sha }} ${ENDPOINT}:${BASEIMAGE}-${MODNAME} + docker tag ${{ github.sha }} ${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${CLOUDFLARED_TAG} + docker tag ${{ github.sha }} ${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${CLOUDFLARED_TAG}-${{ github.sha }} docker tag ${{ github.sha }} ${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${{ github.sha }} docker tag ${{ github.sha }} ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME} + docker tag ${{ github.sha }} ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${CLOUDFLARED_TAG} + docker tag ${{ github.sha }} ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${CLOUDFLARED_TAG}-${{ github.sha }} docker tag ${{ github.sha }} ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${{ github.sha }} - name: Credential check @@ -48,6 +54,8 @@ jobs: if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) && env.CR_USER && env.CR_PAT }} run: | docker push ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${{ github.sha }} + docker push ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${CLOUDFLARED_TAG}-${{ github.sha }} + docker push ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${CLOUDFLARED_TAG} docker push ghcr.io/${ENDPOINT}:${BASEIMAGE}-${MODNAME} - name: Login to DockerHub @@ -59,4 +67,6 @@ jobs: if: ${{ github.ref == format('refs/heads/{0}-{1}', env.BASEIMAGE, env.MODNAME) && env.DOCKERUSER && env.DOCKERPASS }} run: | docker push ${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${{ github.sha }} + docker push ${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${CLOUDFLARED_TAG}-${{ github.sha }} + docker push ${ENDPOINT}:${BASEIMAGE}-${MODNAME}-${CLOUDFLARED_TAG} docker push ${ENDPOINT}:${BASEIMAGE}-${MODNAME} diff --git a/Dockerfile b/Dockerfile index cd88e76..ddcfac5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,9 @@ # Build container FROM golang:alpine AS buildstage -RUN mkdir /cloudflared +ARG CLOUDFLARED_TAG + +RUN mkdir -p /root-layer/cloudflared WORKDIR /src RUN apk --no-cache add git build-base curl jq @@ -9,26 +11,30 @@ RUN apk --no-cache add git build-base curl jq ENV GO111MODULE=on \ CGO_ENABLED=0 -RUN curl -s https://api.github.com/repos/cloudflare/cloudflared/releases/latest \ - | jq -rc ".tag_name" \ - | xargs -I TAG sh -c 'git -c advice.detachedHead=false clone https://github.com/cloudflare/cloudflared --depth=1 --branch TAG .' +RUN \ + if [ -z "${CLOUDFLARED_TAG}" ]; then \ + curl -s https://api.github.com/repos/cloudflare/cloudflared/releases/latest \ + | jq -rc ".tag_name" \ + | xargs -I TAG sh -c 'git -c advice.detachedHead=false clone https://github.com/cloudflare/cloudflared --depth=1 --branch TAG .'; \ + else \ + git -c advice.detachedHead=false clone https://github.com/cloudflare/cloudflared --depth=1 --branch ${CLOUDFLARED_TAG} .; \ + fi RUN GOOS=linux GOARCH=amd64 make cloudflared -RUN mv cloudflared /cloudflared/cloudflared-amd64 +RUN mv cloudflared /root-layer/cloudflared/cloudflared-amd64 RUN GOOS=linux GOARCH=arm64 make cloudflared -RUN mv cloudflared /cloudflared/cloudflared-arm64 +RUN mv cloudflared /root-layer/cloudflared/cloudflared-arm64 RUN GOOS=linux GOARCH=arm make cloudflared -RUN mv cloudflared /cloudflared/cloudflared-armhf +RUN mv cloudflared /root-layer/cloudflared/cloudflared-armhf -# Runtime container +COPY root/ /root-layer/ + +## Single layer deployed image ## FROM scratch -WORKDIR / LABEL maintainer="Spunkie" -# copy cloudflared bins -COPY --from=buildstage /cloudflared /cloudflared -# copy local files -COPY root/ / +# Add files from buildstage +COPY --from=buildstage /root-layer/ /