From 06208221de515e75136c882b97dc7623487d17c8 Mon Sep 17 00:00:00 2001 From: cyan Date: Wed, 14 Aug 2024 13:41:11 +0200 Subject: fix cakewallet ci (#30) --- .github/workflows/cake_wallet.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cake_wallet.yaml b/.github/workflows/cake_wallet.yaml index 9ca355a..987a7cc 100644 --- a/.github/workflows/cake_wallet.yaml +++ b/.github/workflows/cake_wallet.yaml @@ -177,7 +177,7 @@ jobs: - name: Rename app run: | - echo -e "id=com.cakewallet.moneroc_${{ env.PR_NUMBER }}\nname=${{ github.ref_name }}" | tr '/-' '_' > /opt/android/cake_wallet/android/app.properties + echo -e "id=com.cakewallet.moneroc_${{ env.PR_NUMBER }}\nname=${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9=\n.]//g' > /opt/android/cake_wallet/android/app.properties - name: Build run: | @@ -188,7 +188,7 @@ jobs: run: | cd /opt/android/cake_wallet/build/app/outputs/flutter-apk mkdir test-apk - cp app-arm64-v8a-release.apk "test-apk/$(echo ${{ github.ref_name }} | tr '/-' '_').apk" + cp app-arm64-v8a-release.apk "test-apk/$(echo ${{ github.ref_name }} | sed 's/[^a-zA-Z0-9]//g').apk" - name: Upload Artifact uses: kittaakos/upload-artifact-as-is@v0 -- cgit v1.2.3 From cfc9fc2d7a2330873ff5f49416dac866fad08c27 Mon Sep 17 00:00:00 2001 From: cyan Date: Wed, 14 Aug 2024 16:49:49 +0200 Subject: new ci scripts (#37) --- .github/workflows/cake_wallet.yaml | 249 ------------ .github/workflows/compat.yaml | 521 -------------------------- .github/workflows/full_check.yaml | 749 +++++++++++++++++++++++++++++++++++++ .github/workflows/xmruw.yaml | 106 ------ 4 files changed, 749 insertions(+), 876 deletions(-) delete mode 100644 .github/workflows/cake_wallet.yaml delete mode 100644 .github/workflows/compat.yaml create mode 100644 .github/workflows/full_check.yaml delete mode 100644 .github/workflows/xmruw.yaml diff --git a/.github/workflows/cake_wallet.yaml b/.github/workflows/cake_wallet.yaml deleted file mode 100644 index 987a7cc..0000000 --- a/.github/workflows/cake_wallet.yaml +++ /dev/null @@ -1,249 +0,0 @@ -name: Build cake_wallet for android -on: [push] -permissions: - issues: write - pull-requests: write - -jobs: - cake_wallet: - runs-on: ubuntu-20.04 - env: - STORE_PASS: test@cake_wallet - KEY_PASS: test@cake_wallet - PR_NUMBER: ${{ github.ref_name }} - - steps: - - name: set branch name - run: echo "BRANCH_NAME=${{ github.ref_name }}" >> $GITHUB_ENV - - - uses: actions/checkout@v4 - with: - repository: MrCyjaneK/monero_c - fetch-depth: 0 - submodules: recursive - - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh monero - ./apply_patches.sh wownero - - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-monero - - - name: Cache built - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/cache@v4 - with: - path: | - */contrib/depends/built/* - key: depends-${{ github.job }}-monero-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - - - name: build monero_c - run: | - ./build_single.sh monero aarch64-linux-android -j$(nproc) - ./build_single.sh wownero aarch64-linux-android -j$(nproc) - unxz -f -k release/*/*.xz - mv release /opt/monero_c_release - - - name: Free Disk Space (Ubuntu) - uses: insightsengineering/disk-space-reclaimer@v1 - with: - tools-cache: true - android: false - dotnet: true - haskell: true - large-packages: true - swap-storage: true - docker-images: true - - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: "17.x" - - name: Configure placeholder git details - run: | - git config --global user.email "CI@cakewallet.com" - git config --global user.name "Cake Github Actions" - - name: Flutter action - uses: subosito/flutter-action@v2 - with: - flutter-version: "3.19.6" - channel: stable - - - name: Install package dependencies - run: sudo apt-get install -y curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake clang - - - name: Execute Build and Setup Commands - run: | - sudo mkdir -p /opt/android - sudo chown $USER /opt/android - cd /opt/android - -y curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - cargo install cargo-ndk - git clone https://github.com/cake-tech/cake_wallet.git --branch main --depth=1 - cd cake_wallet/scripts/android/ - ./install_ndk.sh - source ./app_env.sh cakewallet - chmod +x pubspec_gen.sh - ./app_config.sh - mkdir -p /opt/android/cake_wallet/scripts/monero_c - mv /opt/monero_c_release /opt/android/cake_wallet/scripts/monero_c/release - - - name: Install Flutter dependencies - run: | - cd /opt/android/cake_wallet - flutter pub get - - - name: Generate KeyStore - run: | - cd /opt/android/cake_wallet/android/app - keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias testKey -noprompt -dname "CN=CakeWallet, OU=CakeWallet, O=CakeWallet, L=Florida, S=America, C=USA" -storepass $STORE_PASS -keypass $KEY_PASS - - - name: Generate key properties - run: | - cd /opt/android/cake_wallet - flutter packages pub run tool/generate_android_key_properties.dart keyAlias=testKey storeFile=key.jks storePassword=$STORE_PASS keyPassword=$KEY_PASS - - - name: Generate localization - run: | - cd /opt/android/cake_wallet - flutter packages pub run tool/generate_localization.dart - - - name: Build generated code - run: | - cd /opt/android/cake_wallet - ./model_generator.sh - - - name: Add secrets - run: | - cd /opt/android/cake_wallet - touch lib/.secrets.g.dart - touch cw_evm/lib/.secrets.g.dart - touch cw_solana/lib/.secrets.g.dart - touch cw_core/lib/.secrets.g.dart - touch cw_nano/lib/.secrets.g.dart - touch cw_tron/lib/.secrets.g.dart - echo "const salt = 'd551f8841584b0ce37edf6fd59177d35';" > lib/.secrets.g.dart - echo "const keychainSalt = '34c626b6a4f8cb6789897c09';" >> lib/.secrets.g.dart - echo "const key = 'd8ab7230137ebadeb1c4e429395eced1';" >> lib/.secrets.g.dart - echo "const walletSalt = 'a9a49562';" >> lib/.secrets.g.dart - echo "const shortKey = 'c1b21c5050527842350dc8f5';" >> lib/.secrets.g.dart - echo "const backupSalt = 'b3e42404f90ca8e8';" >> lib/.secrets.g.dart - echo "const backupKeychainSalt = '9e0f3c4d347bc99509695a86';" >> lib/.secrets.g.dart - echo "const changeNowApiKey = '';" >> lib/.secrets.g.dart - echo "const changeNowApiKeyDesktop = '';" >> lib/.secrets.g.dart - echo "const wyreSecretKey = '';" >> lib/.secrets.g.dart - echo "const wyreApiKey = '';" >> lib/.secrets.g.dart - echo "const wyreAccountId = '';" >> lib/.secrets.g.dart - echo "const moonPayApiKey = '';" >> lib/.secrets.g.dart - echo "const moonPaySecretKey = '';" >> lib/.secrets.g.dart - echo "const sideShiftAffiliateId = '';" >> lib/.secrets.g.dart - echo "const simpleSwapApiKey = '';" >> lib/.secrets.g.dart - echo "const simpleSwapApiKeyDesktop = '';" >> lib/.secrets.g.dart - echo "const onramperApiKey = '';" >> lib/.secrets.g.dart - echo "const anypayToken = '';" >> lib/.secrets.g.dart - echo "const ioniaClientId = '';" >> lib/.secrets.g.dart - echo "const twitterBearerToken = '';" >> lib/.secrets.g.dart - echo "const trocadorApiKey = '';" >> lib/.secrets.g.dart - echo "const trocadorExchangeMarkup = '';" >> lib/.secrets.g.dart - echo "const anonPayReferralCode = '';" >> lib/.secrets.g.dart - echo "const fiatApiKey = '';" >> lib/.secrets.g.dart - echo "const payfuraApiKey = '';" >> lib/.secrets.g.dart - echo "const ankrApiKey = '';" >> lib/.secrets.g.dart - echo "const etherScanApiKey = '';" >> cw_evm/lib/.secrets.g.dart - echo "const moralisApiKey = '';" >> cw_evm/lib/.secrets.g.dart - echo "const chatwootWebsiteToken = '';" >> lib/.secrets.g.dart - echo "const exolixApiKey = '';" >> lib/.secrets.g.dart - echo "const robinhoodApplicationId = '';" >> lib/.secrets.g.dart - echo "const exchangeHelperApiKey = '';" >> lib/.secrets.g.dart - echo "const walletConnectProjectId = '';" >> lib/.secrets.g.dart - echo "const moralisApiKey = '';" >> lib/.secrets.g.dart - echo "const polygonScanApiKey = '';" >> cw_evm/lib/.secrets.g.dart - echo "const ankrApiKey = '';" >> cw_solana/lib/.secrets.g.dart - echo "const testCakePayApiKey = '';" >> lib/.secrets.g.dart - echo "const cakePayApiKey = '';" >> lib/.secrets.g.dart - echo "const authorization = '';" >> lib/.secrets.g.dart - echo "const CSRFToken = '';" >> lib/.secrets.g.dart - echo "const quantexExchangeMarkup = '';" >> lib/.secrets.g.dart - echo "const nano2ApiKey = '';" >> cw_nano/lib/.secrets.g.dart - echo "const nanoNowNodesApiKey = '';" >> cw_nano/lib/.secrets.g.dart - echo "const tronGridApiKey = '';" >> cw_tron/lib/.secrets.g.dart - echo "const tronNowNodesApiKey = '';" >> cw_tron/lib/.secrets.g.dart - - - name: Rename app - run: | - echo -e "id=com.cakewallet.moneroc_${{ env.PR_NUMBER }}\nname=${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9=\n.]//g' > /opt/android/cake_wallet/android/app.properties - - - name: Build - run: | - cd /opt/android/cake_wallet - flutter build apk --release --split-per-abi - - - name: Rename apk file - run: | - cd /opt/android/cake_wallet/build/app/outputs/flutter-apk - mkdir test-apk - cp app-arm64-v8a-release.apk "test-apk/$(echo ${{ github.ref_name }} | sed 's/[^a-zA-Z0-9]//g').apk" - - - name: Upload Artifact - uses: kittaakos/upload-artifact-as-is@v0 - with: - path: /opt/android/cake_wallet/build/app/outputs/flutter-apk/test-apk/ - - - name: remove android_ndk - run: | - rm -rf monero/contrib/depends/built/*/android_ndk - rm -rf monero/contrib/depends/sources/android-ndk-r26d-linux.zip - rm -rf wownero/contrib/depends/built/*/android_ndk - rm -rf wownero/contrib/depends/sources/android-ndk-r26d-linux.zip - - uses: actions/github-script@v7 - continue-on-error: true - id: get_issue_number - with: - script: | - if (context.issue.number) { - // Return issue number if present - return context.issue.number; - } else { - // Otherwise return issue number from commit - return ( - await github.rest.repos.listPullRequestsAssociatedWithCommit({ - commit_sha: context.sha, - owner: context.repo.owner, - repo: context.repo.repo, - }) - ).data[0].number; - } - result-encoding: string - - name: Find Comment - continue-on-error: true - uses: peter-evans/find-comment@v3 - id: fc - with: - issue-number: ${{steps.get_issue_number.outputs.result}} - comment-author: 'github-actions[bot]' - body-includes: download cake_wallet - - - name: Create or update comment - continue-on-error: true - if: steps.fc.outcome == 'success' - uses: peter-evans/create-or-update-comment@v4 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{steps.get_issue_number.outputs.result}} - body: | - [download cake_wallet #${{github.run_id}}](https://nightly.link/MrCyjaneK/monero_c/actions/runs/${{github.run_id}}) - edit-mode: replace - - name: Create comment - continue-on-error: true - if: steps.fc.outcome == 'failure' - uses: peter-evans/create-or-update-comment@v4 - with: - issue-number: ${{steps.get_issue_number.outputs.result}} - body: | - [download cake_wallet #${{github.run_id}}](https://nightly.link/MrCyjaneK/monero_c/actions/runs/${{github.run_id}}) (this comment will update whenever you push) diff --git a/.github/workflows/compat.yaml b/.github/workflows/compat.yaml deleted file mode 100644 index df42742..0000000 --- a/.github/workflows/compat.yaml +++ /dev/null @@ -1,521 +0,0 @@ -name: compatibility check -on: [push] -permissions: - issues: write - pull-requests: write -jobs: - mingw: - strategy: - matrix: - coin: [monero, wownero] - runs-on: ubuntu-latest - container: - image: debian:bookworm - steps: - - name: Install dependencies - run: | - apt update - apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 g++-mingw-w64-i686 - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: recursive - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh ${{ matrix.coin }} - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-${{ matrix.coin }} - - name: Cache built - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/cache@v4 - with: - path: | - ${{ matrix.coin }}/contrib/depends/built/* - key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - - name: ${{ matrix.coin }}/x86_64-w64-mingw32 - run: ./build_single.sh ${{ matrix.coin }} x86_64-w64-mingw32 -j$(nproc) - - name: ${{ matrix.coin }}/i686-w64-mingw32 - run: ./build_single.sh ${{ matrix.coin }} i686-w64-mingw32 -j$(nproc) - - name: rename artifacts - run: | - mkdir release/gh/ - for i in release/${{ matrix.coin }}/* - do - cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" - done - - name: Release - uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') - with: - files: release/gh/* - token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} - - name: Upload lib - uses: actions/upload-artifact@v4 - with: - name: mingw ${{ matrix.coin }} - path: release/${{ matrix.coin }} - android: - strategy: - matrix: - coin: [monero, wownero] - runs-on: ubuntu-latest - # container: - # image: debian:bookworm - steps: - - name: Free Disk Space - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: jlumbroso/free-disk-space@main - with: - tool-cache: false - android: true - dotnet: true - haskell: true - large-packages: true - docker-images: true - swap-storage: true - - name: Install dependencies - run: | - sudo apt update - sudo apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf unzip python-is-python3 - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: recursive - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh ${{ matrix.coin }} - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-${{ matrix.coin }} - - name: Cache built - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/cache@v4 - with: - path: | - ${{ matrix.coin }}/contrib/depends/built/* - key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - - name: ${{ matrix.coin }}/x86_64-linux-android - run: ./build_single.sh ${{ matrix.coin }} x86_64-linux-android -j$(nproc) - - name: ${{ matrix.coin }}/aarch64-linux-android - run: ./build_single.sh ${{ matrix.coin }} aarch64-linux-android -j$(nproc) - - name: ${{ matrix.coin }}/armv7a-linux-androideabi - run: ./build_single.sh ${{ matrix.coin }} armv7a-linux-androideabi -j$(nproc) - - name: rename artifacts - run: | - mkdir release/gh/ - for i in release/${{ matrix.coin }}/* - do - cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" - done - - name: Release - uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') - with: - files: release/gh/* - token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} - - name: Upload lib - uses: actions/upload-artifact@v4 - with: - name: android ${{ matrix.coin }} - path: release/${{ matrix.coin }} - - name: remove android_ndk - run: | - rm -rf ${{ matrix.coin }}/contrib/depends/built/*/android_ndk - rm -rf ${{ matrix.coin }}/contrib/depends/sources/android-ndk-r26d-linux.zip - linux: - strategy: - matrix: - coin: [monero, wownero] - runs-on: ubuntu-latest - container: - image: debian:bookworm - steps: - - name: Install dependencies - run: | - apt update - apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-i686-linux-gnu g++-i686-linux-gnu - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: recursive - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh ${{ matrix.coin }} - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-${{ matrix.coin }} - - name: Cache built - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/cache@v4 - with: - path: | - ${{ matrix.coin }}/contrib/depends/built/* - key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - - name: ${{ matrix.coin }}/x86_64-linux-gnu - run: ./build_single.sh ${{ matrix.coin }} x86_64-linux-gnu -j$(nproc) - - name: ${{ matrix.coin }}/aarch64-linux-gnu - run: ./build_single.sh ${{ matrix.coin }} aarch64-linux-gnu -j$(nproc) - - name: ${{ matrix.coin }}/i686-linux-gnu - run: ./build_single.sh ${{ matrix.coin }} i686-linux-gnu -j$(nproc) - - name: rename artifacts - run: | - mkdir release/gh/ - for i in release/${{ matrix.coin }}/* - do - cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" - done - - name: Release - uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') - with: - files: release/gh/* - token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} - - name: Upload lib - uses: actions/upload-artifact@v4 - with: - name: linux ${{ matrix.coin }} - path: release/${{ matrix.coin }} - sailfishos_aarch64: - strategy: - matrix: - coin: [monero, wownero] - runs-on: buildjet-2vcpu-ubuntu-2204-arm - steps: - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - uses: thejerrybao/setup-swap-space@v1 - with: - swap-space-path: /swapfile - swap-size-gb: 8 - remove-existing-swap-files: true - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: recursive - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh ${{ matrix.coin }} - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-${{ matrix.coin }} - - name: Cache built - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/cache@v4 - with: - path: | - ${{ matrix.coin }}/contrib/depends/built/* - key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - - name: ${{ matrix.coin }}/aarch64-meego-linux-gnu - run: | - docker run --rm -v $PWD/.ccache:/root/.ccache -v $PWD:$PWD -w $PWD ghcr.io/mrcyjanek/sailfishos:4.6.0.11_target_aarch64 bash -c 'zypper in -f -y perl-IPC-Cmd curl ccache gperf cmake ffmpeg-tools git clang libxkbcommon-devel wayland-protocols-devel wayland-client wayland-egl-devel make glibc-static && git config --global --add safe.directory "*" && for i in gcc g++ ar ranlib; do ln -s /usr/bin/$i /usr/bin/aarch64-meego-linux-gnu-$i; ln -s /usr/bin/$i /usr/bin/aarch64-linux-gnu-$i; done && ./build_single.sh ${{ matrix.coin }} aarch64-meego-linux-gnu -j$(nproc)' - - name: rename artifacts - run: | - sudo mkdir release/gh/ - for i in release/${{ matrix.coin }}/* - do - sudo cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" - done - - name: Release - uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') - with: - files: release/gh/* - token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} - - name: Upload lib - uses: actions/upload-artifact@v4 - with: - name: sfos aarch64 ${{ matrix.coin }} - path: release/${{ matrix.coin }} - sailfishos_i486: - strategy: - matrix: - coin: [monero, wownero] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: recursive - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh ${{ matrix.coin }} - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-${{ matrix.coin }} - - name: Cache built - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/cache@v4 - with: - path: | - ${{ matrix.coin }}/contrib/depends/built/* - key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - - name: ${{ matrix.coin }}/aarch64-meego-linux-gnu - run: | - docker run --rm -v $PWD/.ccache:/root/.ccache -v $PWD:$PWD -w $PWD ghcr.io/mrcyjanek/sailfishos:4.6.0.11_target_i486 bash -c 'zypper in -f -y perl-IPC-Cmd curl ccache gperf cmake ffmpeg-tools git clang libxkbcommon-devel wayland-protocols-devel wayland-client wayland-egl-devel make glibc-static && git config --global --add safe.directory "*" && for i in gcc g++ ar ranlib; do ln -s /usr/bin/$i /usr/bin/i686-linux-gnu-$i; ln -s /usr/bin/$i /usr/bin/i686-meego-linux-gnu-$i; done && ./build_single.sh ${{ matrix.coin }} i686-meego-linux-gnu -j$(nproc)' - - name: rename artifacts - run: | - sudo mkdir release/gh/ - for i in release/${{ matrix.coin }}/* - do - sudo cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" - done - - name: Release - uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') - with: - files: release/gh/* - token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} - - name: Upload lib - uses: actions/upload-artifact@v4 - with: - name: sfos_i486 ${{ matrix.coin }} - path: release/${{ matrix.coin }} - darwin: - strategy: - matrix: - coin: [monero, wownero] - runs-on: ubuntu-latest - container: - image: debian:bookworm - steps: - - name: Install dependencies - run: | - apt update - apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf python-is-python3 - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: recursive - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh monero - ./apply_patches.sh wownero - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-${{ matrix.coin }} - - name: Cache built - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/cache@v4 - with: - path: | - ${{ matrix.coin }}/contrib/depends/built/* - key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - - name: ${{ matrix.coin }}/x86_64-apple-darwin11 - run: ./build_single.sh ${{ matrix.coin }} x86_64-apple-darwin11 -j$(nproc) - - name: ${{ matrix.coin }}/aarch64-apple-darwin11 - run: ./build_single.sh ${{ matrix.coin }} aarch64-apple-darwin11 -j$(nproc) - - name: rename artifacts - run: | - mkdir release/gh/ - for i in release/${{ matrix.coin }}/* - do - cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" - done - - name: Release - uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') - with: - files: release/gh/* - token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} - - name: Upload lib - uses: actions/upload-artifact@v4 - with: - name: darwin ${{ matrix.coin }} - path: release/${{ matrix.coin }} - - name: remove darwin sdk - run: | - rm -rf ${{ matrix.coin }}/contrib/depends/built/*/darwin_sdk - rm -rf ${{ matrix.coin }}/contrib/depends/built/*/native_clang - rm -rf ${{ matrix.coin }}/contrib/depends/sources/clang-llvm*.tar.xz - rm -rf ${{ matrix.coin }}/contrib/depends/sources/MacOSX*sdk.tar.xz - macos: - strategy: - matrix: - coin: [monero, wownero] - name: macos build - runs-on: macos-14 - steps: - - name: Checkout monero_c repo - uses: actions/checkout@v4 - with: - repository: MrCyjaneK/monero_c - fetch-depth: 0 - submodules: recursive - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '15.4' - - name: install dependencies - run: | - brew install ccache unbound boost@1.76 zmq autoconf automake libtool && brew link boost@1.76 - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh ${{ matrix.coin }} - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-${{ matrix.coin }} - - name: Cache built - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/cache@v4 - with: - path: | - ${{ matrix.coin }}/contrib/depends/built/* - key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - - name: build - run: | - ./build_single.sh ${{ matrix.coin }} aarch64-host-apple-darwin -j$(sysctl -n hw.logicalcpu) - - name: rename artifacts - run: | - mkdir release/gh/ - for i in release/${{ matrix.coin }}/* - do - cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" - done - - name: Release - uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') - with: - files: release/gh/* - token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} - - name: Upload lib - uses: actions/upload-artifact@v4 - with: - name: macos ${{ matrix.coin }} - path: release/${{ matrix.coin }} - ios: - strategy: - matrix: - coin: [monero, wownero] - name: ios build - runs-on: macos-14 - steps: - - name: Checkout monero_c repo - uses: actions/checkout@v4 - with: - repository: MrCyjaneK/monero_c - fetch-depth: 0 - submodules: recursive - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '15.4' - - name: install dependencies - run: | - brew install ccache unbound boost@1.76 zmq autoconf automake libtool && brew link boost@1.76 - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh ${{ matrix.coin }} - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 - with: - key: ${{ github.job }}-${{ matrix.coin }} - - name: Cache built - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/cache@v4 - with: - path: | - ${{ matrix.coin }}/contrib/depends/built/* - key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} - - name: build - run: | - ./build_single.sh ${{ matrix.coin }} host-apple-ios -j$(sysctl -n hw.logicalcpu) - - name: rename artifacts - run: | - mkdir release/gh/ - for i in release/${{ matrix.coin }}/* - do - cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" - done - - name: Release - uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') - with: - files: release/gh/* - token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} - - name: Upload lib - uses: actions/upload-artifact@v4 - with: - name: ios ${{ matrix.coin }} - path: release/${{ matrix.coin }} - comment_pr: - name: comment on pr - runs-on: ubuntu-latest - needs: [ - mingw, android, linux, sailfishos_aarch64, sailfishos_i486, darwin, macos, ios - ] - steps: - - uses: actions/github-script@v7 - continue-on-error: true - id: get_issue_number - with: - script: | - if (context.issue.number) { - // Return issue number if present - return context.issue.number; - } else { - // Otherwise return issue number from commit - return ( - await github.rest.repos.listPullRequestsAssociatedWithCommit({ - commit_sha: context.sha, - owner: context.repo.owner, - repo: context.repo.repo, - }) - ).data[0].number; - } - result-encoding: string - - name: Find Comment - continue-on-error: true - uses: peter-evans/find-comment@v3 - id: fc - with: - issue-number: ${{steps.get_issue_number.outputs.result}} - comment-author: 'github-actions[bot]' - body-includes: download libraries - - name: Update comment - continue-on-error: true - if: steps.fc.outcome == 'success' - uses: peter-evans/create-or-update-comment@v4 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{steps.get_issue_number.outputs.result}} - body: | - [download libraries #${{github.run_id}}](https://nightly.link/MrCyjaneK/monero_c/actions/runs/${{github.run_id}}) - edit-mode: replace - - name: Create comment - continue-on-error: true - if: steps.fc.outcome == 'failure' - uses: peter-evans/create-or-update-comment@v4 - with: - issue-number: ${{steps.get_issue_number.outputs.result}} - body: | - [download libraries #${{github.run_id}}](https://nightly.link/MrCyjaneK/monero_c/actions/runs/${{github.run_id}}) (this comment will update whenever you push) \ No newline at end of file diff --git a/.github/workflows/full_check.yaml b/.github/workflows/full_check.yaml new file mode 100644 index 0000000..3c8dd88 --- /dev/null +++ b/.github/workflows/full_check.yaml @@ -0,0 +1,749 @@ +name: full compatibility check +on: [push] +permissions: + issues: write + pull-requests: write +jobs: + lib_mingw: + strategy: + matrix: + coin: [monero, wownero] + runs-on: ubuntu-latest + container: + image: debian:bookworm + steps: + - name: Install dependencies + run: | + apt update + apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 gcc-mingw-w64-i686 g++-mingw-w64-i686 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh ${{ matrix.coin }} + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ github.job }}-${{ matrix.coin }} + - name: Cache built + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: actions/cache@v4 + with: + path: | + ${{ matrix.coin }}/contrib/depends/built/* + key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} + - name: ${{ matrix.coin }}/x86_64-w64-mingw32 + run: ./build_single.sh ${{ matrix.coin }} x86_64-w64-mingw32 -j$(nproc) + - name: ${{ matrix.coin }}/i686-w64-mingw32 + run: ./build_single.sh ${{ matrix.coin }} i686-w64-mingw32 -j$(nproc) + - name: rename artifacts + run: | + mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + - name: Upload lib + uses: actions/upload-artifact@v4 + with: + name: mingw ${{ matrix.coin }} + path: release/${{ matrix.coin }} + lib_android: + strategy: + matrix: + coin: [monero, wownero] + runs-on: ubuntu-latest + # container: + # image: debian:bookworm + steps: + - name: Free Disk Space + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + android: true + dotnet: true + haskell: true + large-packages: true + docker-images: true + swap-storage: true + - name: Install dependencies + run: | + sudo apt update + sudo apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf unzip python-is-python3 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh ${{ matrix.coin }} + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ github.job }}-${{ matrix.coin }} + - name: Cache built + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: actions/cache@v4 + with: + path: | + ${{ matrix.coin }}/contrib/depends/built/* + key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} + - name: ${{ matrix.coin }}/x86_64-linux-android + run: ./build_single.sh ${{ matrix.coin }} x86_64-linux-android -j$(nproc) + - name: ${{ matrix.coin }}/aarch64-linux-android + run: ./build_single.sh ${{ matrix.coin }} aarch64-linux-android -j$(nproc) + - name: ${{ matrix.coin }}/armv7a-linux-androideabi + run: ./build_single.sh ${{ matrix.coin }} armv7a-linux-androideabi -j$(nproc) + - name: rename artifacts + run: | + mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + - name: Upload lib + uses: actions/upload-artifact@v4 + with: + name: android ${{ matrix.coin }} + path: release/${{ matrix.coin }} + - name: remove android_ndk + run: | + rm -rf ${{ matrix.coin }}/contrib/depends/built/*/android_ndk + rm -rf ${{ matrix.coin }}/contrib/depends/sources/android-ndk-r26d-linux.zip + lib_linux: + strategy: + matrix: + coin: [monero, wownero] + runs-on: ubuntu-latest + container: + image: debian:bookworm + steps: + - name: Install dependencies + run: | + apt update + apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf gcc-aarch64-linux-gnu g++-aarch64-linux-gnu gcc-i686-linux-gnu g++-i686-linux-gnu + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh ${{ matrix.coin }} + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ github.job }}-${{ matrix.coin }} + - name: Cache built + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: actions/cache@v4 + with: + path: | + ${{ matrix.coin }}/contrib/depends/built/* + key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} + - name: ${{ matrix.coin }}/x86_64-linux-gnu + run: ./build_single.sh ${{ matrix.coin }} x86_64-linux-gnu -j$(nproc) + - name: ${{ matrix.coin }}/aarch64-linux-gnu + run: ./build_single.sh ${{ matrix.coin }} aarch64-linux-gnu -j$(nproc) + - name: ${{ matrix.coin }}/i686-linux-gnu + run: ./build_single.sh ${{ matrix.coin }} i686-linux-gnu -j$(nproc) + - name: rename artifacts + run: | + mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + - name: Upload lib + uses: actions/upload-artifact@v4 + with: + name: linux ${{ matrix.coin }} + path: release/${{ matrix.coin }} + lib_sailfishos_aarch64: + strategy: + matrix: + coin: [monero, wownero] + runs-on: buildjet-2vcpu-ubuntu-2204-arm + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - uses: thejerrybao/setup-swap-space@v1 + with: + swap-space-path: /swapfile + swap-size-gb: 8 + remove-existing-swap-files: true + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh ${{ matrix.coin }} + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ github.job }}-${{ matrix.coin }} + - name: Cache built + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: actions/cache@v4 + with: + path: | + ${{ matrix.coin }}/contrib/depends/built/* + key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} + - name: ${{ matrix.coin }}/aarch64-meego-linux-gnu + run: | + docker run --rm -v $PWD/.ccache:/root/.ccache -v $PWD:$PWD -w $PWD ghcr.io/mrcyjanek/sailfishos:4.6.0.11_target_aarch64 bash -c 'zypper in -f -y perl-IPC-Cmd curl ccache gperf cmake ffmpeg-tools git clang libxkbcommon-devel wayland-protocols-devel wayland-client wayland-egl-devel make glibc-static && git config --global --add safe.directory "*" && for i in gcc g++ ar ranlib; do ln -s /usr/bin/$i /usr/bin/aarch64-meego-linux-gnu-$i; ln -s /usr/bin/$i /usr/bin/aarch64-linux-gnu-$i; done && ./build_single.sh ${{ matrix.coin }} aarch64-meego-linux-gnu -j$(nproc)' + - name: rename artifacts + run: | + sudo mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + sudo cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + - name: Upload lib + uses: actions/upload-artifact@v4 + with: + name: sfos aarch64 ${{ matrix.coin }} + path: release/${{ matrix.coin }} + lib_sailfishos_i486: + strategy: + matrix: + coin: [monero, wownero] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh ${{ matrix.coin }} + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ github.job }}-${{ matrix.coin }} + - name: Cache built + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: actions/cache@v4 + with: + path: | + ${{ matrix.coin }}/contrib/depends/built/* + key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} + - name: ${{ matrix.coin }}/aarch64-meego-linux-gnu + run: | + docker run --rm -v $PWD/.ccache:/root/.ccache -v $PWD:$PWD -w $PWD ghcr.io/mrcyjanek/sailfishos:4.6.0.11_target_i486 bash -c 'zypper in -f -y perl-IPC-Cmd curl ccache gperf cmake ffmpeg-tools git clang libxkbcommon-devel wayland-protocols-devel wayland-client wayland-egl-devel make glibc-static && git config --global --add safe.directory "*" && for i in gcc g++ ar ranlib; do ln -s /usr/bin/$i /usr/bin/i686-linux-gnu-$i; ln -s /usr/bin/$i /usr/bin/i686-meego-linux-gnu-$i; done && ./build_single.sh ${{ matrix.coin }} i686-meego-linux-gnu -j$(nproc)' + - name: rename artifacts + run: | + sudo mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + sudo cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + - name: Upload lib + uses: actions/upload-artifact@v4 + with: + name: sfos_i486 ${{ matrix.coin }} + path: release/${{ matrix.coin }} + lib_darwin: + strategy: + matrix: + coin: [monero, wownero] + runs-on: ubuntu-latest + container: + image: debian:bookworm + steps: + - name: Install dependencies + run: | + apt update + apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf python-is-python3 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh monero + ./apply_patches.sh wownero + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ github.job }}-${{ matrix.coin }} + - name: Cache built + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: actions/cache@v4 + with: + path: | + ${{ matrix.coin }}/contrib/depends/built/* + key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} + - name: ${{ matrix.coin }}/x86_64-apple-darwin11 + run: ./build_single.sh ${{ matrix.coin }} x86_64-apple-darwin11 -j$(nproc) + - name: ${{ matrix.coin }}/aarch64-apple-darwin11 + run: ./build_single.sh ${{ matrix.coin }} aarch64-apple-darwin11 -j$(nproc) + - name: rename artifacts + run: | + mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + - name: Upload lib + uses: actions/upload-artifact@v4 + with: + name: darwin ${{ matrix.coin }} + path: release/${{ matrix.coin }} + - name: remove darwin sdk + run: | + rm -rf ${{ matrix.coin }}/contrib/depends/built/*/darwin_sdk + rm -rf ${{ matrix.coin }}/contrib/depends/built/*/native_clang + rm -rf ${{ matrix.coin }}/contrib/depends/sources/clang-llvm*.tar.xz + rm -rf ${{ matrix.coin }}/contrib/depends/sources/MacOSX*sdk.tar.xz + lib_macos: + strategy: + matrix: + coin: [monero, wownero] + name: macos build + runs-on: macos-14 + steps: + - name: Checkout monero_c repo + uses: actions/checkout@v4 + with: + repository: MrCyjaneK/monero_c + fetch-depth: 0 + submodules: recursive + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '15.4' + - name: install dependencies + run: | + brew install ccache unbound boost@1.76 zmq autoconf automake libtool && brew link boost@1.76 + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh ${{ matrix.coin }} + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ github.job }}-${{ matrix.coin }} + - name: Cache built + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: actions/cache@v4 + with: + path: | + ${{ matrix.coin }}/contrib/depends/built/* + key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} + - name: build + run: | + ./build_single.sh ${{ matrix.coin }} aarch64-host-apple-darwin -j$(sysctl -n hw.logicalcpu) + - name: rename artifacts + run: | + mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + - name: Upload lib + uses: actions/upload-artifact@v4 + with: + name: macos ${{ matrix.coin }} + path: release/${{ matrix.coin }} + lib_ios: + strategy: + matrix: + coin: [monero, wownero] + name: ios build + runs-on: macos-14 + steps: + - name: Checkout monero_c repo + uses: actions/checkout@v4 + with: + repository: MrCyjaneK/monero_c + fetch-depth: 0 + submodules: recursive + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: '15.4' + - name: install dependencies + run: | + brew install ccache unbound boost@1.76 zmq autoconf automake libtool && brew link boost@1.76 + - name: Patch sources + run: | + git config --global --add safe.directory '*' + git config --global user.email "ci@mrcyjanek.net" + git config --global user.name "CI mrcyjanek.net" + ./apply_patches.sh ${{ matrix.coin }} + - name: ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ${{ github.job }}-${{ matrix.coin }} + - name: Cache built + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: actions/cache@v4 + with: + path: | + ${{ matrix.coin }}/contrib/depends/built/* + key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }} + - name: build + run: | + ./build_single.sh ${{ matrix.coin }} host-apple-ios -j$(sysctl -n hw.logicalcpu) + - name: rename artifacts + run: | + mkdir release/gh/ + for i in release/${{ matrix.coin }}/* + do + cp "$i" "release/gh/${{ matrix.coin }}_$(basename $i)" + done + - name: Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: release/gh/* + token: ${{ secrets.CUSTOM_GITHUB_TOKEN }} + - name: Upload lib + uses: actions/upload-artifact@v4 + with: + name: ios ${{ matrix.coin }} + path: release/${{ matrix.coin }} + + # Extra stuff below, not strictly required for monero_c, but we do want to ensure + # that nothing really broke the app when we work on some feature. + + wallet_cake_android: + needs: [ lib_android ] + runs-on: ubuntu-20.04 + env: + STORE_PASS: test@cake_wallet + KEY_PASS: test@cake_wallet + PR_NUMBER: ${{ github.ref_name }} + + steps: + - name: set branch name + run: echo "BRANCH_NAME=${{ github.ref_name }}" >> $GITHUB_ENV + + - uses: actions/download-artifact@v4 + with: + name: android monero + path: release/monero + - uses: actions/download-artifact@v4 + with: + name: android wownero + path: release/wownero + + - name: unpack and move monero_c + run: | + unxz -f -k release/*/*.xz + mv release /opt/monero_c_release + + - name: Free Disk Space (Ubuntu) + uses: insightsengineering/disk-space-reclaimer@v1 + with: + tools-cache: true + android: false + dotnet: true + haskell: true + large-packages: true + swap-storage: true + docker-images: true + + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: "17.x" + - name: Configure placeholder git details + run: | + git config --global user.email "CI@cakewallet.com" + git config --global user.name "Cake Github Actions" + - name: Flutter action + uses: subosito/flutter-action@v2 + with: + flutter-version: "3.19.6" + channel: stable + + - name: Install package dependencies + run: sudo apt-get install -y curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake clang + + - name: Execute Build and Setup Commands + run: | + sudo mkdir -p /opt/android + sudo chown $USER /opt/android + cd /opt/android + -y curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + cargo install cargo-ndk + git clone https://github.com/cake-tech/cake_wallet.git --branch main --depth=1 + cd cake_wallet/scripts/android/ + ./install_ndk.sh + source ./app_env.sh cakewallet + chmod +x pubspec_gen.sh + ./app_config.sh + mkdir -p /opt/android/cake_wallet/scripts/monero_c + mv /opt/monero_c_release /opt/android/cake_wallet/scripts/monero_c/release + + - name: Install Flutter dependencies + run: | + cd /opt/android/cake_wallet + flutter pub get + + - name: Generate KeyStore + run: | + cd /opt/android/cake_wallet/android/app + keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias testKey -noprompt -dname "CN=CakeWallet, OU=CakeWallet, O=CakeWallet, L=Florida, S=America, C=USA" -storepass $STORE_PASS -keypass $KEY_PASS + + - name: Generate key properties + run: | + cd /opt/android/cake_wallet + flutter packages pub run tool/generate_android_key_properties.dart keyAlias=testKey storeFile=key.jks storePassword=$STORE_PASS keyPassword=$KEY_PASS + + - name: Generate localization + run: | + cd /opt/android/cake_wallet + flutter packages pub run tool/generate_localization.dart + + - name: Build generated code + run: | + cd /opt/android/cake_wallet + ./model_generator.sh + + - name: Add secrets + run: | + cd /opt/android/cake_wallet + touch lib/.secrets.g.dart + touch cw_evm/lib/.secrets.g.dart + touch cw_solana/lib/.secrets.g.dart + touch cw_core/lib/.secrets.g.dart + touch cw_nano/lib/.secrets.g.dart + touch cw_tron/lib/.secrets.g.dart + echo "const salt = 'd551f8841584b0ce37edf6fd59177d35';" > lib/.secrets.g.dart + echo "const keychainSalt = '34c626b6a4f8cb6789897c09';" >> lib/.secrets.g.dart + echo "const key = 'd8ab7230137ebadeb1c4e429395eced1';" >> lib/.secrets.g.dart + echo "const walletSalt = 'a9a49562';" >> lib/.secrets.g.dart + echo "const shortKey = 'c1b21c5050527842350dc8f5';" >> lib/.secrets.g.dart + echo "const backupSalt = 'b3e42404f90ca8e8';" >> lib/.secrets.g.dart + echo "const backupKeychainSalt = '9e0f3c4d347bc99509695a86';" >> lib/.secrets.g.dart + echo "const changeNowApiKey = '';" >> lib/.secrets.g.dart + echo "const changeNowApiKeyDesktop = '';" >> lib/.secrets.g.dart + echo "const wyreSecretKey = '';" >> lib/.secrets.g.dart + echo "const wyreApiKey = '';" >> lib/.secrets.g.dart + echo "const wyreAccountId = '';" >> lib/.secrets.g.dart + echo "const moonPayApiKey = '';" >> lib/.secrets.g.dart + echo "const moonPaySecretKey = '';" >> lib/.secrets.g.dart + echo "const sideShiftAffiliateId = '';" >> lib/.secrets.g.dart + echo "const simpleSwapApiKey = '';" >> lib/.secrets.g.dart + echo "const simpleSwapApiKeyDesktop = '';" >> lib/.secrets.g.dart + echo "const onramperApiKey = '';" >> lib/.secrets.g.dart + echo "const anypayToken = '';" >> lib/.secrets.g.dart + echo "const ioniaClientId = '';" >> lib/.secrets.g.dart + echo "const twitterBearerToken = '';" >> lib/.secrets.g.dart + echo "const trocadorApiKey = '';" >> lib/.secrets.g.dart + echo "const trocadorExchangeMarkup = '';" >> lib/.secrets.g.dart + echo "const anonPayReferralCode = '';" >> lib/.secrets.g.dart + echo "const fiatApiKey = '';" >> lib/.secrets.g.dart + echo "const payfuraApiKey = '';" >> lib/.secrets.g.dart + echo "const ankrApiKey = '';" >> lib/.secrets.g.dart + echo "const etherScanApiKey = '';" >> cw_evm/lib/.secrets.g.dart + echo "const moralisApiKey = '';" >> cw_evm/lib/.secrets.g.dart + echo "const chatwootWebsiteToken = '';" >> lib/.secrets.g.dart + echo "const exolixApiKey = '';" >> lib/.secrets.g.dart + echo "const robinhoodApplicationId = '';" >> lib/.secrets.g.dart + echo "const exchangeHelperApiKey = '';" >> lib/.secrets.g.dart + echo "const walletConnectProjectId = '';" >> lib/.secrets.g.dart + echo "const moralisApiKey = '';" >> lib/.secrets.g.dart + echo "const polygonScanApiKey = '';" >> cw_evm/lib/.secrets.g.dart + echo "const ankrApiKey = '';" >> cw_solana/lib/.secrets.g.dart + echo "const testCakePayApiKey = '';" >> lib/.secrets.g.dart + echo "const cakePayApiKey = '';" >> lib/.secrets.g.dart + echo "const authorization = '';" >> lib/.secrets.g.dart + echo "const CSRFToken = '';" >> lib/.secrets.g.dart + echo "const quantexExchangeMarkup = '';" >> lib/.secrets.g.dart + echo "const nano2ApiKey = '';" >> cw_nano/lib/.secrets.g.dart + echo "const nanoNowNodesApiKey = '';" >> cw_nano/lib/.secrets.g.dart + echo "const tronGridApiKey = '';" >> cw_tron/lib/.secrets.g.dart + echo "const tronNowNodesApiKey = '';" >> cw_tron/lib/.secrets.g.dart + + - name: Rename app + run: | + echo -e "id=com.cakewallet.moneroc_${{ env.PR_NUMBER }}\nname=${{ github.ref_name }}" | sed 's/[^a-zA-Z0-9=\n.]//g' > /opt/android/cake_wallet/android/app.properties + + - name: Build + run: | + cd /opt/android/cake_wallet + flutter build apk --release --split-per-abi + + - name: Upload APK + uses: actions/upload-artifact@v4 + with: + name: cake wallet android + path: /opt/android/cake_wallet/build/app/outputs/flutter-apk/*.apk + + - name: remove android_ndk + run: | + rm -rf monero/contrib/depends/built/*/android_ndk + rm -rf monero/contrib/depends/sources/android-ndk-r26d-linux.zip + rm -rf wownero/contrib/depends/built/*/android_ndk + rm -rf wownero/contrib/depends/sources/android-ndk-r26d-linux.zip + + wallet_xmruw_android: + needs: [ lib_android ] + strategy: + matrix: + coin: [monero, wownero] + runs-on: ubuntu-latest + steps: + - name: Install dependencies + run: | + sudo apt update + sudo apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf unzip python-is-python3 jq + - uses: actions/download-artifact@v4 + with: + name: android ${{ matrix.coin }} + path: release/${{ matrix.coin }} + - name: clone xmruw + run: | + git clone https://github.com/mrcyjanek/unnamed_monero_wallet + cd unnamed_monero_wallet + cp -a .fvm* .. + - uses: kuhnroyal/flutter-fvm-config-action@v2 + id: fvm-config-action + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }} + channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }} + - uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + - name: build xmruw (${{ matrix.coin }}) + run: | + cd unnamed_monero_wallet + if [[ "${{ matrix.coin }}" == "monero" ]]; then ./codegen.sh -DCOIN_MONERO -DLIBSTEALTH_DISABLED; fi + if [[ "${{ matrix.coin }}" == "wownero" ]]; then ./codegen.sh -DCOIN_WOWNERO -DLIBSTEALTH_DISABLED; fi + flutter pub get + make version + ./build_changelog.sh + cp ../release/${{ matrix.coin }}/aarch64-linux-android_libwallet2_api_c.so.xz android/app/src/main/jniLibs/arm64-v8a/lib${{ matrix.coin }}_libwallet2_api_c.so.xz + cp ../release/${{ matrix.coin }}/x86_64-linux-android_libwallet2_api_c.so.xz android/app/src/main/jniLibs/x86_64/lib${{ matrix.coin }}_libwallet2_api_c.so.xz + cp ../release/${{ matrix.coin }}/armv7a-linux-androideabi_libwallet2_api_c.so.xz android/app/src/main/jniLibs/armeabi-v7a/lib${{ matrix.coin }}_libwallet2_api_c.so.xz + unxz -f android/app/src/main/jniLibs/*/*.xz + flutter build apk --release --flavor clean_${{ matrix.coin }} + - name: Upload APK + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.coin }} xmruw apk + path: unnamed_monero_wallet/build/app/outputs/flutter-apk/*.apk + + comment_pr: + name: comment on pr + runs-on: ubuntu-latest + needs: [ + lib_mingw, lib_android, lib_linux, lib_sailfishos_aarch64, lib_sailfishos_i486, lib_darwin, lib_macos, lib_ios, + wallet_cake_android, + wallet_xmruw_android + ] + steps: + - uses: actions/github-script@v7 + continue-on-error: true + id: get_issue_number + with: + script: | + if (context.issue.number) { + // Return issue number if present + return context.issue.number; + } else { + // Otherwise return issue number from commit + return ( + await github.rest.repos.listPullRequestsAssociatedWithCommit({ + commit_sha: context.sha, + owner: context.repo.owner, + repo: context.repo.repo, + }) + ).data[0].number; + } + result-encoding: string + - name: Find Comment + continue-on-error: true + uses: peter-evans/find-comment@v3 + id: fc + with: + issue-number: ${{steps.get_issue_number.outputs.result}} + comment-author: 'github-actions[bot]' + body-includes: download artifacts + - name: Update comment + continue-on-error: true + if: steps.fc.outcome == 'success' + uses: peter-evans/create-or-update-comment@v4 + with: + comment-id: ${{ steps.fc.outputs.comment-id }} + issue-number: ${{steps.get_issue_number.outputs.result}} + body: | + [download artifacts #${{github.run_id}}](https://nightly.link/MrCyjaneK/monero_c/actions/runs/${{github.run_id}}) + edit-mode: replace + - name: Create comment + continue-on-error: true + if: steps.fc.outcome == 'failure' + uses: peter-evans/create-or-update-comment@v4 + with: + issue-number: ${{steps.get_issue_number.outputs.result}} + body: | + [download artifacts #${{github.run_id}}](https://nightly.link/MrCyjaneK/monero_c/actions/runs/${{github.run_id}}) (this comment will update whenever you push) \ No newline at end of file diff --git a/.github/workflows/xmruw.yaml b/.github/workflows/xmruw.yaml deleted file mode 100644 index fd34933..0000000 --- a/.github/workflows/xmruw.yaml +++ /dev/null @@ -1,106 +0,0 @@ -name: Build xmruw -on: [push] -permissions: - issues: write - pull-requests: write - -jobs: - android: - strategy: - matrix: - coin: [monero, wownero] - runs-on: ubuntu-latest - steps: - - name: Install dependencies - run: | - sudo apt update - sudo apt install -y build-essential pkg-config autoconf libtool ccache make cmake gcc g++ git curl lbzip2 libtinfo5 gperf unzip python-is-python3 jq - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: recursive - - name: Patch sources - run: | - git config --global --add safe.directory '*' - git config --global user.email "ci@mrcyjanek.net" - git config --global user.name "CI mrcyjanek.net" - ./apply_patches.sh ${{ matrix.coin }} - - name: ${{ matrix.coin }}/aarch64-linux-android - run: ./build_single.sh ${{ matrix.coin }} aarch64-linux-android -j$(nproc) - - name: clone xmruw - run: | - git clone https://github.com/mrcyjanek/unnamed_monero_wallet - cd unnamed_monero_wallet - cp -a .fvm* .. - - uses: kuhnroyal/flutter-fvm-config-action@v2 - id: fvm-config-action - - uses: subosito/flutter-action@v2 - with: - flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }} - channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }} - - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '17' - - name: build xmruw (${{ matrix.coin }}) - run: | - cd unnamed_monero_wallet - if [[ "${{ matrix.coin }}" == "monero" ]]; then ./codegen.sh -DCOIN_MONERO -DLIBSTEALTH_DISABLED; fi - if [[ "${{ matrix.coin }}" == "wownero" ]]; then ./codegen.sh -DCOIN_WOWNERO -DLIBSTEALTH_DISABLED; fi - flutter pub get - make version - ./build_changelog.sh - cp ../release/${{ matrix.coin }}/aarch64-linux-android_libwallet2_api_c.so.xz android/app/src/main/jniLibs/arm64-v8a/lib${{ matrix.coin }}_libwallet2_api_c.so.xz - unxz -f android/app/src/main/jniLibs/arm64-v8a/*.xz - flutter build apk --debug --flavor clean_${{ matrix.coin }} - - name: Upload APK - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.coin }} xmruw apk - path: unnamed_monero_wallet/build/app/outputs/flutter-apk/*.apk - - uses: actions/github-script@v7 - continue-on-error: true - id: get_issue_number - with: - script: | - if (context.issue.number) { - // Return issue number if present - return context.issue.number; - } else { - // Otherwise return issue number from commit - return ( - await github.rest.repos.listPullRequestsAssociatedWithCommit({ - commit_sha: context.sha, - owner: context.repo.owner, - repo: context.repo.repo, - }) - ).data[0].number; - } - result-encoding: string - - name: Find Comment - continue-on-error: true - uses: peter-evans/find-comment@v3 - id: fc - with: - issue-number: ${{steps.get_issue_number.outputs.result}} - comment-author: 'github-actions[bot]' - body-includes: download xmruw - - - name: Update comment - continue-on-error: true - if: steps.fc.outcome == 'success' - uses: peter-evans/create-or-update-comment@v4 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{steps.get_issue_number.outputs.result}} - body: | - [download xmruw #${{github.run_id}}](https://nightly.link/MrCyjaneK/monero_c/actions/runs/${{github.run_id}}) - edit-mode: replace - - name: Create comment - continue-on-error: true - if: steps.fc.outcome == 'failure' - uses: peter-evans/create-or-update-comment@v4 - with: - issue-number: ${{steps.get_issue_number.outputs.result}} - body: | - [download xmruw #${{github.run_id}}](https://nightly.link/MrCyjaneK/monero_c/actions/runs/${{github.run_id}}) (this link will update whenever you push) \ No newline at end of file -- cgit v1.2.3