Skip to content

Build

Build #4

Workflow file for this run

name: Build
on:
push:
branches: [master]
paths:
- 'app/**'
- 'module/**'
- 'gradle/**'
- 'build.gradle.kts'
- 'settings.gradle.kts'
- 'gradle.properties'
- 'scripts/**'
- '.github/workflows/build.yml'
pull_request:
branches: [master]
paths:
- 'app/**'
- 'gradle/**'
- 'build.gradle.kts'
- 'settings.gradle.kts'
- 'gradle.properties'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
profile: [debug, release]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- uses: gradle/actions/setup-gradle@v4
- name: Build APK (${{ matrix.profile }})
run: |
if [ "$PROFILE" = "release" ]; then
./gradlew assembleRelease
else
./gradlew assembleDebug
fi
env:
PROFILE: ${{ matrix.profile }}
- uses: actions/upload-artifact@v4
with:
name: apk-${{ matrix.profile }}
path: app/build/outputs/apk/${{ matrix.profile }}/app-${{ matrix.profile }}.apk
retention-days: 7
package:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Read version
id: ver
run: echo "version=$(grep '^version=' module/module.prop | cut -d= -f2)" >> "$GITHUB_OUTPUT"
- name: Package ZIPs
run: |
ver="${{ steps.ver.outputs.version }}"
mkdir -p out/release out/debug
bash scripts/package.sh --apk="artifacts/apk-release/app-release.apk"
mv "out/UsbMassStorage-${ver}.zip" "out/release/"
bash scripts/package.sh --apk="artifacts/apk-debug/app-debug.apk"
mv "out/UsbMassStorage-${ver}.zip" "out/debug/UsbMassStorage-${ver}-debug.zip"
- uses: actions/upload-artifact@v4
with:
name: usbmassstorage-release-zip
path: out/release/*.zip
retention-days: 30
- uses: actions/upload-artifact@v4
with:
name: usbmassstorage-debug-zip
path: out/debug/*.zip
retention-days: 30
release:
needs: [build, package]
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Read version
id: ver
run: echo "version=$(grep '^version=' module/module.prop | cut -d= -f2)" >> "$GITHUB_OUTPUT"
- uses: actions/download-artifact@v4
with:
name: usbmassstorage-release-zip
path: zips/release
- uses: actions/download-artifact@v4
with:
name: usbmassstorage-debug-zip
path: zips/debug
- name: Extract changelog
run: |
ver="${VER}"
awk "/^## ${ver}/{flag=1; next} /^## v/{if(flag) exit} flag" CHANGELOG.md > /tmp/notes.md
cat /tmp/notes.md
env:
VER: ${{ steps.ver.outputs.version }}
- name: Create release
run: |
gh release delete "$VER" --yes 2>/dev/null || true
gh release create "$VER" \
--title "$VER" \
--latest \
--notes-file /tmp/notes.md \
zips/release/*.zip \
zips/debug/*.zip
env:
VER: ${{ steps.ver.outputs.version }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}