name: Code Coverage with codecov

on:
  schedule:
    - cron: '25 */3 * * 1-5'

concurrency:
  group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }}
  cancel-in-progress: true

jobs:
  codecov:
    if: github.repository == 'zephyrproject-rtos/zephyr'
    runs-on: zephyr-runner-linux-x64-4xlarge
    container:
      image: ghcr.io/zephyrproject-rtos/ci:v0.24.6
      options: '--entrypoint /bin/bash'
      volumes:
        - /repo-cache/zephyrproject:/github/cache/zephyrproject
    strategy:
      fail-fast: false
      matrix:
        platform: ["native_posix", "qemu_x86", "unit_testing"]
    env:
      ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.15.2
    steps:
      - name: Apply container owner mismatch workaround
        run: |
          # FIXME: The owner UID of the GITHUB_WORKSPACE directory may not
          #        match the container user UID because of the way GitHub
          #        Actions runner is implemented. Remove this workaround when
          #        GitHub comes up with a fundamental fix for this problem.
          git config --global --add safe.directory ${GITHUB_WORKSPACE}

      - name: Update PATH for west
        run: |
          echo "$HOME/.local/bin" >> $GITHUB_PATH

      - name: Clone cached Zephyr repository
        continue-on-error: true
        run: |
          git clone --shared /github/cache/zephyrproject/zephyr .
          git remote set-url origin ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}

      - name: checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: west setup
        run: |
          west init -l . || true
          west update 1> west.update.log || west update 1> west.update-2.log

      - name: Check Environment
        run: |
          cmake --version
          gcc --version
          ls -la
      - name: Prepare ccache keys
        id: ccache_cache_prop
        shell: cmake -P {0}
        run: |
          string(REPLACE "/" "_" repo ${{github.repository}})
          string(REPLACE "-" "_" repo2 ${repo})
          file(APPEND $ENV{GITHUB_OUTPUT} "repo=${repo2}\n")

      - name: use cache
        id: cache-ccache
        uses: zephyrproject-rtos/action-s3-cache@v1
        with:
          key: ${{ steps.ccache_cache_prop.outputs.repo }}-${{github.event_name}}-${{matrix.platform}}-codecov-ccache
          path: /github/home/.ccache
          aws-s3-bucket: ccache.zephyrproject.org
          aws-access-key-id: ${{ secrets.CCACHE_S3_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.CCACHE_S3_SECRET_ACCESS_KEY }}
          aws-region: us-east-2

      - name: ccache stats initial
        run: |
          test -d github/home/.ccache && mv github/home/.ccache /github/home/.ccache
          ccache -M 10G -s

      - name: Run Tests with Twister (Push)
        continue-on-error: true
        run: |
          export ZEPHYR_BASE=${PWD}
          export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
          mkdir -p coverage/reports
          ./scripts/twister --force-color -N -v --filter runnable -p ${{ matrix.platform }} --coverage -T tests

      - name: Generate Coverage Report
        run: |
          mv twister-out/coverage.info lcov.pre.info
          lcov -q --remove lcov.pre.info mylib.c --remove lcov.pre.info tests/\* \
            --remove lcov.pre.info samples/\* --remove lcov.pre.info ext/\* \
            --remove lcov.pre.info *generated*  \
            -o coverage/reports/${{ matrix.platform }}.info --rc lcov_branch_coverage=1

      - name: ccache stats post
        run: |
          ccache -s

      - name: Upload Coverage Results
        if: always()
        uses: actions/upload-artifact@v3
        with:
          name: Coverage Data (Subset ${{ matrix.platform }})
          path: coverage/reports/${{ matrix.platform }}.info

  codecov-results:
    name: "Publish Coverage Results"
    needs: codecov
    runs-on: ubuntu-20.04
    # the codecov job might be skipped, we don't need to run this job then
    if: success() || failure()

    steps:
      - name: checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Download Artifacts
        uses: actions/download-artifact@v2
        with:
          path: coverage/reports

      - name: Move coverage files
        run: |
          mv ./coverage/reports/*/*.info ./coverage/reports
          ls -la ./coverage/reports

      - name: Generate list of coverage files
        id: get-coverage-files
        shell: cmake -P {0}
        run: |
          file(GLOB INPUT_FILES_LIST  "coverage/reports/*.info")
          set(MERGELIST "")
          set(FILELIST "")
          foreach(ITEM ${INPUT_FILES_LIST})
            get_filename_component(f ${ITEM} NAME)
            if(FILELIST STREQUAL "")
              set(FILELIST "${f}")
            else()
              set(FILELIST "${FILELIST},${f}")
            endif()
          endforeach()
          foreach(ITEM ${INPUT_FILES_LIST})
            get_filename_component(f ${ITEM} NAME)
            if(MERGELIST STREQUAL "")
              set(MERGELIST "-a ${f}")
            else()
              set(MERGELIST "${MERGELIST} -a ${f}")
            endif()
          endforeach()
          file(APPEND $ENV{GITHUB_OUTPUT} "mergefiles=${MERGELIST}\n")
          file(APPEND $ENV{GITHUB_OUTPUT} "covfiles=${FILELIST}\n")

      - name: Merge coverage files
        run: |
          sudo apt-get update
          sudo apt-get install -y lcov
          cd ./coverage/reports
          lcov ${{ steps.get-coverage-files.outputs.mergefiles }} -o merged.info --rc lcov_branch_coverage=1

      - name: Upload coverage to Codecov
        if: always()
        uses: codecov/codecov-action@v2
        with:
          directory: ./coverage/reports
          env_vars: OS,PYTHON
          fail_ci_if_error: false
          verbose: true
          files: merged.info
