Skip to content
This repository has been archived by the owner on Jan 15, 2024. It is now read-only.

Build

Build #2360

Workflow file for this run

name: Build
on:
push:
branches:
- main
tags:
# YYYYMMDD
- "20[0-9][0-9][0-1][0-9][0-3][0-9]"
pull_request:
schedule:
- cron: "0 1 * * 1"
workflow_dispatch:
env:
RUST_TEST_THREADS: 4
jobs:
build:
runs-on: [self-hosted, X64]
container:
image: ghcr.io/espressosystems/nix:main
volumes:
- github_nix:/nix
steps:
- uses: styfle/[email protected]
name: Cancel Outdated Builds
with:
access_token: ${{ github.token }}
- uses: cachix/cachix-action@v12
with:
name: espresso-systems-private
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- uses: actions/checkout@v4
name: Checkout Repository
- name: Work around git issue after git CVE-2022-24765 fix.
run: git config --global --add safe.directory "$PWD"
- name: Initialize Nix Shell
run: nix-shell --run "echo Init"
- name: Cache cargo
uses: actions/cache@v3
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git
target
# todo: add nix key, for example: nix-instantiate shell.nix | sha256sum | head -c 10
key: cape-v5-${{ hashFiles('Cargo.lock') }}
- name: Linting
run: nix-shell --run "lint-ci"
- name: Build Slow Tests
# Make sure the slow tests build, but don't run them (we have another workflow for that).
run: nix-shell --run "cargo test --release --features=slow-tests --no-run"
- name: Run Tests
run: nix-shell --run "cape-test-geth"
- name: Generate Docs
run: nix-shell --run "make-doc"
- name: Build all executables
run: nix-shell --run "cargo build --release"
- name: Generate Wallet
run: ./target/release/export-wallet-api-docs --api ./wallet/api/api.toml --assets ./wallet/public/ ./doc/mdbook/book/wallet
- name: Deploy Docs
uses: peaceiris/actions-gh-pages@v3
if: ${{ github.ref == 'refs/heads/main' }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./doc/mdbook/book/
cname: cape.docs.espressosys.com
- name: Build demo geth data dir
run: nix-shell --run "demo/initialize-demo-geth"
- uses: actions/upload-artifact@v3
with:
name: wallet-webserver
path: |
target/release/wallet-api
- uses: actions/upload-artifact@v3
with:
name: wallet-cli
path: |
target/release/wallet-cli
- uses: actions/upload-artifact@v3
with:
name: services-executables
path: |
target/release/address-book
target/release/eqs
target/release/faucet
target/release/minimal-relayer
- uses: actions/upload-artifact@v3
with:
name: geth-data-dir
path: |
scratch/geth-data-dir
docker-wallet:
runs-on: [self-hosted, X64]
needs: build
steps:
- uses: actions/checkout@v4
name: Checkout Repository
with:
path: wallet-checkout
- uses: actions/download-artifact@v3
with:
name: wallet-webserver
path: wallet-checkout/target/release/
- uses: actions/download-artifact@v3
with:
name: wallet-cli
path: wallet-checkout/target/release/
- name: Set linker/loader to not be nix
run: |
patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 ./wallet-checkout/target/release/wallet-api
patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 ./wallet-checkout/target/release/wallet-cli
- uses: docker/setup-buildx-action@v3
name: Setup Docker BuildKit (buildx)
with:
driver: docker
- uses: docker/login-action@v3
name: Login to Github Container Repo
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v5
name: Generate Docker Metadata
id: meta
with:
images: ghcr.io/espressosystems/cape/wallet
- uses: docker/build-push-action@v5
name: Build and Push Docker
with:
context: ./wallet-checkout/
file: ./wallet-checkout/wallet.Dockerfile
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
docker-services:
runs-on: [self-hosted, X64]
needs: build
steps:
- uses: actions/checkout@v4
name: Checkout Repository
with:
path: services-checkout
- uses: actions/download-artifact@v3
with:
name: services-executables
path: services-checkout/target/release/
- uses: docker/setup-buildx-action@v3
name: Setup Docker BuildKit (buildx)
with:
driver: docker
- uses: docker/login-action@v3
name: Login to Github Container Repo
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v5
name: Generate Docker Metadata
id: meta
with:
images: ghcr.io/espressosystems/cape/services
- name: Generate base image
run: cd services-checkout && bin/build-docker-base
- uses: docker/build-push-action@v5
name: Build and Push Docker
with:
context: ./services-checkout/
file: ./services-checkout/services.Dockerfile
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
docker-geth:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
name: Checkout Repository
- uses: actions/download-artifact@v3
with:
name: geth-data-dir
path: scratch/geth-data-dir/
- uses: docker/setup-buildx-action@v3
name: Setup Docker BuildKit (buildx)
- uses: docker/login-action@v3
name: Login to Github Container Repo
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/metadata-action@v5
name: Generate Docker Metadata
id: meta
with:
images: ghcr.io/espressosystems/cape/geth
- uses: docker/build-push-action@v5
name: Build and Push Docker
with:
context: ./
file: ./demo/geth.Dockerfile
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}