Skip to content

Merge pull request #745 from valory-xyz/release/v1.54.0 #2720

Merge pull request #745 from valory-xyz/release/v1.54.0

Merge pull request #745 from valory-xyz/release/v1.54.0 #2720

Workflow file for this run

name: AEA framework sanity checks and tests
on:
push:
branches:
- develop
- main
pull_request:
env:
IS_CI_WORKFLOW: True
jobs:
common_checks_1:
continue-on-error: False
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install pipenv
- name: Pipenv install requirements and check it can be locked
run: |
pipenv --clear
time pipenv install --verbose --dev --skip-lock
time pipenv run pip install -e .[all]
time pipenv run pip install --no-deps file:plugins/aea-ledger-ethereum
time pipenv run pip install --no-deps file:plugins/aea-ledger-ethereum-flashbots
time pipenv run pip install --no-deps file:plugins/aea-ledger-cosmos
time pipenv run pip install --no-deps file:plugins/aea-ledger-fetchai
time pipenv run pip install --no-deps file:plugins/aea-ledger-solana
time pipenv lock
- name: Check plugin consistency
run: |
# check diff between plugins' LICENSE and main LICENSE
diff LICENSE plugins/aea-ledger-ethereum/LICENSE
diff LICENSE plugins/aea-ledger-cosmos/LICENSE
diff LICENSE plugins/aea-ledger-fetchai/LICENSE
common_checks_2:
continue-on-error: False
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- uses: actions/setup-go@v3
with:
go-version: "1.17.7"
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
- name: Security Check
run: tox -e bandit
- name: Safety Check
run: tox -e safety
- name: Code style check
run: |
tox -e black-check
tox -e isort-check
tox -e flake8
- name: Docstring check
run: tox -e darglint
- name: Unused code check
run: tox -e vulture
- name: Static type check
run: tox -e mypy
- name: Golang code style check (aealite)
uses: golangci/[email protected]
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
with:
version: v1.45.2
args: --version
working-directory: libs/go/aealite
common_checks_3:
continue-on-error: False
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
- name: Pylint check
run: |
tox -e pylint
common_checks_4:
continue-on-error: False
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- uses: actions/setup-go@v3
with:
go-version: "1.17.7"
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
pip install --user --upgrade setuptools
# install Protobuf compiler
wget https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-linux-x86_64.zip
unzip protoc-24.3-linux-x86_64.zip -d protoc
sudo mv protoc/bin/protoc /usr/local/bin/protoc
# install IPFS
sudo apt-get install -y wget
wget -O ./go-ipfs.tar.gz https://dist.ipfs.tech/go-ipfs/v0.6.0/go-ipfs_v0.6.0_linux-amd64.tar.gz
tar xvfz go-ipfs.tar.gz
sudo mv go-ipfs/ipfs /usr/local/bin/ipfs
ipfs init
make protolint_install
- name: License Check
run: tox -e liccheck
- name: AEA Package Hashes Check
run: tox -e hash-check
- name: Check package versions in documentation
run: tox -e package-version-checks
- name: Check package dependencies
run: tox -e package-dependencies-checks
- name: Check dependencies
run: tox -e check-dependencies
- name: Check generate protocols
run: tox -e check-generate-all-protocols
- name: Generate Documentation
run: tox -e docs
copyright_check:
continue-on-error: False
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
pip install --user --upgrade setuptools
- name: Copyright Check
run: tox -e check-copyright
common_checks_5:
continue-on-error: False
runs-on: ubuntu-latest
timeout-minutes: 10
if: github.base_ref == 'main'
steps:
- uses: actions/checkout@master
with:
fetch-depth: 0
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
- name: Install markdown-spellcheck
run: sudo npm install -g markdown-spellcheck
- name: Check API Docs updated
run: tox -e check-api-docs
- name: Check spelling
run: tox -e spell-check
docs_link_check:
continue-on-error: True
runs-on: ubuntu-latest
timeout-minutes: 5
if: github.base_ref == 'main'
steps:
- uses: actions/checkout@master
with:
fetch-depth: 0
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
- name: Check Docs links and IPFS hashes
run: tox -e check-doc-links-hashes
scan:
name: gitleaks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-go@v3
with:
go-version: "1.17.7"
- run: |
wget https://github.com/zricethezav/gitleaks/releases/download/v8.10.1/gitleaks_8.10.1_linux_x64.tar.gz && \
tar -xzf gitleaks_8.10.1_linux_x64.tar.gz && \
sudo install gitleaks /usr/bin && \
gitleaks detect --report-format json --report-path leak_report
dependencies_checks:
continue-on-error: False
strategy:
matrix:
os: [ubuntu-latest, macos-12, windows-latest]
python_version: ["3.10",]
timeout-minutes: 10
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python_version }}
- name: Install tox
run: |
pip install tomte[tox]==0.2.13
- name: Check Pipfile and tox.ini consistency
run: |
python ./scripts/check_pipfile_and_toxini.py
- name: Install current aea
run: |
pip install -e .[all]
- name: Check aea dependencies and imports
run: |
tox -e dependencies-check
plugins_install_check:
continue-on-error: False
runs-on: ${{ matrix.sys.os }}
env:
PYTHONUTF8: 1
strategy:
matrix:
sys:
- { os: windows-latest, shell: "msys2 {0}" }
- { os: ubuntu-latest, shell: bash }
# - { os: macos-12, shell: bash }
python_version: ["3.10",]
timeout-minutes: 15
steps:
- uses: actions/checkout@master
- if: matrix.sys.os == 'windows-latest'
uses: msys2/setup-msys2@v2
- uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python_version }}
- name: Install tox
run: |
pip install tomte[tox]==0.2.13
- name: Check plugin aea-ledger-cosmos
run: |
tox -r -e plugins_env -- sh -c "pip install ./plugins/aea-ledger-cosmos && aea generate-key cosmos && echo aea-ledger-cosmos checked!"
- name: Check plugin aea-ledger-ethereum
run: |
tox -r -e plugins_env -- sh -c "pip install ./plugins/aea-ledger-ethereum && aea generate-key ethereum && echo aea-ledger-ethereum checked!"
- name: Check plugin aea-ledger-ethereum-hwi
run: |
tox -r -e plugins_env -- sh -c "pip install ./plugins/aea-ledger-ethereum && pip install ./plugins/aea-ledger-ethereum-hwi && echo aea-ledger-hwi checked!"
- name: Check plugin aea-ledger-fetchai
run: |
tox -r -e plugins_env -- sh -c "pip install ./plugins/aea-ledger-cosmos && pip install ./plugins/aea-ledger-fetchai && aea generate-key fetchai && echo aea-ledger-fetchai checked!"
- name: Check plugin aea-cli-ipfs
run: |
tox -r -e plugins_env -- sh -c "pip install ./plugins/aea-cli-ipfs && aea ipfs --help && echo aea-cli-ipfs checked!"
- name: Check plugin aea-ledger-solana
run: |
tox -r -e plugins_env -- sh -c "pip install ./plugins/aea-ledger-solana && aea generate-key solana && echo aea-ledger-solana checked!"
protolint:
continue-on-error: False
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- uses: actions/setup-go@v3
with:
go-version: "1.17.7"
- name: Install protolint (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
make protolint_install
- name: Protolint check
run: |
make protolint
integration_checks:
continue-on-error: True
needs:
- common_checks_1
- common_checks_2
- common_checks_3
- common_checks_4
- dependencies_checks
- plugins_install_check
runs-on: ubuntu-latest
timeout-minutes: 50
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- uses: actions/setup-go@v3
with:
go-version: "1.17.7"
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
# install Protobuf compiler
wget https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-linux-x86_64.zip
unzip protoc-24.3-linux-x86_64.zip -d protoc
sudo mv protoc/bin/protoc /usr/local/bin/protoc
# pull pre-built images
docker pull valory/open-acn-node:latest
- name: Framework integration tests
run: tox -e py3.10 -- -m 'integration and not unstable and not ledger and not profiling'
- name: Packages integration tests
run: tox -e packages-py3.10 -- -m 'integration and not unstable and not ledger and not profiling'
profiling_checks:
continue-on-error: True
needs:
- common_checks_1
- common_checks_2
- common_checks_3
- common_checks_4
- dependencies_checks
- plugins_install_check
runs-on: ubuntu-latest
timeout-minutes: 50
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- uses: actions/setup-go@v3
with:
go-version: "1.17.7"
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
# install Protobuf compiler
wget https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-linux-x86_64.zip
unzip protoc-24.3-linux-x86_64.zip -d protoc
sudo mv protoc/bin/protoc /usr/local/bin/protoc
- name: Framework integration tests
run: tox -e py3.10 -- -m 'profiling'
integration_checks_ledger:
continue-on-error: True
needs:
- common_checks_1
- common_checks_2
- common_checks_3
- common_checks_4
- dependencies_checks
- plugins_install_check
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
- name: Framework integration tests
run: tox -e py3.10 -- -m 'integration and not unstable and ledger and not profiling'
- name: Packages integration tests
run: tox -e packages-py3.10 -- -m 'integration and not unstable and ledger and not profiling'
platform_checks:
continue-on-error: True
needs:
- common_checks_1
- common_checks_2
- common_checks_3
- common_checks_4
- dependencies_checks
- plugins_install_check
env:
PYTHONUTF8: 1 # mostly for windows to work properly with utf8 files
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-12, windows-latest]
python_version: ['3.8', '3.9', '3.10', '3.11']
timeout-minutes: 120
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python_version }}
- uses: actions/setup-go@v3
with:
go-version: "1.17.7"
- if: matrix.os == 'ubuntu-latest'
name: Install dependencies (ubuntu-latest)
run: |
sudo apt-get update --fix-missing
sudo apt-get autoremove
sudo apt-get autoclean
pip install tomte[tox]==0.2.13
# install Protobuf compiler
wget https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-linux-x86_64.zip
unzip protoc-24.3-linux-x86_64.zip -d protoc
sudo mv protoc/bin/protoc /usr/local/bin/protoc
make protolint_install
# install ipfs
wget https://dist.ipfs.tech/go-ipfs/v0.6.0/go-ipfs_v0.6.0_linux-amd64.tar.gz
tar -xvzf go-ipfs_v0.6.0_linux-amd64.tar.gz
cd go-ipfs
sudo ./install.sh
cd ..
rm -rf go-ipfs
ipfs init
mkdir ~/.config/solana
echo "[6,206,143,203,220,22,227,247,237,23,114,181,56,70,53,98,224,64,192,221,134,115,153,146,252,81,8,41,237,224,225,176,195,11,129,62,207,146,39,47,172,98,101,87,102,166,105,202,33,169,134,76,27,149,148,68,4,15,215,47,196,227,216,48]" > ~/.config/solana/id.json
# sudo apt-get install -y protobuf-compiler
# use sudo rm /var/lib/apt/lists/lock above in line above update if dependency install failures persist
# use sudo apt-get dist-upgrade above in line below update if dependency install failures persist
- if: matrix.os == 'macos-12'
name: Install dependencies (macos-12)
run: |
pip install tomte[tox]==0.2.13
brew install gcc
# brew install protobuf
# brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/72457f0166d5619a83f508f2345b22d0617b5021/Formula/protobuf.rb
wget https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-osx-x86_64.zip
unzip protoc-24.3-osx-x86_64.zip -d protoc
sudo mv protoc/bin/protoc /usr/local/bin/protoc
brew tap yoheimuta/protolint
brew install protolint
# install ipfs
curl -O https://dist.ipfs.tech/go-ipfs/v0.6.0/go-ipfs_v0.6.0_darwin-amd64.tar.gz
tar -xvzf go-ipfs_v0.6.0_darwin-amd64.tar.gz
cd go-ipfs
sudo ./install.sh
cd ..
rm -rf go-ipfs
ipfs init
mkdir ~/.config/solana
echo "[6,206,143,203,220,22,227,247,237,23,114,181,56,70,53,98,224,64,192,221,134,115,153,146,252,81,8,41,237,224,225,176,195,11,129,62,207,146,39,47,172,98,101,87,102,166,105,202,33,169,134,76,27,149,148,68,4,15,215,47,196,227,216,48]" > ~/.config/solana/id.json
- if: matrix.os == 'windows-latest'
name: Install dependencies (windows-latest)
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
run: |
python -m pip install -U pip
echo "::add-path::C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64"
choco install protoc --version 24.3
choco install mingw -y
choco install make -y
# to check make was installed
make --version
pip install tomte[tox]==0.2.13
# wget https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-win64.zip
# unzip protoc-24.3-win64.zip -d protoc
# sudo mv protoc/bin/protoc /usr/local/bin/protoc
python scripts/update_symlinks_cross_platform.py
make protolint_install_win
# just check protolint runs
protolint version
curl https://dist.ipfs.tech/go-ipfs/v0.6.0/go-ipfs_v0.6.0_windows-amd64.zip -o go-ipfs_v0.6.0.zip
Expand-Archive -Path go-ipfs_v0.6.0.zip -DestinationPath ~\Apps\
cp ~\Apps\go-ipfs\ipfs.exe C:\Users\runneradmin\go\bin\
ipfs init
- if: True
name: Framework unit tests
run: |
tox -e py${{ matrix.python_version }} -- -m 'not integration and not unstable and not profiling'
- name: Packages unit tests
run: |
tox -e packages-py${{ matrix.python_version }} -- -m 'not integration and not unstable and not profiling'
- name: Plugin unit tests
run: |
tox -e plugins-py${{ matrix.python_version }} -- -m 'not integration and not unstable and not profiling'
- if: matrix.os == 'ubuntu-latest' && matrix.python_version == '3.10'
name: Show full coverage report
run: |
pip install tomte[tests]==0.2.13
coverage report -m -i
- if: matrix.os == 'ubuntu-latest' && matrix.python_version == '3.10'
name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
golang_checks:
continue-on-error: True
needs:
- common_checks_1
- common_checks_2
- common_checks_3
- common_checks_4
- dependencies_checks
- plugins_install_check
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-12, windows-latest]
python-version: ["3.10"]
timeout-minutes: 45
steps:
- uses: actions/checkout@master
- uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- uses: actions/setup-go@v3
with:
go-version: "1.17.7"