diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..57c2df4b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,86 @@ +name: Build + +on: + push: + branches: [ 8-add-ci ] + +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 \ + libspdlog-dev + + - 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: Configure CMake + env: + BOOST_ROOT: "${{ steps.install-boost.outputs.BOOST_ROOT }}" + run: | + cmake -G "Unix Makefiles" \ + -B build \ + -DCMAKE_BUILD_TYPE=Release + + - name: Build proof-producer + env: + BOOST_ROOT: "${{ steps.install-boost.outputs.BOOST_ROOT }}" + run: | + cd build + make + \ No newline at end of file diff --git a/.github/workflows/linux_release.yml b/.github/workflows/linux_release.yml new file mode 100644 index 00000000..226ce48d --- /dev/null +++ b/.github/workflows/linux_release.yml @@ -0,0 +1,124 @@ +name: Build .deb package + +on: + push: + branches: [ 8-add-ci ] + +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 \ + libspdlog-dev + + - 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: Configure CMake + env: + BOOST_ROOT: "${{ steps.install-boost.outputs.BOOST_ROOT }}" + run: | + cmake -G "Unix Makefiles" \ + -B build \ + -DCMAKE_BUILD_TYPE=Release + + - name: Build proof-producer + env: + BOOST_ROOT: "${{ steps.install-boost.outputs.BOOST_ROOT }}" + run: | + cd build + make + cd .. + + - name: Create .deb package + 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: 0.1 + arch: 'amd64' + desc: 'zkllvm proof-generator' + + - name: Install aws tools + 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 + 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/ + + + diff --git a/.github/workflows/set_version.yml b/.github/workflows/set_version.yml new file mode 100644 index 00000000..3717cc2c --- /dev/null +++ b/.github/workflows/set_version.yml @@ -0,0 +1,29 @@ +name: Set version tag + +on: + # Triggers the workflow on push to master branch + push: + branches: [ 8-add-ci ] + +jobs: + set_version: + name: Set and tag version + runs-on: [ubuntu-latest] + env: + VERSION_FILE_NAME: VERSION + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set version + id: set_version + run: | + version=$(cat ${{ env.VERSION_FILE_NAME }} | tr -d '\r').$GITHUB_RUN_NUMBER + echo "VERSION=$version" >> $GITHUB_ENV + - name: Tag new version + run: git tag v${{ env.VERSION }} + + - name: Push tags + uses: ad-m/github-push-action@master + with: + tags: true diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..171538eb --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.0 \ No newline at end of file