SUSE/stratos

View on GitHub
deploy/ci/tasks/dev-releases/create-nightly-chart.yml

Summary

Maintainability
Test Coverage
---
platform: linux
inputs:
- name: stratos
- name: helm-repo
outputs:
- name: helm-chart
image_resource:
  type: docker-image
  source:
   # Generated using scripts/Dockerfile.stratos-ci
   repository: ghcr.io/cf-stratos/stratos-ci-concourse

run:
  path: bash
  args:
    - -xc
    - |
      # Initialize Helm for client-side use
      helm init --client-only
      ROOT_DIR=$PWD
      STRATOS=${ROOT_DIR}/stratos
      source ${STRATOS}/deploy/ci/tasks/dev-releases/create-chart-helper.sh
      HELM_REPO=${ROOT_DIR}/helm-repo
      cd ${STRATOS}/deploy/kubernetes/
      TAG=$(nightlyTag)
      IMAGE_TAG=${TAG}
      VERSION=$(cat ${STRATOS}/package.json | grep version | grep -Po "([0-9\.]?)*")

      # Patch Helm chart
      patchHelmChartDev ${IMAGE_TAG} ${DOCKER_ORG} ${DOCKER_REGISTRY} ./console ${IMAGE_TAG} ${VERSION}

      echo ${IMAGE_TAG}
      echo ${TAG}
      
      # Generate Helm package
      updateHelmDependency
      helm package console
      cp console*.tgz ${ROOT_DIR}/helm-chart/console-helm-chart-v${IMAGE_TAG}.tgz

      cd ${ROOT_DIR}/helm-chart/
      INDEX_FILE=${HELM_REPO}/index.yaml
      CHART_FILE=${ROOT_DIR}/helm-chart/console-helm-chart-v${IMAGE_TAG}.tgz
      if [ -f ${INDEX_FILE} ]; then
            NIGHTLY_EXISTS=$(cat  ${INDEX_FILE} | grep ${TAG})
            NIGHTLY_EXISTS=$(echo $?)
            if [ $NIGHTLY_EXISTS -eq 0 ]; then
              # Patch Digest
              INDEX_SHA256SUM=$(grep -B5 -A0 ${TAG} ${INDEX_FILE} | sed -n 's/digest: \([a-zA-Z0-9]*\)/\1/p' | xargs)
              CURR_SHA256SUM=$(sha256sum  ${CHART_FILE}| cut -d' ' -f1)
              if [ "${INDEX_SHA256SUM}" = "${CURR_SHA256SUM}" ]; then
                echo 'Checksum is equal, quitting'
              else
                echo 'Checksum not equal, patching index.yaml'
                sed -i 's/'"${INDEX_SHA256SUM}"'/'"${CURR_SHA256SUM}"'/g' ${INDEX_FILE}
              fi

              # Patch Version
              INDEX_VERSION=$(sed -n 's/version: \(2.0.0-dev.*\)/\1/p' ${INDEX_FILE} | xargs)
              if [ "${INDEX_VERSION}" = "${IMAGE_TAG}" ]; then
                echo 'version is equal, quitting'
              else
                echo 'version not equal, patching index.yaml'
                sed -i 's/'"${INDEX_VERSION}"'/'"${IMAGE_TAG}"'/g' ${INDEX_FILE}
              fi

              # Patch Created Date
              CREATED_DATE=$(grep -B5 -A0 ${TAG} ${INDEX_FILE} | sed -n 's/created: \(.*\)/\1/p' | xargs)
              sed -i 's/'"${CREATED_DATE}"'/'"$(date +%Y-%m-%dT%H:%M:%S.%NZ)"'/g' ${INDEX_FILE}
            else
              # Index file exists, but no 2.0.0-dev release has ever been published 
              cp  ${INDEX_FILE} ${ROOT_DIR}/helm-chart/
              MERGE_INDEX="--merge index.yaml"
              helm repo index ./ ${MERGE_INDEX} --url https://github.com/${GITHUB_ORG}/${GITHUB_REPO}/releases/download/${TAG}/
              cp index.yaml ${HELM_REPO}/
            fi
      fi

      # Update Helm Repository
      cd ${HELM_REPO}
      setupAndPushChange