Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding initial for debian packages #856

Merged
merged 1 commit into from
Jul 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 104 additions & 0 deletions .github/workflows/deb_packager.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: deb_packager

on:
push:
branches:
- 'main'
paths:
- '**'
tags:
- 'v*.*.*'
- 'v*.*.*-*'

jobs:
build:
permissions:
id-token: write
contents: write
runs-on: [self-hosted, linux, X64, hc, hm]
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 19
# Variables
- name: Adding TAG to ENV
run: echo "GIT_TAG=`echo $(git describe --tags --abbrev=0)`" >> $GITHUB_ENV
- name: adding version
run: |
NUMERIC_VERSION=$( echo ${{ env.GIT_TAG }} | sed 's/[^0-9.]//g' )
echo "VERSION=$NUMERIC_VERSION" >> $GITHUB_ENV
- name: running update
run: sudo apt update -y

- name: installing dependencies
run: sudo apt install build-essential libbenchmark-dev libomp-dev libgmp-dev nlohmann-json3-dev postgresql libpqxx-dev libpqxx-doc nasm libsecp256k1-dev grpc-proto libsodium-dev libprotobuf-dev libssl-dev cmake libgrpc++-dev protobuf-compiler protobuf-compiler-grpc uuid-dev -y

- name: make clean for sanity
run: make clean

- name: build grpc
run: cd src/grpc && make && cd ../..

- name: build the generate
run: make generate

- name: build the prover
run: make -j

- name: making directory structure
run: mkdir -p packaging/deb/zkevm-prover/usr/bin
- name: making directory structure for toml
run: mkdir -p packaging/deb/zkevm-prover/opt/zkevm-prover
- name: copy the binary for amd64 over
run: cp -rp build/zkProver packaging/deb/zkevm-prover/usr/bin/
- name: create systemd directory for service file
run: mkdir -p packaging/deb/zkevm-prover/lib/systemd/system
- name: copy the zkevm-prover service file for systemd
run: cp -rp packaging/package_scripts/systemd/zkevm-prover.service packaging/deb/zkevm-prover/lib/systemd/system/


# Create control file and packaging
- name: create control file
run: |
touch packaging/deb/zkevm-prover/DEBIAN/control
echo "Package: zkevm-prover" >> packaging/deb/zkevm-prover/DEBIAN/control
echo "Version: ${{ env.VERSION }}" >> packaging/deb/zkevm-prover/DEBIAN/control
echo "Section: base" >> packaging/deb/zkevm-prover/DEBIAN/control
echo "Priority: optional" >> packaging/deb/zkevm-prover/DEBIAN/control
echo "Architecture: amd64" >> packaging/deb/zkevm-prover/DEBIAN/control
echo "Maintainer: devops@polygon.technology" >> packaging/deb/zkevm-prover/DEBIAN/control
echo "Description: zkevm-prover package" >> packaging/deb/zkevm-prover/DEBIAN/control
- name: Creating package directory for binary for zkevm-prover ${{ env.ARCH }}
run: cp -rp packaging/deb/zkevm-prover packaging/deb/zkevm-prover-${{ env.GIT_TAG }}-${{ env.ARCH }}
env:
ARCH: amd64
- name: Running package build for ${{ env.ARCH }}
run: dpkg-deb --build --root-owner-group packaging/deb/zkevm-prover-${{ env.GIT_TAG }}-${{ env.ARCH }}
env:
ARCH: amd64

- name: shasum the ${{ env.ARCH }} debian package
run: cd packaging/deb/ && sha256sum zkevm-prover-${{ env.GIT_TAG }}-${{ env.ARCH }}.deb > zkevm-prover-${{ env.GIT_TAG }}-${{ env.ARCH }}.deb.checksum
env:
ARCH: amd64

# Confirm packages built and upload
- name: Confirming package built
run: ls -ltr packaging/deb/ | grep zkevm-prover

- name: Release zkevm-prover Packages
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.GIT_TAG }}
prerelease: true
files: |
packaging/deb/zkevm-prover**.deb
packaging/deb/zkevm-prover**.deb.checksum
12 changes: 12 additions & 0 deletions packaging/deb/zkevm-prover/DEBIAN/postinst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash
# This is a postinstallation script so the service can be configured and started when requested
#
sudo adduser --disabled-password --disabled-login --shell /usr/sbin/nologin --quiet --system --no-create-home --home /nonexistent zkevm-prover
if [ -d "/opt/zkevm-prover" ]
then
echo "Directory /opt/zkevm-prover exists."
else
mkdir -p /opt/zkevm-prover
sudo chown -R zkevm-prover /opt/zkevm-prover
fi
sudo systemctl daemon-reload
8 changes: 8 additions & 0 deletions packaging/deb/zkevm-prover/DEBIAN/postrm
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash
#
###############
# Remove zkevm-prover installs
##############
sudo rm -rf /lib/systemd/system/zkevm-prover.service
sudo deluser zkevm-prover
sudo systemctl daemon-reload
16 changes: 16 additions & 0 deletions packaging/package_scripts/systemd/zkevm-prover.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[Unit]
Description=zkevm-prover
StartLimitIntervalSec=500
StartLimitBurst=5

[Service]
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/zkProver
Type=simple
KillSignal=SIGINT
User=zkevm-prover
TimeoutStopSec=120

[Install]
WantedBy=multi-user.target
Loading