name: CI on: [push, pull_request] jobs: build-linux-ubuntu-x64-clang: runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 10 - name: Prepare run: | sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev cmake - name: Build run: | CC=clang CXX=clang++ ./autogen.sh --enable-binreloc --prefix=/opt/firebird make -j4 make tests -j4 make run_tests make dist tar xzvf gen/Firebird-*-linux-x64.tar.gz (cd Firebird-*-linux-x64; sudo ./install.sh -silent) - name: Upload installer uses: actions/upload-artifact@main with: name: firebird-ubuntu-20.04-clang-x64 path: gen/Firebird-*-linux-x64.tar.gz build-linux-docker: name: build-linux-docker-${{ matrix.arch }} runs-on: ubuntu-22.04 env: FB_DOCKER_PATH: ${{ (startsWith(matrix.arch, 'arm') && 'arm32-arm64') || 'x86-x64' }} strategy: fail-fast: false matrix: arch: - x86 - x64 - arm32 - arm64 steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 10 - name: Set up QEMU uses: docker/setup-qemu-action@v2 if: ${{ startsWith(matrix.arch, 'arm') }} - name: Build run: | cd builds/docker/linux/$FB_DOCKER_PATH ./run-${{ matrix.arch }}.sh - name: Upload installer uses: actions/upload-artifact@main with: name: firebird-linux-${{ matrix.arch }} path: gen/Firebird-*-linux-${{ matrix.arch }}.tar.gz - name: Upload debug symbols uses: actions/upload-artifact@main with: name: firebird-linux-${{ matrix.arch }}-debugSymbols path: gen/Firebird-*-linux-${{ matrix.arch }}-debugSymbols.tar.gz - name: Snapshot - prepare id: snapshot_prepare if: | github.repository == 'FirebirdSQL/firebird' && github.event.head_commit.message == 'increment build number' && github.ref_name == 'master' run: | echo "snapshot_name=${{ github.ref_name }}" >> $GITHUB_OUTPUT - name: Snapshot - delete old assets uses: mknejp/delete-release-assets@v1 if: steps.snapshot_prepare.outputs.snapshot_name with: repository: FirebirdSQL/snapshots token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} tag: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} fail-if-no-release: false fail-if-no-assets: false assets: | Firebird-*-linux-${{ matrix.arch }}*.tar.gz - name: Snapshot - release id: snapshot_release_try1 uses: softprops/action-gh-release@v1 if: steps.snapshot_prepare.outputs.snapshot_name continue-on-error: true with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | gen/Firebird-*-linux-${{ matrix.arch }}*.tar.gz - name: Snapshot - release (retry) uses: softprops/action-gh-release@v1 if: | steps.snapshot_prepare.outputs.snapshot_name && steps.snapshot_release_try1.outcome == 'failure' with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | gen/Firebird-*-linux-${{ matrix.arch }}*.tar.gz build-alpine-x64: runs-on: ubuntu-20.04 container: alpine:3.14 steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 10 - name: Prepare run: apk update && apk --no-cache --update add build-base libtool git autoconf automake cmake zlib-dev icu-dev ncurses-dev libedit-dev linux-headers tar - name: Build run: | ./autogen.sh --enable-binreloc-threads --with-builtin-tommath --with-builtin-tomcrypt --prefix=/opt/firebird make -j4 make tests -j4 make run_tests make dist tar xzvf gen/Firebird-*-linux-x64.tar.gz - name: Upload installer uses: actions/upload-artifact@main with: name: firebird-alpine-x64 path: gen/Firebird-*-linux-x64.tar.gz build-windows: runs-on: ${{ matrix.os }} env: VS_VERSION: ${{ (matrix.os == 'windows-2019' && '2019' || (matrix.os == 'windows-2022' && '2022' || '')) }} strategy: fail-fast: false matrix: os: - windows-2022 - windows-2019 platform: [x64, x86] steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 10 - name: Prepare shell: cmd run: | for /r %%i in (*.bat) do unix2dos "%%i" choco uninstall --no-progress --yes innosetup choco install --no-progress --yes innosetup --version=6.1.2 - name: Build shell: cmd env: PLATFORM: ${{ matrix.platform }} VS_SCRIPT: ${{ matrix.os == 'windows-2022' && 'C:\Program Files\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat' || 'C:\Program Files (x86)\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat' }} run: | set SEVENZIP=C:\Program Files\7-Zip set INNO6_SETUP_PATH=C:\Program Files (x86)\Inno Setup 6 if "%PLATFORM%" == "x64" set FB_VS_ARCH=amd64 if "%PLATFORM%" == "x64" set FB_PROCESSOR_ARCHITECTURE=AMD64 if "%PLATFORM%" == "x86" set FB_VS_ARCH=x86 if "%PLATFORM%" == "x86" set FB_PROCESSOR_ARCHITECTURE=x86 call "%VS_SCRIPT%" -arch=%FB_VS_ARCH% cd builds\win32 call run_all.bat call run_tests.bat - name: Upload zip uses: actions/upload-artifact@main with: name: firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-zip path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip - name: Upload installer uses: actions/upload-artifact@main with: name: firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-installer path: builds/install_images/*-windows-${{ matrix.platform }}.exe build-windows-docker: runs-on: windows-2022 env: VS_VERSION: ${{ (matrix.os == 'windows-2019' && '2019' || (matrix.os == 'windows-2022' && '2022' || '')) }} strategy: fail-fast: false matrix: platform: [x64, x86] steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 10 - name: Build id: build shell: cmd env: PLATFORM: ${{ matrix.platform }} run: | echo arch_suffix=%PLATFORM%>> %GITHUB_OUTPUT% mkdir builds\install_images cd builds\docker\windows call build.bat call run.bat C:\fbscripts\build-%PLATFORM%.bat - name: Upload zip uses: actions/upload-artifact@main with: name: firebird-windows-${{ matrix.platform }}-zip path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip - name: Upload zip (withDebugSymbols) uses: actions/upload-artifact@main with: name: firebird-windows-${{ matrix.platform }}-withDebugSymbols-zip path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}-withDebugSymbols.zip - name: Upload installer uses: actions/upload-artifact@main with: name: firebird-windows-${{ matrix.platform }}-installer path: builds/install_images/*-windows-${{ matrix.platform }}.exe - name: Upload installer (withDebugSymbols) uses: actions/upload-artifact@main with: name: firebird-windows-${{ matrix.platform }}-withDebugSymbols-installer path: builds/install_images/*-windows-${{ matrix.platform }}-withDebugSymbols.exe - name: Snapshot - prepare id: snapshot_prepare if: | github.repository == 'FirebirdSQL/firebird' && github.event.head_commit.message == 'increment build number' && github.ref_name == 'master' shell: cmd run: | echo snapshot_name=${{ github.ref_name }}>> %GITHUB_OUTPUT% - name: Snapshot - delete old assets uses: mknejp/delete-release-assets@v1 if: steps.snapshot_prepare.outputs.snapshot_name with: repository: FirebirdSQL/snapshots token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} tag: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} fail-if-no-release: false fail-if-no-assets: false assets: | Firebird-*-windows-${{ steps.build.outputs.arch_suffix }}*.exe Firebird-*-windows-${{ steps.build.outputs.arch_suffix }}*.zip - name: Snapshot - release id: snapshot_release_try1 uses: softprops/action-gh-release@v1 if: steps.snapshot_prepare.outputs.snapshot_name continue-on-error: true with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | builds/install_images/Firebird-*-windows-*.exe builds/install_images/Firebird-*-windows-*.zip - name: Snapshot - release (retry) uses: softprops/action-gh-release@v1 if: | steps.snapshot_prepare.outputs.snapshot_name && steps.snapshot_release_try1.outcome == 'failure' with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | builds/install_images/Firebird-*windows-*.exe builds/install_images/Firebird-*windows-*.zip build-macos: runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 10 - name: Prepare - Install tools run: | brew install automake cmake libtool ninja - name: Cache - libc++ install id: cache-libcxx-install-macos uses: actions/cache@v3 with: key: ${{ runner.os }}-libcxx-install-13.0.1 path: | extern/libcxx-macos-install - name: Download libc++ sources if: steps.cache-libcxx-install-macos.outputs.cache-hit != 'true' run: | mkdir extern/libcxx-macos pushd extern/libcxx-macos curl -OL https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/llvm-project-13.0.1.src.tar.xz tar xJf llvm-project-13.0.1.src.tar.xz popd - name: Build libc++ if: steps.cache-libcxx-install-macos.outputs.cache-hit != 'true' run: | LIBCXX_BUILD_PATH=`pwd`/extern/libcxx-macos-build LIBCXX_INSTALL_PATH=`pwd`/extern/libcxx-macos-install mkdir $LIBCXX_BUILD_PATH pushd extern/libcxx-macos/llvm-project-13.0.1.src export MACOSX_DEPLOYMENT_TARGET=10.9 cmake -G Ninja -S llvm -B $LIBCXX_BUILD_PATH \ -DLLVM_ENABLE_PROJECTS="libcxx;libcxxabi" \ -DCMAKE_INSTALL_PREFIX=$LIBCXX_INSTALL_PATH \ -DCMAKE_BUILD_TYPE=Release \ -DLIBCXX_ENABLE_SHARED=false \ -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=true ninja -C $LIBCXX_BUILD_PATH cxx cxxabi ninja -C $LIBCXX_BUILD_PATH install-cxx install-cxxabi popd - name: Cache - libicu install id: cache-libicu-install-macos uses: actions/cache@v3 with: key: ${{ runner.os }}-libicu-install-63.2 path: | extern/libicu-macos-install - name: Download and patch libicu sources if: steps.cache-libicu-install-macos.outputs.cache-hit != 'true' run: | mkdir extern/libicu-macos pushd extern/libicu-macos curl -OL https://github.com/unicode-org/icu/releases/download/release-63-2/icu4c-63_2-src.tgz curl -OL https://github.com/unicode-org/icu/commit/24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch tar xzf icu4c-63_2-src.tgz cd icu/source patch -p3 < ../../24aeb9a5a5874f4ce5db912e30670ac3ae236971.patch popd - name: Build libicu if: steps.cache-libicu-install-macos.outputs.cache-hit != 'true' run: | export LIBTOOLIZE=glibtoolize export LIBTOOL=glibtool LIBICU_INSTALL_PATH=`pwd`/extern/libicu-macos-install pushd extern/libicu-macos/icu/source ./runConfigureICU MacOSX --prefix=$LIBICU_INSTALL_PATH make -j4 make install install_name_tool -id @rpath/lib/libicuuc.dylib $LIBICU_INSTALL_PATH/lib/libicuuc.dylib install_name_tool -id @rpath/lib/libicui18n.dylib $LIBICU_INSTALL_PATH/lib/libicui18n.dylib install_name_tool -id @rpath/lib/libicudata.dylib $LIBICU_INSTALL_PATH/lib/libicudata.dylib install_name_tool -change libicudata.63.dylib @loader_path/libicudata.63.dylib $LIBICU_INSTALL_PATH/lib/libicuuc.63.dylib install_name_tool -change libicudata.63.dylib @loader_path/libicudata.63.dylib $LIBICU_INSTALL_PATH/lib/libicui18n.63.dylib install_name_tool -change libicuuc.63.dylib @loader_path/libicuuc.63.dylib $LIBICU_INSTALL_PATH/lib/libicui18n.63.dylib popd - name: Build run: | export LIBTOOLIZE=glibtoolize export LIBTOOL=glibtool LIBCXX_INSTALL_PATH=`pwd`/extern/libcxx-macos-install LIBICU_INSTALL_PATH=`pwd`/extern/libicu-macos-install mkdir -p gen/Release/firebird/lib cp -R $LIBICU_INSTALL_PATH/lib/libicu{data,i18n,uc}.*dylib gen/Release/firebird/lib/ export C_INCLUDE_PATH="$LIBICU_INSTALL_PATH/include:`xcrun --show-sdk-path`/usr/include" export CPLUS_INCLUDE_PATH="$LIBCXX_INSTALL_PATH/include/c++/v1:$LIBICU_INSTALL_PATH/include:`xcrun --show-sdk-path`/usr/include" export LIBRARY_PATH="$LIBCXX_INSTALL_PATH/lib:$LIBICU_INSTALL_PATH/lib:$LIBRARY_PATH" ./autogen.sh --with-builtin-tommath --with-builtin-tomcrypt make -j4 make tests -j4 make run_tests (cd gen; make -B -f make.platform.postfix ICU_LOC="$LIBICU_INSTALL_PATH/lib/") (cd gen; make -B -f Makefile.install) # Rename directory to make sure the build is relocatable. mv gen gen2 sudo installer -pkg gen2/Release/*.pkg -verbose -target / export FIREBIRD_LOCK=`pwd`/temp echo "create database 't.fdb'; select '1' from rdb\$database; select _win1252 '2' from rdb\$database; select _utf8 '3' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql echo "create database 'localhost:/tmp/t.fdb' user sysdba password 'masterkey'; select '11' from rdb\$database; select _win1252 '22' from rdb\$database; select _utf8 '33' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql mv gen2 gen mkdir gen/artifacts mv gen/Release/*.pkg gen/artifacts - name: Upload installer uses: actions/upload-artifact@main with: name: firebird-macos path: gen/artifacts - name: Snapshot - prepare id: snapshot_prepare if: | github.repository == 'FirebirdSQL/firebird' && github.event.head_commit.message == 'increment build number' && github.ref_name == 'master' run: | echo "snapshot_name=${{ github.ref_name }}" >> $GITHUB_OUTPUT - name: Snapshot - delete old assets uses: mknejp/delete-release-assets@v1 if: steps.snapshot_prepare.outputs.snapshot_name with: repository: FirebirdSQL/snapshots token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} tag: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} fail-if-no-release: false fail-if-no-assets: false assets: | Firebird-*-macos-x64*.pkg - name: Snapshot - release id: snapshot_release_try1 uses: softprops/action-gh-release@v1 if: steps.snapshot_prepare.outputs.snapshot_name continue-on-error: true with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | gen/artifacts/Firebird-*-macos-x64*.pkg - name: Snapshot - release (retry) uses: softprops/action-gh-release@v1 if: | steps.snapshot_prepare.outputs.snapshot_name && steps.snapshot_release_try1.outcome == 'failure' with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | gen/artifacts/Firebird-*-macos-x64*.pkg build-android-initial: name: build-android-${{ matrix.arch }}-initial runs-on: ubuntu-22.04 env: NDK: /home/runner/Android/Ndk ARCH: ${{ matrix.arch }} FB_PREFIX: ${{ (matrix.arch == 'arm32' && 'arme') || (matrix.arch == 'x64' && 'x86_64') || matrix.arch }} strategy: fail-fast: false matrix: arch: - arm32 - arm64 - x86 - x64 steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 10 - name: Prepare - install Linux tools run: | sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev - name: Prepare - Download and install Android NDK run: | mkdir downloads pushd downloads curl -OL https://dl.google.com/android/repository/android-ndk-r25b-linux.zip mkdir -p $NDK unzip android-ndk-r25b-linux.zip -d $NDK && f=("$NDK"/*) && mv "$NDK"/*/* "$NDK" && rmdir "${f[@]}" - name: Build run: | ./autogen.sh --prefix=/opt/firebird --enable-binreloc --with-cross-build=android.$FB_PREFIX --without-editline make -j4 make CROSS_OUT=Y tests -j4 builds/install/arch-specific/android/BuildPackage.sh $ARCH - name: Upload initial build uses: actions/upload-artifact@v3 with: name: firebird-android-initial-${{ matrix.arch }} path: | gen/Firebird-*-android-initial-${{ matrix.arch }}*.tar.gz gen/Make.Version build-android-final: name: build-android-${{ matrix.arch }}-final needs: build-android-initial runs-on: macos-latest env: ARCH: ${{ matrix.arch }} strategy: fail-fast: false matrix: arch: - arm32 - arm64 - x86 - x64 steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 10 - name: Download initial build uses: actions/download-artifact@v3 with: name: firebird-android-initial-${{ matrix.arch }} path: gen - name: Cache - AVD uses: actions/cache@v3 id: avd-cache with: path: | ~/.android/avd/* ~/.android/adb* key: avd-v3 - name: Create AVD and generate snapshot for caching if: steps.avd-cache.outputs.cache-hit != 'true' uses: reactivecircus/android-emulator-runner@v2 with: avd-name: firebird-builder arch: x86_64 api-level: 30 target: google_apis ndk: 25.1.8937393 emulator-options: -no-window -noaudio -no-boot-anim -camera-back none -port 5554 script: | echo "Generated AVD snapshot for caching." - name: Create necessary files in Android emulator uses: reactivecircus/android-emulator-runner@v2 with: avd-name: firebird-builder arch: x86_64 api-level: 30 target: google_apis ndk: 25.1.8937393 emulator-options: -no-snapshot-save -no-window -noaudio -no-boot-anim -camera-back none -port 5554 script: | sleep 20 adb wait-for-device adb root NDK=/Users/runner/Library/Android/sdk/ndk/25.1.8937393 builds/install/arch-specific/android/BuildFinalPackage.sh $ARCH - name: Upload installer uses: actions/upload-artifact@v3 with: name: firebird-android-${{ matrix.arch }} path: gen/Firebird-*-android-${{ matrix.arch }}.tar.gz - name: Upload installer (withDebugSymbols) uses: actions/upload-artifact@v3 with: name: firebird-android-${{ matrix.arch }}-withDebugSymbols path: gen/Firebird-*-android-${{ matrix.arch }}-withDebugSymbols.tar.gz - name: Delete initial build uses: geekyeggo/delete-artifact@v1 with: name: firebird-android-initial-${{ matrix.arch }} - name: Snapshot - prepare id: snapshot_prepare if: | github.repository == 'FirebirdSQL/firebird' && github.event.head_commit.message == 'increment build number' && github.ref_name == 'master' run: | echo "snapshot_name=${{ github.ref_name }}" >> $GITHUB_OUTPUT - name: Snapshot - delete old assets uses: mknejp/delete-release-assets@v1 if: steps.snapshot_prepare.outputs.snapshot_name with: repository: FirebirdSQL/snapshots token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} tag: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} fail-if-no-release: false fail-if-no-assets: false assets: | Firebird-*-android-${{ matrix.arch }}*.tar.gz - name: Snapshot - release id: snapshot_release_try1 uses: softprops/action-gh-release@v1 if: steps.snapshot_prepare.outputs.snapshot_name continue-on-error: true with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | gen/Firebird-*-android-${{ matrix.arch }}*.tar.gz - name: Snapshot - release (retry) uses: softprops/action-gh-release@v1 if: | steps.snapshot_prepare.outputs.snapshot_name && steps.snapshot_release_try1.outcome == 'failure' with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | gen/Firebird-*-android-${{ matrix.arch }}*.tar.gz build-android-aar: needs: build-android-final runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 10 - name: Download final build (x86) uses: actions/download-artifact@v3 with: name: firebird-android-x86 path: android/temp - name: Download final build (x64) uses: actions/download-artifact@v3 with: name: firebird-android-x64 path: android/temp - name: Download final build (arm32) uses: actions/download-artifact@v3 with: name: firebird-android-arm32 path: android/temp - name: Download final build (arm64) uses: actions/download-artifact@v3 with: name: firebird-android-arm64 path: android/temp - name: Extract final builds working-directory: android run: | mkdir -p embedded/src/main/jniLibs/{x86,x86_64,armeabi-v7a,arm64-v8a} tar xzvf temp/Firebird-*-android-x86.tar.gz -C embedded/src/main/jniLibs/x86 --strip-components=1 tar xzvf temp/Firebird-*-android-x64.tar.gz -C embedded/src/main/jniLibs/x86_64 --strip-components=1 tar xzvf temp/Firebird-*-android-arm32.tar.gz -C embedded/src/main/jniLibs/armeabi-v7a --strip-components=1 tar xzvf temp/Firebird-*-android-arm64.tar.gz -C embedded/src/main/jniLibs/arm64-v8a --strip-components=1 mkdir -p embedded/src/main/assets/firebird mv embedded/src/main/jniLibs/x86/{*.conf,*.msg,*.dat,*.res} embedded/src/main/assets/firebird/ find embedded/src/main/jniLibs -type f ! -iname "*.so" -delete - name: Assemble AAR working-directory: android run: | ./gradlew assembleRelease FB_VERSION=`cd ../src/misc/ && . writeBuildNum.sh && echo $PRODUCT_VER_STRING-$FIREBIRD_PACKAGE_VERSION` mv embedded/build/outputs/aar/firebird-embedded-release.aar \ embedded/build/outputs/aar/Firebird-$FB_VERSION-android-embedded.aar - name: Upload installer uses: actions/upload-artifact@main with: name: firebird-android-aar path: android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar - name: Snapshot - prepare id: snapshot_prepare if: | github.repository == 'FirebirdSQL/firebird' && github.event.head_commit.message == 'increment build number' && github.ref_name == 'master' run: | echo "snapshot_name=${{ github.ref_name }}" >> $GITHUB_OUTPUT - name: Snapshot - delete old assets uses: mknejp/delete-release-assets@v1 if: steps.snapshot_prepare.outputs.snapshot_name with: repository: FirebirdSQL/snapshots token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} tag: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} fail-if-no-release: false fail-if-no-assets: false assets: | Firebird-*-android-embedded.aar - name: Snapshot - release id: snapshot_release_try1 uses: softprops/action-gh-release@v1 if: steps.snapshot_prepare.outputs.snapshot_name continue-on-error: true with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar - name: Snapshot - release (retry) uses: softprops/action-gh-release@v1 if: | steps.snapshot_prepare.outputs.snapshot_name && steps.snapshot_release_try1.outcome == 'failure' with: repository: FirebirdSQL/snapshots name: Latest snapshots for ${{ steps.snapshot_prepare.outputs.snapshot_name }} tag_name: snapshot-${{ steps.snapshot_prepare.outputs.snapshot_name }} prerelease: true token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }} files: | android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar