Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add cakewallet to ci #15

Merged
merged 13 commits into from
Jul 27, 2024
250 changes: 250 additions & 0 deletions .github/workflows/cake_wallet.yaml
Original file line number Diff line number Diff line change
@@ -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 "[email protected]"
git config --global user.name "CI mrcyjanek.net"
./apply_patches.sh monero
./apply_patches.sh wownero

- name: ccache
uses: hendrikmuhs/[email protected]
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 "[email protected]"
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)
67 changes: 57 additions & 10 deletions .github/workflows/compat.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
name: compatibility check
on: [push]
permissions:
issues: write
pull-requests: write
jobs:
mingw:
strategy:
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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: |
Expand Down Expand Up @@ -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: |
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -385,7 +382,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: |
Expand Down Expand Up @@ -443,7 +439,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: |
Expand All @@ -465,4 +460,56 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: ios ${{ matrix.coin }}
path: release/${{ 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@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)
Loading
Loading