---
name: Release Helm charts
on:
  workflow_dispatch:
    inputs:
      tag:
        description: 'Tag in semver format'
        required: true
        type: string

jobs:
  container_prod_all_providers:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0 # ct list-changed below needs this
      - uses: azure/setup-helm@v1
      - uses: actions/setup-python@v2
        with:
          python-version: 3.7
      - name: Set up chart-testing
        uses: helm/chart-testing-action@v2.1.0
      - name: Run chart-testing (list-changed)
        id: list-changed
        run: |
          changed=$(ct list-changed --chart-dirs helm-charts --target-branch main)
          if [[ -n "$changed" ]]; then
            echo "::set-output name=changed::true"
          fi
      - name: Run chart-testing (lint)
        run: ct lint --chart-dirs helm-charts --all --validate-maintainers=false --chart-repos bitnami=https://charts.bitnami.com/bitnami
      - name: Package charts
        run: |
          set -e
          cd docs/
          helm package ../helm-charts/*
          helm repo index --url https://puppetlabs.github.io/vmpooler-deployment/ .
      - uses: EndBug/add-and-commit@v9 # You can change this to use a specific version.
        with:
          add: docs
          message: release helm-chart version ${{ github.event.inputs.tag }}
      - name: Generate Release Body
        env:
          RELEASE_BODY_FILE: "${{ github.event.inputs.tag }}-prod-all-providers-release-body.md"
        run: |
          echo "#Components" > ${RELEASE_BODY_FILE}
          echo "" >> ${RELEASE_BODY_FILE}
          echo "This release includes the following:" >> ${RELEASE_BODY_FILE}
          echo "" >> ${RELEASE_BODY_FILE}
          echo "##Source image" >> ${RELEASE_BODY_FILE}
          echo "" >> ${RELEASE_BODY_FILE}
          echo "- $(grep ^FROM ./docker/prod-all-providers/Dockerfile |cut -d ' ' -f2) + OS updates" >> ${RELEASE_BODY_FILE}
          echo "" >> ${RELEASE_BODY_FILE}
          echo "##Gems" >> ${RELEASE_BODY_FILE}
          echo "" >> ${RELEASE_BODY_FILE}
          echo "$(grep -e 'vmpooler ([0-9]' docker/prod-all-providers/Gemfile.lock | xargs -L1 echo -)" >> ${RELEASE_BODY_FILE}
          echo "$(grep -e 'vmpooler-provider-.* ([0-9]' docker/prod-all-providers/Gemfile.lock | xargs -L1 echo -)" >> ${RELEASE_BODY_FILE}
          echo "${RELEASE_BODY_FILE}"
      - name: Tag Release
        uses: ncipollo/release-action@v1
        with:
          tag: ${{ github.event.inputs.tag }}-prod-all-providers
          token: ${{ secrets.GITHUB_TOKEN }}
          draft: false
          prerelease: false
          bodyFile: ${{ github.event.inputs.tag }}-prod-all-providers-release-body.md
          generateReleaseNotes: true
