Skip to content

Update status.json #245

Update status.json

Update status.json #245

Workflow file for this run

name: Build and Release
on:
push:
branches:
- main
tags:
- "v*"
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: gradle
cache-dependency-path: |
android/**/*.gradle*
android/**/gradle-wrapper.properties
- name: Set up Android SDK
uses: android-actions/setup-android@v4
with:
packages: platform-tools platforms;android-34 build-tools;34.0.0
- name: Write Android local.properties
run: printf 'sdk.dir=%s\n' "$ANDROID_HOME" > android/local.properties
- name: Install dependencies
run: npm ci
- name: Build browser bundles
run: npm run build
- name: Build Android web bundle
run: npm run build:android
- name: Ensure Gradle wrapper files exist
working-directory: android
run: |
if [ ! -f gradle/wrapper/gradle-wrapper.jar ]; then
echo "Bootstrapping Gradle wrapper..."
mkdir -p gradle/wrapper
curl -sSL "https://github.com/gradle/gradle/raw/v8.7.0/gradle/wrapper/gradle-wrapper.jar" \
-o gradle/wrapper/gradle-wrapper.jar
echo "distributionBase=GRADLE_USER_HOME" > gradle/wrapper/gradle-wrapper.properties
echo "distributionPath=wrapper/dists" >> gradle/wrapper/gradle-wrapper.properties
echo "distributionUrl=https\\://services.gradle.org/distributions/gradle-8.7-bin.zip" >> gradle/wrapper/gradle-wrapper.properties
echo "networkTimeout=10000" >> gradle/wrapper/gradle-wrapper.properties
echo "validateDistributionUrl=true" >> gradle/wrapper/gradle-wrapper.properties
echo "zipStoreBase=GRADLE_USER_HOME" >> gradle/wrapper/gradle-wrapper.properties
echo "zipStorePath=wrapper/dists" >> gradle/wrapper/gradle-wrapper.properties
fi
- name: Make Gradle wrapper executable
working-directory: android
run: chmod +x ./gradlew
- name: Decode Keystore
env:
BDS_KEYSTORE: ${{ secrets.BDS_KEYSTORE }}
run: |
if [ -n "$BDS_KEYSTORE" ]; then
echo "$BDS_KEYSTORE" | base64 --decode > android/ci-release.jks
else
echo "Warning: BDS_KEYSTORE secret is missing. Release build might fail or be unsigned."
fi
- name: Build Android APK
working-directory: android
run: ./gradlew --no-daemon assembleRelease
env:
BDS_KEYSTORE_PASSWORD: ${{ secrets.BDS_KEYSTORE_PASSWORD }}
BDS_KEY_ALIAS: ${{ secrets.BDS_KEY_ALIAS }}
BDS_KEY_PASSWORD: ${{ secrets.BDS_KEY_PASSWORD }}
- name: Verify APK Signature
run: |
APK_PATH=$(find android/app/build/outputs/apk/release -name "*.apk" | head -n 1)
if [ -n "$APK_PATH" ]; then
$ANDROID_HOME/build-tools/34.0.0/apksigner verify --verbose "$APK_PATH"
else
echo "No release APK found to verify."
exit 1
fi
- name: Compute version and prepare artifact names
id: prep
run: |
VERSION=$(node -p "require('./package.json').version")
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
APK_SRC=$(find android/app/build/outputs/apk/release -name "*.apk" | head -n 1)
if [ "${{ github.ref }}" = "refs/heads/main" ]; then
mv better-deepseek-chrome.zip better-deepseek-chrome-latest.zip
mv better-deepseek-firefox.zip better-deepseek-firefox-latest.zip
cp "$APK_SRC" better-deepseek-android-latest-signed.apk
echo "is_tag=false" >> "$GITHUB_OUTPUT"
else
mv better-deepseek-chrome.zip "better-deepseek-chrome-v${VERSION}.zip"
mv better-deepseek-firefox.zip "better-deepseek-firefox-v${VERSION}.zip"
cp "$APK_SRC" "better-deepseek-android-v${VERSION}-signed.apk"
echo "is_tag=true" >> "$GITHUB_OUTPUT"
fi
- name: Update Latest Release
if: github.ref == 'refs/heads/main'
uses: softprops/action-gh-release@v2
with:
tag_name: latest
name: Latest Build
body: |
This release contains the latest automated build from the `main` branch.
The Android APK is now **digitally signed**. You can install it directly without Play Protect warnings (though you may still need to allow "Unknown Sources" in your browser).
files: |
better-deepseek-chrome-latest.zip
better-deepseek-firefox-latest.zip
better-deepseek-android-latest-signed.apk
prerelease: true
make_latest: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Versioned Release
if: startsWith(github.ref, 'refs/tags/v')
uses: softprops/action-gh-release@v2
with:
body: |
This release includes browser extension bundles and a **signed** Android APK.
files: |
better-deepseek-chrome-v${{ steps.prep.outputs.version }}.zip
better-deepseek-firefox-v${{ steps.prep.outputs.version }}.zip
better-deepseek-android-v${{ steps.prep.outputs.version }}-signed.apk
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}