name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  papi_component:
    strategy:
      matrix:
        component: [perf_event, lmsensors, io, net, powercap, appio, coretemp, stealtime]
        debug: [yes, no]
      fail-fast: false
    runs-on: cpu_intel
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v3
      - name: Test
        run: .github/workflows/ci.sh ${{matrix.component}} ${{matrix.debug}}
  papi_component_nvidia:
    strategy:
      matrix:
        component: [cuda, nvml]
        debug: [yes, no]
      fail-fast: false
    runs-on: gpu_nvidia
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v3
      - name: Test
        run: .github/workflows/ci.sh ${{matrix.component}} ${{matrix.debug}}
  papi_component_amd:
    strategy:
      matrix:
        component: [rocm, rocm_smi]
        debug: [yes, no]
      fail-fast: false
    runs-on: gpu_amd
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v3
      - name: Test
        run: .github/workflows/ci.sh ${{matrix.component}} ${{matrix.debug}}
  papi_spack:
    runs-on: cpu
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v3
      - name: Build/Test/Install via Spack
        run: .github/workflows/spack.sh
  papi_clang_analysis:
    runs-on: cpu
    steps:
      - uses: actions/checkout@v3
      - name: Run static analysis
        run: .github/workflows/clang_analysis.sh clang-analysis-output
      - name: Archive analysis results
        uses: actions/upload-artifact@v3
        if: always()
        with:
          name: clang-analysis-output
          path: src/clang-analysis-output
