mirror of
https://github.com/yggdrasil-network/yggdrasil-android.git
synced 2025-09-10 00:05:08 +03:00
Merge branch 'main' into main
This commit is contained in:
commit
978c446016
7 changed files with 151 additions and 20 deletions
69
.github/workflows/android.yml
vendored
Normal file
69
.github/workflows/android.yml
vendored
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
name: Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "main" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "main" ]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Check out Yggdrasil
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
repository: yggdrasil-network/yggdrasil-go
|
||||||
|
path: yggdrasil-go
|
||||||
|
ref: develop
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup Go environment
|
||||||
|
uses: actions/setup-go@v3.3.1
|
||||||
|
|
||||||
|
- name: Install gomobile
|
||||||
|
run: |
|
||||||
|
go install golang.org/x/mobile/cmd/gomobile@latest
|
||||||
|
~/go/bin/gomobile init
|
||||||
|
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'temurin'
|
||||||
|
cache: gradle
|
||||||
|
|
||||||
|
- name: Install NDK
|
||||||
|
uses: nttld/setup-ndk@v1
|
||||||
|
id: setup-ndk
|
||||||
|
with:
|
||||||
|
ndk-version: r21e
|
||||||
|
add-to-path: false
|
||||||
|
|
||||||
|
- name: Build Yggdrasil
|
||||||
|
run: |
|
||||||
|
mkdir app/libs
|
||||||
|
cd yggdrasil-go
|
||||||
|
PATH=$PATH:~/go/bin/ ./contrib/mobile/build -a
|
||||||
|
cp {yggdrasil.aar,yggdrasil-sources.jar} ../app/libs
|
||||||
|
env:
|
||||||
|
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||||
|
|
||||||
|
- name: Gradle build
|
||||||
|
run: |
|
||||||
|
echo "${{ secrets.RELEASE_KEYSTORE }}" > app/gha.keystore.asc
|
||||||
|
gpg -d --passphrase "${{ secrets.RELEASE_KEYSTORE_PASSWORD }}" --batch app/gha.keystore.asc > app/gha.jks
|
||||||
|
chmod +x gradlew
|
||||||
|
./gradlew assembleYggdrasil
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: yggdrasil-android
|
||||||
|
path: app/build/outputs/apk/yggdrasil/app-yggdrasil.apk
|
62
.github/workflows/nightlylink.yml
vendored
Normal file
62
.github/workflows/nightlylink.yml
vendored
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
name: Comment
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: ['Build']
|
||||||
|
types: [completed]
|
||||||
|
jobs:
|
||||||
|
pr_comment:
|
||||||
|
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
# This snippet is public-domain, taken from
|
||||||
|
# https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml
|
||||||
|
script: |
|
||||||
|
async function upsertComment(owner, repo, issue_number, purpose, body) {
|
||||||
|
const {data: comments} = await github.rest.issues.listComments(
|
||||||
|
{owner, repo, issue_number});
|
||||||
|
|
||||||
|
const marker = `<!-- bot: ${purpose} -->`;
|
||||||
|
body = marker + "\n" + body;
|
||||||
|
|
||||||
|
const existing = comments.filter((c) => c.body.includes(marker));
|
||||||
|
if (existing.length > 0) {
|
||||||
|
const last = existing[existing.length - 1];
|
||||||
|
core.info(`Updating comment ${last.id}`);
|
||||||
|
await github.rest.issues.updateComment({
|
||||||
|
owner, repo,
|
||||||
|
body,
|
||||||
|
comment_id: last.id,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
core.info(`Creating a comment in issue / PR #${issue_number}`);
|
||||||
|
await github.rest.issues.createComment({issue_number, body, owner, repo});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const {owner, repo} = context.repo;
|
||||||
|
const run_id = ${{github.event.workflow_run.id}};
|
||||||
|
|
||||||
|
const pull_requests = ${{ toJSON(github.event.workflow_run.pull_requests) }};
|
||||||
|
if (!pull_requests.length) {
|
||||||
|
return core.error("This workflow doesn't match any pull requests!");
|
||||||
|
}
|
||||||
|
|
||||||
|
const artifacts = await github.paginate(
|
||||||
|
github.rest.actions.listWorkflowRunArtifacts, {owner, repo, run_id});
|
||||||
|
if (!artifacts.length) {
|
||||||
|
return core.error(`No artifacts found`);
|
||||||
|
}
|
||||||
|
let body = `Download the artifacts for this pull request:\n`;
|
||||||
|
for (const art of artifacts) {
|
||||||
|
body += `\n* [${art.name}.zip](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`;
|
||||||
|
}
|
||||||
|
|
||||||
|
core.info("Review thread message body:", body);
|
||||||
|
|
||||||
|
for (const pr of pull_requests) {
|
||||||
|
await upsertComment(owner, repo, pr.number,
|
||||||
|
"nightly-link", body);
|
||||||
|
}
|
||||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -16,3 +16,5 @@
|
||||||
local.properties
|
local.properties
|
||||||
/app/libs/yggdrasil.aar
|
/app/libs/yggdrasil.aar
|
||||||
/app/libs/yggdrasil-sources.jar
|
/app/libs/yggdrasil-sources.jar
|
||||||
|
/app/release/*
|
||||||
|
/app/release
|
||||||
|
|
|
@ -17,11 +17,27 @@ android {
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
signingConfigs {
|
||||||
|
create("yggdrasil") {
|
||||||
|
// You need to specify either an absolute path or include the
|
||||||
|
// keystore file in the same directory as the build.gradle file.
|
||||||
|
storeFile = file("gha.jks")
|
||||||
|
storePassword = "g1thub4ct10n34yggdr4s1l4ndr01d"
|
||||||
|
keyAlias = "yggdrasil-android"
|
||||||
|
keyPassword = "g1thub4ct10n34yggdr4s1l4ndr01d"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
minifyEnabled false
|
minifyEnabled false
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
}
|
}
|
||||||
|
yggdrasil {
|
||||||
|
minifyEnabled false
|
||||||
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
|
signingConfig = signingConfigs.getByName("yggdrasil")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
|
|
Binary file not shown.
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"artifactType": {
|
|
||||||
"type": "APK",
|
|
||||||
"kind": "Directory"
|
|
||||||
},
|
|
||||||
"applicationId": "eu.neilalexander.yggdrasil",
|
|
||||||
"variantName": "release",
|
|
||||||
"elements": [
|
|
||||||
{
|
|
||||||
"type": "SINGLE",
|
|
||||||
"filters": [],
|
|
||||||
"versionCode": 1,
|
|
||||||
"versionName": "1.0",
|
|
||||||
"outputFile": "app-release.apk"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -26,7 +26,7 @@ cp /tmp/yggdrasil-go/yggdrasil.aar /tmp/yggdrasil-android/app/libs/
|
||||||
|
|
||||||
```
|
```
|
||||||
cd /tmp/yggdrasil-android
|
cd /tmp/yggdrasil-android
|
||||||
./gradlew assemble
|
./gradlew assembleRelease
|
||||||
```
|
```
|
||||||
|
|
||||||
note: you will need to use jdk-11 as jdk-16 `"doesn't work" ™`
|
note: you will need to use jdk-11 as jdk-16 `"doesn't work" ™`
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue