2018-03-09 16:00:53 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
2019-05-02 15:11:11 +00:00
|
|
|
push_helm_charts() {
|
2019-02-21 04:30:57 +00:00
|
|
|
PACKAGE=$1
|
2019-10-01 08:46:01 +00:00
|
|
|
VERSION=${ENV_CSI_IMAGE_VERSION//v/} # Set version (without v prefix)
|
2019-02-21 04:30:57 +00:00
|
|
|
|
2019-10-01 08:46:01 +00:00
|
|
|
# update information in Chart.yaml if the branch is not master
|
|
|
|
if [ "$TRAVIS_BRANCH" != "master" ]; then
|
|
|
|
# Replace appVersion: canary and version: *-canary with the actual version
|
|
|
|
sed -i "s/\(\s.*canary\)/ $VERSION/" "charts/ceph-csi-$PACKAGE/Chart.yaml"
|
2019-09-26 09:55:12 +00:00
|
|
|
|
2019-10-01 08:46:01 +00:00
|
|
|
if [[ "$VERSION" == *"canary"* ]]; then
|
|
|
|
# Replace master with the version branch
|
|
|
|
sed -i "s/master/$TRAVIS_BRANCH/" "charts/ceph-csi-$PACKAGE/Chart.yaml"
|
|
|
|
else
|
|
|
|
# This is not a canary release, replace master with the tagged branch
|
2020-02-11 08:49:53 +00:00
|
|
|
sed -i "s/master/v$VERSION/" "charts/ceph-csi-$PACKAGE/templates/NOTES.txt"
|
2019-10-01 08:46:01 +00:00
|
|
|
sed -i "s/master/v$VERSION/" "charts/ceph-csi-$PACKAGE/Chart.yaml"
|
2019-09-26 09:55:12 +00:00
|
|
|
|
2019-10-01 08:46:01 +00:00
|
|
|
fi
|
2019-02-21 04:30:57 +00:00
|
|
|
fi
|
|
|
|
|
2019-10-01 08:46:01 +00:00
|
|
|
mkdir -p tmp/csi-charts/docs/"$PACKAGE"
|
|
|
|
pushd tmp/csi-charts/docs/"$PACKAGE" >/dev/null
|
|
|
|
helm init --client-only
|
|
|
|
helm package ../../../../charts/ceph-csi-"$PACKAGE"
|
|
|
|
popd >/dev/null
|
|
|
|
|
|
|
|
pushd tmp/csi-charts/docs >/dev/null
|
|
|
|
helm repo index .
|
|
|
|
git add --all :/ && git commit -m "Update for helm charts $PACKAGE-$VERSION"
|
|
|
|
git push https://"$GITHUB_TOKEN"@github.com/ceph/csi-charts
|
|
|
|
popd >/dev/null
|
|
|
|
|
2019-02-21 04:30:57 +00:00
|
|
|
}
|
|
|
|
|
2019-11-07 09:55:12 +00:00
|
|
|
# Build and push images. Steps as below:
|
|
|
|
# 1. get base image from original Dockerfile (FROM ceph/ceph:v14.2)
|
|
|
|
# 2. parse manifest to get image digest per arch (sha256:XXX, sha256:YYY)
|
|
|
|
# 3. patch Dockerfile with amd64 base image (FROM ceph/ceph:v14.2@sha256:XXX)
|
|
|
|
# 4. build and push amd64 image
|
|
|
|
# 5. patch Dockerfile with arm64 base image (FROM ceph/ceph:v14.2@sha256:YYY)
|
|
|
|
# 6. build and push arm64 image
|
|
|
|
build_push_images() {
|
|
|
|
# "docker manifest" requires experimental feature enabled
|
|
|
|
export DOCKER_CLI_EXPERIMENTAL=enabled
|
|
|
|
|
|
|
|
# get baseimg (ceph/ceph:tag)
|
|
|
|
dockerfile="deploy/cephcsi/image/Dockerfile"
|
2020-04-21 06:39:03 +00:00
|
|
|
baseimg=$(awk 'NR==1{print $2}' "${dockerfile}")
|
2019-11-07 09:55:12 +00:00
|
|
|
|
|
|
|
# get image digest per architecture
|
|
|
|
# {
|
|
|
|
# "arch": "amd64",
|
|
|
|
# "digest": "sha256:XXX"
|
|
|
|
# }
|
|
|
|
# {
|
|
|
|
# "arch": "arm64",
|
|
|
|
# "digest": "sha256:YYY"
|
|
|
|
# }
|
|
|
|
manifests=$("${CONTAINER_CMD:-docker}" manifest inspect "${baseimg}" | jq '.manifests[] | {arch: .platform.architecture, digest: .digest}')
|
2020-04-21 06:39:03 +00:00
|
|
|
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
2019-11-07 09:55:12 +00:00
|
|
|
# build and push per arch images
|
|
|
|
for ARCH in amd64 arm64; do
|
2020-01-20 11:28:30 +00:00
|
|
|
ifs=$IFS
|
|
|
|
IFS=
|
|
|
|
digest=$(awk -v ARCH=${ARCH} '{if (archfound) {print $NF; exit 0}}; {archfound=($0 ~ "arch.*"ARCH)}' <<<"${manifests}")
|
2019-11-07 09:55:12 +00:00
|
|
|
IFS=$ifs
|
|
|
|
sed -i "s|\(^FROM.*\)${baseimg}.*$|\1${baseimg}@${digest}|" "${dockerfile}"
|
2020-04-21 13:31:25 +00:00
|
|
|
GOARCH=${ARCH} make push-image-cephcsi
|
2019-11-07 09:55:12 +00:00
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2019-10-01 08:47:08 +00:00
|
|
|
if [ "${TRAVIS_BRANCH}" == 'master' ]; then
|
2019-05-24 11:03:33 +00:00
|
|
|
export ENV_CSI_IMAGE_VERSION='canary'
|
2018-12-10 16:06:08 +00:00
|
|
|
else
|
2019-02-07 09:59:10 +00:00
|
|
|
echo "!!! Branch ${TRAVIS_BRANCH} is not a deployable branch; exiting"
|
|
|
|
exit 0 # Exiting 0 so that this isn't marked as failing
|
|
|
|
fi
|
2018-12-10 14:25:17 +00:00
|
|
|
|
2018-12-10 16:06:08 +00:00
|
|
|
if [ "${TRAVIS_PULL_REQUEST}" == "false" ]; then
|
2019-03-19 17:30:47 +00:00
|
|
|
"${CONTAINER_CMD:-docker}" login -u "${QUAY_IO_USERNAME}" -p "${QUAY_IO_PASSWORD}" quay.io
|
2019-02-06 18:22:03 +00:00
|
|
|
|
2019-02-06 18:45:33 +00:00
|
|
|
set -xe
|
2019-02-07 09:59:10 +00:00
|
|
|
|
2019-11-07 09:55:12 +00:00
|
|
|
build_push_images
|
|
|
|
|
2019-02-06 18:22:03 +00:00
|
|
|
mkdir -p tmp
|
2019-02-07 09:59:10 +00:00
|
|
|
pushd tmp >/dev/null
|
|
|
|
|
|
|
|
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get >get_helm.sh
|
2019-02-06 18:22:03 +00:00
|
|
|
chmod 700 get_helm.sh
|
|
|
|
./get_helm.sh
|
2019-02-07 09:59:10 +00:00
|
|
|
|
2019-02-06 18:22:03 +00:00
|
|
|
git clone https://github.com/ceph/csi-charts
|
2019-02-07 09:59:10 +00:00
|
|
|
|
2019-02-06 18:22:03 +00:00
|
|
|
mkdir -p csi-charts/docs
|
2019-02-07 09:59:10 +00:00
|
|
|
popd >/dev/null
|
2019-02-06 18:22:03 +00:00
|
|
|
|
2019-05-02 15:11:11 +00:00
|
|
|
push_helm_charts rbd
|
|
|
|
push_helm_charts cephfs
|
2019-02-07 09:59:10 +00:00
|
|
|
fi
|