ci: add coverage integration using Codecov tool #141
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Continuous Integration | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| jobs: | |
| test-makefile: | |
| name: Build and test makefile | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version: "1.25" | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y make tar diffutils bzip2 gzip curl git | |
| - name: Run make | |
| run: make | |
| - name: Upload coverage artifact | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: coverage | |
| path: test/coverage/coverage.out | |
| test-fedora: | |
| name: Build and test Fedora on multiple runners | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ ubuntu-latest, ubuntu-24.04-arm] | |
| container: | |
| image: quay.io/fedora/fedora:latest | |
| options: --user root | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Install dependencies | |
| run: | | |
| dnf update -y | |
| dnf install -y golang make tar diffutils bzip2 gzip curl git which | |
| - name: Mark repo as safe for git | |
| run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
| - name: Build and test | |
| run: make | |
| version-release: | |
| runs-on: ubuntu-latest | |
| needs: [test-makefile, test-fedora, test-macos, test-windows] | |
| if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
| steps: | |
| - name: Github app installation token | |
| uses: actions/create-github-app-token@v2 | |
| id: app-token | |
| with: | |
| app-id: ${{ vars.RELEASE_APP_ID }} | |
| private-key: ${{ secrets.RELEASE_APP_PK }} | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| fetch-tags: true | |
| token: ${{ steps.app-token.outputs.token }} | |
| - name: Semantic Release | |
| uses: cycjimmy/semantic-release-action@v6 | |
| env: | |
| GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} | |
| test-macos: | |
| name: Build and test on macOS | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ macos-latest, macos-26-intel ] | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Install dependencies | |
| run: | | |
| brew update | |
| brew install golang make diffutils git grep gnu-tar | |
| - name: Build and test | |
| run: make | |
| test-windows: | |
| name: Build and test on Windows | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CGO_ENABLED: 0 | |
| strategy: | |
| matrix: | |
| os: [ windows-latest, windows-11-arm ] | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version: "1.25" | |
| - name: Install dependencies | |
| run: | | |
| choco install -y make diffutils gzip bzip2 git | |
| - name: Build and test | |
| run: bash -c "make" | |
| upload-coverage: | |
| name: Run tests and upload coverage | |
| runs-on: ubuntu-latest | |
| needs: [ test-makefile ] | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Download coverage artifact | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: coverage | |
| - name: Upload results to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ${{ github.workspace }}/test/coverage/coverage.out | |