name: Continuous Integration (Kava Master)
on:
  push:
    # run CI on any push to the master branch
    branches:
      - master
jobs:
  # run per commit ci checks against master branch
  lint-checks:
    uses: ./.github/workflows/ci-lint.yml
  # run default ci checks against master branch
  default-checks:
    uses: ./.github/workflows/ci-default.yml
  # build and upload versions of kava for use on internal infrastructure
  # configurations for databases, cpu architectures and operating systems
  publish-internal:
    # only run if all checks pass
    needs: [lint-checks, default-checks]
    runs-on: ubuntu-latest
    steps:
      - name: checkout repo from current commit
        uses: actions/checkout@v4
      - name: Set up Go
        uses: actions/setup-go@v4
        with:
          go-version-file: go.mod
      - name: set build tag
        run: echo "BUILD_TAG=$(date +%s)-$(git rev-parse HEAD | cut -c 1-8)" >> $GITHUB_ENV
      - name: build rocksdb dependency
        run: bash ${GITHUB_WORKSPACE}/.github/scripts/install-rocksdb.sh
        env:
          ROCKSDB_VERSION: v8.10.0
      - name: Build and upload release artifacts
        run: bash ${GITHUB_WORKSPACE}/.github/scripts/publish-internal-release-artifacts.sh
        env:
          BUILD_TAG: ${{ env.BUILD_TAG }}
          AWS_REGION: us-east-1
          AWS_ACCESS_KEY_ID: ${{ secrets.CI_AWS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_AWS_KEY_SECRET }}
  docker:
    # only run if all checks pass
    needs: [lint-checks, default-checks]
    uses: ./.github/workflows/ci-docker.yml
    with:
      dockerhub-username: kavaops
      extra-image-tag: master
    secrets: inherit
  post-pipeline-metrics:
    uses: ./.github/workflows/metric-pipeline.yml
    if: always() # always run so we metric failures and successes
    with:
      aws-region: us-east-1
      metric-name: kava.releases.merge
      namespace: Kava/ContinuousIntegration
    secrets: inherit
    needs: [publish-internal]