Fix version to v0.9.0 #342
This file contains hidden or 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: 'Tests' | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| linux: | |
| runs-on: ubuntu-24.04 | |
| name: linux (pytest) | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Determine monero submodule version | |
| run: git submodule status --recursive > .monero-submodule-version | |
| - name: Cache monero/monero-cpp build | |
| id: cache-monero | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| external/monero-cpp/external/monero-project/build | |
| external/monero-cpp/build | |
| key: monero-build-linux-${{ hashFiles('.monero-submodule-version') }} | |
| restore-keys: | | |
| monero-build-linux- | |
| - name: Install dependencies | |
| run: | | |
| sudo apt update | |
| sudo apt install -y build-essential cmake pkg-config libssl-dev libzmq3-dev libunbound-dev libsodium-dev libunwind8-dev liblzma-dev libreadline6-dev libexpat1-dev libpgm-dev qttools5-dev-tools libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler libudev-dev libboost-chrono-dev libboost-date-time-dev libboost-filesystem-dev libboost-locale-dev libboost-program-options-dev libboost-regex-dev libboost-serialization-dev libboost-system-dev libboost-thread-dev python3 ccache doxygen graphviz git curl autoconf libtool gperf nettle-dev libevent-dev debhelper python3-all python3-pip python3-pybind11 python3-pytest python3-pytest-rerunfailures python3-pytest-cov lcov python3-scikit-build-core | |
| pip3 install pybind11-stubgen pytest pyproject-metadata --break-system-packages | |
| - name: Install expat | |
| run: | | |
| wget https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.bz2 | |
| echo "45c98ae1e9b5127325d25186cf8c511fa814078e9efeae7987a574b482b79b3d expat-2.7.1.tar.bz2" | sha256sum -c | |
| tar -xf expat-2.7.1.tar.bz2 | |
| cd expat-2.7.1 | |
| ./configure --enable-static --disable-shared --with-pic | |
| make | |
| sudo make install | |
| cd ../ | |
| - name: Install unbound | |
| run: | | |
| wget https://www.nlnetlabs.nl/downloads/unbound/unbound-1.22.0.tar.gz | |
| echo "c5dd1bdef5d5685b2cedb749158dd152c52d44f65529a34ac15cd88d4b1b3d43 unbound-1.22.0.tar.gz" | sha256sum -c | |
| tar xzf unbound-1.22.0.tar.gz | |
| cd unbound-1.22.0 | |
| ./configure --with-libexpat=/usr/local --with-ssl=/usr --enable-static --disable-shared --with-pic | |
| make | |
| sudo make install | |
| cd ../ | |
| - name: Build monero | |
| if: steps.cache-monero.outputs.cache-hit != 'true' | |
| run: | | |
| cd external/monero-cpp/external/monero-project | |
| mkdir -p build/release | |
| cd build/release | |
| cmake -DSTATIC=ON -DBUILD_64=ON -DCMAKE_BUILD_TYPE=Release ../../ | |
| make -j3 wallet cryptonote_protocol | |
| cd ../../../../../../ | |
| - name: Build monero-cpp | |
| if: steps.cache-monero.outputs.cache-hit != 'true' | |
| run: | | |
| cd external/monero-cpp | |
| mkdir -p build | |
| cd build | |
| cmake .. -DENABLE_COVERAGE=ON | |
| cmake --build . | |
| make -j3 | |
| cd ../../../ | |
| - name: Install monero-python | |
| run: | | |
| mkdir -p build | |
| cmake -B build -DENABLE_COVERAGE=ON | |
| cmake --build build | |
| cp build/monero.cpython-312-x86_64-linux-gnu.so ~/.local/lib/python3.12/site-packages/ | |
| - name: Setup test environment | |
| run: | | |
| docker compose -f tests/docker-compose.yml up -d node_1 node_2 xmr_wallet_1 xmr_wallet_2 xmr_wallet_3 | |
| sleep 10 | |
| - name: Reset coverage counters | |
| run: | | |
| lcov --directory . --zerocounters | |
| - name: Run unit & integration tests | |
| env: | |
| IN_CONTAINER: "true" | |
| run: | | |
| pytest --cov=tests --cov-report=xml | |
| - name: Dump container logs | |
| if: always() | |
| run: | | |
| mkdir -p container-logs | |
| for svc in node_1 node_2 xmr_wallet_1 xmr_wallet_2 xmr_wallet_3; do | |
| docker compose -f tests/docker-compose.yml logs --no-color --timestamps "$svc" > "container-logs/$svc.log" 2>&1 || true | |
| done | |
| - name: Upload container logs | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: container-logs-linux | |
| path: container-logs/ | |
| - name: Cleanup test environment | |
| if: always() | |
| run: docker compose -f tests/docker-compose.yml down -v | |
| - name: Upload tests logs | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: test-logs | |
| path: monero_tests_*.log | |
| - name: Generate coverage report | |
| if: always() | |
| run: | | |
| lcov --capture --directory build --ignore-errors mismatch,mismatch,inconsistent,source,source,gcov,gcov --output-file coverage_full.info | |
| lcov --ignore-errors unused,unused --remove coverage_full.info '/usr/*' '*/external/*' '*/pybind11/*' '*monero-cpp/*' '*monero-project/*' --output-file coverage.info | |
| sed -i "s|$(pwd)/||g" coverage.info | |
| lcov --summary coverage.info | |
| - name: Generate monero-cpp coverage report | |
| if: always() | |
| run: | | |
| lcov --capture --directory external/monero-cpp/build --ignore-errors mismatch,mismatch,inconsistent,source,source,gcov,gcov --output-file coverage_monero_cpp_full.info | |
| lcov --ignore-errors unused,unused --extract coverage_monero_cpp_full.info '*/monero-cpp/src/*' --output-file coverage_monero_cpp.info | |
| sed -i "s|$(pwd)/||g" coverage_monero_cpp.info | |
| genhtml coverage_monero_cpp.info --output-directory coverage_monero_cpp_html --ignore-errors mismatch,inconsistent,source,corrupt --title "monero-cpp coverage @ ${GITHUB_SHA::7}" | |
| lcov --summary coverage_monero_cpp.info | |
| - name: Upload coverage report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-reports-linux | |
| path: | | |
| coverage.info | |
| coverage.xml | |
| coverage_monero_cpp.info | |
| coverage_monero_cpp_html/ | |
| windows: | |
| name: windows (pytest) | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Determine monero submodule version | |
| shell: bash | |
| run: git submodule status --recursive > .monero-submodule-version | |
| - name: Cache monero/monero-cpp build | |
| id: cache-monero | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| external/monero-cpp/external/monero-project/build | |
| external/monero-cpp/build | |
| key: monero-build-windows-${{ hashFiles('.monero-submodule-version') }} | |
| restore-keys: | | |
| monero-build-windows- | |
| - name: Setup Python 3.13 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.13' | |
| architecture: 'x64' | |
| - name: Install pytest and dependencies | |
| shell: bash | |
| run: | | |
| python -m pip install pytest pytest-rerunfailures typing_extensions scikit-build-core | |
| - name: Setup MSYS2 MINGW64 | |
| uses: msys2/setup-msys2@66cd2cce69caa17b53920067426061ca1de3a884 # v2.32.0 | |
| with: | |
| msystem: MINGW64 | |
| update: true | |
| install: >- | |
| mingw-w64-x86_64-toolchain | |
| mingw-w64-x86_64-cmake | |
| mingw-w64-x86_64-openssl | |
| mingw-w64-x86_64-zeromq | |
| mingw-w64-x86_64-libsodium | |
| mingw-w64-x86_64-hidapi | |
| mingw-w64-x86_64-unbound | |
| mingw-w64-x86_64-protobuf | |
| mingw-w64-x86_64-libusb | |
| mingw-w64-x86_64-ntldd | |
| git | |
| make | |
| gettext | |
| base-devel | |
| wget | |
| - name: Install ICU v75.1 | |
| run: | | |
| wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-icu-75.1-2-any.pkg.tar.zst | |
| echo "bf57882d43efcdfd746463613ea982c69b64aa4ba9bed4cb24c02a81ad06c3a9 mingw-w64-x86_64-icu-75.1-2-any.pkg.tar.zst" | sha256sum -c | |
| pacman -U --noconfirm mingw-w64-x86_64-icu-75.1-2-any.pkg.tar.zst | |
| - name: Install boost v1.87.0 | |
| run: | | |
| wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-boost-1.87.0-3-any.pkg.tar.zst | |
| echo "241919a5885a9270d0e0937e71cf5e146c2a8cabecc2714f09248350181cb1b6 mingw-w64-x86_64-boost-1.87.0-3-any.pkg.tar.zst" | sha256sum -c | |
| pacman -U --noconfirm mingw-w64-x86_64-boost-1.87.0-3-any.pkg.tar.zst | |
| - name: Install pybind11 v2.13.6 | |
| run: | | |
| wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-pybind11-2.13.6-2-any.pkg.tar.zst | |
| echo "5b56ad87bc544336b2d51edb8bb0614f46542571362daf4d7e53bf23120175a1 mingw-w64-x86_64-pybind11-2.13.6-2-any.pkg.tar.zst" | sha256sum -c | |
| pacman -U --noconfirm mingw-w64-x86_64-pybind11-2.13.6-2-any.pkg.tar.zst | |
| - name: Build monero | |
| if: steps.cache-monero.outputs.cache-hit != 'true' | |
| run: | | |
| cd external/monero-cpp/external/monero-project | |
| mkdir -p build/release | |
| cd build/release | |
| cmake -G "MSYS Makefiles" \ | |
| -D STATIC=ON \ | |
| -D ARCH="x86-64" \ | |
| -D BUILD_64=ON \ | |
| -D CMAKE_BUILD_TYPE=Release \ | |
| -D BUILD_TAG="win-x64" \ | |
| -D CMAKE_TOOLCHAIN_FILE="../../cmake/64-bit-toolchain.cmake" \ | |
| -D MSYS2_FOLDER=$(cd $MINGW_PREFIX/.. && pwd -W) \ | |
| ../../ | |
| make wallet cryptonote_protocol | |
| - name: Build monero-cpp | |
| if: steps.cache-monero.outputs.cache-hit != 'true' | |
| run: | | |
| cd external/monero-cpp | |
| mkdir -p build | |
| cd build | |
| cmake .. | |
| cmake --build . | |
| - name: Build monero-python | |
| run: | | |
| mkdir -p build | |
| cd build | |
| export WIN_PYTHON_EXE=$(cygpath -u "$pythonLocation/python.exe") | |
| cmake .. -DPython3_EXECUTABLE="$WIN_PYTHON_EXE" \ | |
| -DPython3_FIND_STRATEGY=LOCATION \ | |
| -DPython3_FIND_REGISTRY=NEVER | |
| cmake --build . | |
| mkdir -p ../dist | |
| cp *.pyd ../dist/monero.pyd | |
| cd ../dist | |
| ntldd -R *.pyd | grep mingw64 | awk '{print $3}' | while read -r line; do | |
| cp "$(cygpath -u "$line")" . | |
| done | |
| cd .. | |
| - name: Run unit tests | |
| shell: bash | |
| env: | |
| IN_CONTAINER: "true" | |
| PYTHONPATH: ${{ github.workspace }}/dist | |
| PATH: "${{ github.workspace }}/dist:/usr/bin:$PATH" | |
| run: | | |
| python -m pytest -m unit | |
| macos: | |
| name: ${{ matrix.os }} (pytest) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [macos-14, macos-15, macos-15-intel] | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Determine monero submodule version | |
| run: git submodule status --recursive > .monero-submodule-version | |
| - name: Cache monero/monero-cpp build | |
| id: cache-monero | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| external/monero-cpp/external/monero-project/build | |
| external/monero-cpp/build | |
| key: monero-build-macos-${{ matrix.os }}-${{ hashFiles('.monero-submodule-version') }} | |
| restore-keys: | | |
| monero-build-macos-${{ matrix.os }}- | |
| - name: Install dependencies | |
| run: | | |
| HOMEBREW_NO_AUTO_UPDATE=1 brew install python boost@1.85 hidapi openssl zmq libpgm miniupnpc expat libunwind-headers protobuf unbound | |
| brew unlink boost || true | |
| brew link boost@1.85 --force | |
| pip3 install pytest pytest-rerunfailures pytest-cov setuptools wheel scikit-build-core --break-system-packages | |
| - name: Install pybind11 v2.13.6 | |
| run: | | |
| pip3 install pybind11==2.13.6 pybind11-stubgen --break-system-packages | |
| - name: Build monero | |
| if: steps.cache-monero.outputs.cache-hit != 'true' | |
| run: | | |
| cd external/monero-cpp/external/monero-project | |
| mkdir -p build/release | |
| cd build/release | |
| cmake -DSTATIC=ON -DBUILD_64=ON -DCMAKE_BUILD_TYPE=Release ../../ | |
| make -j3 wallet cryptonote_protocol | |
| cd ../../../../../../ | |
| - name: Build monero-cpp | |
| if: steps.cache-monero.outputs.cache-hit != 'true' | |
| run: | | |
| cd external/monero-cpp | |
| mkdir -p build | |
| cd build | |
| cmake .. | |
| cmake --build . | |
| make -j3 | |
| cd ../../../ | |
| - name: Install monero-python | |
| run: | | |
| mkdir -p build | |
| pip3 install --no-build-isolation -vvv . --break-system-packages | |
| - name: Run unit tests | |
| run: | | |
| pytest -m unit |