[DEVOPS-1748] Build pipeline for C++ sdk #18
Workflow file for this run
This file contains 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: Build C++ SDK | |
on: | |
push: | |
branches: | |
- main | |
- rc | |
- hotfix-rc | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
generate-schemas: | |
uses: ./.github/workflows/generate_schemas.yml | |
build_rust: | |
uses: ./.github/workflows/build-rust-cross-platform.yml | |
build: | |
name: Build for ${{ matrix.settings.os }} ${{ matrix.settings.target }} | |
needs: | |
- generate-schemas | |
- build_rust | |
runs-on: ${{ matrix.settings.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
- os: macos-12 | |
target: x86_64-apple-darwin | |
# - os: macos-12 # aarch64 is not supported by gh action runners yet | |
# target: aarch64-apple-darwin | |
- os: windows-2022 | |
target: x86_64-pc-windows-msvc | |
- os: ubuntu-22.04 | |
target: x86_64-unknown-linux-gnu | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: install dependencies linux | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get install -y nlohmann-json3-dev | |
sudo apt-get install -y libboost-all-dev | |
- name: install dependencies macos | |
if: runner.os == 'macOS' | |
run: | | |
brew install nlohmann-json | |
brew install boost | |
- name: Set up conda environment | |
uses: conda-incubator/setup-miniconda@030178870c779d9e5e1b4e563269f3aa69b04081 # v3.0.3 | |
with: | |
miniconda-version: "latest" | |
auto-update-conda: true | |
activate-environment: conda-env | |
if: runner.os == 'Windows' #|| runner.os == 'Linux' | |
- name: Install libraries for Windows | |
run: | | |
conda install -c conda-forge boost | |
conda install -c conda-forge nlohmann_json | |
conda list | |
shell: pwsh | |
if: runner.os == 'Windows' | |
# - name: Install libraries for Linux | |
# run: | | |
# conda install -c conda-forge boost | |
# conda install -c conda-forge nlohmann_json | |
# # sudo apt-get update | |
# # sudo apt-get install libboost-all-dev | |
# shell: bash | |
# if: runner.os == 'Linux' | |
- name: Download schemas | |
uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 | |
with: | |
name: sdk-schemas-cpp | |
path: languages/cpp/include | |
- name: Download ${{ matrix.settings.target }} files | |
uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe # v4.1.2 | |
with: | |
name: libbitwarden_c_files-${{ matrix.settings.target }} | |
path: languages/cpp/include | |
- name: Build unix | |
working-directory: languages/cpp | |
if: runner.os == 'macOS' || runner.os == 'Linux' | |
run: | | |
if [[ '${{ runner.os }}' == 'macOS' ]]; then | |
export DNLOHMANN_PATH=/usr/local/opt/nlohmann-json | |
export DBOOST_PATH=/usr/local/opt/boost | |
fi | |
if [[ '${{ runner.os }}' == 'Linux' ]]; then | |
export DNLOHMANN_PATH=/usr/share/doc/nlohmann-json3-dev | |
export DBOOST_PATH=/usr/share/doc/libboost-all-dev | |
fi | |
ls include | |
mkdir build | |
cd build | |
cmake .. -DNLOHMANN=$DNLOHMANN_PATH -DBOOST=$DBOOST_PATH -DTARGET=include/libbitwarden_c.dylib | |
cmake --build . | |
- name: Build windows | |
if: runner.os == 'Windows' | |
working-directory: languages/cpp | |
run: | | |
mkdir build | |
cd build | |
cmake .. -DNLOHMANN=C:\Users\runneradmin\miniconda3\envs\conda-env\nlohmann_json -DBOOST=C:\Users\runneradmin\miniconda3\envs\conda-env\boost -DTARGET=include/libbitwarden_c.dll | |
cmake --build . | |
- name: Upload C++ package for ${{ matrix.settings.target }} | |
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 | |
with: | |
name: libbitwarden_cpp-${{ matrix.settings.target }} | |
path: languages/cpp/build | |
if-no-files-found: error |