Skip to content

Commit

Permalink
ci: add codecov workflow
Browse files Browse the repository at this point in the history
Uploading code coverage currently fails with the following error:

	Rate limit reached. Please upload with the Codecov repository
	upload token to resolve issue.

This patch replaces the codecov Makefile target, that was used to upload
the coverage files, with a GitHub CI workflow [1]. This change allows us
to specify a Codecov token [2] to authorize report uploads.

In addition, this patch updates the version of Go used for coverage to
1.22 and configures the CI build to fail if Codecov encounters an error
during upload.

[1] https://github.com/codecov/codecov-action
[2] https://docs.codecov.com/docs/github-2-getting-a-codecov-account-and-uploading-coverage

Signed-off-by: Radostin Stoyanov <[email protected]>
  • Loading branch information
rst0git committed Jul 16, 2024
1 parent ef64673 commit b9a8ebb
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 22 deletions.
56 changes: 56 additions & 0 deletions .github/workflows/codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Codecov

on: [push, pull_request]

jobs:
build:
if: ${{ github.repository == 'checkpoint-restore/go-criu' }}
runs-on: ubuntu-latest
name: Code coverage
steps:

- name: Checkout
uses: actions/checkout@v4
with:
# needed for codecov
fetch-depth: 0

- name: Build CRIU criu-dev
run: |
sudo apt-get install -y libprotobuf-dev libprotobuf-c-dev protobuf-c-compiler protobuf-compiler python3-protobuf libnl-3-dev libnet-dev libcap-dev curl unzip
git clone --depth=1 --single-branch -b criu-dev https://github.com/checkpoint-restore/criu.git
make -j"$(nproc)" -C criu
sudo make -C criu install-criu PREFIX=/usr
- name: Install Go 1.22.x
uses: actions/setup-go@v5
with:
go-version: 1.22.x

- name: Install protoc-gen-go
run: sudo env "GOBIN=/usr/bin" go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

- name: Run tests and collect coverage
run: |
sudo -E make test
sudo -E make -C scripts/magic-gen test
# First update protobuf. It is too old in the Ubuntu image.
curl -Lo protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v23.4/protoc-23.4-linux-x86_64.zip
sudo unzip -o protoc.zip -d /usr
# We need to use the protobuf definitions from the criu-dev
# branch as it might have changed.
sudo -E make -C scripts/proto-gen proto-update GIT_BRANCH=criu-dev
sudo -E make -C scripts/proto-gen
sudo -E make -C crit clean bin/crit
sudo -E make -C crit unit-test
sudo -E make -C test crit-test
# Run actual test as root as it uses CRIU.
sudo -E make coverage
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
file: test/.coverage/coverage.out
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
11 changes: 0 additions & 11 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,6 @@ jobs:

- name: Checkout
uses: actions/checkout@v4
with:
# needed for codecov
fetch-depth: 0

- name: Build CRIU ${{ matrix.criu_branch }}
run: |
Expand Down Expand Up @@ -62,11 +59,3 @@ jobs:
fi
sudo -E make -C crit unit-test
sudo -E make -C test crit-test
- name: Check code coverage
if: matrix.go-version == '1.20.x' && matrix.criu_branch == 'criu-dev'
run: |
# Run actual test as root as it uses CRIU.
sudo -E make coverage
# Upload coverage results to codecov
sudo -E make codecov
5 changes: 1 addition & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ test: build
coverage:
$(MAKE) -C test coverage

codecov:
$(MAKE) -C test codecov

rpc/rpc.proto:
curl -sSL https://raw.githubusercontent.com/checkpoint-restore/criu/master/images/rpc.proto -o $@

Expand All @@ -42,4 +39,4 @@ clean:
$(MAKE) -C crit/ clean
$(MAKE) -C test/ clean

.PHONY: build test lint vendor coverage codecov clean
.PHONY: build test lint vendor coverage clean
9 changes: 2 additions & 7 deletions test/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -86,16 +86,11 @@ coverage: $(COVERAGE_BINARIES) $(TEST_PAYLOAD)
# We do not want to upload coverage for autogenerated files (*.pb.go)
sed -i '/\.pb\.go/d' ${COVERAGE_PATH}/coverage.out

codecov:
curl -Os https://uploader.codecov.io/latest/linux/codecov
chmod +x codecov
./codecov -f "$(COVERAGE_PATH)/coverage.out"

clean:
@rm -f $(TEST_BINARIES) $(COVERAGE_BINARIES) codecov
@rm -f $(TEST_BINARIES) $(COVERAGE_BINARIES)
@rm -rf image $(COVERAGE_PATH)
@make -C crit/ clean
@make -C loop/ clean
@make -C mmapper/ clean

.PHONY: all clean coverage codecov crit-test phaul-test
.PHONY: all clean coverage crit-test phaul-test

0 comments on commit b9a8ebb

Please sign in to comment.