Helm Chart Collater image build with Proxy Fix

This patchset fixes the issue where Helm Chart Collator image build was
failing with USE_PROXY=true.

Issue #7

Change-Id: I3db9adabbde69880b56d1b398901cdf684ea75c8
This commit is contained in:
Sidney Shiba 2021-03-23 13:39:44 -05:00 committed by Shiba, Sidney (sx3394)
parent 2a70f431cc
commit ab26e04ae1
5 changed files with 131 additions and 33 deletions

View File

@ -14,15 +14,20 @@ RUN apt-get update && \
openssh-client \ openssh-client \
jq \ jq \
git && \ git && \
pip3 install --upgrade wheel && \ pip3 install --upgrade wheel --trusted-host pypi.org \
pip3 install --upgrade ansible && \ --trusted-host files.pythonhosted.org && \
pip3 install --upgrade jmespath && \ pip3 install --upgrade ansible --trusted-host pypi.org \
pip3 install --upgrade yq && \ --trusted-host files.pythonhosted.org && \
pip3 install --upgrade jmespath --trusted-host pypi.org \
--trusted-host files.pythonhosted.org && \
pip3 install --upgrade yq --trusted-host pypi.org \
--trusted-host files.pythonhosted.org && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
COPY playbooks /opt/playbooks COPY playbooks /opt/playbooks
COPY config /opt/config
ARG CHARTS="" ARG CHARTS="/opt/config/charts.yaml"
RUN ansible-playbook -v /opt/playbooks/create_repository.yaml \ RUN ansible-playbook -v /opt/playbooks/create_repository.yaml \
-i /opt/playbooks/inventory.yaml \ -i /opt/playbooks/inventory.yaml \
--extra-vars "CHARTS=$CHARTS" --extra-vars "CHARTS=$CHARTS"

View File

@ -18,12 +18,13 @@ PUSH_IMAGE ?= false
IMAGE_ID ?= none IMAGE_ID ?= none
COMMIT ?= $(shell git rev-parse HEAD) COMMIT ?= $(shell git rev-parse HEAD)
LABEL ?= org.airshipit.build=community LABEL ?= org.airshipit.build=community
IMAGE_NAME ?= collator IMAGE_NAME ?= helm-chart-collator
DOCKER_REGISTRY ?= quay.io DOCKER_REGISTRY ?= quay.io
IMAGE_PREFIX ?= airshipit IMAGE_PREFIX ?= airshipit
IMAGE_TAG ?= latest IMAGE_TAG ?= latest
DISTRO ?= debian_stable DISTRO ?= debian_stable
IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}-${DISTRO} CHARTS ?= \"$(cat "config/charts.yaml")\"
IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}
SH_TO_CHECK := $(wildcard files/*.sh ) SH_TO_CHECK := $(wildcard files/*.sh )
PROXY ?= http://proxy.foo.com:8000 PROXY ?= http://proxy.foo.com:8000
NO_PROXY ?= localhost,127.0.0.1,.svc.cluster.local NO_PROXY ?= localhost,127.0.0.1,.svc.cluster.local
@ -74,31 +75,23 @@ build_collator:
mkdir -p $(BUILD_DIR) mkdir -p $(BUILD_DIR)
ifeq ($(IMAGE_ID), none) ifeq ($(IMAGE_ID), none)
ifeq ($(USE_PROXY), true) ifeq ($(USE_PROXY), true)
docker build . \ ./build-image-make.sh \
--iidfile $(BUILD_DIR)/image_id \ config/charts.yaml \
--tag $(IMAGE) \ $(IMAGE_NAME) \
--label $(LABEL) \ $(IMAGE) \
--label "org.opencontainers.image.revision=$(COMMIT)" \ $(LABEL) \
--label "org.opencontainers.image.created=\ $(BUILD_DIR) \
$(shell date --rfc-3339=seconds --utc)" \ $(USE_PROXY) \
--label "org.opencontainers.image.title=$(IMAGE_NAME)" \ $(PROXY) \
--build-arg http_proxy=$(PROXY) \ $(NO_PROXY)
--build-arg https_proxy=$(PROXY) \
--build-arg HTTP_PROXY=$(PROXY) \
--build-arg HTTPS_PROXY=$(PROXY) \
--build-arg no_proxy=$(NO_PROXY) \
--build-arg NO_PROXY=$(NO_PROXY) \
--build-arg GIT_COMMIT=$(COMMIT)
else else
docker build . \ ./build-image-make.sh \
--iidfile $(BUILD_DIR)/image_id \ config/charts.yaml \
--tag $(IMAGE) \ $(IMAGE_NAME) \
--label $(LABEL) \ $(IMAGE) \
--label "org.opencontainers.image.revision=$(COMMIT)" \ $(LABEL) \
--label "org.opencontainers.image.created=\ $(BUILD_DIR) \
$(shell date --rfc-3339=seconds --utc)" \ $(USE_PROXY)
--label "org.opencontainers.image.title=$(IMAGE_NAME)" \
--build-arg GIT_COMMIT=$(COMMIT)
endif endif
else else
echo $(IMAGE_ID) > $(BUILD_DIR)/image_id echo $(IMAGE_ID) > $(BUILD_DIR)/image_id

View File

@ -0,0 +1,70 @@
#!/bin/bash
# set -xe
if [[ $# < 5 ]]; then
echo "usage:"
echo " $0 \\\n"
echo " <charts filename> \\\n"
echo " <image name> \\\n"
echo " <image uri> \\\n"
echo " <label> \\\n"
echo " <build dir> \\\n"
echo " <use proxy? true|false> \\\n"
echo " [<proxy> <no-proxy>] \\\n"
exit 1
fi
CHARTS=$1
IMAGE_NAME=$2
IMAGE_URI=$3
LABEL=$4
BUILD_DIR=$5
USE_PROXY=$6
COMMIT=$(git rev-parse HEAD)
echo "Building the Docker image = ${IMAGE_URI}"
echo " CHARTS=$CHARTS"
echo " IMAGE_NAME=$IMAGE_NAME"
echo " IMAGE_URI=$IMAGE_URI"
echo " LABEL=$LABEL"
echo " BUILD_DIR=$BUILD_DIR"
echo " COMMIT=$COMMIT"
echo " USE_PROXY=$USE_PROXY"
if [ $USE_PROXY == "true" ]; then
PROXY=$7
NO_PROXY=$8
echo "Building Docker image ${IMAGE_URI} with PROXY"
docker build . \
--iidfile ${BUILD_DIR}/image_id \
--tag ${IMAGE_URI} \
--label ${LABEL} \
--label "org.opencontainers.image.revision=${COMMIT}" \
--label "org.opencontainers.image.created=\
$(date --rfc-3339=seconds --utc)" \
--label "org.opencontainers.image.title=${IMAGE_NAME}" \
--force-rm=true \
--build-arg "CHARTS=\"$(cat "${CHARTS}")\"" \
--build-arg http_proxy=${PROXY} \
--build-arg https_proxy=${PROXY} \
--build-arg HTTP_PROXY=${PROXY} \
--build-arg HTTPS_PROXY=${PROXY} \
--build-arg no_proxy=${NO_PROXY} \
--build-arg NO_PROXY=${NO_PROXY} \
--build-arg GIT_COMMIT=${COMMIT}
else
echo "Building Docker image ${IMAGE_URI} without PROXY"
docker build . \
--iidfile ${BUILD_DIR}/image_id \
--tag ${IMAGE_URI} \
--label ${LABEL} \
--label "org.opencontainers.image.revision=${COMMIT}" \
--label "org.opencontainers.image.created=\
$(date --rfc-3339=seconds --utc)" \
--label "org.opencontainers.image.title=${IMAGE_NAME}" \
--force-rm=true \
--build-arg "CHARTS=\"$(cat "${CHARTS}")\"" \
--build-arg GIT_COMMIT=${COMMIT}
fi

View File

@ -1,8 +1,17 @@
#!/bin/bash #!/bin/bash
set -xe
if [[ $# != 1 ]]; then if [[ $# != 1 ]]; then
printf "usage: ./%s <filename>\n" "$0" printf "usage: $0 <filename>\n"
exit 1 exit 1
fi fi
docker build . -t helm-chart-collator --build-arg "CHARTS=\"$(cat "$1")\"" IMAGE_NAME="${IMAGE_NAME:-helm-chart-collator}"
DOCKER_REGISTRY="${DOCKER_REGISTRY:-quay.io}"
IMAGE_PREFIX="${IMAGE_PREFIX:-airshipit}"
IMAGE_TAG="${IMAGE_TAG:-latest}"
image=${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}
echo "Building the ${image}"
docker build . -t $image --build-arg "CHARTS=\"$(cat "$1")\""

View File

@ -0,0 +1,21 @@
git_repos:
- name: dex-aio
url: https://review.opendev.org/airship/charts
path: charts/dex-aio
refspec: refs/heads/master
chart_version: 1.0.0
- name: jarvis-project
url: https://review.opendev.org/airship/charts
path: charts/jarvis-project
refspec: refs/heads/master
chart_version: 1.0.0
- name: jarvis-system
url: https://review.opendev.org/airship/charts
path: charts/jarvis-system
refspec: refs/heads/master
chart_version: 1.0.0
- name: harbor
url: https://review.opendev.org/airship/charts
path: charts/harbor
refspec: refs/heads/master
chart_version: 1.0.0