Skip to content

feat: CNS-957-provider-jail #673

feat: CNS-957-provider-jail

feat: CNS-957-provider-jail #673

Workflow file for this run

name: Lava Build
on:
push:
branches:
- main
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
test-consensus:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache-dependency-path: go.sum
# Setup Paths
- name: home
run: pwd && ls -l
- name: ls usr
run: ls -l /home/runner/work/lava/lava
- name: cp lava
run: cp -r ~/work/lava/lava ~/go/lava
- name: export PATH
run: export PATH=$PATH:/go:/go/bin:$(go env GOPATH)/bin:/usr/local:`pwd`:/home/runner/work/lava/lava/
- name: export GOPATH
run: export GOPATH=$GOPATH:$(go env GOPATH):/go:/go/lava:/usr/local:`pwd`
- name: export LAVA
run: export LAVA=/home/runner/work/lava/lava
- name: go env
run: go env
- name: pwd
run: pwd
- name: tree
run: tree
- name: ls -l
run: ls -l
######################################################
### Run Consensus unitests
######################################################
- name: Lava Unit Tests
run: |
go install github.com/jstemmer/go-junit-report/v2@latest
go test -v ./utils/... | go-junit-report -iocopy -set-exit-code -out utils-report.xml
go test -v ./common/... | go-junit-report -iocopy -set-exit-code -out common-report.xml
go test -v ./x/pairing/... | go-junit-report -iocopy -set-exit-code -out pairing-report.xml
go test -v ./x/epochstorage/... | go-junit-report -iocopy -set-exit-code -out epochstorage-report.xml
go test -v ./x/spec/... | go-junit-report -iocopy -set-exit-code -out spec-report.xml
go test -v ./x/conflict/... | go-junit-report -iocopy -set-exit-code -out conflict-report.xml
go test -v ./x/plans/... | go-junit-report -iocopy -set-exit-code -out plans-report.xml
go test -v ./x/projects/... | go-junit-report -iocopy -set-exit-code -out projects-report.xml
go test -v ./x/subscription/... | go-junit-report -iocopy -set-exit-code -out subscription-report.xml
go test -v ./x/dualstaking/... | go-junit-report -iocopy -set-exit-code -out dualstaking-report.xml
go test -v ./x/fixationstore/... | go-junit-report -iocopy -set-exit-code -out fixationstore-report.xml
go test -v ./x/timerstore/... | go-junit-report -iocopy -set-exit-code -out timerstore-report.xml
go test -v ./x/downtime/... | go-junit-report -iocopy -set-exit-code -out downtime-report.xml
go test -v ./x/rewards/... | go-junit-report -iocopy -set-exit-code -out rewards-report.xml
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: Test Results (Consensus)
path: "*-report.xml"
test-protocol:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache-dependency-path: go.sum
# Setup Paths
- name: home
run: pwd && ls -l
- name: ls usr
run: ls -l /home/runner/work/lava/lava
- name: cp lava
run: cp -r ~/work/lava/lava ~/go/lava
- name: export GOPATH
run: export GOPATH=$GOPATH:$(go env GOPATH):/go:/go/lava:/usr/local:`pwd`
- name: export PATH
run: export PATH=$PATH:/go:/go/bin:$(go env GOPATH)/bin:/usr/local:`pwd`:/home/runner/work/lava/lava/:$GOPATH/bin
- name: export LAVA
run: export LAVA=/home/runner/work/lava/lava
- name: go env
run: go env
- name: pwd
run: pwd
- name: tree
run: tree
- name: ls -l
run: ls -l
######################################################
### Run protocol unitests
######################################################
- name: Run Lava Protocol Tests
run: |
go install github.com/jstemmer/go-junit-report/v2@latest
go test -v ./protocol/... | go-junit-report -iocopy -set-exit-code -out protocol-report.xml
go test -v ./ecosystem/cache/... | go-junit-report -iocopy -set-exit-code -out cache-report.xml
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: Test Results (Protocol)
path: "*-report.xml"
test-protocol-e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache-dependency-path: go.sum
######################################################
### Run Lava Protocol E2E Tests
######################################################
- name: Run Lava Protocol E2E Tests -timeout 1200s
run: |
go install github.com/jstemmer/go-junit-report/v2@latest
go test ./testutil/e2e/ -run ^TestLavaProtocol$ -v -timeout 1200s | go-junit-report -iocopy -set-exit-code -out protocol-e2e-report.xml # 20mins
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: Test Results (Protocol E2E)
path: "*-report.xml"
- name: tail -n 1000 Lavad Logs
if: always()
run: tail -n 1000 testutil/e2e/protocolLogs/00_StartLava.log
- name: Print all warnings and errors from lavad
continue-on-error: true
if: always()
run: cat testutil/e2e/protocolLogs/00_StartLava.log | grep 'WRN |ERR '
- name: Stake Lava All Logs
if: always()
run: cat testutil/e2e/protocolLogs/01_stakeLava.log
- name: Stake Lava Error Only Logs
if: always()
continue-on-error: true
run: cat testutil/e2e/protocolLogs/01_stakeLava_errors.log
- name: head -n 300 JSON Proxy Logs
if: always()
run: head -n 300 testutil/e2e/protocolLogs/02_jsonProxy.log
- name: tail -n 300 JSON Proxy Logs
if: always()
run: tail -n 300 testutil/e2e/protocolLogs/02_jsonProxy.log
- name: JSON Proxy Error Only Logs
if: always()
continue-on-error: true
run: cat testutil/e2e/protocolLogs/02_jsonProxy_errors.log
- name: JSON Provider All Logs
if: always()
run: grep "" testutil/e2e/protocolLogs/03_EthProvider* --exclude="*errors*"
- name: JSON Provider Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/protocolLogs/03_EthProvider* --include="*errors*"
- name: JSON Consumer All Logs
if: always()
run: grep "" testutil/e2e/protocolLogs/04_jsonConsumer* --exclude="*errors*"
- name: JSON Consumer Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/protocolLogs/04_jsonConsumer* --include="*errors*"
- name: Lava Provider All Logs
if: always()
run: grep "" testutil/e2e/protocolLogs/05_LavaProvider* --exclude="*errors*"
- name: Lava Provider Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/protocolLogs/05_LavaProvider* --include="*errors*"
- name: Lava over Lava All Logs
if: always()
run: cat testutil/e2e/protocolLogs/07_lavaOverLava.log
- name: Lava over Lava Error Only Logs
if: always()
continue-on-error: true
run: cat testutil/e2e/protocolLogs/07_lavaOverLava_errors.log
- name: RPCConsumer Consumer All Logs
if: always()
run: grep "" testutil/e2e/protocolLogs/06_RPCConsumer* --exclude="*errors*"
- name: RPCConsumer Consumer Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/protocolLogs/06_RPCConsumer* --include="*errors*"
test-sdk-e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache-dependency-path: go.sum
# Install Node.js
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: "21.2.0"
- name: Init the SDK
run: GOPATH=~/go ./scripts/init_sdk.sh -s
working-directory: ./ecosystem/lava-sdk
- name: Build
run: yarn build
working-directory: ./ecosystem/lava-sdk
- name: Install ts-node
run: npm install -g ts-node
- name: Install telescope dependencies
run: yarn; yarn e2e-setup
working-directory: ./ecosystem/lavajs
- name: Setup test environment
run: npm init --yes; npm install --save-dev @types/node
######################################################
### Run Lava SDK E2E Tests
######################################################
- name: Run Lava SDK E2E Tests -timeout 1200s
run: |
go install github.com/jstemmer/go-junit-report/v2@latest
go test ./testutil/e2e/ -run ^TestLavaSDK -v -timeout 1200s | go-junit-report -iocopy -set-exit-code -out sdk-e2e-report.xml # 20mins
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: Test Results (SDK E2E)
path: "*-report.xml"
- name: tail -n 300 Lavad Logs
if: always()
run: tail -n 300 testutil/e2e/sdkLogs/00_StartLava.log
- name: Stake Lava All Logs
if: always()
run: cat testutil/e2e/sdkLogs/01_stakeLava.log
- name: Stake Lava Error Only Logs
if: always()
continue-on-error: true
run: cat testutil/e2e/sdkLogs/01_stakeLava_errors.log
- name: head -n 300 JSON Proxy Logs
if: always()
run: head -n 300 testutil/e2e/sdkLogs/02_jsonProxy.log
- name: tail -n 300 JSON Proxy Logs
if: always()
run: tail -n 300 testutil/e2e/sdkLogs/02_jsonProxy.log
- name: JSON Proxy Error Only Logs
if: always()
continue-on-error: true
run: cat testutil/e2e/sdkLogs/02_jsonProxy_errors.log
- name: JSON Provider All Logs
if: always()
run: grep "" testutil/e2e/sdkLogs/03_EthProvider* --exclude="*errors*"
- name: JSON Provider Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/sdkLogs/03_EthProvider* --include="*errors*"
- name: Lava Provider All Logs
if: always()
run: grep "" testutil/e2e/sdkLogs/05_LavaProvider* --exclude="*errors*"
- name: Lava Provider Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/sdkLogs/05_LavaProvider* --include="*errors*"
- name: Badge Server All Logs
if: always()
run: grep "" testutil/e2e/sdkLogs/01_BadgeServer* --exclude="*errors*"
- name: Badge Server Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/sdkLogs/01_BadgeServer* --include="*errors*"
- name: Lava SDK All Logs
if: always()
run: grep "" testutil/e2e/sdkLogs/01_sdkTest* --exclude="*errors*"
- name: Lava SDK Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/sdkLogs/01_sdkTest* --include="*errors*"
test-payment-e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache-dependency-path: go.sum
######################################################
### Run Lava Protocol Payment E2E Tests
######################################################
- name: Run Lava Payment E2E Tests -timeout 1200s
run: |
go install github.com/jstemmer/go-junit-report/v2@latest
go test ./testutil/e2e/ -run ^TestLavaProtocolPayment$ -v -timeout 1200s | go-junit-report -iocopy -set-exit-code -out payment-e2e-report.xml # 20mins
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: Test Results (Payment E2E)
path: "*-report.xml"
- name: tail -n 300 Lavad Logs
if: always()
run: tail -n 300 testutil/e2e/protocolLogs/00_StartLava.log
- name: Stake Lava All Logs
if: always()
run: cat testutil/e2e/protocolLogs/01_stakeLavaForPayment.log
- name: Stake Lava Error Only Logs
if: always()
continue-on-error: true
run: cat testutil/e2e/protocolLogs/01_stakeLava_errors.log
- name: Lava Provider All Logs
if: always()
run: grep "" testutil/e2e/protocolLogs/05_LavaProvider* --exclude="*errors*"
- name: Lava Provider Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/protocolLogs/05_LavaProvider* --include="*errors*"
- name: RPCConsumer Consumer All Logs
if: always()
run: grep "" testutil/e2e/protocolLogs/06_RPCConsumer* --exclude="*errors*"
- name: RPCConsumer Consumer Error Only Logs
if: always()
continue-on-error: true
run: grep "" testutil/e2e/protocolLogs/06_RPCConsumer* --include="*errors*"
report-tests-results:
runs-on: ubuntu-latest
needs: [test-consensus, test-protocol, test-protocol-e2e, test-sdk-e2e, test-payment-e2e]
if: always()
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
files: "artifacts/**/*.xml"
build_and_package:
name: ${{ matrix.binary }}-${{ matrix.targetos }}-${{ matrix.arch }}
needs: [test-consensus, test-protocol]
runs-on: ubuntu-latest
strategy:
matrix:
arch: [amd64, arm64]
targetos: [darwin, linux]
binary: [lavad, lavap, lavavisor]
include:
- targetos: darwin
arch: arm64
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache-dependency-path: go.sum
env:
GOOS: ${{ matrix.targetos }}
GOARCH: ${{ matrix.arch }}
- name: Download Dependencies
run: go mod download
- name: Build ${{ matrix.binary }}
run: |
GOWRK=off go build -o out/${{ matrix.binary }} cmd/${{ matrix.binary }}/main.go
- name: Upload Lava Artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.binary }}-${{ matrix.targetos }}-${{ matrix.arch }}
path: out/${{ matrix.binary }}