diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 0000000..44f0f4a --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,67 @@ +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: | + chmod +x gradlew + ./gradlew assemble + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: yggdrasil-android + path: app/build/outputs/apk/release/app-release-unsigned.apk diff --git a/.github/workflows/nightlylink.yml b/.github/workflows/nightlylink.yml new file mode 100644 index 0000000..a90b517 --- /dev/null +++ b/.github/workflows/nightlylink.yml @@ -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 = ``; + 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); + } + diff --git a/.gitignore b/.gitignore index 52ead0e..2595523 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ local.properties /app/libs/yggdrasil.aar /app/libs/yggdrasil-sources.jar +/app/release/* +/app/release diff --git a/app/release/app-release.apk b/app/release/app-release.apk deleted file mode 100644 index 308acc1..0000000 Binary files a/app/release/app-release.apk and /dev/null differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json deleted file mode 100644 index 03e0490..0000000 --- a/app/release/output-metadata.json +++ /dev/null @@ -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" - } - ] -} \ No newline at end of file