Add GHA pull request workflow #38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI and Deploy Docs | |
| on: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: main | |
| jobs: | |
| build-linux: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 | |
| - name: Cache vcpkg artifacts | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| vcpkg/downloads | |
| vcpkg/buildtrees | |
| vcpkg/packages | |
| build/Release/vcpkg_installed | |
| key: ${{ runner.os }}-vcpkg-${{ hashFiles('vcpkg.json', 'vcpkg-configuration.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg- | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install --no-install-recommends -y \ | |
| doxygen \ | |
| graphviz \ | |
| ninja-build \ | |
| libtommath1 \ | |
| libtomcrypt1 | |
| - name: Install Firebird | |
| run: | | |
| wget -nv -O Firebird-5.0.3.1683-0-linux-x64.tar.gz \ | |
| "https://github.com/FirebirdSQL/firebird/releases/download/v5.0.3/Firebird-5.0.3.1683-0-linux-x64.tar.gz" | |
| tar xzf Firebird-5.0.3.1683-0-linux-x64.tar.gz | |
| (cd Firebird-5.0.3.1683-0-linux-x64 && sudo ./install.sh -silent) | |
| - name: Configure Firebird | |
| run: | | |
| { | |
| echo "FIREBIRD=/opt/firebird" | |
| echo "FIREBIRD_LOCK=${RUNNER_TEMP}" | |
| echo "LD_LIBRARY_PATH=/opt/firebird/lib:${LD_LIBRARY_PATH}" | |
| } >> "$GITHUB_ENV" | |
| - name: Bootstrap vcpkg | |
| run: | | |
| ./vcpkg/bootstrap-vcpkg.sh -disableMetrics | |
| - name: Configure CMake | |
| run: | | |
| cmake -S . -B build/Release -DCMAKE_BUILD_TYPE=Release -G Ninja | |
| - name: Build Release targets | |
| run: | | |
| cmake --build build/Release | |
| - name: Run tests | |
| run: | | |
| ./build/Release/out/bin/fb-cpp-test --log_level=all | |
| - name: Build documentation | |
| run: | | |
| cmake --build build/Release --target docs | |
| - name: Upload documentation artifact | |
| uses: actions/upload-pages-artifact@v4 | |
| with: | |
| path: build/Release/doc/docs/html | |
| build-windows: | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 | |
| - name: Cache vcpkg artifacts | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| vcpkg/downloads | |
| vcpkg/buildtrees | |
| vcpkg/packages | |
| build/vcpkg_installed | |
| key: ${{ runner.os }}-vcpkg-${{ hashFiles('vcpkg.json', 'vcpkg-configuration.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg- | |
| - name: Install Firebird | |
| shell: cmd | |
| run: | | |
| set FB_ZIP=Firebird-5.0.3.1683-0-windows-x64.zip | |
| powershell Invoke-WebRequest ^ | |
| "https://github.com/FirebirdSQL/firebird/releases/download/v5.0.3/$env:FB_ZIP" -OutFile "$env:FB_ZIP" | |
| 7z x -oC:\Firebird %FB_ZIP% | |
| - name: Configure Firebird | |
| shell: cmd | |
| run: | | |
| echo C:\Firebird>>%GITHUB_PATH% | |
| - name: Bootstrap vcpkg | |
| shell: cmd | |
| run: | | |
| vcpkg\bootstrap-vcpkg.bat -disableMetrics | |
| - name: Configure CMake | |
| shell: cmd | |
| run: | | |
| cmake -S . -B build -G "Visual Studio 17 2022" | |
| - name: Build Release targets | |
| shell: cmd | |
| run: | | |
| cmake --build build --config Release | |
| - name: Run tests | |
| shell: cmd | |
| run: | | |
| build\out\bin\Release\fb-cpp-test.exe | |
| build-macos: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 | |
| - name: Cache vcpkg artifacts | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| vcpkg/downloads | |
| vcpkg/buildtrees | |
| vcpkg/packages | |
| build/Release/vcpkg_installed | |
| key: ${{ runner.os }}-vcpkg-${{ hashFiles('vcpkg.json', 'vcpkg-configuration.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg- | |
| - name: Install Firebird | |
| run: | | |
| wget -nv -O Firebird-5.0.3.1683-0-macos-arm64.pkg \ | |
| "https://github.com/FirebirdSQL/firebird/releases/download/v5.0.3/Firebird-5.0.3.1683-0-macos-arm64.pkg" | |
| sudo installer -verbose -pkg Firebird-5.0.3.1683-0-macos-arm64.pkg -target / | |
| - name: Configure Firebird | |
| run: | | |
| { | |
| echo "FIREBIRD_LOCK=${RUNNER_TEMP}" | |
| echo "DYLD_LIBRARY_PATH=/Library/Frameworks/Firebird.framework/Resources/lib:${DYLD_LIBRARY_PATH}" | |
| echo "ISC_USER=sysdba" | |
| echo "ISC_PASSWORD=masterkey" | |
| } >> "$GITHUB_ENV" | |
| - name: Bootstrap vcpkg | |
| run: | | |
| ./vcpkg/bootstrap-vcpkg.sh -disableMetrics | |
| - name: Configure CMake | |
| run: | | |
| cmake -S . -B build/Release -DCMAKE_BUILD_TYPE=Release -G Ninja | |
| - name: Build Release targets | |
| run: | | |
| cmake --build build/Release | |
| - name: Run tests | |
| run: | | |
| ./build/Release/out/bin/fb-cpp-test --log_level=all | |
| deploy-docs: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build-linux | |
| - build-windows | |
| - build-macos | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 |