Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 30 additions & 24 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ jobs:
- run: go env
- run: make build
- run: make build-test-tools
- run: |
make tools
go mod vendor
make cross
- save_cache:
key: go-mod-cache-v1-{{ checksum "./go.sum" }}
paths:
Expand All @@ -25,38 +29,42 @@ jobs:
root: ./
paths:
- .

image:
docker:
- image: circleci/golang:1.17.3
- image: jdrouet/docker-with-buildx:stable
working_directory: /home/circleci/workspace/helmfile
steps:
- checkout
- restore_cache:
keys:
- go-mod-cache-v1-{{ checksum "./go.sum" }}
- go-mod-cache-v1-
- setup_remote_docker
- run: mkdir ~/build
- attach_workspace:
at: ~/build
- run: mv -v ~/build/dist .
- setup_remote_docker:
version: 18.09.3
- run:
command: |
make tools
go mod vendor
find dist
docker run --rm --privileged tonistiigi/binfmt:latest --install linux/arm64
apk add --no-cache make git
ORG=roboll BUILD_URL="$CIRCLE_BUILD_URL" make image

image_debian:
docker:
- image: circleci/golang:1.17.3
- image: jdrouet/docker-with-buildx:stable
working_directory: /home/circleci/workspace/helmfile
steps:
- checkout
- restore_cache:
keys:
- go-mod-cache-v1-{{ checksum "./go.sum" }}
- go-mod-cache-v1-
- setup_remote_docker
- run: mkdir ~/build
- attach_workspace:
at: ~/build
- run: mv -v ~/build/dist .
- setup_remote_docker:
version: 18.09.3
- run:
command: |
make tools
go mod vendor
docker run --rm --privileged tonistiigi/binfmt:latest --install linux/arm64
apk add --no-cache make git
ORG=roboll BUILD_URL="$CIRCLE_BUILD_URL" make image/debian

test:
Expand Down Expand Up @@ -123,7 +131,8 @@ jobs:
keys:
- go-mod-cache-v1-{{ checksum "./go.sum" }}
- go-mod-cache-v1-
- setup_remote_docker
- setup_remote_docker:
version: 18.09.3
- run:
no_output_timeout: 30m
command: |
Expand All @@ -137,15 +146,12 @@ workflows:
build_and_test:
jobs:
- build
- image
- image_debian
- test
- integration_tests:
- image:
requires:
- build
- image_debian:
requires:
- build
matrix:
parameters:
helm-version: ["v3.4.2", "v3.5.4", "v3.6.3", "v3.7.2"]
- release:
filters:
branches:
Expand Down
44 changes: 20 additions & 24 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,56 +1,52 @@
FROM golang:1.17.3-alpine3.13 as builder

RUN apk add --no-cache make git
WORKDIR /workspace/helmfile
COPY . /workspace/helmfile
RUN make static-linux

# -----------------------------------------------------------------------------

FROM alpine:3.13

RUN apk add --no-cache ca-certificates git bash curl jq

ARG TARGETARCH
ARG HELM_VERSION="v3.7.2"
ARG HELM_SHA256="4ae30e48966aba5f807a4e140dad6736ee1a392940101e4d79ffb4ee86200a9e"
ARG HELM_LOCATION="https://get.helm.sh"
ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-${TARGETARCH}.tar.gz"

RUN set -x && \
wget ${HELM_LOCATION}/${HELM_FILENAME}.sha256sum && \
HELM_SHA256=$(cat ${HELM_FILENAME}.sha256sum) && \
wget ${HELM_LOCATION}/${HELM_FILENAME} && \
echo Verifying ${HELM_FILENAME}... && \
sha256sum ${HELM_FILENAME} | grep -q "${HELM_SHA256}" && \
sha256sum ${HELM_FILENAME} | grep "${HELM_SHA256}" && \
echo Extracting ${HELM_FILENAME}... && \
tar zxvf ${HELM_FILENAME} && mv /linux-amd64/helm /usr/local/bin/ && \
rm ${HELM_FILENAME} && rm -r /linux-amd64
tar zxvf ${HELM_FILENAME} && mv /linux-${TARGETARCH}/helm /usr/local/bin/ && \
rm ${HELM_FILENAME} && rm -r /linux-${TARGETARCH}

# using the install documentation found at https://kubernetes.io/docs/tasks/tools/install-kubectl/
# for now but in a future version of alpine (in the testing version at the time of writing)
# we should be able to install using apk add.
# the sha256 sum can be found at https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl.sha256
# the sha256 sum can be found at https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl.sha256
# maybe a good idea to automate in the future?
ENV KUBECTL_VERSION="v1.21.4"
ENV KUBECTL_SHA256="9410572396fb31e49d088f9816beaebad7420c7686697578691be1651d3bf85a"
RUN set -x && \
curl --retry 5 --retry-connrefused -LO "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" && \
curl --retry 5 --retry-connrefused -LO "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl.sha256" && \
KUBECTL_SHA256=$(cat kubectl.sha256) && \
curl --retry 5 --retry-connrefused -LO "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl" && \
sha256sum kubectl | grep ${KUBECTL_SHA256} && \
chmod +x kubectl && \
mv kubectl /usr/local/bin/kubectl

ENV KUSTOMIZE_VERSION="v3.8.8"
ENV KUSTOMIZE_SHA256="175938206f23956ec18dac3da0816ea5b5b485a8493a839da278faac82e3c303"
RUN set -x && \
curl --retry 5 --retry-connrefused -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz && \
sha256sum kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz | grep ${KUSTOMIZE_SHA256} && \
tar zxf kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz && \
rm kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz && \
curl --retry 5 --retry-connrefused -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/checksums.txt && \
KUSTOMIZE_SHA256=$(grep kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz checksums.txt | awk '{print $1}') && \
curl --retry 5 --retry-connrefused -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz && \
sha256sum kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz | grep ${KUSTOMIZE_SHA256} && \
tar zxf kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz && \
rm kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz && \
mv kustomize /usr/local/bin/kustomize

RUN helm plugin install https://github.com/databus23/helm-diff --version v3.1.3 && \
RUN set -x && \
helm plugin install https://github.com/databus23/helm-diff --version v3.2.0 && \
helm plugin install https://github.com/jkroepke/helm-secrets --version v3.5.0 && \
helm plugin install https://github.com/hypnoglow/helm-s3.git --version v0.10.0 && \
helm plugin install https://github.com/aslafy-z/helm-git.git --version v0.10.0

COPY --from=builder /workspace/helmfile/dist/helmfile_linux_amd64 /usr/local/bin/helmfile
COPY dist/helmfile_linux_${TARGETARCH} /usr/local/bin/helmfile

CMD ["/usr/local/bin/helmfile"]
48 changes: 19 additions & 29 deletions Dockerfile.debian
Original file line number Diff line number Diff line change
@@ -1,18 +1,3 @@
FROM golang:1.17.3 as builder

RUN apt-get update \
&& apt-get install --no-install-recommends -y \
build-essential \
git \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /workspace/helmfile
COPY . /workspace/helmfile

RUN make static-linux

# -----------------------------------------------------------------------------

FROM debian:stable-slim

RUN apt-get update \
Expand All @@ -25,46 +10,51 @@ RUN apt-get update \
wget \
&& rm -rf /var/lib/apt/lists/*

ARG TARGETARCH
ARG HELM_VERSION="v3.7.2"
ARG HELM_SHA256="4ae30e48966aba5f807a4e140dad6736ee1a392940101e4d79ffb4ee86200a9e"
ARG HELM_LOCATION="https://get.helm.sh"
ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-${TARGETARCH}.tar.gz"

RUN set -x && \
wget ${HELM_LOCATION}/${HELM_FILENAME}.sha256sum && \
HELM_SHA256=$(cat ${HELM_FILENAME}.sha256sum) && \
wget "${HELM_LOCATION}/${HELM_FILENAME}" && \
echo "Verifying ${HELM_FILENAME}..." && \
sha256sum "${HELM_FILENAME}" | grep -q "${HELM_SHA256}" && \
echo "Extracting ${HELM_FILENAME}..." && \
tar zxvf "${HELM_FILENAME}" && mv /linux-amd64/helm /usr/local/bin/ && \
rm ${HELM_FILENAME} && rm -r /linux-amd64
tar zxvf "${HELM_FILENAME}" && mv /linux-${TARGETARCH}/helm /usr/local/bin/ && \
rm ${HELM_FILENAME} && rm -r /linux-${TARGETARCH}

# using the install documentation found at https://kubernetes.io/docs/tasks/tools/install-kubectl/
# for now but in a future version of alpine (in the testing version at the time of writing)
# we should be able to install using apk add.
# the sha256 sum can be found at https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl.sha256
# the sha256 sum can be found at https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl.sha256
# maybe a good idea to automate in the future?
ENV KUBECTL_VERSION="v1.21.4"
ENV KUBECTL_SHA256="9410572396fb31e49d088f9816beaebad7420c7686697578691be1651d3bf85a"
RUN set -x && \
wget "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" && \
curl --retry 5 --retry-connrefused -LO "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl.sha256" && \
KUBECTL_SHA256=$(cat kubectl.sha256) && \
wget "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl" && \
sha256sum kubectl | grep ${KUBECTL_SHA256} && \
chmod +x kubectl && \
mv kubectl /usr/local/bin/kubectl

ENV KUSTOMIZE_VERSION="v3.8.8"
ENV KUSTOMIZE_SHA256="175938206f23956ec18dac3da0816ea5b5b485a8493a839da278faac82e3c303"
RUN set -x && \
curl --retry 5 --retry-connrefused -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz && \
sha256sum kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz | grep ${KUSTOMIZE_SHA256} && \
tar zxf kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz && \
rm kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz && \
curl --retry 5 --retry-connrefused -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/checksums.txt && \
KUSTOMIZE_SHA256=$(grep kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz checksums.txt | awk '{print $1}') && \
curl --retry 5 --retry-connrefused -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz && \
sha256sum kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz | grep ${KUSTOMIZE_SHA256} && \
tar zxf kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz && \
rm kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz && \
mv kustomize /usr/local/bin/kustomize

RUN helm plugin install https://github.com/databus23/helm-diff --version v3.1.3 && \
RUN set -x && \
helm plugin install https://github.com/databus23/helm-diff --version v3.2.0 && \
helm plugin install https://github.com/jkroepke/helm-secrets --version v3.5.0 && \
helm plugin install https://github.com/hypnoglow/helm-s3.git --version v0.10.0 && \
helm plugin install https://github.com/aslafy-z/helm-git.git --version v0.10.0

COPY --from=builder /workspace/helmfile/dist/helmfile_linux_amd64 /usr/local/bin/helmfile
COPY dist/helmfile_linux_${TARGETARCH} /usr/local/bin/helmfile

CMD ["/usr/local/bin/helmfile"]
44 changes: 20 additions & 24 deletions Dockerfile.helm3
Original file line number Diff line number Diff line change
@@ -1,55 +1,51 @@
FROM golang:1.17.3-alpine3.13 as builder

RUN apk add --no-cache make git
WORKDIR /workspace/helmfile
COPY . /workspace/helmfile
RUN make static-linux

# -----------------------------------------------------------------------------

FROM alpine:3.13

RUN apk add --no-cache ca-certificates git bash curl jq

ARG TARGETARCH
ARG HELM_VERSION="v3.7.2"
ARG HELM_LOCATION="https://get.helm.sh"
ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
ARG HELM_SHA256="4ae30e48966aba5f807a4e140dad6736ee1a392940101e4d79ffb4ee86200a9e"
ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-${TARGETARCH}.tar.gz"

RUN set -x && \
wget ${HELM_LOCATION}/${HELM_FILENAME}.sha256sum && \
HELM_SHA256=$(cat ${HELM_FILENAME}.sha256sum) && \
wget ${HELM_LOCATION}/${HELM_FILENAME} && \
echo Verifying ${HELM_FILENAME}... && \
sha256sum ${HELM_FILENAME} | grep -q "${HELM_SHA256}" && \
sha256sum ${HELM_FILENAME} | grep "${HELM_SHA256}" && \
echo Extracting ${HELM_FILENAME}... && \
tar zxvf ${HELM_FILENAME} && mv /linux-amd64/helm /usr/local/bin/ && \
rm ${HELM_FILENAME} && rm -r /linux-amd64
tar zxvf ${HELM_FILENAME} && mv /linux-${TARGETARCH}/helm /usr/local/bin/ && \
rm ${HELM_FILENAME} && rm -r /linux-${TARGETARCH}

# using the install documentation found at https://kubernetes.io/docs/tasks/tools/install-kubectl/
# for now but in a future version of alpine (in the testing version at the time of writing)
# we should be able to install using apk add.
# the sha256 sum can be found at https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl.sha256
# the sha256 sum can be found at https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl.sha256
# maybe a good idea to automate in the future?
ENV KUBECTL_VERSION="v1.18.9"
ENV KUBECTL_SHA256="6a68756a2d3d04b4d0f52b00de6493ba2c1fcb28b32f3e4a0e99b3d9f6c4e8ed"
RUN set -x && \
curl --retry 5 --retry-connrefused -LO "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" && \
curl --retry 5 --retry-connrefused -LO "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl.sha256" && \
KUBECTL_SHA256=$(cat kubectl.sha256) && \
curl --retry 5 --retry-connrefused -LO "https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/${TARGETARCH}/kubectl" && \
sha256sum kubectl | grep ${KUBECTL_SHA256} && \
chmod +x kubectl && \
mv kubectl /usr/local/bin/kubectl

ENV KUSTOMIZE_VERSION="v3.8.8"
ENV KUSTOMIZE_SHA256="175938206f23956ec18dac3da0816ea5b5b485a8493a839da278faac82e3c303"
RUN set -x && \
curl --retry 5 --retry-connrefused -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz && \
sha256sum kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz | grep ${KUSTOMIZE_SHA256} && \
tar zxf kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz && \
rm kustomize_${KUSTOMIZE_VERSION}_linux_amd64.tar.gz && \
curl --retry 5 --retry-connrefused -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/checksums.txt && \
KUSTOMIZE_SHA256=$(grep kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz checksums.txt | awk '{print $1}') && \
curl --retry 5 --retry-connrefused -LO https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/${KUSTOMIZE_VERSION}/kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz && \
sha256sum kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz | grep ${KUSTOMIZE_SHA256} && \
tar zxf kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz && \
rm kustomize_${KUSTOMIZE_VERSION}_linux_${TARGETARCH}.tar.gz && \
mv kustomize /usr/local/bin/kustomize

RUN helm plugin install https://github.com/databus23/helm-diff --version v3.1.3 && \
RUN helm plugin install https://github.com/databus23/helm-diff --version v3.2.0 && \
helm plugin install https://github.com/jkroepke/helm-secrets --version v3.5.0 && \
helm plugin install https://github.com/hypnoglow/helm-s3.git --version v0.10.0 && \
helm plugin install https://github.com/aslafy-z/helm-git.git --version v0.10.0

COPY --from=builder /workspace/helmfile/dist/helmfile_linux_amd64 /usr/local/bin/helmfile
COPY dist/helmfile_linux_${TARGETARCH} /usr/local/bin/helmfile

CMD ["/usr/local/bin/helmfile"]
Loading