name: bootstrap

on:
  push:
    branches:
      - '*'

jobs:
  github:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Restore Go cache
        uses: actions/cache@v1
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-
      - name: Setup Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.14.x
      - name: Setup Kubernetes
        uses: engineerd/setup-kind@v0.4.0
      - name: Set outputs
        id: vars
        run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
      - name: Build
        run: sudo go build -o ./bin/gotk ./cmd/gotk
      - name: bootstrap init
        run: |
          ./bin/gotk bootstrap github \
          --owner=fluxcd-testing \
          --repository=gotk-test-${{ steps.vars.outputs.sha_short }} \
          --path=test-cluster
        env:
          GITHUB_TOKEN: ${{ secrets.GITPROVIDER_BOT_TOKEN }}
      - name: bootstrap no-op
        run: |
          ./bin/gotk bootstrap github \
          --owner=fluxcd-testing \
          --repository=gotk-test-${{ steps.vars.outputs.sha_short }} \
          --path=test-cluster
        env:
          GITHUB_TOKEN: ${{ secrets.GITPROVIDER_BOT_TOKEN }}
      - name: uninstall
        run: |
          ./bin/gotk suspend kustomization gitops-system
          ./bin/gotk uninstall --resources --crds -s
      - name: bootstrap reinstall
        run: |
          ./bin/gotk bootstrap github \
          --owner=fluxcd-testing \
          --repository=gotk-test-${{ steps.vars.outputs.sha_short }} \
          --path=test-cluster
        env:
          GITHUB_TOKEN: ${{ secrets.GITPROVIDER_BOT_TOKEN }}
      - name: delete repository
        run: |
          ./bin/gotk bootstrap github \
          --owner=fluxcd-testing \
          --repository=gotk-test-${{ steps.vars.outputs.sha_short }} \
          --path=test-cluster \
          --delete
        env:
          GITHUB_TOKEN: ${{ secrets.GITPROVIDER_BOT_TOKEN }}
      - name: Debug failure
        if: failure()
        run: |
          kubectl -n gitops-system get all
          kubectl -n gitops-system logs deploy/source-controller
          kubectl -n gitops-system logs deploy/kustomize-controller
