NexoPass/.github/workflows/build.yml
Nexoniarz 94d43ce77a Fix the single-jar Linux build: drop Bouncy Castle signature files
Merged into one jar their signatures no longer match and Java refused to start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:13:12 +02:00

111 lines
4.1 KiB
YAML

name: Build
# Every push builds and tests everything; a tag like v1.3.0 also publishes a
# release with the Android APK, the Linux packages and the Windows installer.
on:
push:
branches: [main]
tags: ["v*"]
pull_request:
workflow_dispatch:
permissions:
contents: write
jobs:
android:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v5
with: { distribution: temurin, java-version: 17 }
- uses: gradle/actions/setup-gradle@v4
- name: Version from tag
shell: bash
run: |
if [[ $GITHUB_REF == refs/tags/v* ]]; then echo "GRADLE_ARGS=-PappVersion=${GITHUB_REF_NAME#v}" >> "$GITHUB_ENV"; fi
- name: Signing key
shell: bash
env:
KEYSTORE_B64: ${{ secrets.NEXOPASS_KEYSTORE_B64 }}
run: |
# Same key as the APKs built before, so the app updates in place.
if [[ -n $KEYSTORE_B64 ]]; then
echo "$KEYSTORE_B64" | base64 -d > "$RUNNER_TEMP/release.keystore"
echo "NEXOPASS_KEYSTORE=$RUNNER_TEMP/release.keystore" >> "$GITHUB_ENV"
fi
- name: Build APK
env:
NEXOPASS_KEYSTORE_PASSWORD: ${{ secrets.NEXOPASS_KEYSTORE_PASSWORD }}
NEXOPASS_KEY_ALIAS: ${{ secrets.NEXOPASS_KEY_ALIAS }}
NEXOPASS_KEY_PASSWORD: ${{ secrets.NEXOPASS_KEY_PASSWORD }}
run: ./gradlew :android:assembleRelease $GRADLE_ARGS
- name: Collect
shell: bash
run: |
mkdir dist
cp android/build/outputs/apk/release/android-release.apk "dist/NexoPass-${GITHUB_REF_NAME#v}-android.apk"
- uses: actions/upload-artifact@v4
with: { name: android, path: dist/* }
linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v5
with: { distribution: temurin, java-version: 17 }
- uses: gradle/actions/setup-gradle@v4
- run: sudo apt-get update && sudo apt-get install -y rpm
- name: Version from tag
shell: bash
run: |
if [[ $GITHUB_REF == refs/tags/v* ]]; then echo "GRADLE_ARGS=-PappVersion=${GITHUB_REF_NAME#v}" >> "$GITHUB_ENV"; fi
- name: Test (passwords must match the script)
run: ./gradlew :desktop:test $GRADLE_ARGS
- name: Build Linux packages
run: ./gradlew :desktop:packageDeb :desktop:packageRpm :desktop:packageUberJarForCurrentOS $GRADLE_ARGS
- name: Collect
shell: bash
run: |
mkdir dist
cp desktop/build/compose/binaries/main/deb/*.deb dist/
cp desktop/build/compose/binaries/main/rpm/*.rpm dist/
cp desktop/build/compose/jars/*.jar dist/
- uses: actions/upload-artifact@v4
with: { name: linux, path: dist/* }
windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v5
with: { distribution: temurin, java-version: 17 }
- uses: gradle/actions/setup-gradle@v4
- name: Version from tag
shell: bash
run: |
if [[ $GITHUB_REF == refs/tags/v* ]]; then echo "GRADLE_ARGS=-PappVersion=${GITHUB_REF_NAME#v}" >> "$GITHUB_ENV"; fi
- name: Build installer and portable version
shell: bash
run: ./gradlew :desktop:packageMsi :desktop:createDistributable $GRADLE_ARGS
- name: Collect
shell: pwsh
run: |
New-Item -ItemType Directory dist | Out-Null
Copy-Item desktop/build/compose/binaries/main/msi/*.msi dist/
$v = "$env:GITHUB_REF_NAME".TrimStart("v")
Compress-Archive -Path desktop/build/compose/binaries/main/app/NexoPass -DestinationPath "dist/NexoPass-$v-windows-portable.zip"
- uses: actions/upload-artifact@v4
with: { name: windows, path: dist/* }
release:
if: startsWith(github.ref, 'refs/tags/v')
needs: [android, linux, windows]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with: { path: dist, merge-multiple: true }
- uses: softprops/action-gh-release@v2
with:
files: dist/*
generate_release_notes: true