CI #3832
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
schedule: | |
# run CI every day even if no PRs/merges occur | |
- cron: '0 12 * * *' | |
jobs: | |
# needs to run only on pull_request | |
lint: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.7 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.7 | |
- name: Lint | |
if: github.event_name == 'pull_request' | |
env: | |
BASE_SHA: ${{ github.event.pull_request.base.sha }} | |
run: | | |
pip install -e .[lint] | |
black --version | |
git fetch --depth=1 origin $BASE_SHA | |
echo "Files Changed:" | |
git diff --name-only $BASE_SHA... | tee .diff_names.txt | |
NAMES=$(cat .diff_names.txt | python scripts/pyfile_exists.py) | |
if test -z $NAMES | |
then | |
black --diff --check . | |
else | |
echo $NAMES | xargs black --diff --check | |
fi | |
mypy --version | |
mypy | |
tests: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
type: ["ethereum_truffle", "ethereum_bench", "examples", "ethereum", "ethereum_vm", "native", "wasm", "wasm_sym", "other"] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.7 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.7 | |
- name: Install NPM | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '16.x' | |
- name: Install dependencies | |
env: | |
TEST_TYPE: ${{ matrix.type }} | |
run: | | |
#install utils | |
pip install coveralls | |
pip install -e ".[dev-noks]" | |
# Get version info | |
pip freeze | |
z3 --version | |
#install cvc4 | |
sudo wget -O /usr/bin/cvc4 https://github.com/CVC4/CVC4/releases/download/1.7/cvc4-1.7-x86_64-linux-opt | |
sudo chmod +x /usr/bin/cvc4 | |
cvc4 --version | |
#install yices | |
sudo wget -O yices.tar.gz https://yices.csl.sri.com/releases/2.6.2/yices-2.6.2-x86_64-pc-linux-gnu-static-gmp.tar.gz | |
sudo tar -xzf yices.tar.gz | |
cd yices-2.6.2 | |
sudo ./install-yices | |
yices --version | |
#install boolector | |
mkdir -p /tmp/build | |
cd /tmp/build | |
git clone https://github.com/boolector/boolector.git | |
cd boolector | |
# Version 3.2.1 | |
git checkout "f61c0dcf4a76e2f7766a6358bfb9c16ca8217224" | |
git log -1 --oneline > ../boolector.commit | |
./contrib/setup-lingeling.sh | |
./contrib/setup-btor2tools.sh | |
./configure.sh | |
cd build | |
make -j4 | |
mkdir -p /tmp/boolector | |
sudo make DESTDIR=/usr install | |
# Install solc unconditionally because it only takes a second or two | |
sudo wget -O /usr/bin/solc https://github.com/ethereum/solidity/releases/download/v0.4.24/solc-static-linux | |
sudo chmod +x /usr/bin/solc | |
- name: Run Tests | |
env: | |
TEST_TYPE: ${{ matrix.type }} | |
run: | | |
cp scripts/run_tests.sh . | |
./run_tests.sh | |
- name: Coveralls Parallel | |
shell: bash | |
run: | | |
set +e | |
counter=1 | |
while [ "${counter}" -le 10 ] ; do | |
echo "Attempt ${counter} to upload" | |
$(coveralls --service=github) | |
if [ $? -eq 0 ] ; then | |
exit 0 | |
fi | |
((counter++)) | |
sleep 1 | |
done | |
exit 1 | |
env: | |
COVERALLS_PARALLEL: true | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
manticore-server: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.7 | |
- name: 'Install tools' | |
run: | | |
# just command runner https://github.com/casey/just#pre-built-binaries | |
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to "${HOME}/.local/bin" | |
sudo wget -O /usr/bin/solc https://github.com/ethereum/solidity/releases/download/v0.4.24/solc-static-linux | |
sudo chmod +x /usr/bin/solc | |
- name: 'Lint MUI Server' | |
working-directory: server | |
run: | | |
just init | |
source venv/bin/activate | |
just lint | |
- name: 'Test MUI Server' | |
working-directory: server | |
run: | | |
source venv/bin/activate | |
just test | |
# Send notification when all tests have finished to combine coverage results | |
coverage-finish: | |
needs: tests | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Coveralls Finished | |
uses: coverallsapp/github-action@v2.1.0 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
parallel-finished: true | |
upload: | |
runs-on: ubuntu-20.04 | |
if: github.event_name == 'schedule' | |
needs: tests | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python 3.7 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.7 | |
- name: Build Dist | |
run: | | |
python3 -m pip install wheel | |
python3 setup.py --dev_release sdist bdist_wheel | |
- name: Upload to PyPI | |
uses: pypa/gh-action-pypi-publish@v1.6.4 | |
with: | |
password: ${{ secrets.PYPI_UPLOAD }} |