carrot_impl review #1400
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: ci/gh-actions/cli | |
| on: | |
| push: | |
| paths-ignore: | |
| - 'docs/**' | |
| - '**/README.md' | |
| pull_request: | |
| paths-ignore: | |
| - 'docs/**' | |
| - '**/README.md' | |
| # The below variables reduce repetitions across similar targets | |
| env: | |
| REMOVE_BUNDLED_PACKAGES : sudo rm -rf /usr/local | |
| # ARCH="default" (not "native") ensures, that a different execution host can execute binaries compiled elsewhere. | |
| BUILD_DEFAULT: 'cmake -S . -B build -D ARCH="default" -D BUILD_TESTS=ON -D ENABLE_FUZZ_TEST=ON -D CMAKE_BUILD_TYPE=Release && cmake --build build --target all && cmake --build build --target wallet_api' | |
| APT_INSTALL_LINUX: 'apt -y install build-essential cmake libboost-all-dev libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler ccache curl git' | |
| APT_SET_CONF: | | |
| tee -a /etc/apt/apt.conf.d/80-custom << EOF | |
| Acquire::Retries "3"; | |
| Acquire::http::Timeout "120"; | |
| Acquire::ftp::Timeout "120"; | |
| EOF | |
| CCACHE_SETTINGS: | | |
| ccache --max-size=150M | |
| USE_DEVICE_TREZOR_MANDATORY: ON | |
| INSTALL_RUST: | | |
| curl -O https://static.rust-lang.org/rustup/archive/1.29.0/x86_64-unknown-linux-gnu/rustup-init | |
| echo "4acc9acc76d5079515b46346a485974457b5a79893cfb01112423c89aeb5aa10 rustup-init" | sha256sum -c | |
| chmod +x rustup-init | |
| ./rustup-init -y --default-toolchain 1.93 | |
| echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
| jobs: | |
| build-macos: | |
| name: 'macOS (brew)' | |
| runs-on: macOS-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: restore ccache | |
| uses: actions/cache/restore@v5 | |
| id: ccache-restore | |
| with: | |
| path: /Users/runner/Library/Caches/ccache | |
| key: ccache-${{ runner.os }}-build-${{ github.sha }} | |
| restore-keys: ccache-${{ runner.os }}-build- | |
| - uses: ./.github/actions/set-make-job-count | |
| - name: install dependencies | |
| run: | | |
| brew uninstall cmake | |
| brew update | |
| brew install --quiet cmake boost hidapi openssl zmq unbound libunwind-headers protobuf ccache | |
| - name: build | |
| env: | |
| CMAKE_BUILD_PARALLEL_LEVEL: ${{env.MAKE_JOB_COUNT}} | |
| run: | | |
| ${{env.CCACHE_SETTINGS}} | |
| ${{env.BUILD_DEFAULT}} | |
| - name: save ccache | |
| uses: actions/cache/save@v5 | |
| if: github.event_name != 'pull_request' && steps.ccache-restore.outputs.cache-hit != 'true' | |
| with: | |
| path: /Users/runner/Library/Caches/ccache | |
| key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
| build-windows: | |
| name: 'Windows (MSYS2)' | |
| runs-on: windows-latest | |
| defaults: | |
| run: | |
| shell: msys2 {0} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: restore ccache | |
| uses: actions/cache/restore@v5 | |
| id: ccache-restore | |
| with: | |
| path: C:\Users\runneradmin\AppData\Local\ccache | |
| key: ccache-${{ runner.os }}-build-${{ github.sha }} | |
| restore-keys: ccache-${{ runner.os }}-build- | |
| - uses: msys2/setup-msys2@v2 | |
| with: | |
| update: true | |
| cache: false | |
| install: mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-ccache mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf mingw-w64-x86_64-libusb mingw-w64-x86_64-unbound mingw-w64-x86_64-rust git pkg-config | |
| - uses: ./.github/actions/set-make-job-count | |
| - name: build | |
| env: | |
| CMAKE_BUILD_PARALLEL_LEVEL: ${{env.MAKE_JOB_COUNT}} | |
| run: | | |
| ${{env.CCACHE_SETTINGS}} | |
| ${{env.BUILD_DEFAULT}} | |
| - name: save ccache | |
| uses: actions/cache/save@v5 | |
| if: github.event_name != 'pull_request' && steps.ccache-restore.outputs.cache-hit != 'true' | |
| with: | |
| path: C:\Users\runneradmin\AppData\Local\ccache | |
| key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
| build-arch: | |
| name: 'Arch Linux' | |
| runs-on: ubuntu-latest | |
| container: | |
| image: archlinux:latest | |
| steps: | |
| - name: install dependencies | |
| run: pacman -Syyu --noconfirm base-devel git rust cmake boost boost-libs openssl zeromq unbound libsodium readline expat gtest python3 doxygen graphviz hidapi libusb protobuf ccache | |
| - name: configure git | |
| run: git config --global --add safe.directory '*' | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: restore ccache | |
| uses: actions/cache/restore@v5 | |
| id: ccache-restore | |
| with: | |
| path: ~/.cache/ccache | |
| key: ccache-arch-build-${{ github.sha }} | |
| restore-keys: ccache-arch-build- | |
| - uses: ./.github/actions/set-make-job-count | |
| - name: build | |
| env: | |
| CMAKE_BUILD_PARALLEL_LEVEL: ${{env.MAKE_JOB_COUNT}} | |
| run: | | |
| ${{ env.CCACHE_SETTINGS }} | |
| ${{ env.BUILD_DEFAULT }} | |
| - name: save ccache | |
| uses: actions/cache/save@v5 | |
| if: github.event_name != 'pull_request' && steps.ccache-restore.outputs.cache-hit != 'true' | |
| with: | |
| path: ~/.cache/ccache | |
| key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
| build-debian: | |
| # Oldest supported Debian version | |
| name: 'Debian 11' | |
| runs-on: ubuntu-latest | |
| container: | |
| image: debian:11 | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| steps: | |
| - name: set apt conf | |
| run: ${{env.APT_SET_CONF}} | |
| - name: update apt | |
| run: apt update | |
| - name: install monero dependencies | |
| run: ${{env.APT_INSTALL_LINUX}} | |
| - name: install rust | |
| run: ${{env.INSTALL_RUST}} | |
| - name: configure git | |
| run: git config --global --add safe.directory '*' | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: restore ccache | |
| uses: actions/cache/restore@v5 | |
| id: ccache-restore | |
| with: | |
| path: ~/.cache/ccache | |
| key: ccache-debian-11-build-${{ github.sha }} | |
| restore-keys: ccache-debian-11-build- | |
| - uses: ./.github/actions/set-make-job-count | |
| - name: build | |
| env: | |
| CMAKE_BUILD_PARALLEL_LEVEL: ${{env.MAKE_JOB_COUNT}} | |
| run: | | |
| ${{ env.CCACHE_SETTINGS }} | |
| ${{ env.BUILD_DEFAULT }} | |
| - name: save ccache | |
| uses: actions/cache/save@v5 | |
| if: github.event_name != 'pull_request' && steps.ccache-restore.outputs.cache-hit != 'true' | |
| with: | |
| path: ~/.cache/ccache | |
| key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
| build-ubuntu: | |
| name: ${{ matrix.name }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Most popular Ubuntu LTS version | |
| - name: Ubuntu 24.04 | |
| container: ubuntu:24.04 | |
| container: | |
| image: ${{ matrix.container }} | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| steps: | |
| - name: set apt conf | |
| run: ${{env.APT_SET_CONF}} | |
| - name: update apt | |
| run: apt update | |
| - name: install monero dependencies | |
| run: ${{env.APT_INSTALL_LINUX}} | |
| - name: install rust | |
| run: ${{env.INSTALL_RUST}} | |
| - name: configure git | |
| run: git config --global --add safe.directory '*' | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: restore ccache | |
| uses: actions/cache/restore@v5 | |
| id: ccache-restore | |
| with: | |
| path: ~/.cache/ccache | |
| key: ccache-${{ matrix.container }}-build-${{ github.sha }} | |
| restore-keys: ccache-${{ matrix.container }}-build- | |
| - uses: ./.github/actions/set-make-job-count | |
| - name: build | |
| env: | |
| CMAKE_BUILD_PARALLEL_LEVEL: ${{env.MAKE_JOB_COUNT}} | |
| run: | | |
| ${{env.CCACHE_SETTINGS}} | |
| ${{env.BUILD_DEFAULT}} | |
| - name: save ccache | |
| uses: actions/cache/save@v5 | |
| if: github.event_name != 'pull_request' && steps.ccache-restore.outputs.cache-hit != 'true' | |
| with: | |
| path: ~/.cache/ccache | |
| key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
| test-ubuntu: | |
| name: "${{ matrix.name }} (tests)" | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| include: | |
| # Oldest supported Ubuntu LTS version | |
| - name: Ubuntu 22.04 | |
| container: ubuntu:22.04 | |
| container: | |
| image: ${{ matrix.container }} | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| # Setting up a loop device (losetup) requires additional capabilities. | |
| # tests/create_test_disks.sh | |
| options: --privileged | |
| steps: | |
| - name: set apt conf | |
| run: ${{env.APT_SET_CONF}} | |
| - name: update apt | |
| run: apt update | |
| - name: install monero dependencies | |
| run: ${{env.APT_INSTALL_LINUX}} | |
| - name: install rust | |
| run: ${{env.INSTALL_RUST}} | |
| - name: install pip | |
| run: apt install -y python3-pip | |
| - name: install Python dependencies | |
| run: pip install requests psutil monotonic zmq deepdiff | |
| - name: configure git | |
| run: git config --global --add safe.directory '*' | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: restore ccache | |
| uses: actions/cache/restore@v5 | |
| id: ccache-restore | |
| with: | |
| path: ~/.cache/ccache | |
| key: ccache-${{ matrix.container }}-build-${{ github.sha }} | |
| restore-keys: ccache-${{ matrix.container }}-build- | |
| - name: create dummy disk drives for testing | |
| run: tests/create_test_disks.sh >> $GITHUB_ENV | |
| - uses: ./.github/actions/set-make-job-count | |
| - name: tests | |
| env: | |
| CTEST_OUTPUT_ON_FAILURE: ON | |
| DNS_PUBLIC: tcp://9.9.9.9 | |
| CMAKE_BUILD_PARALLEL_LEVEL: ${{env.MAKE_JOB_COUNT}} | |
| run: | | |
| ${{env.CCACHE_SETTINGS}} | |
| ${{env.BUILD_DEFAULT}} | |
| cmake --build build --target test | |
| - name: save ccache | |
| uses: actions/cache/save@v5 | |
| if: github.event_name != 'pull_request' && steps.ccache-restore.outputs.cache-hit != 'true' | |
| with: | |
| path: ~/.cache/ccache | |
| key: ${{ steps.ccache-restore.outputs.cache-primary-key }} | |
| build-docker: | |
| name: 'Docker' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - name: build image | |
| run: docker build . | |
| source-archive: | |
| name: "source archive" | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ubuntu:22.04 | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| steps: | |
| - name: set apt conf | |
| run: ${{env.APT_SET_CONF}} | |
| - name: update apt | |
| run: apt update | |
| - name: install dependencies | |
| run: apt install -y git python3-pip | |
| - name: configure git | |
| run: git config --global --add safe.directory '*' | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| submodules: recursive | |
| - name: archive | |
| run: | | |
| pip install git-archive-all | |
| export VERSION="monero-$(git describe)" | |
| export OUTPUT="$VERSION.tar" | |
| echo "OUTPUT=$OUTPUT" >> $GITHUB_ENV | |
| git-archive-all --prefix "$VERSION/" --force-submodules "$OUTPUT" | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: ${{ env.OUTPUT }} | |
| path: ${{ env.OUTPUT }} |