feat: update the Dockerfile with emulator dependencies #1426
Workflow file for this run
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
# 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: | |
do-basic-checks: | |
runs-on: ubuntu-22.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: Check auto generated files | |
run: make check-generate | |
- name: Lint Markdown docs | |
uses: DavidAnson/markdownlint-cli2-action@v16 | |
with: | |
globs: | | |
*.md | |
docs/*.md | |
test-rust: | |
runs-on: ubuntu-22.04 | |
env: | |
RUSTFLAGS: -D warnings -C debuginfo=0 | |
defaults: | |
run: | |
working-directory: cmd/authority-claimer | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: depot/setup-action@v1 | |
- name: Build dependency images | |
uses: depot/bake-action@v1 | |
with: | |
files: | | |
./docker-bake.hcl | |
./docker-bake.override.hcl | |
./docker-bake.platforms.hcl | |
targets: | | |
rollups-node-snapshot | |
project: ${{ vars.DEPOT_PROJECT }} | |
workdir: build | |
load: true | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
./cmd/authority-claimer/target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: ${{ runner.os }}-cargo- | |
- name: Update Rust | |
run: rustup update | |
- name: Install cargo sweep | |
run: cargo install cargo-sweep | |
continue-on-error: true | |
- name: Install cargo cache | |
run: cargo install cargo-cache | |
continue-on-error: true | |
- name: Install cargo-machete | |
run: cargo install cargo-machete | |
continue-on-error: true | |
- name: Set sweep timestamp | |
run: cargo sweep -s | |
- name: Analyze dependencies | |
run: cargo machete . | |
- name: Check code format | |
run: cargo fmt --all -- --check | |
- name: Run linter | |
run: cargo clippy -- -A clippy::module_inception -A clippy::mixed_attributes_style | |
- name: Build binaries and tests | |
run: cargo build --all-targets | |
- name: Clean old build files | |
run: cargo sweep -f | |
- name: Clean dependencies source files | |
run: cargo cache --autoclean | |
- name: Run tests | |
run: cargo test | |
build-ci-base: | |
runs-on: ubuntu-22.04 | |
outputs: | |
output: ${{ steps.export_tag.outputs.image_tag }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- 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 docker image | |
id: docker_build | |
uses: depot/bake-action@v1 | |
with: | |
files: | | |
./docker-bake.hcl | |
${{ steps.docker_meta.outputs.bake-file }} | |
./docker-bake.platforms.hcl | |
targets: rollups-node-ci | |
push: true | |
project: ${{ vars.DEPOT_PROJECT }} | |
workdir: build | |
- name: Export Image Tag | |
id : export_tag | |
run : echo "image_tag=${{steps.docker_meta.outputs.version}}" >> "$GITHUB_OUTPUT" | |
test-go: | |
runs-on: ubuntu-22.04 | |
container: | |
image: ghcr.io/cartesi/rollups-node-ci:${{needs.build-ci-base.outputs.output}} | |
needs: | |
- build-ci-base | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: depot/setup-action@v1 | |
- name: Build dependency images | |
uses: depot/bake-action@v1 | |
with: | |
files: | | |
./docker-bake.hcl | |
./docker-bake.override.hcl | |
./docker-bake.platforms.hcl | |
targets: | | |
rollups-node-devnet | |
rollups-node-snapshot | |
project: ${{ vars.DEPOT_PROJECT }} | |
workdir: build | |
load: true | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: 'go.mod' | |
- name: Fix VCS Go Linter Issue | |
run : git config --global --add safe.directory /__w/rollups-node/rollups-node | |
- name: Run Go Linter | |
uses: golangci/golangci-lint-action@v6 | |
with: | |
version: v1.58.2 | |
- name: Run Go tests | |
run: go test ./... | |
build-docker: | |
runs-on: ubuntu-22.04 | |
needs: | |
- do-basic-checks | |
- test-rust | |
- test-go | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- 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 docker image | |
id: docker_build | |
uses: depot/bake-action@v1 | |
with: | |
files: | | |
./docker-bake.hcl | |
${{ steps.docker_meta.outputs.bake-file }} | |
./docker-bake.platforms.hcl | |
targets: rollups-node | |
set: rollups-node.args.ROLLUPS_NODE_VERSION=${{ steps.docker_meta.outputs.version }} | |
push: true | |
project: ${{ vars.DEPOT_PROJECT }} | |
workdir: build | |
release: | |
runs-on: ubuntu-22.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 |