163 lines
5.2 KiB
YAML
163 lines
5.2 KiB
YAML
name: Create keepass2android release
|
|
env:
|
|
NAME: 'Release'
|
|
|
|
on:
|
|
# the workflow is always triggered manually. This allows to test the apks
|
|
# before publishing the release and not having a broken tag in the repo if that test fails.
|
|
workflow_dispatch:
|
|
jobs:
|
|
|
|
build-release:
|
|
|
|
runs-on: windows-2022
|
|
|
|
strategy:
|
|
matrix:
|
|
flavor: [Net, NoNet]
|
|
target: [apk, apk_split]
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Extract key store
|
|
env:
|
|
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
|
|
KeyStore: "${{ github.workspace }}/kp2a.keystore"
|
|
|
|
shell: bash
|
|
run: |
|
|
echo $KeyStore
|
|
echo $KEYSTORE_BASE64 | base64 --decode > $KeyStore
|
|
|
|
|
|
|
|
- name: Setup Gradle
|
|
uses: gradle/actions/setup-gradle@v3
|
|
|
|
- name: Cache NuGet packages
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.nuget/packages
|
|
key: ${{ runner.os }}-nuget-${{ hashFiles('src/**/*.csproj', 'src/**/packages.config') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-nuget-
|
|
|
|
# Workaround an issue when building on windows-2022. Error was
|
|
# D8 : OpenJDK 64-Bit Server VM warning : INFO: os::commit_memory(0x00000000ae400000, 330301440, 0) failed; error='The paging file is too small for this operation to complete' (DOS error/errno=1455) [D:\a\keepass2android\keepass2android\src\keepass2android\keepass2android-app.csproj]
|
|
# C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.D8.targets(81,5): error MSB6006: "java.exe" exited with code 1. [D:\a\keepass2android\keepass2android\src\keepass2android\keepass2android-app.csproj]
|
|
- name: Configure Pagefile
|
|
uses: al-cheb/configure-pagefile-action@a3b6ebd6b634da88790d9c58d4b37a7f4a7b8708 # v1.4
|
|
with:
|
|
minimum-size: 8GB
|
|
|
|
- name: Add msbuild/dotnet to PATH
|
|
uses: microsoft/setup-msbuild@v2
|
|
# If we want to also have nmake, use this instead
|
|
#uses: ilammy/msvc-dev-cmd@v1
|
|
|
|
- name: Switch to JDK-17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
java-version: '17'
|
|
distribution: 'temurin'
|
|
|
|
- name: Display java version
|
|
run: java -version
|
|
|
|
- name: Build native dependencies
|
|
shell: cmd
|
|
run: |
|
|
make native
|
|
|
|
- name: Build java dependencies
|
|
shell: cmd
|
|
run: |
|
|
make java
|
|
|
|
- name: List apks
|
|
run: find . -type f -name "*.apk"
|
|
shell: bash
|
|
|
|
- name: Update dotnet workloads
|
|
run: |
|
|
dotnet workload update
|
|
|
|
- name: List apks
|
|
run: find . -type f -name "*.apk"
|
|
shell: bash
|
|
|
|
|
|
- name: Select the manifest
|
|
run: |
|
|
make manifestlink Flavor=${{ matrix.flavor }}
|
|
|
|
- name: List apks
|
|
run: find . -type f -name "*.apk"
|
|
shell: bash
|
|
|
|
|
|
- name: Install NuGet dependencies
|
|
run: make nuget Flavor=${{ matrix.flavor }}
|
|
|
|
- name: List apks
|
|
run: find . -type f -name "*.apk"
|
|
shell: bash
|
|
|
|
- name: Build APK (net)
|
|
env:
|
|
KeyStore: "${{ github.workspace }}/kp2a.keystore"
|
|
MyAndroidSigningStorePass: ${{ secrets.KEY_STORE_PASSWORD }}
|
|
MyAndroidSigningKeyPass: ${{ secrets.KEY_PASSWORD }}
|
|
DropboxAppKey: ${{ secrets.DROPBOX_APP_KEY }}
|
|
DropboxAppSecret: ${{ secrets.DROPBOX_APP_SECRET }}
|
|
DropboxAppFolderAppKey: ${{ secrets.DROPBOX_APP_FOLDER_APP_KEY }}
|
|
DropboxAppFolderAppSecret: ${{ secrets.DROPBOX_APP_FOLDER_APP_SECRET }}
|
|
|
|
run: |
|
|
make ${{ matrix.target }} Configuration=Release Flavor=${{ matrix.flavor }}
|
|
|
|
- name: List apks
|
|
run: find . -type f -name "*.apk"
|
|
shell: bash
|
|
|
|
- name: Archive production artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: keepass2android_${{ matrix.target }}_${{ matrix.flavor }}
|
|
# the first line is for "apk" target, the second line is for "apk_split" target
|
|
path: |
|
|
src/keepass2android-app/bin/Release/net9.0-android/publish/*.apk
|
|
src/keepass2android-app/bin/Release/net9.0-android/*/publish/*.apk
|
|
|
|
- name: List apks
|
|
run: find . -type f -name "*.apk"
|
|
shell: bash
|
|
|
|
- name: Rename apks
|
|
# after updating to .net9, the naming scheme of the output apks has changed. rename them to the old scheme
|
|
# for consistancy with previous releases
|
|
run: |
|
|
for apk in src/keepass2android-app/bin/Release/net9.0-android/android-*/publish/*-Signed.apk; do
|
|
[ -e "$apk" ] || continue # if glob above doesn't return anything, the loop is still executed once
|
|
arch=$(basename "$(dirname "$(dirname "$apk")")") # e.g. "android-arm64"
|
|
base=$(basename "$apk" .apk) # e.g. "keepass2android.keepass2android_nonet-Signed"
|
|
mv "$apk" "$(dirname "$apk")/${base}-${arch#android-}.apk"
|
|
done
|
|
shell: bash
|
|
|
|
- name: List apks
|
|
run: find . -type f -name "*.apk"
|
|
shell: bash
|
|
|
|
- name: Upload APK to GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
draft: true
|
|
files: |
|
|
src/keepass2android-app/bin/Release/net9.0-android/publish/*.apk
|
|
src/keepass2android-app/bin/Release/net9.0-android/*/publish/*.apk
|