cp left the original zip alongside the renamed copy, so the glob matched both, doubling artifact size. mv removes the original.
166 lines
4.8 KiB
YAML
166 lines
4.8 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
branches: [ "main" ]
|
|
paths-ignore:
|
|
- '**.md'
|
|
- '.github/**'
|
|
- '!.github/workflows/**'
|
|
pull_request:
|
|
branches: [ "main" ]
|
|
paths-ignore:
|
|
- '**.md'
|
|
- '.github/**'
|
|
- '!.github/workflows/**'
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: "recursive"
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Java
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
cache: 'gradle'
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: aarch64-linux-android,armv7-linux-androideabi,i686-linux-android,x86_64-linux-android
|
|
|
|
- name: Cache Rust artifacts
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cargo/registry
|
|
~/.cargo/git
|
|
~/.cargo/bin/cargo-ndk
|
|
native-certgen/target
|
|
key: rust-${{ runner.os }}-${{ hashFiles('native-certgen/Cargo.lock') }}
|
|
restore-keys: rust-${{ runner.os }}-
|
|
|
|
- name: Install cargo-ndk
|
|
run: command -v cargo-ndk || cargo install cargo-ndk
|
|
|
|
- name: Set up ccache
|
|
uses: hendrikmuhs/ccache-action@v1.2
|
|
with:
|
|
key: ccache-${{ runner.os }}-${{ github.ref_name }}
|
|
restore-keys: |
|
|
ccache-${{ runner.os }}-${{ github.ref_name }}
|
|
ccache-${{ runner.os }}-
|
|
ccache-
|
|
|
|
- name: Setup Gradle
|
|
uses: gradle/actions/setup-gradle@v4
|
|
|
|
- name: Build with Gradle
|
|
run: |
|
|
chmod +x ./gradlew
|
|
./gradlew zipRelease zipDebug -Porg.gradle.parallel=true -Porg.gradle.vfs.watch=true -Dorg.gradle.jvmargs=-Xmx2048m
|
|
|
|
- name: Read version
|
|
id: ver
|
|
run: |
|
|
ver=$(grep 'val verName' app/build.gradle.kts | sed 's/.*"\(.*\)".*/\1/')
|
|
echo "version=${ver}" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Rename ZIPs for release
|
|
run: |
|
|
RELEASE_FILE=$(find out -name "*Release*.zip" | head -1)
|
|
DEBUG_FILE=$(find out -name "*Debug*.zip" | head -1)
|
|
|
|
if [[ -z "$RELEASE_FILE" || -z "$DEBUG_FILE" ]]; then
|
|
echo "::error::Could not find release or debug ZIPs in out/"
|
|
ls -la out/ || echo "out/ does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
mv "$RELEASE_FILE" "out/TEESimulator-${VER}-Release.zip"
|
|
mv "$DEBUG_FILE" "out/TEESimulator-${VER}-Debug.zip"
|
|
|
|
echo "Release: TEESimulator-${VER}-Release.zip ($(du -h "out/TEESimulator-${VER}-Release.zip" | cut -f1))"
|
|
echo "Debug: TEESimulator-${VER}-Debug.zip ($(du -h "out/TEESimulator-${VER}-Debug.zip" | cut -f1))"
|
|
env:
|
|
VER: ${{ steps.ver.outputs.version }}
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: TEESimulator-release-zip
|
|
path: out/TEESimulator-*-Release.zip
|
|
retention-days: 30
|
|
compression-level: 0
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: TEESimulator-debug-zip
|
|
path: out/TEESimulator-*-Debug.zip
|
|
retention-days: 7
|
|
compression-level: 0
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: release-mappings
|
|
path: app/build/outputs/mapping/release
|
|
retention-days: 30
|
|
compression-level: 9
|
|
|
|
release:
|
|
needs: build
|
|
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Read version
|
|
id: ver
|
|
run: |
|
|
ver=$(grep 'val verName' app/build.gradle.kts | sed 's/.*"\(.*\)".*/\1/')
|
|
echo "version=${ver}" >> "$GITHUB_OUTPUT"
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: TEESimulator-release-zip
|
|
path: zips
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: TEESimulator-debug-zip
|
|
path: zips
|
|
|
|
- name: Extract changelog
|
|
run: |
|
|
ver="${VER#v}"
|
|
awk "/^## TEESimulator v${ver}/{flag=1; next} /^## TEESimulator v/{if(flag) exit} flag" module/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/TEESimulator-${VER}-Release.zip" \
|
|
"zips/TEESimulator-${VER}-Debug.zip"
|
|
env:
|
|
VER: ${{ steps.ver.outputs.version }}
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|