mirror of
https://github.com/AllanWang/Frost-for-Facebook.git
synced 2024-11-10 04:52:38 +01:00
214 lines
6.4 KiB
YAML
214 lines
6.4 KiB
YAML
name: Android CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- '*'
|
|
- '!l10n_dev'
|
|
|
|
jobs:
|
|
|
|
pre_job:
|
|
# continue-on-error: true # Uncomment once integration is finished
|
|
runs-on: ubuntu-latest
|
|
# Map a step output to a job output
|
|
outputs:
|
|
should_skip: ${{ steps.skip_check.outputs.should_skip }}
|
|
steps:
|
|
- id: skip_check
|
|
uses: fkirc/skip-duplicate-actions@master
|
|
with:
|
|
# All of these options are optional, so you can remove them if you are happy with the defaults
|
|
concurrent_skipping: 'outdated_runs'
|
|
skip_after_successful_duplicate: 'true'
|
|
paths_ignore: '["**/*.md", "**/docs/**"]'
|
|
do_not_skip: '["workflow_dispatch", "schedule"]'
|
|
|
|
build:
|
|
|
|
needs: pre_job
|
|
|
|
# if: ${{ false }}
|
|
if: ${{ needs.pre_job.outputs.should_skip != 'true' }}
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 100
|
|
|
|
- name: Fetch all tags
|
|
run: git fetch origin +refs/tags/*:refs/tags/*
|
|
|
|
- name: Set up JDK 11
|
|
uses: actions/setup-java@v2
|
|
with:
|
|
java-version: '11'
|
|
java-package: jdk
|
|
distribution: 'adopt'
|
|
cache: gradle
|
|
|
|
- name: Validate gradle wrapper
|
|
uses: gradle/wrapper-validation-action@v1
|
|
|
|
- name: Decrypt secret
|
|
run: |
|
|
gpg -d --passphrase "${{ secrets.FROST_TAR_SECRET }}" --batch "files/frost_github.tar.gpg" > "files/frost_github.tar"
|
|
tar xvf files/frost_github.tar -C files
|
|
|
|
- name: Checkout Gradle Build Cache
|
|
if: ${{ steps.self_hosted.outputs.FLAG != 'self-hosted' }}
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
!~/.gradle/wrapper/dists/**/gradle*.zip
|
|
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
|
|
restore-keys: |
|
|
gradle-${{ runner.os }}-
|
|
|
|
- name: Grant execute permission for gradlew
|
|
run: chmod +x gradlew
|
|
|
|
- name: Android Git Version
|
|
run: ./gradlew --quiet androidGitVersion
|
|
|
|
- name: Check and Test
|
|
run: ./gradlew spotlessCheck lintReleaseTest testReleaseUnitTest
|
|
|
|
- name: Assemble
|
|
run: ./gradlew assembleReleaseTest
|
|
|
|
- name: Upload Test APK
|
|
uses: actions/upload-artifact@v2.2.4
|
|
with:
|
|
name: Frost-releaseTest.apk
|
|
path: app/build/outputs/apk/releaseTest/Frost-releaseTest.apk
|
|
if-no-files-found: error
|
|
|
|
# Tests artifact upload
|
|
build-test:
|
|
|
|
needs: pre_job
|
|
|
|
if: ${{ false }}
|
|
# if: ${{ needs.pre_job.outputs.should_skip != 'true' }}
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Create
|
|
run: |
|
|
mkdir apk
|
|
echo "apk test" > apk/Frost-releaseTest.apk
|
|
|
|
- name: Upload Test APK
|
|
uses: actions/upload-artifact@v2.2.4
|
|
with:
|
|
name: Frost-releaseTest.apk
|
|
path: apk/Frost-releaseTest.apk
|
|
if-no-files-found: error
|
|
|
|
release-test:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: build
|
|
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.TEST_RELEASE_GITHUB_API_TOKEN }}
|
|
OWNER: AllanWang
|
|
REPO: Frost-for-Facebook-APK-Builder
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
repository: "${{ env.OWNER }}/${{ env.REPO }}"
|
|
token: ${{ env.GITHUB_TOKEN }}
|
|
|
|
# Contiguous to release IDs from Travis builds
|
|
- name: Current Version
|
|
run: |
|
|
CURR_ID=$(( ${{ github.run_number }} + 2914 ))
|
|
echo "RELEASE_ID_NUMBER=${CURR_ID}" >> $GITHUB_ENV
|
|
|
|
- name: Should Release
|
|
run: |
|
|
PREV_ID=$(cat Frost.txt | grep -o -E '[0-9]'+)
|
|
SHOULD_RELEASE=$( if [[ ${{ env.RELEASE_ID_NUMBER }} -gt $PREV_ID ]]; then echo true; else echo false; fi )
|
|
echo "Prev $PREV_ID Now ${{ env.RELEASE_ID_NUMBER }} Should Release $SHOULD_RELEASE"
|
|
echo "SHOULD_RELEASE=${SHOULD_RELEASE}" >> $GITHUB_ENV
|
|
|
|
- name: Update File
|
|
if: ${{ env.SHOULD_RELEASE == 'true' }}
|
|
run: echo "Frost v${{ env.RELEASE_ID_NUMBER }}" > Frost.txt
|
|
|
|
- name: Create Commit
|
|
if: ${{ env.SHOULD_RELEASE == 'true' }}
|
|
id: create_commit
|
|
uses: EndBug/add-and-commit@v7
|
|
with:
|
|
message: 'Github Action ${{ env.RELEASE_ID_NUMBER }} [skip ci]'
|
|
tag: 'v${{ env.RELEASE_ID_NUMBER }}'
|
|
author_name: Pitched Apps CI
|
|
author_email: pitchedapps@gmail.com
|
|
branch: master
|
|
push: true
|
|
|
|
# After commit
|
|
- name: Download APK
|
|
if: ${{ env.SHOULD_RELEASE == 'true' }}
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: Frost-releaseTest.apk
|
|
|
|
- name: Rename APK
|
|
if: ${{ env.SHOULD_RELEASE == 'true' }}
|
|
run: |
|
|
mv Frost-releaseTest.apk Frost-releaseTest-v${{ env.RELEASE_ID_NUMBER }}.apk
|
|
ls -l
|
|
|
|
- name: Create Release
|
|
if: ${{ (env.SHOULD_RELEASE == 'true') && steps.create_commit.outputs.pushed }}
|
|
uses: ncipollo/release-action@v1
|
|
with:
|
|
token: ${{ env.GITHUB_TOKEN }}
|
|
owner: ${{ env.OWNER }}
|
|
repo: ${{ env.REPO }}
|
|
artifactErrorsFailBuild: true
|
|
artifacts: "Frost-releaseTest-v${{ env.RELEASE_ID_NUMBER }}.apk"
|
|
artifactContentType: "application/zip"
|
|
body: |
|
|
Automatic Release v${{ env.RELEASE_ID_NUMBER }} for branch `${{ github.ref }}`
|
|
https://github.com/${{ github.repository }}/commit/${{ github.sha }}
|
|
tag: 'v${{ env.RELEASE_ID_NUMBER }}'
|
|
allowUpdates: false
|
|
|
|
- name: Echo Result
|
|
if: ${{ env.SHOULD_RELEASE == 'true' }}
|
|
run: |
|
|
TEST_RELEASE_URL="https://github.com/${{ env.OWNER }}/${{ env.REPO }}/releases/tag/v${{ env.RELEASE_ID_NUMBER }}"
|
|
echo "Created release at $TEST_RELEASE_URL"
|
|
echo "TEST_RELEASE_URL=${TEST_RELEASE_URL}" >> $GITHUB_ENV
|
|
|
|
- name: Discord Ping
|
|
uses: Sniddl/discord-commits@v1.3
|
|
with:
|
|
webhook: ${{ secrets.DISCORD_WEBHOOK }}
|
|
# Frost Blue: 0xff3b5998 / 3889560
|
|
# https://github.com/octokit/webhooks
|
|
embed: '{"title":"Frost v{{ env.RELEASE_ID_NUMBER }}","color":3889560,"url":"{{ commit.url }}","author":{"name":"{{ github.context.payload.repository.owner.login }}","icon_url":"{{ github.context.payload.repository.owner.avatar_url }}"},"fields":[{"name":"Test Release","value":"{{ env.TEST_RELEASE_URL }}"},{"name":"Action CI","value":"https://github.com/{{ github.context.payload.repository.full_name }}/actions/runs/{{ env.RUN_ID }}"}]}'
|
|
last-commit-only: true
|
|
env:
|
|
RUN_ID: ${{ github.RUN_ID }}
|
|
|
|
|
|
|
|
|
|
|
|
|