mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-15 19:27:51 +01:00
162 lines
5.9 KiB
YAML
162 lines
5.9 KiB
YAML
name: Publish @notesnook/android-internal
|
|
|
|
on: workflow_dispatch
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-22.04
|
|
timeout-minutes: 40
|
|
env:
|
|
CMAKE_C_COMPILER_LAUNCHER: ccache
|
|
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
|
NDK_CCACHE: ccache
|
|
USE_CCACHE: 1
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Setup Node
|
|
uses: ./.github/actions/setup-node-with-cache
|
|
|
|
- name: Use specific Java version for the builds
|
|
uses: joschi/setup-jdk@v2
|
|
with:
|
|
java-version: "17"
|
|
architecture: "x64"
|
|
|
|
- name: Install node modules
|
|
run: |
|
|
npm ci --ignore-scripts --prefer-offline --no-audit
|
|
npm run bootstrap -- --scope=mobile
|
|
|
|
- name: Make Gradlew Executable
|
|
run: cd apps/mobile/native/android && chmod +x ./gradlew
|
|
|
|
- name: Install CCache
|
|
uses: hendrikmuhs/ccache-action@v1.2.11
|
|
with:
|
|
key: ${{ runner.os }}-ccache-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
max-size: 1500M
|
|
restore-keys: |
|
|
${{ runner.os }}-ccache-
|
|
|
|
- name: Setup CCache
|
|
run: |
|
|
ln -s $(which ccache) /usr/local/bin/gcc
|
|
ln -s $(which ccache) /usr/local/bin/g++
|
|
ln -s $(which ccache) /usr/local/bin/cc
|
|
ln -s $(which ccache) /usr/local/bin/c++
|
|
ln -s $(which ccache) /usr/local/bin/clang
|
|
ln -s $(which ccache) /usr/local/bin/clang++
|
|
ccache --set-config=base_dir=$PWD
|
|
ccache --set-config=inode_cache=true
|
|
ccache --set-config=compiler_check=content
|
|
ccache --set-config=depend_mode=true
|
|
ccache --set-config=file_clone=true
|
|
ccache --set-config=sloppiness=clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros
|
|
ccache -p
|
|
|
|
- name: Cache gradle
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
|
|
- name: Patch CPP Projects to use CCache
|
|
run: |
|
|
sed -i -e 's/arguments/arguments "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",/g' apps/mobile/node_modules/react-native-mmkv-storage/android/build.gradle
|
|
sed -i -e 's/arguments/arguments "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache",/g' apps/mobile/node_modules/react-native-reanimated/android/build.gradle
|
|
|
|
- name: CCache Stats Before Build
|
|
run: ccache -sv
|
|
|
|
- name: Check for typescript errors
|
|
run: |
|
|
npm run tx mobile:build
|
|
cd apps/mobile
|
|
npx tsc --noEmit
|
|
|
|
- name: Build unsigned app bundle
|
|
run: yarn release:android:bundle
|
|
|
|
- name: CCache Stats after build
|
|
run: ccache -sv
|
|
|
|
- name: Sign app bundle for Playstore release
|
|
id: sign_app
|
|
uses: r0adkll/sign-android-release@master
|
|
with:
|
|
releaseDirectory: apps/mobile/native/android/app/build/outputs/bundle/release
|
|
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
|
alias: ${{ secrets.ALIAS }}
|
|
keyStorePassword: ${{ secrets.KEY_PASSWORD }}
|
|
keyPassword: ${{ secrets.KEY_PASSWORD }}
|
|
env:
|
|
BUILD_TOOLS_VERSION: "33.0.0"
|
|
|
|
- name: Build apks for Github release
|
|
run: yarn release:android
|
|
|
|
- name: Sign apk files
|
|
id: sign_apk
|
|
uses: r0adkll/sign-android-release@master
|
|
with:
|
|
releaseDirectory: apps/mobile/native/android/app/build/outputs/apk/release
|
|
signingKeyBase64: ${{ secrets.PUBLIC_SIGNING_KEY }}
|
|
alias: ${{ secrets.PUBLIC_ALIAS }}
|
|
keyStorePassword: ${{ secrets.PUBLIC_KEY_PASSWORD }}
|
|
keyPassword: ${{ secrets.PUBLIC_KEY_PASSWORD }}
|
|
env:
|
|
BUILD_TOOLS_VERSION: "33.0.0"
|
|
|
|
- name: Rename apk files
|
|
run: |
|
|
cd apps/mobile/native/android/app/build/outputs/apk/release/
|
|
mv app-arm64-v8a-release-unsigned-signed.apk notesnook-arm64-v8a.apk
|
|
mv app-armeabi-v7a-release-unsigned-signed.apk notesnook-armeabi-v7a.apk
|
|
mv app-x86-release-unsigned-signed.apk notesnook-x86.apk
|
|
mv app-x86_64-release-unsigned-signed.apk notesnook-x86_64.apk
|
|
|
|
- name: Get app version
|
|
id: package-version
|
|
uses: martinbeentjes/npm-get-version-action@master
|
|
with:
|
|
path: apps/mobile
|
|
|
|
- name: Publish to Playstore
|
|
id: deploy
|
|
uses: r0adkll/upload-google-play@v1.1.1
|
|
with:
|
|
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
|
packageName: com.streetwriters.notesnook
|
|
releaseFiles: ${{steps.sign_app.outputs.signedReleaseFile}}
|
|
track: beta
|
|
status: completed
|
|
whatsNewDirectory: apps/mobile/native/android/releasenotes/
|
|
|
|
- name: Create release draft on Github
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
draft: true
|
|
tag_name: ${{ steps.package-version.outputs.current-version}}-beta-android
|
|
name: Notesnook Android v${{ steps.package-version.outputs.current-version}}
|
|
repository: streetwriters/notesnook
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
files: |
|
|
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-arm64-v8a.apk
|
|
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-armeabi-v7a.apk
|
|
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-x86.apk
|
|
apps/mobile/native/android/app/build/outputs/apk/release/notesnook-x86_64.apk
|
|
${{steps.sign_app.outputs.signedReleaseFile}}
|
|
|
|
- name: Upload sourcemaps
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sourcemaps
|
|
path: |
|
|
apps/mobile/native/android/app/build/**/*.map
|
|
packages/editor-mobile/sourcemaps/*.map
|