1
0
mirror of https://github.com/AllanWang/Frost-for-Facebook.git synced 2024-09-19 15:11:42 +02:00

Github actions (#1797)

* Add android workflow

* Test without dynamic artifact name

* Add back spotless ktlint version

* Always decrypt secret

* Ignore ci for l10n_dev [skip ci]

* Rename test asset

* Use github run number var

* Test github context var

* Add legacy build release

* Test step 1

* Test next steps

* Test prev version step

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Partial test

* Enable full flow

* Test build

* Test build

* Full release v2

* Use pitched apps email

* Echo release link [skip ci]

* Fix should release
This commit is contained in:
Allan Wang 2021-09-12 01:01:06 -07:00 committed by GitHub
parent 8b82044c85
commit 771676db9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 187 additions and 1 deletions

173
.github/workflows/android.yml vendored Normal file
View File

@ -0,0 +1,173 @@
name: Android CI
on:
push:
branches:
- '*'
- '!l10n_dev'
jobs:
build:
# if: ${{ false }}
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:
if: ${{ false }}
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 }}
run: echo "Frost v${{ env.RELEASE_ID_NUMBER }}" > Frost.txt
- name: Create Commit
if: ${{ env.SHOULD_RELEASE }}
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
uses: actions/download-artifact@v2
with:
name: Frost-releaseTest.apk
- name: Rename APK
run: |
mv Frost-releaseTest.apk Frost-releaseTest-v${{ env.RELEASE_ID_NUMBER }}.apk
ls -l
- name: Create Release
if: ${{ env.SHOULD_RELEASE && 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
run: echo "Created release at https://github.com/${{ env.OWNER }}/${{ env.REPO }}/releases/tag/v${{ env.RELEASE_ID_NUMBER }}"

3
files/.gitignore vendored
View File

@ -3,3 +3,6 @@ release.properties
test.keystore test.keystore
test.properties test.properties
update-dev.sh update-dev.sh
frost.tar
frost_github.tar

BIN
files/frost_github.tar.gpg Normal file

Binary file not shown.

9
files/github_actions.sh Normal file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
# Add appropriate files for encryption
# https://docs.github.com/en/actions/reference/encrypted-secrets#limits-for-secrets
rm frost_github.tar.gpg
tar cvf frost_github.tar release.keystore release.properties test.keystore test.properties
gpg --symmetric --cipher-algo AES256 frost_github.tar
rm frost_github.tar

View File

@ -3,7 +3,8 @@ apply plugin: "com.diffplug.spotless"
spotless { spotless {
kotlin { kotlin {
target "**/*.kt" target "**/*.kt"
ktlint().userData(["disabled_rules": "no-wildcard-imports"]) // https://github.com/pinterest/ktlint/releases
ktlint("0.41.0").userData(["disabled_rules": "no-wildcard-imports"])
licenseHeaderFile '../spotless.license.kt' licenseHeaderFile '../spotless.license.kt'
trimTrailingWhitespace() trimTrailingWhitespace()
endWithNewline() endWithNewline()