755 lines
30 KiB
YAML
755 lines
30 KiB
YAML
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
|
|
echo "const stealthExBearerToken = '';" >> lib/.secrets.g.dart
|
|
echo "const stealthExAdditionalFeePercent = '';" >> lib/.secrets.g.dart
|
|
echo "const letsExchangeBearerToken = '';" >> lib/.secrets.g.dart
|
|
echo "const letsExchangeAffiliateId = '';" >> lib/.secrets.g.dart
|
|
echo "const etherScanApiKey = '';" >> lib/.secrets.g.dart
|
|
echo "const polygonScanApiKey = '';" >> 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) |