# See: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions

# Workflow name
name: Run Test

# Run on event push
on:
  push:
  workflow_dispatch:

jobs:

  #
  # Job build-1-21
  # Build on latest Ubuntu using golang version 1.21
  #
  build-1-21:
    runs-on: ubuntu-latest
    steps:
    # See: https://github.com/marketplace/actions/checkout
    # Checkout git repository and submodules
    - name: Checkout
      uses: actions/checkout@v4
      with:
        submodules: recursive

    # See: https://github.com/marketplace/actions/setup-go-environment
    - name: Setup Golang
      uses: actions/setup-go@v4
      with:
        go-version: '1.21'

    - name: Build MetricCollector
      run: make

    - name: Run MetricCollector once
      run: ./cc-metric-collector --once --config .github/ci-config.json

  #
  # Job build-1-22
  # Build on latest Ubuntu using golang version 1.22
  #
  build-1-22:
    runs-on: ubuntu-latest
    steps:
    # See: https://github.com/marketplace/actions/checkout
    # Checkout git repository and submodules
    - name: Checkout
      uses: actions/checkout@v4
      with:
        submodules: recursive

    # See: https://github.com/marketplace/actions/setup-go-environment
    - name: Setup Golang
      uses: actions/setup-go@v4
      with:
        go-version: '1.22'

    - name: Build MetricCollector
      run: make

    - name: Run MetricCollector once
      run: ./cc-metric-collector --once --config .github/ci-config.json

  #
  # Build on AlmaLinux 8 using go-toolset
  #
  AlmaLinux-RPM-build:
    runs-on: ubuntu-latest
    # See: https://hub.docker.com/_/almalinux
    container: almalinux:8
    # The job outputs link to the outputs of the 'rpmrename' step
    # Only job outputs can be used in child jobs
    steps:

    # Use dnf to install development packages
    - name: Install development packages
      run: |
          dnf --assumeyes group install "Development Tools" "RPM Development Tools"
          dnf --assumeyes install wget openssl-devel diffutils delve which

    # Checkout git repository and submodules
    # fetch-depth must be 0 to use git describe
    # See: https://github.com/marketplace/actions/checkout
    - name: Checkout
      uses: actions/checkout@v4
      with:
        submodules: recursive
        fetch-depth: 0

    # See: https://github.com/marketplace/actions/setup-go-environment
    - name: Setup Golang
      uses: actions/setup-go@v4
      with:
        go-version: '1.21'

    - name: RPM build MetricCollector
      id: rpmbuild
      run: |
          git config --global --add safe.directory /__w/cc-metric-collector/cc-metric-collector
          export PATH=/usr/local/go/bin:/usr/local/go/pkg/tool/linux_amd64:$PATH
          make RPM

  #
  # Build on UBI 8 using go-toolset
  #
  UBI-8-RPM-build:
    runs-on: ubuntu-latest
    # See: https://catalog.redhat.com/software/containers/ubi8/ubi/5c359854d70cc534b3a3784e?container-tabs=gti
    container: registry.access.redhat.com/ubi8/ubi:8.8-1032.1692772289
    # The job outputs link to the outputs of the 'rpmbuild' step
    steps:

    # Use dnf to install development packages
    - name: Install development packages
      run: dnf --assumeyes --disableplugin=subscription-manager install rpm-build go-srpm-macros rpm-build-libs rpm-libs gcc make python38 git wget openssl-devel diffutils delve which

    # Checkout git repository and submodules
    # fetch-depth must be 0 to use git describe
    # See: https://github.com/marketplace/actions/checkout
    - name: Checkout
      uses: actions/checkout@v4
      with:
        submodules: recursive
        fetch-depth: 0

    # See: https://github.com/marketplace/actions/setup-go-environment
    - name: Setup Golang
      uses: actions/setup-go@v4
      with:
        go-version: '1.21'

    - name: RPM build MetricCollector
      id: rpmbuild
      run: |
          git config --global --add safe.directory /__w/cc-metric-collector/cc-metric-collector
          export PATH=/usr/local/go/bin:/usr/local/go/pkg/tool/linux_amd64:$PATH
          make RPM

  #
  # Build on Ubuntu 22.04 using official go package
  #
  Ubuntu-jammy-build:
    runs-on: ubuntu-latest
    container: ubuntu:22.04

    steps:
    # Use apt to install development packages
    - name: Install development packages
      run: |
          apt update && apt --assume-yes upgrade
          apt --assume-yes install build-essential sed git wget bash
    # Checkout git repository and submodules
    # fetch-depth must be 0 to use git describe
    # See: https://github.com/marketplace/actions/checkout
    - name: Checkout
      uses: actions/checkout@v4
      with:
        submodules: recursive
        fetch-depth: 0
    # Use official golang package
    # See: https://github.com/marketplace/actions/setup-go-environment
    - name: Setup Golang
      uses: actions/setup-go@v4
      with:
        go-version: '1.21'

    - name: DEB build MetricCollector
      id: dpkg-build
      run: |
          export PATH=/usr/local/go/bin:/usr/local/go/pkg/tool/linux_amd64:$PATH
          git config --global --add safe.directory /__w/cc-metric-collector/cc-metric-collector
          make DEB