From ddf5639f3d6338dd1f29aafab82bed07a66152ea Mon Sep 17 00:00:00 2001 From: Marko Date: Tue, 11 Jan 2022 12:23:51 +0100 Subject: [PATCH] ci: move test-race to its own job (#10895) ## Description moving test-race to its own job allows us to run it or normal tests on their own. this reduces running jobs. The down side is if they both fail we then have to rerun both of them. --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [ ] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] added `!` to the type prefix if API or client breaking change - [ ] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) --- .github/workflows/check-docs.yml | 2 + .github/workflows/codeql-analysis.yml | 6 +- .github/workflows/test-race.yml | 101 ++++++++++++++++++++++++++ .github/workflows/test.yml | 56 -------------- 4 files changed, 108 insertions(+), 57 deletions(-) create mode 100644 .github/workflows/test-race.yml diff --git a/.github/workflows/check-docs.yml b/.github/workflows/check-docs.yml index 2954217d8c..8133239caa 100644 --- a/.github/workflows/check-docs.yml +++ b/.github/workflows/check-docs.yml @@ -4,6 +4,8 @@ name: Check docs build on: pull_request: types: [ labeled ] + paths: + - "docs/**" jobs: check-docs-build: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 1317d6c861..99b58e9691 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -2,8 +2,12 @@ name: "CodeQL" on: pull_request: + paths: + - "**.go" push: branches: [ master ] + paths: + - "**.go" jobs: analyze: @@ -46,4 +50,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 \ No newline at end of file + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/test-race.yml b/.github/workflows/test-race.yml new file mode 100644 index 0000000000..1a12bef001 --- /dev/null +++ b/.github/workflows/test-race.yml @@ -0,0 +1,101 @@ +name: Tests Race +# Tests Race workflow runs unit tests with the race detector +# This workflow is run on pushes to master & every Pull Requests where a .go, .mod, .sum have been changed +on: + pull_request: + push: + branches: + - master +jobs: + install-tparse: + runs-on: ubuntu-latest + steps: + - uses: actions/setup-go@v2.1.5 + with: + go-version: 1.17 + - name: Display go version + run: go version + - name: install tparse + run: | + export GO111MODULE="on" && go get github.com/mfridman/tparse@v0.8.3 + - uses: actions/cache@v2.1.7 + with: + path: ~/go/bin + key: ${{ runner.os }}-go-tparse-binary + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2.1.5 + with: + go-version: 1.17 + - uses: technote-space/get-diff-action@v6.0.1 + id: git_diff + with: + PATTERNS: | + **/**.go + **/go.mod + **/go.sum + - name: Build + run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make build + + - name: Build cosmovisor + run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make cosmovisor + + split-test-files: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Create a file with all core Cosmos SDK pkgs + run: go list ./... > pkgs.txt + - name: Split pkgs into 4 files + run: split -d -n l/4 pkgs.txt pkgs.txt.part. + # cache multiple + - uses: actions/upload-artifact@v2 + with: + name: "${{ github.sha }}-00" + path: ./pkgs.txt.part.00 + - uses: actions/upload-artifact@v2 + with: + name: "${{ github.sha }}-01" + path: ./pkgs.txt.part.01 + - uses: actions/upload-artifact@v2 + with: + name: "${{ github.sha }}-02" + path: ./pkgs.txt.part.02 + - uses: actions/upload-artifact@v2 + with: + name: "${{ github.sha }}-03" + path: ./pkgs.txt.part.03 + + test-race: + runs-on: ubuntu-latest + needs: split-test-files + strategy: + fail-fast: false + matrix: + part: ["00", "01", "02", "03"] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2.1.5 + with: + go-version: 1.17 + - uses: technote-space/get-diff-action@v6.0.1 + with: + PATTERNS: | + **/**.go + go.mod + go.sum + - uses: actions/download-artifact@v2 + with: + name: "${{ github.sha }}-${{ matrix.part }}" + if: env.GIT_DIFF + - name: test & coverage report creation + run: | + xargs --arg-file=pkgs.txt.part.${{ matrix.part }} go test -mod=readonly -timeout 30m -race -tags='cgo ledger test_ledger_mock' + if: env.GIT_DIFF + - uses: actions/upload-artifact@v2 + with: + name: "${{ github.sha }}-${{ matrix.part }}-race-output" + path: ./${{ matrix.part }}-race-output.txt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c31f91ef82..c4232e2dc0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,22 +7,6 @@ on: branches: - master jobs: - install-tparse: - runs-on: ubuntu-latest - steps: - - uses: actions/setup-go@v2.1.5 - with: - go-version: 1.17 - - name: Display go version - run: go version - - name: install tparse - run: | - export GO111MODULE="on" && go get github.com/mfridman/tparse@v0.8.3 - - uses: actions/cache@v2.1.7 - with: - path: ~/go/bin - key: ${{ runner.os }}-go-tparse-binary - build: runs-on: ubuntu-latest strategy: @@ -178,37 +162,6 @@ jobs: file: ./coverage.txt if: env.GIT_DIFF - test-race: - runs-on: ubuntu-latest - needs: split-test-files - strategy: - fail-fast: false - matrix: - part: ["00", "01", "02", "03"] - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2.1.5 - with: - go-version: 1.17 - - uses: technote-space/get-diff-action@v6.0.1 - with: - PATTERNS: | - **/**.go - go.mod - go.sum - - uses: actions/download-artifact@v2 - with: - name: "${{ github.sha }}-${{ matrix.part }}" - if: env.GIT_DIFF - - name: test & coverage report creation - run: | - xargs --arg-file=pkgs.txt.part.${{ matrix.part }} go test -mod=readonly -timeout 30m -race -tags='cgo ledger test_ledger_mock' - if: env.GIT_DIFF - - uses: actions/upload-artifact@v2 - with: - name: "${{ github.sha }}-${{ matrix.part }}-race-output" - path: ./${{ matrix.part }}-race-output.txt - test-rosetta: runs-on: ubuntu-latest timeout-minutes: 10 @@ -249,12 +202,3 @@ jobs: run: | ./contrib/localnet_liveness.sh 100 5 50 localhost if: env.GIT_DIFF - - docker-build: - runs-on: ubuntu-latest - timeout-minutes: 10 - steps: - - uses: actions/checkout@v2 - - name: build docker image - run: | - docker build --pull --rm -f "Dockerfile" -t simapp:latest "."