Skip to content

feat(validator): Implement fast merkle tree computation #2355

feat(validator): Implement fast merkle tree computation

feat(validator): Implement fast merkle tree computation #2355

Workflow file for this run

# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: Build and test
on:
pull_request:
push:
tags:
- v*
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
packages: write
id-token: write
contents: write
jobs:
build-ci-base:
runs-on: ubuntu-24.04
outputs:
output: ${{ steps.export_tag.outputs.image_tag }}
steps:
- uses: actions/checkout@v4
- name: Docker meta
id: docker_meta
uses: docker/metadata-action@v5
with:
images: |
name=ghcr.io/cartesi/rollups-node-ci
tags: |
type=semver,pattern={{version}}
type=ref,event=branch
type=ref,event=pr
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: depot/setup-action@v1
- name: Build and push devnet image
uses: depot/build-push-action@v1
with:
file: test/devnet/Dockerfile
context: .
platforms: linux/amd64,linux/arm64
tags: ghcr.io/cartesi/rollups-node-devnet:${{steps.docker_meta.outputs.version}}
push: true
cache-from: type=gha,scope=debian
cache-to: type=gha,mode=max,scope=debian
project: ${{ vars.DEPOT_PROJECT }}
token: ${{ secrets.DEPOT_TOKEN }}
- name: Build and push node image
uses: depot/build-push-action@v1
with:
file: Dockerfile
context: .
platforms: linux/amd64,linux/arm64
tags: ghcr.io/cartesi/rollups-node:${{steps.docker_meta.outputs.version}}
push: true
cache-from: type=gha,scope=debian
cache-to: type=gha,mode=max,scope=debian
project: ${{ vars.DEPOT_PROJECT }}
token: ${{ secrets.DEPOT_TOKEN }}
- name: Build and push test image
uses: depot/build-push-action@v1
with:
file: Dockerfile
context: .
target: go-tester
platforms: linux/amd64,linux/arm64
tags: ghcr.io/cartesi/rollups-node-test:${{steps.docker_meta.outputs.version}}
push: true
cache-from: type=gha,scope=debian
cache-to: type=gha,mode=max,scope=debian
project: ${{ vars.DEPOT_PROJECT }}
token: ${{ secrets.DEPOT_TOKEN }}
- name: Export Image Tag
id : export_tag
run : echo "image_tag=${{steps.docker_meta.outputs.version}}" >> "$GITHUB_OUTPUT"
do-basic-checks:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Check conventional commit
uses: cocogitto/cocogitto-action@v3
id: conventional_commit_check
with:
check-latest-tag-only: true
- name: Check license header
uses: viperproject/check-license-header@v2
with:
path: ./
config: .github/license-check/config.json
- name: Lint Markdown docs
uses: DavidAnson/markdownlint-cli2-action@v16
with:
globs: |
*.md
docs/*.md
check-generated-files:
runs-on: ubuntu-24.04
container:
image: ghcr.io/cartesi/rollups-node-test:${{needs.build-ci-base.outputs.output}}
needs:
- build-ci-base
steps:
- name: Check auto generated files
run: make -C /build/cartesi/go/rollups-node check-generate
unit-test:
runs-on: ubuntu-24.04
needs:
- build-ci-base
steps:
- uses: actions/checkout@v4
- name: Run unit tests
env:
REPOSITORY: ghcr.io/
TAG: ${{needs.build-ci-base.outputs.output}}
CARTESI_POSTGRES_ENDPOINT: "postgres://postgres:password@database:5432/rollupsdb?sslmode=disable"
run: |
docker compose -f compose.yaml -f compose.override-tags.yaml run unit-test
build-docker:
runs-on: ubuntu-24.04
needs:
- do-basic-checks
- unit-test
steps:
- uses: actions/checkout@v4
- name: Docker meta
id: docker_meta
uses: docker/metadata-action@v5
with:
images: |
name=ghcr.io/cartesi/rollups-node
name=docker.io/cartesi/rollups-node,enable=${{ startsWith(github.ref, 'refs/tags/v') }}
tags: |
type=semver,pattern={{version}}
type=ref,event=branch
type=ref,event=pr
- name: Login to Docker Hub
uses: docker/login-action@v3
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: depot/setup-action@v1
- name: Build and push node image
uses: depot/build-push-action@v1
with:
file: Dockerfile
context: .
platforms: linux/amd64,linux/arm64
tags: ghcr.io/cartesi/rollups-node:${{steps.docker_meta.outputs.version}}
push: true
cache-from: type=gha,scope=debian
cache-to: type=gha,mode=max,scope=debian
project: ${{ vars.DEPOT_PROJECT }}
token: ${{ secrets.DEPOT_TOKEN }}
release:
runs-on: ubuntu-24.04
needs:
- build-docker
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Trim CHANGELOG.md
run: sed -e '0,/^##[^#]/d' -e '/^##[^#]/,$d' -i CHANGELOG.md
- name: Publish Github release
uses: softprops/action-gh-release@v2
with:
prerelease: true
body_path: CHANGELOG.md
files: api/graphql/reader.graphql