summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/cake_wallet.yaml250
-rw-r--r--.github/workflows/compat.yaml67
-rw-r--r--.github/workflows/xmruw.yaml55
3 files changed, 360 insertions, 12 deletions
diff --git a/.github/workflows/cake_wallet.yaml b/.github/workflows/cake_wallet.yaml
new file mode 100644
index 0000000..a7169c7
--- /dev/null
+++ b/.github/workflows/cake_wallet.yaml
@@ -0,0 +1,250 @@
+name: Build cake_wallet for android
+on:
+ pull_request:
+ types: [opened, reopened, synchronize]
+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@v1
+ with:
+ java-version: "11.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@v1
+ 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 }}" | tr '/-' '_' > /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 }} | tr '/-' '_').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@v6
+ 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) \ No newline at end of file
diff --git a/.github/workflows/compat.yaml b/.github/workflows/compat.yaml
index 0f16399..7f27a05 100644
--- a/.github/workflows/compat.yaml
+++ b/.github/workflows/compat.yaml
@@ -1,5 +1,8 @@
name: compatibility check
on: [push]
+permissions:
+ issues: write
+ pull-requests: write
jobs:
mingw:
strategy:
@@ -33,7 +36,6 @@ jobs:
with:
path: |
${{ matrix.coin }}/contrib/depends/built/*
- ${{ matrix.coin }}/contrib/depends/sources/*
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)
@@ -100,7 +102,6 @@ jobs:
with:
path: |
${{ matrix.coin }}/contrib/depends/built/*
- ${{ matrix.coin }}/contrib/depends/sources/*
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)
@@ -162,7 +163,6 @@ jobs:
with:
path: |
${{ matrix.coin }}/contrib/depends/built/*
- ${{ matrix.coin }}/contrib/depends/sources/*
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)
@@ -192,7 +192,7 @@ jobs:
strategy:
matrix:
coin: [monero, wownero]
- runs-on: buildjet-4vcpu-ubuntu-2204-arm
+ runs-on: buildjet-2vcpu-ubuntu-2204-arm
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
@@ -221,7 +221,6 @@ jobs:
with:
path: |
${{ matrix.coin }}/contrib/depends/built/*
- ${{ matrix.coin }}/contrib/depends/sources/*
key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }}
- name: ${{ matrix.coin }}/aarch64-meego-linux-gnu
run: |
@@ -270,7 +269,6 @@ jobs:
with:
path: |
${{ matrix.coin }}/contrib/depends/built/*
- ${{ matrix.coin }}/contrib/depends/sources/*
key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }}
- name: ${{ matrix.coin }}/aarch64-meego-linux-gnu
run: |
@@ -326,7 +324,6 @@ jobs:
with:
path: |
${{ matrix.coin }}/contrib/depends/built/*
- ${{ matrix.coin }}/contrib/depends/sources/*
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)
@@ -391,7 +388,6 @@ jobs:
with:
path: |
${{ matrix.coin }}/contrib/depends/built/*
- ${{ matrix.coin }}/contrib/depends/sources/*
key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }}
- name: build
run: |
@@ -449,7 +445,6 @@ jobs:
with:
path: |
${{ matrix.coin }}/contrib/depends/built/*
- ${{ matrix.coin }}/contrib/depends/sources/*
key: depends-${{ github.job }}-${{ matrix.coin }}-${{ hashFiles('*/contrib/depends/packages/*.mk') }}
- name: build
run: |
@@ -471,4 +466,56 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ios ${{ matrix.coin }}
- path: release/${{ matrix.coin }} \ No newline at end of file
+ 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@v6
+ 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/xmruw.yaml b/.github/workflows/xmruw.yaml
index bb86211..5823405 100644
--- a/.github/workflows/xmruw.yaml
+++ b/.github/workflows/xmruw.yaml
@@ -1,6 +1,11 @@
name: Build xmruw
run-name: Building xmruw for supported targets
-on: [push]
+on:
+ pull_request:
+ types: [opened, reopened, synchronize]
+permissions:
+ issues: write
+ pull-requests: write
jobs:
android:
strategy:
@@ -54,4 +59,50 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.coin }} xmruw apk
- path: unnamed_monero_wallet/build/app/outputs/flutter-apk/*.apk \ No newline at end of file
+ path: unnamed_monero_wallet/build/app/outputs/flutter-apk/*.apk
+ - uses: actions/github-script@v6
+ 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