Skip to content

Commit be80a67

Browse files
committed
1006 Add BITE test workflow
1 parent 14157a8 commit be80a67

3 files changed

Lines changed: 192 additions & 0 deletions

File tree

.github/workflows/build-bite.yml

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
name: Build and test skale-consensus BITE
2+
on: [push]
3+
jobs:
4+
build:
5+
runs-on: ubuntu-22.04
6+
steps:
7+
- name: Cancel Previous Runs
8+
uses: styfle/cancel-workflow-action@0.9.1
9+
with:
10+
access_token: ${{ github.token }}
11+
12+
- name: checkout
13+
uses: actions/checkout@v4
14+
with:
15+
submodules: true
16+
fetch-depth: 1 # Shallow clone both repo and submodules
17+
18+
- name: ls
19+
run: ls
20+
21+
- name: update apt
22+
run: sudo add-apt-repository ppa:ubuntu-toolchain-r/test; sudo apt-get update
23+
24+
- name: Free disk space
25+
run: |
26+
sudo apt-get remove -yq cmake libjsoncpp-dev aria2 ansible azure-cli shellcheck rpm xorriso zsync \
27+
clang-6.0 lldb-6.0 lld-6.0 clang-8 lldb-8 lld-8 \
28+
clang-9 lldb-9 lld-9 clangd-9 clang-format-14 dotnet-sdk-3.0 dotnet-sdk-3.1=3.1.101-1 \
29+
esl-erlang firefox g++-11 g++-11 gfortran-8 gfortran-9 google-chrome-stable \
30+
|| true >/dev/null 2>&1;
31+
32+
- name: Free more disk space
33+
run: |
34+
sudo apt-get remove -yq \
35+
google-cloud-sdk ghc-8.0.2 ghc-8.2.2 ghc-8.4.4 ghc-8.6.2 ghc-8.6.3 ghc-8.6.4 \
36+
ghc-8.6.5 ghc-8.8.1 ghc-8.8.2 ghc-8.8.3 ghc-8.10.1 cabal-install-2.0 cabal-install-2.2 \
37+
cabal-install-2.4 cabal-install-3.0 cabal-install-3.2 heroku imagemagick \
38+
libmagickcore-dev libmagickwand-dev libmagic-dev ant ant-optional kubectl \
39+
mercurial apt-transport-https mono-complete mysql-client libmysqlclient-dev \
40+
mysql-server mssql-tools unixodbc-dev yarn bazel chrpath libssl-dev libxft-dev \
41+
libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev php7.1 php7.1-bcmath \
42+
php7.1-bz2 php7.1-cgi php7.1-cli php7.1-common php7.1-curl php7.1-dba php7.1-dev \
43+
php7.1-enchant php7.1-fpm php7.1-gd php7.1-gmp php7.1-imap php7.1-interbase php7.1-intl \
44+
php7.1-json php7.1-ldap php7.1-mbstring php7.1-mcrypt php7.1-mysql php7.1-odbc \
45+
php7.1-opcache php7.1-pgsql php7.1-phpdbg php7.1-pspell php7.1-readline php7.1-recode \
46+
php7.1-snmp php7.1-soap php7.1-sqlite3 php7.1-sybase php7.1-tidy php7.1-xml \
47+
php7.1-xmlrpc php7.1-xsl php7.1-zip php7.2 php7.2-bcmath php7.2-bz2 php7.2-cgi \
48+
php7.2-cli php7.2-common php7.2-curl php7.2-dba php7.2-dev php7.2-enchant php7.2-fpm \
49+
php7.2-gd php7.2-gmp php7.2-imap php7.2-interbase php7.2-intl php7.2-json php7.2-ldap \
50+
php7.2-mbstring php7.2-mysql php7.2-odbc php7.2-opcache php7.2-pgsql php7.2-phpdbg \
51+
php7.2-pspell php7.2-readline php7.2-recode php7.2-snmp php7.2-soap php7.2-sqlite3 \
52+
php7.2-sybase php7.2-tidy php7.2-xml php7.2-xmlrpc php7.2-xsl php7.2-zip php7.3 \
53+
php7.3-bcmath php7.3-bz2 php7.3-cgi php7.3-cli php7.3-common php7.3-curl php7.3-dba \
54+
php7.3-dev php7.3-enchant php7.3-fpm php7.3-gd php7.3-gmp php7.3-imap php7.3-interbase \
55+
php7.3-intl php7.3-json php7.3-ldap php7.3-mbstring php7.3-mysql php7.3-odbc \
56+
php7.3-opcache php7.3-pgsql php7.3-phpdbg php7.3-pspell php7.3-readline php7.3-recode \
57+
php7.3-snmp php7.3-soap php7.3-sqlite3 php7.3-sybase php7.3-tidy php7.3-xml \
58+
php7.3-xmlrpc php7.3-xsl php7.3-zip php7.4 php7.4-bcmath php7.4-bz2 php7.4-cgi \
59+
php7.4-cli php7.4-common php7.4-curl php7.4-dba php7.4-dev php7.4-enchant php7.4-fpm \
60+
php7.4-gd php7.4-gmp php7.4-imap php7.4-interbase php7.4-intl php7.4-json php7.4-ldap \
61+
php7.4-mbstring php7.4-mysql php7.4-odbc php7.4-opcache php7.4-pgsql php7.4-phpdbg \
62+
php7.4-pspell php7.4-readline php7.4-snmp php7.4-soap php7.4-sqlite3 php7.4-sybase \
63+
php7.4-tidy php7.4-xml php7.4-xmlrpc php7.4-xsl php7.4-zip php-amqp php-apcu \
64+
php-igbinary php-memcache php-memcached php-mongodb php-redis php-xdebug \
65+
php-zmq snmp pollinate libpq-dev postgresql-client powershell ruby-full \
66+
sphinxsearch subversion mongodb-org || true > /dev/null 2>&1;
67+
sudo apt purge -yq bzip2 liblz4-dev
68+
69+
- name: Cleanup
70+
run: |
71+
sudo apt-get autoremove -y >/dev/null 2>&1 || true
72+
sudo apt-get autoclean -y >/dev/null 2>&1 || true
73+
sudo rm -rf /usr/local/lib/android >/dev/null 2>&1 || true
74+
sudo docker system prune -af --volumes >/dev/null 2>&1 || true
75+
76+
- name: Docker diagnostics
77+
run: |
78+
docker --version
79+
docker version
80+
docker compose version
81+
82+
- name: try docker compose
83+
run: |
84+
cd sgxwallet/run_sgx_sim
85+
echo "stopping sgx wallet"
86+
docker compose down || true
87+
88+
echo "writing docker-compose.yml"
89+
mv docker-compose.yml docker-compose.yml.old-previous || true
90+
cat > docker-compose.yml <<'YAML'
91+
version: '3'
92+
services:
93+
sgxwallet:
94+
image: skalenetwork/sgxwallet_sim:develop-latest
95+
ports:
96+
- "1026:1026"
97+
- "1027:1027"
98+
- "1028:1028"
99+
- "1029:1029"
100+
volumes:
101+
- ./sgx_data:/usr/src/sdk/sgx_data
102+
- /dev/urandom:/dev/random
103+
logging:
104+
driver: json-file
105+
options:
106+
max-size: "10m"
107+
max-file: "4"
108+
restart: unless-stopped
109+
command: -s -y -V -d
110+
YAML
111+
112+
echo "pulling sgx wallet"
113+
docker compose pull
114+
115+
- name: install cmake
116+
run: |
117+
wget --no-check-certificate https://cmake.org/files/v3.21/cmake-3.21.0-linux-x86_64.sh && \
118+
chmod +x cmake-3.21.0-linux-x86_64.sh && \
119+
./cmake-3.21.0-linux-x86_64.sh --skip-license --include-subdir && \
120+
sudo ln -sf `pwd`/cmake-3.21.0-linux-x86_64/bin/* /usr/local/bin
121+
122+
- name: install packages
123+
run: |
124+
sudo apt-get update && \
125+
sudo apt-get install -y build-essential software-properties-common; sudo apt-get update; \
126+
sudo apt-add-repository universe; \
127+
sudo apt-get update; sudo apt-get install -y apt-utils libprocps-dev \
128+
gcc-11 g++-11 valgrind gawk sed gperf libffi-dev ccache libunwind-dev libgoogle-perftools-dev yasm texinfo \
129+
autotools-dev autogen automake autoconf m4 shtool pkg-config gawk nasm unzip gettext \
130+
python3 python3-pip libtool libgcrypt20-dev
131+
# python python-pip
132+
# python-is-python3
133+
134+
- name: Use g++-11 and gcov-11 by default
135+
run: |
136+
echo "Updating all needed alternatives"
137+
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11
138+
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11
139+
sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-11 11
140+
sudo update-alternatives --install /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-11 11
141+
sudo update-alternatives --install /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-11 11
142+
echo "Checking alternative for gcc"
143+
which gcc
144+
gcc --version
145+
echo "Checking alternative for g++"
146+
which g++
147+
g++ --version
148+
echo "Checking alternative for gcov"
149+
which gcov
150+
gcov --version
151+
echo "Checking alternative for gcov-dump"
152+
which gcov-dump
153+
gcov-dump --version
154+
echo "Checking alternative for gcov-tool"
155+
which gcov-tool
156+
gcov-tool --version
157+
158+
- name: Prepare ccache timestamp
159+
id: ccache_cache_timestamp
160+
shell: cmake -P {0}
161+
run: |
162+
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
163+
message("::set-output name=timestamp::${current_date}")
164+
165+
- name: ccache cache files
166+
uses: actions/cache@v4.2.0
167+
with:
168+
path: .ccache
169+
key: ${ { matrix.config.name } }-ccache-${ { steps.ccache_cache_timestamp.outputs.timestamp } }
170+
restore-keys: |
171+
${ { matrix.config.name } }-ccache-
172+
- name: build dependencies
173+
run: |
174+
sudo apt-get install -y nettle-dev gnutls-dev
175+
cd deps && ./build.sh BUILD_LIBSEC256K1=1 && cd ..
176+
177+
- name: build consensus BITE
178+
run: |
179+
cd scripts && ./build.py Debug -buildBITE
180+
181+
- name: run tests (block sizes)
182+
env:
183+
CI_BUILD: "1"
184+
TEST_TRANSACTIONS_PER_BLOCK: "1000"
185+
run: |
186+
cd scripts
187+
./tests.py && cd ..

scripts/build.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ def main():
6262
parser = argparse.ArgumentParser(description="Example script for argument parsing")
6363
parser.add_argument("buildType", type=str, help="Build type (release, debug)")
6464
parser.add_argument("-buildFAIR", action = "store_true", help="Build FAIR")
65+
parser.add_argument("-buildBITE", action = "store_true", help="Build BITE")
6566
args = parser.parse_args()
6667

6768
os.chdir("..")
@@ -70,6 +71,8 @@ def main():
7071
print(f"BUILD_TYPE={buildType}")
7172
buildFAIR = args.buildFAIR
7273
print(f"buildFAIR={buildFAIR}")
74+
buildBITE = args.buildBITE
75+
print(f"buildBITE={buildBITE}")
7376

7477
run("ccache -M 20G")
7578
run("mkdir -p build")
@@ -78,6 +81,8 @@ def main():
7881
command : str = f"cmake .. -DCMAKE_BUILD_TYPE={buildType} -DCOVERAGE=ON -DMICROPROFILE_ENABLED=0"
7982
if buildFAIR:
8083
command += " -DFAIR=1"
84+
if buildBITE:
85+
command += " -DBITE=1"
8186

8287
run(command)
8388
run("make -j$(nproc)")

0 commit comments

Comments
 (0)