diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..b8cae726 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,104 @@ +name: CI +on: + push: + tags-ignore: + - 'v*' + branches: + - '*' + pull_request: +jobs: + libcore: + name: Native Build (LibCore) + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Golang Status + run: find buildScript libcore/*.sh | xargs cat | sha1sum > golang_status + - name: Libcore Status + run: git ls-files libcore | xargs cat | sha1sum > libcore_status + - name: LibCore Cache + id: cache + uses: actions/cache@v4 + with: + path: | + app/libs/libcore.aar + key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }}-ci + - name: Install Golang + if: steps.cache.outputs.cache-hit != 'true' + uses: actions/setup-go@v5 + with: + go-version: ^1.21 + - name: Native Build + if: steps.cache.outputs.cache-hit != 'true' + run: ./run lib core + build: + name: Build OSS APK + runs-on: ubuntu-latest + needs: + - libcore + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Golang Status + run: find buildScript libcore/*.sh | xargs cat | sha1sum > golang_status + - name: Libcore Status + run: git ls-files libcore | xargs cat | sha1sum > libcore_status + - name: LibCore Cache + uses: actions/cache@v4 + with: + path: | + app/libs/libcore.aar + key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }}-ci + - name: Gradle cache + uses: actions/cache@v4 + with: + path: ~/.gradle + key: gradle-oss-${{ hashFiles('**/*.gradle.kts') }}-ci + - name: Gradle Build + env: + BUILD_PLUGIN: none + run: | + echo "sdk.dir=${ANDROID_HOME}" > local.properties + echo "ndk.dir=${ANDROID_HOME}/ndk/25.0.8775105" >> local.properties + export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" + ./run init action gradle + ./gradlew app:assembleOssDebug + APK=$(find app/build/outputs/apk -name '*arm64-v8a*.apk') + APK=$(dirname $APK) + echo "APK=$APK" >> $GITHUB_ENV + - name: Upload Artifacts + uses: actions/upload-artifact@v4 + with: + name: APKs + path: ${{ env.APK }} + upload: + name: Upload APK + if: ${{ github.event_name != 'pull_request'}} + runs-on: ubuntu-latest + needs: build + steps: + - name: Download Artifacts + uses: actions/download-artifact@v4 + with: + name: APKs + path: artifacts + - name: Push APKs to Telegram Group + run: | + mkdir apks + find artifacts -name "*.apk" -exec cp {} apks \; + + function upload() { + for apk in $@; do + echo ">> Uploading $apk" + curl https://api.telegram.org/bot${{ secrets.TELEGRAM_TOKEN }}/sendDocument \ + -X POST \ + -F chat_id="${{ secrets.TELEGRAM_GROUP }}" \ + -F document="@$apk" \ + --silent --show-error --fail >/dev/null & + done + for job in $(jobs -p); do + wait $job || exit 1 + done + } + upload apks/* diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f8ffea99..a83ada2f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,21 +20,21 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Golang Status run: find buildScript libcore/*.sh | xargs cat | sha1sum > golang_status - name: Libcore Status run: git ls-files libcore | xargs cat | sha1sum > libcore_status - name: LibCore Cache id: cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | app/libs/libcore.aar key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }} - name: Install Golang if: steps.cache.outputs.cache-hit != 'true' - uses: actions/setup-go@v3 + uses: actions/setup-go@v5 with: go-version: ^1.21 - name: Native Build @@ -47,19 +47,19 @@ jobs: - libcore steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Golang Status run: find buildScript libcore/*.sh | xargs cat | sha1sum > golang_status - name: Libcore Status run: git ls-files libcore | xargs cat | sha1sum > libcore_status - name: LibCore Cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | app/libs/libcore.aar key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }} - name: Gradle cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.gradle key: gradle-oss-${{ hashFiles('**/*.gradle.kts') }} @@ -86,9 +86,9 @@ jobs: needs: build steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Donwload Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: APKs path: artifacts @@ -107,7 +107,7 @@ jobs: needs: build steps: - name: Donwload Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: APKs path: artifacts @@ -138,19 +138,19 @@ jobs: - libcore steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Golang Status run: find buildScript libcore/*.sh | xargs cat | sha1sum > golang_status - name: Libcore Status run: git ls-files libcore | xargs cat | sha1sum > libcore_status - name: LibCore Cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | app/libs/libcore.aar key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }} - name: Gradle cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/.gradle key: gradle-play-${{ hashFiles('**/*.gradle.kts') }}