Skip to content

Commit

Permalink
feat: add workflow to build, test, codecov for ci/cd
Browse files Browse the repository at this point in the history
  • Loading branch information
poorphd committed Jul 26, 2023
1 parent baf024d commit a805bde
Show file tree
Hide file tree
Showing 6 changed files with 233 additions and 2 deletions.
23 changes: 23 additions & 0 deletions .github/.codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# To validate:
# cat codecov.yml | curl --data-binary @- https://codecov.io/validate

codecov:
notify:
require_ci_to_pass: yes

coverage:
precision: 2
round: down
range: "50...80"

status:
project:
default:
target: auto
threshold: 1%
patch:
default:
enabled: no # disable patch since it is noisy and not correct
if_not_found: success

comment: true
40 changes: 40 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Build Canto Core
# This workflow is run on pushes to main & every Pull Requests where a .go, .mod, .sum have been changed
on:
pull_request:
push:
branches:
- main
- release/**
permissions:
contents: read

concurrency:
group: ci-${{ github.ref }}-build
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
go-arch: ["amd64"]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: "^1.18"
- uses: technote-space/[email protected]
id: git_diff
with:
PATTERNS: |
**/*.go
go.mod
go.sum
**/go.mod
**/go.sum
**/Makefile
Makefile
- name: Build
if: env.GIT_DIFF
run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make build
121 changes: 121 additions & 0 deletions .github/workflows/sims.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
#name: Sims
# Sims workflow runs multiple types of simulations (nondeterminism, import-export, after-import)
# This workflow will run on all Pull Requests, if a .go, .mod or .sum file have been changed
# Temporary disable until it is fixed
#on:
# pull_request:
# push:
# branches:
# - main
# - develop
#
#jobs:
# build:
# runs-on: ubuntu-latest
# if: "!contains(github.event.head_commit.message, 'skip-sims')"
# steps:
# - uses: actions/checkout@v2
# - uses: actions/[email protected]
# with:
# go-version: 1.18
# - name: Display go version
# run: go version
# - run: make build
#
# install-runsim:
# runs-on: ubuntu-latest
# needs: build
# steps:
# - uses: actions/[email protected]
# with:
# go-version: 1.18
# - name: Display go version
# run: go version
# - name: Install runsim
# run: export GO111MODULE="on" && go install github.com/cosmos/tools/cmd/[email protected]
# - uses: actions/[email protected]
# with:
# path: ~/go/bin
# key: ${{ runner.os }}-go-runsim-binary
#
# test-sim-nondeterminism:
# runs-on: ubuntu-latest
# needs: [build, install-runsim]
# steps:
# - uses: actions/checkout@v2
# - uses: actions/[email protected]
# with:
# go-version: 1.18
# - name: Display go version
# run: go version
# - uses: technote-space/get-diff-action@v4
# with:
# PATTERNS: |
# **/**.go
# go.mod
# go.sum
# - uses: actions/[email protected]
# with:
# path: ~/go/bin
# key: ${{ runner.os }}-go-runsim-binary
# if: env.GIT_DIFF
# - name: test-sim-nondeterminism
# run: |
# make test-sim-nondeterminism
# if: env.GIT_DIFF
#
# test-sim-import-export:
# runs-on: ubuntu-latest
# needs: [build, install-runsim]
# steps:
# - uses: actions/checkout@v2
# - uses: actions/[email protected]
# with:
# go-version: 1.18
# - name: Display go version
# run: go version
# - uses: technote-space/get-diff-action@v4
# with:
# SUFFIX_FILTER: |
# **/**.go
# go.mod
# go.sum
# SET_ENV_NAME_INSERTIONS: 1
# SET_ENV_NAME_LINES: 1
# - uses: actions/[email protected]
# with:
# path: ~/go/bin
# key: ${{ runner.os }}-go-runsim-binary
# if: env.GIT_DIFF
# - name: test-sim-import-export
# run: |
# make test-sim-import-export
# if: env.GIT_DIFF
#
# test-sim-after-import:
# runs-on: ubuntu-latest
# needs: [build, install-runsim]
# steps:
# - uses: actions/checkout@v2
# - uses: actions/[email protected]
# with:
# go-version: 1.18
# - name: Display go version
# run: go version
# - uses: technote-space/get-diff-action@v4
# with:
# SUFFIX_FILTER: |
# **/**.go
# go.mod
# go.sum
# SET_ENV_NAME_INSERTIONS: 1
# SET_ENV_NAME_LINES: 1
# - uses: actions/[email protected]
# with:
# path: ~/go/bin
# key: ${{ runner.os }}-go-runsim-binary
# if: env.GIT_DIFF
# - name: test-sim-after-import
# run: |
# make test-sim-after-import
# if: env.GIT_DIFF
43 changes: 43 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Tests / Code Coverage
# Tests / Code Coverage workflow runs unit tests and uploads a code coverage report
# This workflow is run on pushes to main & every Pull Requests where a .go, .mod, .sum have been changed
on:
pull_request:
push:
branches:
- main
jobs:
cleanup-runs:
runs-on: ubuntu-latest
steps:
- uses: rokroskar/workflow-run-cleanup-action@master
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
if: "!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main'"

test-coverage:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: 1.18
- name: display go version
run: go version
- name: test & coverage report creation
run: make test-unit-cover
- name: filter out DONTCOVER
run: |
excludelist="$(find ./ -type f -name '*.go' | xargs grep -l 'DONTCOVER')"
excludelist+=" $(find ./ -type f -name '*.pb.go')"
excludelist+=" $(find ./ -type f -name '*.pb.gw.go')"
excludelist+=" $(find ./ -type f -path './tests/mocks/*.go')"
for filename in ${excludelist}; do
filename=$(echo $filename | sed 's/^./github.com\/Canto-Network\/Canto\/v6/g')
echo "Excluding ${filename} from coverage report..."
sed -i "/$(echo $filename | sed 's/\//\\\//g')/d" coverage.txt
done
- uses: codecov/[email protected]
with:
file: ./coverage.txt
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@
.testnets
.bencher
DS_Store
node_modules
.idea
coverage.txt
build
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -329,14 +329,14 @@ TEST_TARGETS := test-unit test-unit-cover test-race
# Test runs-specific rules. To add a new test target, just add
# a new rule, customise ARGS or TEST_PACKAGES ad libitum, and
# append the new rule to the TEST_TARGETS list.
test-unit: ARGS=-timeout=10m -race
test-unit: ARGS=-timeout=30m -race
test-unit: TEST_PACKAGES=$(PACKAGES_UNIT)

test-race: ARGS=-race
test-race: TEST_PACKAGES=$(PACKAGES_NOSIMULATION)
$(TEST_TARGETS): run-tests

test-unit-cover: ARGS=-timeout=10m -race -coverprofile=coverage.txt -covermode=atomic
test-unit-cover: ARGS=-timeout=30m -race -coverprofile=coverage.txt -covermode=atomic
test-unit-cover: TEST_PACKAGES=$(PACKAGES_UNIT)

run-tests:
Expand Down

0 comments on commit a805bde

Please sign in to comment.