Skip to content

Commit

Permalink
feat: run android tests on ubuntu
Browse files Browse the repository at this point in the history
  • Loading branch information
limpbrains committed Jun 29, 2024
1 parent 105e664 commit 15b5daf
Show file tree
Hide file tree
Showing 6 changed files with 129 additions and 93 deletions.
104 changes: 73 additions & 31 deletions .github/workflows/e2e-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,80 +10,122 @@ on:

jobs:
e2e-android:
runs-on: macos-13
runs-on: ubuntu-latest
timeout-minutes: 120

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Install pulseaudio
run: sudo apt-get install pulseaudio

- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Free Disk Space
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
android: false
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true

- name: yarn and gradle caches in /mnt
run: |
rm -rf ~/.yarn
rm -rf ~/.gradle
sudo mkdir -p /mnt/.yarn
sudo mkdir -p /mnt/.gradle
sudo chown -R runner /mnt/.yarn
sudo chown -R runner /mnt/.gradle
ln -s /mnt/.yarn /home/runner/
ln -s /mnt/.gradle /home/runner/
- name: Create artifacts directory on /mnt
run: |
sudo mkdir -p /mnt/artifacts
sudo chown -R runner /mnt/artifacts
- name: Node
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'yarn' # cache packages, but not node_modules
cache-dependency-path: 'example/yarn.lock'
node-version: 20
# cache: 'yarn' # cache packages, but not node_modules
# cache-dependency-path: 'example/yarn.lock'

- name: Cache lib node modules
uses: actions/cache@v3
id: lib-npmcache
- name: Use yarn caches
uses: actions/cache@v4
with:
path: lib/node_modules
key: node-modules-${{ hashFiles('**/yarn.lock') }}
path: ~/.yarn
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install lib dependencies
if: steps.lib-npmcache.outputs.cache-hit != 'true'
working-directory: lib
run: yarn install
run: yarn || yarn

- name: Build lib
working-directory: lib
run: yarn build

- name: Use gradle caches
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# - name: Cache node modules
# uses: actions/cache@v3
# id: cache-nm
# with:
# path: node_modules
# key: node-modules-${{ hashFiles('**/yarn.lock') }}

- name: Install node_modules
working-directory: example
run: yarn install && yarn rn-setup
run: (yarn || yarn) && yarn rn-setup

- name: Use specific Java version for sdkmanager to work
uses: actions/setup-java@v2
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'
java-version: '17'

- name: Build
working-directory: example
run: yarn e2e:build:android-release
run: yarn e2e:build:android-release || yarn e2e:build:android-release

- name: Show build outputs
working-directory: example
run: tree android/app/build/outputs/

- name: Kill java processes
run: pkill -9 -f java || true

- name: run tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 31
avd-name: Pixel_API_31_AOSP
profile: 5.4in FWVGA # devices list: avdmanager list device
api-level: 31
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -camera-back none -camera-front none -partition-size 2047
arch: x86_64
disable-animations: true
working-directory: example
script: yarn e2e:test:android-release || yarn e2e:test:android-release || yarn e2e:test:android-release
script: yarn e2e:test:android-release --record-videos all --take-screenshots all --record-logs all --artifacts-location /mnt/artifacts || yarn e2e:test:android-release --record-videos all --take-screenshots all --record-logs all --artifacts-location /mnt/artifactsyarn e2e:test:android-release --record-videos all --take-screenshots all --record-logs all --artifacts-location /mnt/artifacts || yarn e2e:test:android-release --record-videos all --take-screenshots all --record-logs all --artifacts-location /mnt/artifacts

- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: failure()
with:
name: e2e-test-videos
path: ./example/artifacts/
path: /mnt/artifacts
98 changes: 46 additions & 52 deletions .github/workflows/mocha-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,36 +10,56 @@ on:

jobs:
mocha-android:
runs-on: macos-12
runs-on: ubuntu-latest
timeout-minutes: 120

steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Setup Docker Colima 1
uses: douglascamata/setup-docker-macos-action@v1-alpha
id: docker1
continue-on-error: true
- name: Free Disk Space
uses: jlumbroso/free-disk-space@main
with:
lima: v0.18.0
colima: v0.5.6

- name: Setup Docker Colima 2
if: steps.docker1.outcome != 'success'
uses: douglascamata/setup-docker-macos-action@v1-alpha
id: docker2
continue-on-error: true
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
android: false
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true

- name: yarn and gradle caches in /mnt
run: |
rm -rf ~/.yarn
rm -rf ~/.gradle
sudo mkdir -p /mnt/.yarn
sudo mkdir -p /mnt/.gradle
sudo chown -R runner /mnt/.yarn
sudo chown -R runner /mnt/.gradle
ln -s /mnt/.yarn /home/runner/
ln -s /mnt/.gradle /home/runner/
- name: Create artifacts directory on /mnt
run: |
sudo mkdir -p /mnt/artifacts
sudo chown -R runner /mnt/artifacts
- name: Node
uses: actions/setup-node@v4
with:
lima: v0.18.0
colima: v0.5.6
node-version: 20

- name: Setup Docker Default
if: steps.docker1.outcome != 'success' && steps.docker2.outcome != 'success'
uses: docker-practice/[email protected]
timeout-minutes: 30
- name: Use yarn caches
uses: actions/cache@v4
with:
path: ~/.yarn
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Run regtest setup
working-directory: example/docker
Expand All @@ -53,24 +73,9 @@ jobs:
timeout-minutes: 2
run: while ! nc -z '127.0.0.1' 60001; do sleep 1; done

- name: Node
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'yarn' # cache packages, but not node_modules
cache-dependency-path: 'example/yarn.lock'

- name: Cache lib node modules
uses: actions/cache@v3
id: lib-npmcache
with:
path: lib/node_modules
key: node-modules-${{ hashFiles('**/yarn.lock') }}

- name: Install lib dependencies
if: steps.lib-npmcache.outputs.cache-hit != 'true'
working-directory: lib
run: yarn --no-audit --prefer-offline || yarn --no-audit --prefer-offline
run: yarn || yarn

- name: Build lib
working-directory: lib
Expand All @@ -84,26 +89,15 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-
# - name: Cache node modules
# uses: actions/cache@v3
# id: cache-nm
# with:
# path: node_modules
# key: node-modules-${{ hashFiles('**/yarn.lock') }}

- name: Install node_modules
working-directory: example
run: yarn install && yarn rn-setup
run: (yarn || yarn) && yarn rn-setup

- name: Use specific Java version for sdkmanager to work
uses: actions/setup-java@v2
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'

# - name: Build
# working-directory: example
# run: npx react-native run-android --no-packager
java-version: '17'

- name: run tests
uses: reactivecircus/android-emulator-runner@v2
Expand All @@ -117,8 +111,8 @@ jobs:
script: |
../.github/workflows/mocha-anrdoid.sh
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: failure()
with:
name: ldk-data
path: example/artifacts/
path: /mnt/artifacts
2 changes: 1 addition & 1 deletion .github/workflows/mocha-anrdoid.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ echo $EXIT_CODE;
if [ $EXIT_CODE -ne 0 ]; then
adb root
sleep 10
adb pull /data/user/0/com.exmpl/files/ldk/ artifacts/
adb pull /data/user/0/com.exmpl/files/ldk/ /mnt/artifacts/
fi

exit $EXIT_CODE
2 changes: 1 addition & 1 deletion example/e2e/ldk.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ describe('LDK integration test', () => {
});

beforeEach(async () => {
await device.reloadReactNative();
// await device.reloadReactNative();
await element(by.id('dev')).tap();
});

Expand Down
6 changes: 3 additions & 3 deletions example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
"e2e:build:android-release": "detox build --configuration android.emu.release",
"e2e:test:ios-debug": "detox test --configuration ios.sim.debug --record-videos all --take-screenshots all --record-logs all",
"e2e:test:ios-release": "detox test --configuration ios.sim.release --record-videos all --take-screenshots all --record-logs all",
"e2e:test:android-debug": "detox test --configuration android.emu.debug --record-videos all --take-screenshots all --record-logs all",
"e2e:test:android-release": "detox test --configuration android.emu.release --record-videos all --take-screenshots all --record-logs all",
"e2e:test:android-debug": "detox test --configuration android.emu.debug",
"e2e:test:android-release": "detox test --configuration android.emu.release",
"lint:check": "eslint . --ext .js,.jsx,.ts,.tsx",
"lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix",
"reinstall": "cd ../lib/ && yarn install && yarn build && cd ../example/ && yarn add ../lib && yarn rn-setup",
Expand Down Expand Up @@ -72,7 +72,7 @@
"bitcoin-json-rpc": "^1.3.2",
"chai-as-promised": "^7.1.1",
"concurrently": "^8.2.0",
"detox": "20.17.0",
"detox": "20.20.2",
"electrum-client": "github:BlueWallet/rn-electrum-client#47acb51149e97fab249c3f8a314f708dbee4fb6e",
"eslint": "8.27.0",
"eslint-config-prettier": "^8.5.0",
Expand Down
10 changes: 5 additions & 5 deletions example/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2421,7 +2421,7 @@
bitcoinjs-lib "6.1.4"

"@synonymdev/react-native-ldk@../lib":
version "0.0.141"
version "0.0.145"
dependencies:
"@synonymdev/raw-transaction-decoder" "1.1.0"
bech32 "^2.0.0"
Expand Down Expand Up @@ -4040,10 +4040,10 @@ detect-newline@^3.0.0:
resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz"
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==

detox@20.17.0:
version "20.17.0"
resolved "https://registry.yarnpkg.com/detox/-/detox-20.17.0.tgz#836d2ebb193572e1f4a97e44af343891a5658f7b"
integrity sha512-IasYgexfkrCoZuJTaqqKHQ2yflK+tnqifzdLwrp4hdTWlXUlG9j/YcM1Dn3ThSs3b6VNMtbSe6xoPkKD0oNiIQ==
detox@20.20.2:
version "20.20.2"
resolved "https://registry.yarnpkg.com/detox/-/detox-20.20.2.tgz#988619d99e08bd992931458e3db7af248254bf31"
integrity sha512-X0FWsj8Bry965fEy7N87bKecIIkcAg3AyaCDXFa0yO+kAIajFbSV7LMtNTQP/c1D0eD4+U5sn9zUJWWhQhucWg==
dependencies:
ajv "^8.6.3"
bunyan "^1.8.12"
Expand Down

0 comments on commit 15b5daf

Please sign in to comment.