Skip to content

Merge pull request #1861 from lavanet/PRT-adding-cache-populator-command #2737

Merge pull request #1861 from lavanet/PRT-adding-cache-populator-command

Merge pull request #1861 from lavanet/PRT-adding-cache-populator-command #2737

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
- 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
######################################################
### 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/... | go-junit-report -iocopy -set-exit-code -out x-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
- 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
######################################################
### 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*"
- name: Upload Protocol E2E Logs
if: always()
uses: actions/upload-artifact@v4
with:
name: Protocol E2E Logs
path: "testutil/e2e/protocolLogs/*"
# Temporarly disabled due to a bug in the signature.
# 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*"
# - name: Upload SDK E2E Logs
# if: always()
# uses: actions/upload-artifact@v4
# with:
# name: SDK E2E Logs
# path: "testutil/e2e/sdkLogs/*"
# This part came from lava_sdk_tests.yml that was removed. just not to lose functionality it moved here.
# name: Lava SDK Tests
# on:
# pull_request
# jobs:
# main:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
# - name: Cache dependencies
# uses: actions/cache@v4
# with:
# path: ~/.yarn
# key: yarn-${{ hashFiles('yarn.lock') }}
# restore-keys: yarn-
# - uses: actions/setup-go@v5
# with:
# go-version-file: go.mod
# cache-dependency-path: go.sum
# - 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: ESLint
# run: ./node_modules/.bin/eslint '**/*.ts'
# working-directory: ./ecosystem/lava-sdk
# - name: Test
# run: ./node_modules/.bin/jest ./src --ci
# working-directory: ./ecosystem/lava-sdk
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: Lavad Logs
if: always()
run: grep 'err\|lava_' 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*"
- name: Upload Payment E2E Logs
if: always()
uses: actions/upload-artifact@v4
with:
name: Payment E2E Logs
path: "testutil/e2e/protocolLogs/*"
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_docker:
permissions:
contents: write
packages: write
id-token: write
runs-on: ubuntu-latest
strategy:
matrix:
binary: [lavap, lavad]
env:
REGISTRY: ghcr.io
IMAGE_NAME: "lavanet/lava/${{ matrix.binary }}"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push
uses: docker/build-push-action@v5
with:
provenance: false
sbom: false
context: .
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
file: cmd/${{ matrix.binary }}/Dockerfile
platforms: linux/amd64,linux/arm64
build-args: |
GIT_VERSION="${{ steps.meta.outputs.version }}"
GIT_COMMIT="${{ github.sha }}"
push: true
cache-from: type=gha
cache-to: type=gha,mode=max
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 }}