Merge pull request #736 from kongzii/peter/relax #2699
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: 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-latest, 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-latest, 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-latest, 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-latest' | |
name: Install dependencies (macos-latest) | |
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-latest, 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" |