Skip to content

feat: multithreading proof generator #31

feat: multithreading proof generator

feat: multithreading proof generator #31

Workflow file for this run

name: Build
on:
pull_request:
push:
branches:
- 'master'
tags:
- '**'
jobs:
build-linux:
runs-on: [ "self-hosted", "aws_autoscaling"]
env:
CONTAINER_TMP: /opt/
HOST_TMP: /home/runner/work/_temp/
DEBIAN_FRONTEND: noninteractive
BOOST_VERSION: "1.80.0"
container:
image: ubuntu:22.04
volumes:
- /home/runner/work/_temp/:/opt/
steps:
- name: Install dependencies
run: |
env && \
apt update && \
apt install -y \
build-essential \
libssl-dev \
cmake \
git \
unzip \
libicu-dev \
curl \
pkg-config \
wget \
\
libspdlog-dev \
liblz4-dev \
libgnutls28-dev \
libprotobuf-dev \
libyaml-cpp-dev \
libsctp-dev \
ragel \
xfslibs-dev \
systemtap-sdt-dev \
libc-ares-dev \
libhwloc-dev
# Everything will be cleaned on checkout anyway
wget http://launchpadlibrarian.net/466750967/libfmt-dev_6.1.2+ds-2_amd64.deb
apt remove -y libfmt-dev
apt install -y ./libfmt-dev_6.1.2+ds-2_amd64.deb
- name: Print toolchain information
run: |
git --version
cc --version
cmake --version
- name: Checkout sources
uses: actions/checkout@v3
with:
submodules: 'recursive'
fetch-depth: 0
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
# Workaround: https://github.com/actions/checkout/issues/1169
- name: Mark directory as safe
run: |
git config --system --add safe.directory $PWD
- name: Install boost
uses: MarkusJx/install-boost@v2.4.1
id: install-boost
with:
# A list of supported versions can be found here:
# https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json
boost_version: ${{ env.BOOST_VERSION }}
boost_install_dir: ${{ env.CONTAINER_TMP }}
platform_version: 22.04
toolset: gcc
arch: x86
- name: Set VERSION variable
# required for building deb packages
# TODO: replace with getting version from git tag or commit SHA1
run: echo "VERSION=$(cat VERSION)" >> $GITHUB_ENV
- name: Configure CMake
env:
BOOST_ROOT: "${{ steps.install-boost.outputs.BOOST_ROOT }}"
run: |
cmake -G "Unix Makefiles" \
-B build \
-DCMAKE_BUILD_TYPE=Release
-DBUILD_WITH_NUMA=FALSE
- name: Build proof-producer
env:
BOOST_ROOT: "${{ steps.install-boost.outputs.BOOST_ROOT }}"
run: |
cd build
make
cd ..
- name: Create .deb package
# always build deb packages to check that they're buildable
# although, push them only on tags (see later)
run: |
mkdir -p .debpkg/usr/bin
cp ./build/bin/proof-generator/proof-generator .debpkg/usr/bin
chmod +x .debpkg/usr/bin/proof-generator
mkdir -p .debpkg/DEBIAN
- uses: jiro4989/build-deb-action@v3
with:
package: proof-generator
package_root: .debpkg
maintainer: =nil; Foundation
version: ${{ env.VERSION }}
arch: 'amd64'
desc: 'zkllvm proof-generator'
- name: Install aws tools
# these steps run only on tag push => deb package release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: |
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install
pip3 install mkrepo
- name: Upload packages to repository
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
env:
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
run: |
PROOF_GENERATOR_PACKAGE=`ls proof-generator*.deb | cut -d'/' -f2`
POOL="ubuntu/pool/main/p/proof-generator"
aws s3api put-object --bucket deb.nil.foundation --key $POOL/$PROOF_GENERATOR_PACKAGE --body $PROOF_GENERATOR_PACKAGE
mkrepo s3://deb.nil.foundation/ubuntu/