From eb0fe28e30c67308b134efbe588f528170f43614 Mon Sep 17 00:00:00 2001 From: Francisco Moura Date: Tue, 16 Apr 2024 14:45:49 -0300 Subject: [PATCH] feat: Add Cartesi Machine installation to CI --- .github/workflows/build.yml | 145 +++++++++++++++++------------------- 1 file changed, 70 insertions(+), 75 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ddc074b05..21346d37f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,16 +21,47 @@ permissions: jobs: test: runs-on: ubuntu-22.04 + container: + image: ubuntu:23.10 env: RUSTFLAGS: -D warnings -C debuginfo=0 defaults: run: working-directory: offchain steps: + + - name: Install Git + working-directory: . + run: su - && apt update && apt install -y git-all + + - name: Install Docker + working-directory: . + run: | + su - + apt update && apt install -y --no-install-recommends ca-certificates curl + install -m 0755 -d /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc + chmod a+r /etc/apt/keyrings/docker.asc + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update + apt-get install -y --no-install-recommends docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + - uses: actions/checkout@v4 with: submodules: recursive + - name: 📦 Install protoc + working-directory: . + run: su - && apt update && apt install -y protobuf-compiler libprotobuf-dev + + - name: Install Cartesi Machine + working-directory: . + run: | + ARCH=$(dpkg --print-architecture) + curl -fsSL https://github.com/cartesi/machine-emulator/releases/download/v0.16.1/cartesi-machine-v0.16.1_${ARCH}.deb -o ./cartesi-machine.deb + su - + apt-get install -y ./cartesi-machine.deb + - uses: depot/setup-action@v1 - name: Build dependency images uses: depot/bake-action@v1 @@ -46,8 +77,10 @@ jobs: workdir: build load: true - - name: 📦 Install protoc - run: sudo apt update && sudo apt install -y protobuf-compiler libprotobuf-dev + - name: Install Cargo + run: | + su - + apt install -y --no-install-recommends cargo - uses: actions/cache@v4 with: @@ -71,6 +104,40 @@ jobs: - name: Set sweep timestamp run: cargo sweep -s + - name: Install OpenSSL + working-directory: . + run: | + su - + apt update && apt install -y --no-install-recommends wget build-essential libssl-dev + wget https://www.openssl.org/source/openssl-3.1.4.tar.gz + wget https://www.openssl.org/source/openssl-3.1.4.tar.gz.sha256 + echo "$(cat openssl-3.1.4.tar.gz.sha256) openssl-3.1.4.tar.gz" | sha256sum --check + mkdir /opt/openssl + tar xvzf openssl-3.1.4.tar.gz --directory /opt/openssl + cd /opt/openssl/openssl-3.1.4/ + ./config --prefix=/opt/openssl --openssldir=/opt/openssl/ssl + make + make install + echo "/opt/openssl/lib64" >> /etc/ld.so.conf.d/openssl.conf + ldconfig + + - name: Install Rust Code dependencies + working-directory: . + run : | + su - + apt install -y --no-install-recommends + pkg-config \ + libssl-dev curl \ + libpq5 \ + redis \ + redis-tools \ + libboost-coroutine1.81.0 \ + libboost-context1.81.0 \ + libboost-filesystem1.81.0 \ + libboost-log1.81.0 \ + libcrypto++8 \ + procps + - name: Build binaries and tests run: cargo build --all-targets @@ -102,76 +169,4 @@ jobs: working-directory: ${{ github.workspace }} run: go test ./... - build_docker: - runs-on: ubuntu-22.04 - needs: - - test - 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: - needs: [test, build_docker] - runs-on: ubuntu-22.04 - 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: Download GraphQL schema - uses: actions/download-artifact@v4 - with: - name: graphql-schema - - - name: Publish Github release - uses: softprops/action-gh-release@v2 - with: - prerelease: true - body_path: CHANGELOG.md - files: schema.graphql +