Files
Exclave/.github/workflows/release_naive.yml

120 lines
3.8 KiB
YAML

name: NaïveProxy Plugin Release Build
on:
workflow_dispatch:
inputs:
release:
description: 'Release (y/n)'
required: false
tag:
description: 'Release Tag'
required: false
jobs:
native:
runs-on: ubuntu-latest
name: Native Build
strategy:
fail-fast: false
matrix:
arch: [ armeabi-v7a, arm64-v8a, x86, x86_64 ]
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Checkout Submodule
run: |
git submodule update --init plugin/naive/src/main/jni/naiveproxy
- name: Fetch Status
run: git submodule status 'plugin/naive/*' > naive_status
- name: Native Cache
id: cache
uses: actions/cache@v5
with:
path: |
plugin/naive/src/main/jniLibs/${{ matrix.arch }}
key: naive-${{ matrix.arch }}-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Native Build
if: steps.cache.outputs.cache-hit != 'true'
run: |
./run init action naive
./run plugin naive init
./run plugin naive ${{ matrix.arch }}
build:
name: Gradle Build
runs-on: ubuntu-latest
needs:
- native
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Checkout Submodule
run: |
git submodule update --init plugin/naive/src/main/jni/naiveproxy
- name: Fetch Status
run: git submodule status 'plugin/naive/*' > naive_status
- name: Native Cache (armeabi-v7a)
uses: actions/cache@v5
with:
path: |
plugin/naive/src/main/jniLibs/armeabi-v7a
key: naive-armeabi-v7a-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Native Cache (arm64-v8a)
uses: actions/cache@v5
with:
path: |
plugin/naive/src/main/jniLibs/arm64-v8a
key: naive-arm64-v8a-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Native Cache (x86)
uses: actions/cache@v5
with:
path: |
plugin/naive/src/main/jniLibs/x86
key: naive-x86-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Native Cache (x86_64)
uses: actions/cache@v5
with:
path: |
plugin/naive/src/main/jniLibs/x86_64
key: naive-x86_64-${{ hashFiles('bin/plugin/naive/*', 'naive_status') }}
- name: Gradle cache
uses: actions/cache@v5
with:
path: ~/.gradle
key: native-${{ hashFiles('**/*.gradle.kts') }}
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 21
cache: 'gradle'
- name: Gradle Build
run: |
echo "sdk.dir=${ANDROID_HOME}" > local.properties
export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}"
./gradlew :plugin:naive:assembleOssRelease
APK="plugin/naive/build/outputs/apk/oss/release"
echo "APK=$APK" >> $GITHUB_ENV
- name: Upload Artifacts
uses: actions/upload-artifact@v7
with:
name: APKs
path: ${{ env.APK }}
publish:
name: Publish Release
if: github.event.inputs.release == 'y' && github.event.inputs.tag != ''
runs-on: ubuntu-latest
needs: build
env:
GH_TOKEN: ${{ github.token }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Download Artifacts
uses: actions/download-artifact@v8
with:
name: APKs
path: artifacts
- name: Publish Release
run: |
mkdir apks
find artifacts -name "*.apk" -exec cp {} apks \;
gh release create --latest=false ${{ github.event.inputs.tag }} --notes="" --title=${{ github.event.inputs.tag }} ./apks/*