67 lines
2 KiB
YAML
67 lines
2 KiB
YAML
name: RKNnoVPN Linux and Android CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
policy-and-go:
|
|
runs-on: android
|
|
timeout-minutes: 45
|
|
steps:
|
|
- name: Checkout
|
|
uses: https://data.forgejo.org/actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Set up Go
|
|
uses: https://data.forgejo.org/actions/setup-go@v6
|
|
with:
|
|
go-version: '1.22'
|
|
cache: true
|
|
cache-dependency-path: runtime/go.sum
|
|
|
|
- name: Run privacy and release guards
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
git diff --check
|
|
if git grep -n -I -E -- 'git\.zapret\.moe/(api/v1/repos/)?zapretdiscordyoutube/([A-Za-z0-9._-]+-upstream|Xray-core)' -- ':!.forgejo/workflows/ci.yml'; then
|
|
echo 'Use the official third-party source instead of our retired mirror.' >&2
|
|
exit 1
|
|
fi
|
|
bash scripts/ci/check_apk_privacy.sh
|
|
bash scripts/ci/check_reset_lock_contract.sh
|
|
python3 scripts/ci/check_runtime_snapshot_contract.py
|
|
bash scripts/ci/check_release_manifest.sh
|
|
bash scripts/ci/check_local_first_runtime.sh
|
|
|
|
- name: Run runtime tests
|
|
working-directory: runtime
|
|
run: go test ./...
|
|
|
|
android-debug:
|
|
needs: policy-and-go
|
|
runs-on: android
|
|
timeout-minutes: 60
|
|
steps:
|
|
- name: Checkout
|
|
uses: https://data.forgejo.org/actions/checkout@v6
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Build and test debug APK
|
|
working-directory: app
|
|
run: |
|
|
set -euo pipefail
|
|
chmod +x gradlew
|
|
./gradlew :app:testDebugUnitTest :app:assembleDebug --no-daemon --stacktrace
|
|
|
|
- name: Upload debug APK
|
|
uses: https://data.forgejo.org/forgejo/upload-artifact@v4
|
|
with:
|
|
name: rknnovpn-debug
|
|
if-no-files-found: error
|
|
path: app/app/build/outputs/apk/debug/*.apk
|