From: gg Date: Fri, 16 Jan 2026 23:42:48 +0000 (-0500) Subject: ci: speed up mac build; remove others/overkill X-Git-Url: https://git.nutra.tk/v1?a=commitdiff_plain;h=refs%2Fpull%2F1%2Fhead;p=gamesguru%2Ffeather.git ci: speed up mac build; remove others/overkill --- diff --git a/.github/workflows/build-mac.yml b/.github/workflows/build-mac.yml index 4be04387..0d629156 100644 --- a/.github/workflows/build-mac.yml +++ b/.github/workflows/build-mac.yml @@ -8,28 +8,55 @@ on: jobs: build-macos: - name: "macOS (brew)" - # Disabled due to 6 hour timeout. Need to find a way to speed it up. - if: false - runs-on: macos-latest + name: "macOS (Apple Silicon)" + # Enable the job + if: true + # UTTERLY CRITICAL: Use M1/M2 runners (macos-14). + # This reduces compile time from >6h to ~1.5h. + runs-on: macos-14 + env: CCACHE_DIR: /Users/runner/Library/Caches/ccache + CCACHE_COMPILERCHECK: content + CCACHE_MAXSIZE: 1G HOMEBREW_NO_AUTO_UPDATE: 1 + steps: - uses: actions/checkout@v4 with: submodules: recursive - - name: install dependencies + + - name: Install dependencies run: | brew install --quiet qt libsodium libzip qrencode unbound cmake boost hidapi openssl expat protobuf pkg-config ccache ninja + - name: Setup ccache uses: actions/cache@v4 with: path: ${{ env.CCACHE_DIR }} - key: macos-ccache-${{ github.sha }} + # Use a simpler key so it matches easily. + # We rely on ccache's internal hashing, not the git SHA. + key: macos-ccache-v1-${{ github.ref_name }} restore-keys: | - macos-ccache- - - name: build + macos-ccache-v1- + + - name: Configure run: | - cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DWITH_SCANNER=Off -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - cmake --build build + # Configure for Release. + # Note: This produces an arm64 binary. + cmake -G Ninja -S . -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DWITH_SCANNER=Off \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + + - name: Build Monero Libs (Cache Primer) + # We build the heavy libs first. If this passes but the next step fails/times out, + # ccache will still have these objects for the next run. + run: cmake --build build --target wallet_api + + - name: Build Feather + run: cmake --build build + + - name: Show ccache stats + # Useful to verify you are actually getting hits + run: ccache -s diff --git a/.github/workflows/guix.yml b/.github/workflows/guix.yml deleted file mode 100644 index 90dd2579..00000000 --- a/.github/workflows/guix.yml +++ /dev/null @@ -1,160 +0,0 @@ -name: ci/gh-actions/guix - -on: - push: - tags: - - "guix-2.8.1-*" - -jobs: - cache-sources: - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: depends sources cache - id: cache - uses: actions/cache@v4 - with: - path: contrib/depends/sources - key: sources-${{ hashFiles('contrib/depends/packages/*') }} - - name: download depends sources - if: steps.cache.outputs.cache-hit != 'true' - run: make -C contrib/depends download - - build-guix: - runs-on: ubuntu-24.04 - needs: [cache-sources] - strategy: - fail-fast: false - matrix: - toolchain: - - target: "x86_64-linux-gnu" - - target: "x86_64-linux-gnu.no-tor-bundle" - - target: "x86_64-linux-gnu.pack" - - target: "aarch64-linux-gnu" - - target: "riscv64-linux-gnu" - - target: "x86_64-w64-mingw32" - - target: "x86_64-w64-mingw32.installer" - - target: "x86_64-apple-darwin" - - target: "arm64-apple-darwin" - - outputs: - WIN_INSTALLER_ARTIFACT_ID: ${{ steps.win-installer.outputs.WIN_INSTALLER_ARTIFACT_ID }} - WIN_EXECUTABLE_ARTIFACT_ID: ${{ steps.win-executable.outputs.WIN_EXECUTABLE_ARTIFACT_ID }} - name: ${{ matrix.toolchain.target }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - ref: ${{ github.ref }} - submodules: recursive - # https://github.com/actions/checkout/issues/1467 - - name: git fetch tags - run: git fetch --tags - - name: remove bundled packages - run: sudo rm -rf /usr/local - - name: depends sources cache - uses: actions/cache/restore@v4 - with: - path: contrib/depends/sources - key: sources-${{ hashFiles('contrib/depends/packages/*') }} - - name: install dependencies - run: sudo apt update; sudo apt -y install guix git ca-certificates apparmor-utils osslsigncode - - name: apparmor workaround - # https://bugs.launchpad.net/ubuntu/+source/guix/+bug/2064115 - run: | - sudo tee /etc/apparmor.d/guix << EOF - abi , - include - profile guix /usr/bin/guix flags=(unconfined) { - userns, - include if exists - } - EOF - sudo /etc/init.d/apparmor reload - sudo aa-enforce guix || true - sudo apt -y purge apparmor - - name: build - run: ADDITIONAL_GUIX_TIMEMACHINE_FLAGS="--disable-authentication" SUBSTITUTE_URLS='http://bordeaux.guix.gnu.org' HOSTS="${{ matrix.toolchain.target }}" ./contrib/guix/guix-build - - name: virustotal scan - env: - VT_API_KEY: ${{ secrets.VT_API_KEY }} - if: ${{ matrix.toolchain.target == 'x86_64-w64-mingw32' && env.VT_API_KEY != '' }} - uses: crazy-max/ghaction-virustotal@v4 - with: - vt_api_key: ${{ secrets.VT_API_KEY }} - files: | - guix/guix-build-*/build/distsrc-*/build/bin/feather.exe - - uses: actions/upload-artifact@v4 - id: upload-artifact - with: - name: ${{ matrix.toolchain.target }} - path: | - guix/guix-build-*/output/${{ matrix.toolchain.target }}/* - guix/guix-build-*/logs/${{ matrix.toolchain.target }}/* - - if: ${{ matrix.toolchain.target == 'x86_64-w64-mingw32.installer' }} - id: win-installer - run: echo "WIN_INSTALLER_ARTIFACT_ID=${{ steps.upload-artifact.outputs.artifact-id }}" >> "$GITHUB_OUTPUT" - - if: ${{ matrix.toolchain.target == 'x86_64-w64-mingw32' }} - id: win-executable - run: echo "WIN_EXECUTABLE_ARTIFACT_ID=${{ steps.upload-artifact.outputs.artifact-id }}" >> "$GITHUB_OUTPUT" - - bundle-logs: - runs-on: ubuntu-24.04 - needs: [build-guix] - steps: - - uses: actions/download-artifact@v4 - with: - merge-multiple: true - - name: print hashes - run: | - echo '```' >> $GITHUB_STEP_SUMMARY - uname --machine && find **/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - - uses: actions/upload-artifact@v4 - with: - name: "logs" - path: "**/logs/**" - - codesigning: - runs-on: ubuntu-24.04 - needs: [build-guix, bundle-logs] - if: startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-rc') - strategy: - fail-fast: false - matrix: - toolchain: - - target: "x86_64-w64-mingw32" - - target: "x86_64-w64-mingw32.installer" - steps: - - name: install dependencies - run: sudo apt update; sudo apt -y install osslsigncode - - name: "set artifact id" - run: | - if [ "${{ matrix.toolchain.target }}" == "x86_64-w64-mingw32" ]; then - echo "ARTIFACT_ID=${{ needs.build-guix.outputs.WIN_EXECUTABLE_ARTIFACT_ID }}" >> $GITHUB_ENV - echo "ARTIFACT_SLUG=executable" >> $GITHUB_ENV - elif [ "${{ matrix.toolchain.target }}" == "x86_64-w64-mingw32.installer" ]; then - echo "ARTIFACT_ID=${{ needs.build-guix.outputs.WIN_INSTALLER_ARTIFACT_ID }}" >> $GITHUB_ENV - echo "ARTIFACT_SLUG=installer" >> $GITHUB_ENV - fi - - uses: signpath/github-action-submit-signing-request@v1 - name: "request signature" - with: - api-token: "${{ secrets.SIGNPATH_API_KEY }}" - organization-id: "d3e94749-9c69-44e9-82de-c65cb3832869" - project-slug: "feather" - signing-policy-slug: "release-signing" - artifact-configuration-slug: ${{ env.ARTIFACT_SLUG }} - github-artifact-id: ${{ env.ARTIFACT_ID }} - wait-for-completion: true - output-artifact-directory: codesigning/ - - name: "extract signature" - run: osslsigncode extract-signature -in codesigning/guix-build-*/output/${{ matrix.toolchain.target }}/*.exe -out codesigning/${{ matrix.toolchain.target }}.pem - - uses: actions/upload-artifact@v4 - name: "upload signature" - with: - name: ${{ matrix.toolchain.target }}.pem - path: | - codesigning/${{ matrix.toolchain.target }}.pem diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml deleted file mode 100644 index 7fbddf40..00000000 --- a/.github/workflows/linux.yml +++ /dev/null @@ -1,100 +0,0 @@ -name: Linux CI - -on: - push: - tags: - - "linux-2.8.1-*" - - "ubuntu-2.8.1-*" - -jobs: - build: - name: ${{ matrix.distro }} - runs-on: ${{ matrix.runs_on }} - container: ${{ matrix.container }} - strategy: - fail-fast: false - matrix: - include: - - distro: ubuntu-24.04 - runs_on: ubuntu-24.04 - container: - install_cmd: | - export DEBIAN_FRONTEND=noninteractive - sudo apt update - sudo apt -y install git cmake build-essential ccache ninja-build libssl-dev libunbound-dev libboost-all-dev \ - libqrencode-dev qt6-base-dev qt6-svg-dev qt6-websockets-dev qt6-multimedia-dev \ - qt6-wayland-dev libzip-dev libsodium-dev libgcrypt20-dev libx11-xcb-dev \ - protobuf-compiler libprotobuf-dev libhidapi-dev libzxing-dev libusb-dev \ - libusb-1.0-0-dev pkg-config - - distro: ubuntu-22.04 - runs_on: ubuntu-22.04 - container: - install_cmd: | - export DEBIAN_FRONTEND=noninteractive - sudo apt update - sudo apt -y install git cmake build-essential ccache ninja-build libssl-dev libunbound-dev libboost-all-dev \ - libqrencode-dev qt6-base-dev qt6-svg-dev qt6-websockets-dev qt6-multimedia-dev \ - qt6-wayland-dev libzip-dev libsodium-dev libgcrypt20-dev libx11-xcb-dev \ - protobuf-compiler libprotobuf-dev libhidapi-dev libzxing-dev libusb-dev \ - libusb-1.0-0-dev pkg-config - - distro: ubuntu-20.04 - runs_on: ubuntu-22.04 # 20.04 runner deprecated/slow, run in container on 22.04 - container: ubuntu:20.04 - install_cmd: | - export DEBIAN_FRONTEND=noninteractive - apt update - apt -y install software-properties-common - add-apt-repository -y ppa:okirby/qt6-backports - apt update - apt -y install git cmake build-essential ccache ninja-build libssl-dev libunbound-dev libboost-all-dev \ - libqrencode-dev qt6-base-dev qt6-svg-dev qt6-websockets-dev qt6-multimedia-dev \ - qt6-wayland-dev libzip-dev libsodium-dev libgcrypt20-dev libx11-xcb-dev \ - protobuf-compiler libprotobuf-dev libhidapi-dev libzxing-dev libusb-dev \ - libusb-1.0-0-dev pkg-config - - distro: fedora-latest - runs_on: ubuntu-latest - container: fedora:latest - install_cmd: | - dnf -y update - dnf -y install git cmake make gcc-c++ ccache ninja-build openssl-devel libunbound-devel boost-devel \ - qrencode-devel qt6-qtbase-devel qt6-qtsvg-devel qt6-qtwebsockets-devel \ - qt6-qtmultimedia-devel qt6-qtwayland-devel libzip-devel libsodium-devel \ - libgcrypt-devel libxcb-devel protobuf-compiler protobuf-devel hidapi-devel \ - zxing-cpp-devel libusb1-devel systemd-devel - - distro: archlinux-latest - runs_on: ubuntu-latest - container: archlinux:latest - install_cmd: | - pacman -Syu --noconfirm - pacman -S --noconfirm git cmake base-devel ccache ninja openssl libunbound boost qrencode \ - qt6-base qt6-svg qt6-websockets qt6-multimedia qt6-wayland \ - libzip libsodium libgcrypt libxcb protobuf hidapi zxing-cpp libusb - - env: - CCACHE_DIR: /github/home/.ccache - - steps: - - name: Install dependencies - run: ${{ matrix.install_cmd }} - - - name: Checkout repository - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup ccache - uses: actions/cache@v4 - with: - path: ${{ env.CCACHE_DIR }} - key: ${{ matrix.distro }}-ccache-${{ github.sha }} - restore-keys: | - ${{ matrix.distro }}-ccache- - - - name: Configure CMake - run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - - - name: Build - run: cmake --build build - - - name: Validate Version - run: ./build/bin/feather --version | grep "Feather Wallet" diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml deleted file mode 100644 index ad90ce61..00000000 --- a/.github/workflows/mac.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: macOS CI - -on: - push: - tags: - - "macos-2.8.1-*" - -jobs: - build: - name: macOS (brew) - runs-on: macos-latest - env: - CCACHE_DIR: /Users/runner/Library/Caches/ccache - HOMEBREW_NO_AUTO_UPDATE: 1 - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install dependencies - run: | - brew install --quiet qt libsodium libzip qrencode unbound cmake boost hidapi openssl expat protobuf pkg-config ccache ninja - - - name: Setup ccache - uses: actions/cache@v4 - with: - path: ${{ env.CCACHE_DIR }} - key: macos-ccache-${{ github.sha }} - restore-keys: | - macos-ccache- - - - name: Configure CMake - run: cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DWITH_SCANNER=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - - - name: Build - run: cmake --build build - - - name: Validate Version - run: ./build/bin/feather.app/Contents/MacOS/feather --version diff --git a/.github/workflows/win.yml b/.github/workflows/win.yml index ae9a9191..f83793be 100644 --- a/.github/workflows/win.yml +++ b/.github/workflows/win.yml @@ -1,3 +1,4 @@ +--- name: Windows CI on: