Skip to content

build(ci): fix pre-release tag not updating #121

build(ci): fix pre-release tag not updating

build(ci): fix pre-release tag not updating #121

Workflow file for this run

name: APK Release CI
on:
push:
tags: ['[0-9]+.[0-9]+.[0-9]+']
branches: [master]
permissions:
contents: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build APK
runs-on: ubuntu-latest
outputs:
release_sha: ${{ steps.prepare_artifact.outputs.release_sha }}
short_sha: ${{ steps.prepare_artifact.outputs.short_sha }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: Setup Android SDK
run: ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "build-tools;29.0.3"
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: 17
distribution: adopt
- name: Assemble release APK
uses: gradle/gradle-command-action@v2
with:
arguments: :app:assembleRelease
- name: Sign release APK
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
- name: Prepare release artifact
id: prepare_artifact
run: |
mv app/build/outputs/apk/release/app-release-unsigned-signed.apk flixclusive-release.apk
echo "release_sha=$(sha256sum flixclusive-release.apk | cut -d ' ' -f1)" >> $GITHUB_OUTPUT
echo "short_sha=${GITHUB_SHA::7}" >> $GITHUB_OUTPUT
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: release-apk
path: flixclusive-release.apk
release:
name: Create Release
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: release-apk
- name: Get previous tag
id: previousTag
if: startsWith(github.ref, 'refs/tags/')
run: |
name=$(git --no-pager tag --sort=creatordate --merged ${{ github.ref_name }} | tail -2 | head -1)
echo "previousTag: $name"
echo "previousTag=$name" >> $GITHUB_ENV
- name: Generate changelogs
id: changelog
uses: requarks/changelog-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
fromTag: ${{ github.ref_name }}
toTag: ${{ startsWith(github.ref, 'refs/tags/') && env.previousTag || 'pre-release' }}
excludeTypes: ${{ startsWith(github.ref, 'refs/tags/') && 'build,docs,other,style' || '' }}
writeToFile: false
- name: Manage pre-release
if: "!startsWith(github.ref, 'refs/tags/')"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "Attempting to delete pre-release tag..."
git tag -d pre-release || echo "Local tag 'pre-release' does not exist."
git push origin :refs/tags/pre-release || echo "Remote tag 'pre-release' does not exist."
echo "Creating new pre-release..."
gh release create pre-release \
--title "PR-${{ needs.build.outputs.short_sha }}" \
--notes "$(cat << EOF
##### _NOTE: Android TV is incomplete, the providers on this port are not yet installable. Though, you could test it now._
---
### 🐞 Known issues
- TV focus crashes. Compose TV is bugged af; we wait til the new update.
${{ steps.changelog.outputs.changes }}
---
### Checksums
| Variant | SHA-256 |
| ------- | ------- |
| release | ${{ needs.build.outputs.release_sha }} |
EOF
)" \
--prerelease \
flixclusive-release.apk
- name: Manage stable release
if: startsWith(github.ref, 'refs/tags/')
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create ${{ github.ref_name }} \
--title "${{ github.ref_name }}" \
--notes "$(cat << EOF
##### _NOTE: Android TV is incomplete, the providers on this port are not yet installable. Though, you could test it now._
---
### 🐞 Known issues
- TV focus crashes. Compose TV is bugged af; we wait til the new update.
${{ steps.changelog.outputs.changes }}
---
### Checksums
| Variant | SHA-256 |
| ------- | ------- |
| release | ${{ needs.build.outputs.release_sha }} |
EOF
)" \
flixclusive-release.apk
archive:
name: Archive APK
needs: [build, release]
if: "!startsWith(github.ref, 'refs/tags/')"
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Checkout archives
uses: actions/checkout@v4
with:
ref: "archives"
path: "archives"
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: release-apk
- name: Archive pre-release APK
run: |
chmod +x .github/parse_version.sh
version=$(.github/parse_version.sh)
archive_dir="$GITHUB_WORKSPACE/archives/$version"
mkdir -p "$archive_dir"
cp flixclusive-release.apk "$archive_dir/PR-${{ needs.build.outputs.short_sha }} $(date +'%Y-%m-%d %H:%M:%S').apk"
cd $GITHUB_WORKSPACE/archives
git config user.name github-actions
git config user.email [email protected]
git add .
git commit -m "Archive $(date +'%Y-%m-%d') [flixclusiveorg/Flixclusive@${GITHUB_SHA}]" || true
git push