@Library('flexo-libs') _

currentBuild.displayName = "#${BUILD_ID}: Backup Grafana Dashboards"

pipeline {
  agent { docker { image 'docker.pkgs.xarth.tv/awsi/bionic/go1.16.7:latest' }}

  // Run once per day, an hour past midnight.
  triggers {
    // This is in GMT on jenkins-og.xarth.tv; runs at ~10:30 PM PST.
    cron('H 5 * * *')
  }

  environment {
    DATE = sh(script: "date '+%Y/%m/%d'", returnStdout: true).trim()
    DONE = sh(script: "grep -q $DATE dashes/processed.txt", returnStatus: true)
    GIT_SSH_COMMAND = "ssh -o StrictHostKeyChecking=no"
  }

  stages {
    stage('backup') {
      when { allOf {
        branch 'main'
        environment name: 'DONE', value: '1'
      } }

      steps {
        sshagent(credentials: ['git-aws-read-key']) {
          sh """
          go run . dashboards
          echo $DATE >> dashes/processed.txt
          git remote set-url origin git@git.xarth.tv:Xarth-Grafana/dashboard-backups.git
          git config --global user.email "do-not-reply@twitch.tv"
          git config --global user.name "Jenkins Auto Build"
          git add dashes
          git commit -m "Most Recent Update: $DATE"
          git push origin HEAD:refs/heads/main --force
          """
        }
      }
    }
  }
}
