0
0
mirror of https://github.com/TrianguloY/UrlChecker.git synced 2024-09-20 04:12:14 +02:00
UrlChecker/.github/workflows/validate-gradle-build-test.yml
2024-08-21 17:21:28 +02:00

92 lines
2.9 KiB
YAML

# This actions validates the gradle files and runs a build test to ensure the app is not corrupted
# if succeeded, and the source is a pull request, builds an evaluation apk and posts a comment to download it
name: Validate gradle build test
on:
push:
branches:
- master
pull_request_target:
branches:
- master
# Cancel running actions if new commits are added
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
# parameters
env:
VARIANT: evaluation
NAME: URLCheck_evaluation.apk
RETENTION_DAYS: 14
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Build & test
run: ./gradlew build test
# the following steps will only run for PRs
- name: "[PR] Generate apk"
if: ${{ github.event_name == 'pull_request_target' }}
run: ./gradlew assemble${{ env.VARIANT }}
- name: "[PR] Upload apk as artifact"
id: artifact-upload-step
if: ${{ github.event_name == 'pull_request_target' }}
uses: actions/upload-artifact@v4
with:
path: ./app/build/outputs/apk/${{ env.VARIANT }}/app-${{ env.VARIANT }}.apk
name: ${{ env.NAME }}
retention-days: ${{ env.RETENTION_DAYS }}
outputs:
artifact-url: ${{ steps.artifact-upload-step.outputs.artifact-url }}
comment:
if: ${{ github.event_name == 'pull_request_target' }}
runs-on: ubuntu-latest
needs: build
permissions:
pull-requests: write # need to write the comment
steps:
- name: "[PR] Comment url to artifact"
env:
GH_TOKEN: ${{ github.token }}
run: |
# post link comment
URL="${{ github.event.pull_request.html_url }}"
BODY="
This PR builds correctly, here is the generated apk.
This unsigned version can be installed alongside the original app and should only be used for testing the changes, not for daily usage.
| [Download testing apk](${{ needs.build.outputs.artifact-url }}) |
| - |
You must be logged in for the link to work.
The link will expire in $RETENTION_DAYS days, at $(date -d "+$RETENTION_DAYS days").
<hr>
<sub>This is an automatic comment created by a [Github Action](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}?pr=${{ github.event.pull_request.number }})</sub>
"
# use --edit-last-or-create whenever it is ready: https://github.com/cli/cli/issues/6790
gh pr comment "$URL" --edit-last --body "$BODY" || gh pr comment "$URL" --body "$BODY"