|
| 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 .. |
0 commit comments