deploy/ci/tasks/dev-releases/create-helm-pr.yml
---
platform: linux
inputs:
- name: helm-release
- name: helm-chart-repo
- name: stratos
image_resource:
type: docker-image
source:
# Generated using scripts/Dockerfile.stratos-ci
repository: ghcr.io/cf-stratos/stratos-ci-concourse
params:
GIT_USER:
GIT_EMAIL:
GITHUB_USER:
GITHUB_ORG:
GITHUB_REPO:
GITHUB_TOKEN:
GIT_PRIVATE_KEY:
GITHUB_TOKEN:
DOCKER_ORG:
DOCKER_REGISTRY:
HELM_REPO_PATH:
HELM_REPO_BRANCH:
HELM_CHART_REPO_FOLDER:
RELEASE_DOCKER_REGISTRY:
RELEASE_DOCKER_ORG:
HELM_CHART_REPO_NAME:
HELM_CHART_REPO_BRANCH:
run:
path: bash
args:
- -c
- |
# Initialize Helm for client-side use
helm init --client-only
ROOT_DIR=$PWD
HELM_RELEASE=${ROOT_DIR}/helm-release
HELM_CHART_REPO=${ROOT_DIR}/helm-chart-repo
STRATOS=${ROOT_DIR}/stratos
source ${STRATOS}/deploy/ci/tasks/dev-releases/create-chart-helper.sh
setupGitConfig
ls -al ${HELM_RELEASE}
pushd ${HELM_RELEASE}
VERSION=$(cat version)
CHART=$(ls console-helm-chart-*.tgz)
popd
cd ${HELM_CHART_REPO}
cd ./${HELM_CHART_REPO_FOLDER}/console
ls -al
CHART_VERSION=$(cat Chart.yaml | grep "version:" | cut -d " " -f 2)
echo "New Chart version : ${VERSION}"
echo "Existing Chart version: ${CHART_VERSION}"
if [ "$CHART_VERSION" == "$VERSION" ]; then
echo "This version has already been processed"
exit 0
fi
echo "Creating PR for Helm Chart"
# Unpack the Helm Chart, patch it and create the PR
# Unpack over the existing chart
cd ..
tar -xvf ${HELM_RELEASE}/${CHART}
cd console
# Need to patch the registry
echo ${RELEASE_DOCKER_REGISTRY}
echo ${RELEASE_DOCKER_ORG}
echo ${DOCKER_ORG}
echo ${DOCKER_REGISTRY}
sed -i -e 's/hostname: '"${DOCKER_REGISTRY}"'/hostname: '"${RELEASE_DOCKER_REGISTRY}"'/g' ./values.yaml
sed -i -e 's/organization: '"${DOCKER_ORG}"'/organization: '"${RELEASE_DOCKER_ORG}"'/g' ./values.yaml
git status
export TERM=xterm
git diff
GIT_BRANCH=stratos_release_${VERSION}
echo ${GIT_BRANCH}
git checkout -b ${GIT_BRANCH}
git add -A
git status
git commit -m "Stratos Release ${VERSION} Helm Chart Changes"
git push -u origin ${GIT_BRANCH}
if [ $? -ne 0 ]; then
echo "Error pushing brnach"
exit 1
fi
# Now create a PR for the changes
URL=https://api.github.com/repos/${HELM_CHART_REPO_NAME}/pulls
TITLE="Stratos Release ${VERSION}"
echo $HELM_CHART_REPO_BRANCH
echo $GIT_BRANCH
echo $URL
curl -H "Content-Type: application/json" -H "Authorization: token ${GITHUB_TOKEN}" \
-d '{"title":"'"${TITLE}"'", "head": "'"${GIT_BRANCH}"'", "base": "'"${HELM_CHART_REPO_BRANCH}"'"}' ${URL}
if [ $? -ne 0 ]; then
echo "Error creating PR"
exit 1
fi
echo "Helm Chart PR created"