chore: update Solana spec #2499
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: "1.20.5" | |
# - 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 | |
continue-on-error: true | |
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 }} |