name: Create keepass2android release env: NAME: 'Release' on: push: tags: - "v1.*" workflow_dispatch: # Allows manual triggering of the workflow 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/net8.0-android/publish/*.apk src/keepass2android-app/bin/Release/net8.0-android/*/publish/*.apk - 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/net8.0-android/publish/*.apk src/keepass2android-app/bin/Release/net8.0-android/*/publish/*.apk