| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663 |
- name: CI
- on: [push, pull_request]
- jobs:
- build-linux-ubuntu-x64-clang:
- if: github.ref_type != 'tag'
- runs-on: ubuntu-22.04
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 10
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - 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@v4
- 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@v4
- with:
- fetch-depth: 10
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - name: Get Release Notes
- uses: ./.github/actions/get-release-notes
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- 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@v4
- with:
- name: firebird-linux-${{ matrix.arch }}
- path: gen/Firebird-*-linux-${{ matrix.arch }}.tar.gz
- - name: Upload debug symbols
- uses: actions/upload-artifact@v4
- with:
- name: firebird-linux-${{ matrix.arch }}-debugSymbols
- path: gen/Firebird-*-linux-${{ matrix.arch }}-debugSymbols.tar.gz
- - name: Create release
- uses: ./.github/actions/create-release
- with:
- token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
- deletePatterns: Firebird-*-linux-${{ matrix.arch }}*.tar.gz
- uploadFiles: gen/Firebird-*-linux-${{ matrix.arch }}*.tar.gz
- build-src-bundle-docker:
- name: build-src-bundle-docker
- runs-on: ubuntu-22.04
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 10
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - name: Get Release Notes
- uses: ./.github/actions/get-release-notes
- - name: Build
- run: |
- cd builds/docker/linux/x86-x64
- ./run-src-bundle.sh
- - name: Create release
- uses: ./.github/actions/create-release
- with:
- token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
- deletePatterns: Firebird-*-source.tar.xz
- uploadFiles: gen/Firebird-*-source.tar.xz
- build-alpine-x64:
- if: github.ref_type != 'tag'
- runs-on: ubuntu-22.04
- container: alpine:3.14
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- 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 sed
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - 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@v4
- with:
- name: firebird-alpine-x64
- path: gen/Firebird-*-linux-x64.tar.gz
- build-windows:
- if: github.ref_type != 'tag'
- runs-on: ${{ matrix.os }}
- env:
- VS_VERSION: 2022
- strategy:
- fail-fast: false
- matrix:
- os:
- - windows-2025
- platform: [x64, x86]
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 10
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - 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.4.0
- - name: Build
- shell: cmd
- env:
- PLATFORM: ${{ matrix.platform }}
- VS_SCRIPT: C:\Program Files\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@v4
- 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@v4
- with:
- name: firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-installer
- path: builds/install_images/*-windows-${{ matrix.platform }}.exe
- # Windows ARM container is not yet available, so official build is done directly in Windows 11 runner
- build-windows-arm64:
- #if: github.ref_type != 'tag'
- runs-on: windows-11-arm
- env:
- VS_VERSION: 2022
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 10
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - name: Prepare
- shell: cmd
- run: |
- for /r %%i in (*.bat) do unix2dos "%%i"
- REM choco uninstall --no-progress --yes innosetup
- choco install --no-progress --yes innosetup --version=6.4.0
- - name: Build
- shell: cmd
- env:
- VS_SCRIPT: C:\Program Files\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
- set FB_VS_ARCH=arm64
- set FB_PROCESSOR_ARCHITECTURE=ARM64
- call "%VS_SCRIPT%" -arch=%FB_VS_ARCH%
- cd builds\win32
- call run_all.bat PDB
- call run_tests.bat
- - name: Upload zip
- uses: actions/upload-artifact@v4
- with:
- name: firebird-windows-arm64-zip
- path: builds/install_images/Firebird-*-windows-arm64.zip
- - name: Upload zip (withDebugSymbols)
- uses: actions/upload-artifact@v4
- with:
- name: firebird-windows-arm64-withDebugSymbols-zip
- path: builds/install_images/Firebird-*-windows-arm64-withDebugSymbols.zip
- - name: Upload installer
- uses: actions/upload-artifact@v4
- with:
- name: firebird-windows-arm64-installer
- path: builds/install_images/*-windows-arm64.exe
- - name: Upload installer (withDebugSymbols)
- uses: actions/upload-artifact@v4
- with:
- name: firebird-windows-arm64-withDebugSymbols-installer
- path: builds/install_images/*-windows-arm64-withDebugSymbols.exe
- - name: Create release
- uses: ./.github/actions/create-release
- with:
- token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
- deletePatterns: |
- Firebird-*-windows-arm64*.exe
- Firebird-*-windows-arm64*.zip
- uploadFiles: |
- builds/install_images/Firebird-*-windows-arm64*.exe
- builds/install_images/Firebird-*-windows-arm64*.zip
- build-windows-docker:
- runs-on: windows-2022
- strategy:
- fail-fast: false
- matrix:
- platform: [x64, x86]
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 10
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - name: Get Release Notes
- uses: ./.github/actions/get-release-notes
- - name: Build x86 for client package in x64
- id: build-x86
- shell: cmd
- if: ${{ matrix.platform == 'x64' }}
- run: |
- mkdir builds\install_images
- cd builds\docker\windows
- call build.bat
- call run.bat C:\fbscripts\build-x86.bat
- - name: Build
- id: build
- shell: cmd
- env:
- PLATFORM: ${{ matrix.platform }}
- run: |
- 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@v4
- with:
- name: firebird-windows-${{ matrix.platform }}-zip
- path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip
- - name: Upload zip (withDebugSymbols)
- uses: actions/upload-artifact@v4
- 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@v4
- with:
- name: firebird-windows-${{ matrix.platform }}-installer
- path: builds/install_images/*-windows-${{ matrix.platform }}.exe
- - name: Upload installer (withDebugSymbols)
- uses: actions/upload-artifact@v4
- with:
- name: firebird-windows-${{ matrix.platform }}-withDebugSymbols-installer
- path: builds/install_images/*-windows-${{ matrix.platform }}-withDebugSymbols.exe
- - name: Create release
- uses: ./.github/actions/create-release
- with:
- token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
- deletePatterns: |
- Firebird-*-windows-${{ matrix.platform }}*.exe
- Firebird-*-windows-${{ matrix.platform }}*.zip
- uploadFiles: |
- builds/install_images/Firebird-*-windows-${{ matrix.platform }}*.exe
- builds/install_images/Firebird-*-windows-${{ matrix.platform }}*.zip
- build-macos:
- name: build-macos-${{ matrix.arch }}
- runs-on: ${{ (matrix.arch == 'arm64' && 'macos-14') || 'macos-13' }}
- strategy:
- fail-fast: false
- matrix:
- arch:
- - x64
- - arm64
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 10
- submodules: 'true'
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - name: Prepare - Install tools
- run: |
- brew install --quiet automake autoconf-archive libtool ninja
- - name: Restore vcpkg cache
- uses: actions/cache/restore@v4
- id: restore-vcpkg-cache
- with:
- path: ~/.cache/vcpkg/archives
- key: vcpkg-cache-${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('vcpkg-custom/**', 'vcpkg.json', 'vcpkg-configuration.json') }}
- restore-keys: |
- vcpkg-cache-${{ runner.os }}-${{ matrix.arch }}-
- - name: Build
- run: |
- export LIBTOOLIZE=glibtoolize
- export LIBTOOL=glibtool
- ./autogen.sh --with-builtin-tommath --with-builtin-tomcrypt
- make -j4
- make tests -j4
- make run_tests
- make -C gen -B -f make.platform.postfix
- make -C gen -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: Save vcpkg cache
- uses: actions/cache/save@v4
- # Saves if the key changed (hashes on vcpkg/**, vcpkg.json, vcpkg-configuration.json)
- if: steps.restore-vcpkg-cache.outputs.cache-hit != 'true'
- with:
- path: ~/.cache/vcpkg/archives
- key: ${{ steps.restore-vcpkg-cache.outputs.cache-primary-key }}
- - name: Upload installer
- uses: actions/upload-artifact@v4
- with:
- name: firebird-macos-${{ matrix.arch }}
- path: gen/artifacts
- - name: Create release
- uses: ./.github/actions/create-release
- with:
- token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
- deletePatterns: Firebird-*-macos-${{ matrix.arch }}*.pkg
- uploadFiles: gen/artifacts/Firebird-*-macos-${{ matrix.arch }}*.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@v4
- with:
- fetch-depth: 10
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - 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@v4
- 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: ubuntu-latest
- env:
- ARCH: ${{ matrix.arch }}
- strategy:
- fail-fast: false
- matrix:
- arch:
- - arm32
- - arm64
- - x86
- - x64
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 10
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - name: Enable KVM
- run: |
- echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
- sudo udevadm control --reload-rules
- sudo udevadm trigger --name-match=kvm
- - name: Download initial build
- uses: actions/download-artifact@v4
- with:
- name: firebird-android-initial-${{ matrix.arch }}
- path: gen
- - name: Cache - AVD
- uses: actions/cache@v4
- id: avd-cache
- with:
- path: |
- ~/.android/avd/*
- ~/.android/adb*
- key: avd-v7
- - 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
- emulator-boot-timeout: 900
- 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
- emulator-boot-timeout: 900
- script: |
- adb wait-for-device
- adb root
- NDK=/usr/local/lib/android/sdk/ndk/25.1.8937393 builds/install/arch-specific/android/BuildFinalPackage.sh $ARCH
- - name: Upload installer
- uses: actions/upload-artifact@v4
- with:
- name: firebird-android-${{ matrix.arch }}
- path: gen/Firebird-*-android-${{ matrix.arch }}.tar.gz
- - name: Upload installer (withDebugSymbols)
- uses: actions/upload-artifact@v4
- with:
- name: firebird-android-${{ matrix.arch }}-withDebugSymbols
- path: gen/Firebird-*-android-${{ matrix.arch }}-withDebugSymbols.tar.gz
- - name: Delete initial build
- uses: geekyeggo/delete-artifact@v5
- with:
- name: firebird-android-initial-${{ matrix.arch }}
- - name: Create release
- uses: ./.github/actions/create-release
- with:
- token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
- deletePatterns: Firebird-*-android-${{ matrix.arch }}*.tar.gz
- uploadFiles: 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@v4
- with:
- fetch-depth: 10
- - name: Adjust snapshot build number
- uses: ./.github/actions/adjust-snapshot-buildno
- - name: Download final build (x86)
- uses: actions/download-artifact@v4
- with:
- name: firebird-android-x86
- path: android/temp
- - name: Download final build (x64)
- uses: actions/download-artifact@v4
- with:
- name: firebird-android-x64
- path: android/temp
- - name: Download final build (arm32)
- uses: actions/download-artifact@v4
- with:
- name: firebird-android-arm32
- path: android/temp
- - name: Download final build (arm64)
- uses: actions/download-artifact@v4
- 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@v4
- with:
- name: firebird-android-aar
- path: android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar
- - name: Create release
- uses: ./.github/actions/create-release
- with:
- token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
- deletePatterns: Firebird-*-android-embedded.aar
- uploadFiles: android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar
|