mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2024-11-19 18:00:17 +01:00
016c7820a4
* OPS: Update flag used for npm * OPS: Lint
135 lines
4.0 KiB
YAML
135 lines
4.0 KiB
YAML
name: BuildReleaseApk
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
types: [opened, synchronize, reopened]
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
jobs:
|
|
buildReleaseApk:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout project
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: "0"
|
|
|
|
- name: Specify node version
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
|
|
- name: Use npm caches
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.npm
|
|
key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-npm-
|
|
|
|
- name: Use specific Java version for sdkmanager to work
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '17'
|
|
cache: 'gradle'
|
|
|
|
- name: Install node_modules
|
|
run: npm install --omit=dev --yes
|
|
|
|
- name: Set up Ruby
|
|
uses: ruby/setup-ruby@v1
|
|
with:
|
|
ruby-version: 3.1.6
|
|
bundler-cache: true
|
|
|
|
- name: Cache Ruby Gems
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: vendor/bundle
|
|
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-gems-
|
|
|
|
- name: Generate Build Number based on timestamp
|
|
id: build_number
|
|
run: |
|
|
NEW_BUILD_NUMBER="$(date +%s)"
|
|
echo "NEW_BUILD_NUMBER=$NEW_BUILD_NUMBER" >> $GITHUB_ENV
|
|
|
|
- name: Prepare Keystore
|
|
run: bundle exec fastlane android prepare_keystore
|
|
env:
|
|
KEYSTORE_FILE_HEX: ${{ secrets.KEYSTORE_FILE_HEX }}
|
|
|
|
- name: Update Version Code, Build, and Sign APK
|
|
id: build_and_sign_apk
|
|
run: |
|
|
bundle exec fastlane android update_version_build_and_sign_apk
|
|
env:
|
|
BUILD_NUMBER: ${{ env.NEW_BUILD_NUMBER }}
|
|
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
|
|
|
- name: Determine APK Filename and Path
|
|
id: determine_apk_path
|
|
run: |
|
|
VERSION_NAME=$(grep versionName android/app/build.gradle | awk '{print $2}' | tr -d '"')
|
|
BRANCH_NAME=${GITHUB_HEAD_REF:-${GITHUB_REF_NAME}}
|
|
BRANCH_NAME=$(echo "$BRANCH_NAME" | sed 's/[^a-zA-Z0-9_-]/-/g')
|
|
|
|
if [ -n "$BRANCH_NAME" ] && [ "$BRANCH_NAME" != "master" ]; then
|
|
EXPECTED_FILENAME="BlueWallet-${VERSION_NAME}-${NEW_BUILD_NUMBER}-${BRANCH_NAME}.apk"
|
|
else
|
|
EXPECTED_FILENAME="BlueWallet-${VERSION_NAME}-${NEW_BUILD_NUMBER}.apk"
|
|
fi
|
|
|
|
APK_PATH="android/app/build/outputs/apk/release/${EXPECTED_FILENAME}"
|
|
echo "EXPECTED_FILENAME=${EXPECTED_FILENAME}" >> $GITHUB_ENV
|
|
echo "APK_PATH=${APK_PATH}" >> $GITHUB_ENV
|
|
|
|
- name: Upload APK as artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: signed-apk
|
|
path: ${{ env.APK_PATH }}
|
|
|
|
browserstack:
|
|
runs-on: ubuntu-latest
|
|
needs: buildReleaseApk
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Ruby
|
|
uses: ruby/setup-ruby@v1
|
|
with:
|
|
ruby-version: 3.1.6
|
|
bundler-cache: true
|
|
|
|
- name: Install dependencies with Bundler
|
|
run: bundle install --jobs 4 --retry 3
|
|
|
|
- name: Download APK artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: signed-apk
|
|
|
|
- name: Set APK Path
|
|
run: |
|
|
APK_PATH=$(find ${{ github.workspace }} -name '*.apk')
|
|
echo "APK_PATH=$APK_PATH" >> $GITHUB_ENV
|
|
|
|
- name: Upload APK to BrowserStack and Post PR Comment
|
|
env:
|
|
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
|
|
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
|
|
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: bundle exec fastlane upload_to_browserstack_and_comment |