adding updated subclient registration logic to pyuda #985
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: Build | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - develop | |
| - 'feature/**' | |
| - 'release/**' | |
| - 'bugfix/**' | |
| pull_request: | |
| branches: | |
| - main | |
| - develop | |
| # prevent duplicate CI runs from separate triggers | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| release: [Release] | |
| ssl: [ON, OFF] | |
| client-only: [ON, OFF] | |
| capnp: [ON, OFF] | |
| exclude: | |
| - os: windows-latest | |
| client-only: OFF | |
| - os: ubuntu-latest | |
| client-only: ON | |
| - os: macos-latest | |
| client-only: ON | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/github-script@v8 | |
| with: | |
| script: | | |
| core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); | |
| core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); | |
| - name: Install linux dependencies | |
| if: matrix.os == 'ubuntu-latest' | |
| run: > | |
| sudo apt update && sudo apt install -y | |
| git | |
| libboost-dev | |
| libboost-program-options-dev | |
| libssl-dev | |
| cmake | |
| build-essential | |
| libtirpc-dev | |
| pkg-config | |
| libxml2-dev | |
| libspdlog-dev | |
| ninja-build | |
| capnproto | |
| libcapnp-dev | |
| python3-dev | |
| python3-pip | |
| python3-venv | |
| # Capnproto package on Ubuntu 24.04 has broken CMake file | |
| - name: Fix Capnproto on Ubuntu | |
| if: matrix.os == 'ubuntu-latest' | |
| run: > | |
| sudo sed -i 's/if (yes) # WITH_LIBATOMIC/if (no) # WITH_LIBATOMIC/' \ | |
| /usr/lib/x86_64-linux-gnu/cmake/CapnProto/CapnProtoConfig.cmake | |
| - name: Install Intel compiler | |
| if: matrix.os == 'ubuntu-latest' | |
| run: > | |
| sudo apt install -y wget && | |
| wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB && | |
| sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB && | |
| echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list && | |
| sudo apt update && | |
| sudo apt install -y intel-basekit && | |
| sudo apt install -y intel-hpckit | |
| - name: Install macos dependencies | |
| if: matrix.os == 'macos-latest' | |
| run: > | |
| brew update-reset && brew install | |
| git | |
| boost | |
| openssl | |
| cmake | |
| pkg-config | |
| libxml2 | |
| spdlog | |
| ninja | |
| capnp | |
| - name: Cache windows packages | |
| id: cache-vcpkg | |
| uses: actions/cache@v3 | |
| env: | |
| cache-name: cache-vcpkg-packages | |
| with: | |
| path: C:/vcpkg | |
| key: ${{ runner.os }}-build-${{ env.cache-name }} | |
| - name: Install windows dependencies | |
| if: matrix.os == 'windows-latest' | |
| run: > | |
| vcpkg install --triplet x64-mingw-static --binarysource="clear;x-gha,readwrite" | |
| libxml2 | |
| capnproto | |
| boost-program-options | |
| boost-format | |
| boost-algorithm | |
| boost-multi-array | |
| openssl | |
| dlfcn-win32 | |
| spdlog | |
| liblzma | |
| - name: Configure CMake (linux) | |
| if: matrix.os == 'ubuntu-latest' | |
| run: > | |
| cmake -G Ninja -B build | |
| -DBUILD_SHARED_LIBS=ON | |
| -DCMAKE_BUILD_TYPE=${{ matrix.release }} | |
| -DSSLAUTHENTICATION=${{ matrix.ssl }} | |
| -DCLIENT_ONLY=${{ matrix.client-only }} | |
| -DENABLE_CAPNP=${{ matrix.capnp }} | |
| - name: Configure CMake (linux Intel) | |
| if: matrix.os == 'ubuntu-latest' | |
| run: > | |
| source /opt/intel/oneapi/setvars.sh && | |
| CXX=icpx CC=icx cmake -G Ninja -B build-intel | |
| -DBUILD_SHARED_LIBS=ON | |
| -DCMAKE_BUILD_TYPE=${{ matrix.release }} | |
| -DSSLAUTHENTICATION=${{ matrix.ssl }} | |
| -DCLIENT_ONLY=${{ matrix.client-only }} | |
| -DENABLE_CAPNP=${{ matrix.capnp }} | |
| - name: Configure CMake (macos) | |
| if: matrix.os == 'macos-latest' | |
| run: > | |
| cmake -G Ninja -B build | |
| -DBUILD_SHARED_LIBS=ON | |
| -DCMAKE_BUILD_TYPE=${{ matrix.release }} | |
| -DSSLAUTHENTICATION=${{ matrix.ssl }} | |
| -DCLIENT_ONLY=${{ matrix.client-only }} | |
| -DENABLE_CAPNP=${{ matrix.capnp }} | |
| -DOPENSSL_ROOT_DIR="$(brew --prefix openssl@3)" | |
| - name: Configure portable XDR | |
| if: matrix.os == 'windows-latest' | |
| run: > | |
| cd extlib | |
| && cmake -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -B build -G "MinGW Makefiles" . | |
| - name: Build portable XDR | |
| if: matrix.os == 'windows-latest' | |
| run: cd extlib && cmake --build build | |
| - name: Install portable XDR | |
| if: matrix.os == 'windows-latest' | |
| run: cd extlib && cmake --install build --prefix install | |
| - name: Configure CMake (windows) | |
| if: matrix.os == 'windows-latest' | |
| run: > | |
| XDR_ROOT=extlib/install cmake -G "MinGW Makefiles" -B build | |
| -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake | |
| -DBUILD_SHARED_LIBS=ON | |
| -DCMAKE_BUILD_TYPE=${{ matrix.release }} | |
| -DSSLAUTHENTICATION=${{ matrix.ssl }} | |
| -DCLIENT_ONLY=${{ matrix.client-only }} | |
| -DENABLE_CAPNP=${{ matrix.capnp }} | |
| -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/uda_install | |
| - name: Build | |
| run: cmake --build build --config ${{ matrix.release }} | |
| - name: Build Intel | |
| if: matrix.os == 'ubuntu-latest' | |
| run: cmake --build build-intel --config ${{ matrix.release }} | |
| - name: Install | |
| if: matrix.os != 'windows-latest' | |
| run: sudo cmake --install build --config ${{ matrix.release }} | |
| - name: Install | |
| if: matrix.os == 'windows-latest' | |
| run: cmake --install build --config ${{ matrix.release }} | |
| - name: Install pyuda | |
| if: matrix.os == 'ubuntu-latest' | |
| run: > | |
| cp -r /usr/local/python_installer ${{github.workspace}}/python_installer && | |
| python3 -m venv ${{github.workspace}}/venv && | |
| source ${{github.workspace}}/venv/bin/activate && | |
| pip3 install --upgrade pip && | |
| pip3 install wheel Cython "numpy<2" six && | |
| pip3 install ${{github.workspace}}/python_installer | |
| - name: Test pyuda import | |
| if: matrix.os == 'ubuntu-latest' | |
| run: > | |
| source ${{github.workspace}}/venv/bin/activate && | |
| python3 -c 'import pyuda; client=pyuda.Client()' | |
| - name: Run non-SSL system tests | |
| if: matrix.os == 'ubuntu-latest' && matrix.ssl == 'OFF' | |
| run: > | |
| sudo cp /usr/local/etc/uda.socket /usr/local/etc/[email protected] /etc/systemd/system && | |
| sudo chown -R $USER:$USER /usr/local/etc && | |
| echo "export UDA_SERVER_SSL_AUTHENTICATE=OFF" >> /usr/local/etc/udaserver.cfg && | |
| sudo systemctl start uda.socket && | |
| sudo systemctl enable uda.socket && | |
| nc -4zv localhost 56565 && | |
| export UDA_HOST=localhost && | |
| export UDA_PORT=56565 && | |
| ./build/test/plugins/plugin_test_testplugin && | |
| ctest -V --test-dir build/test/unit_tests --output-on-failure && | |
| uda_cli --help && uda_cli --request "help::help()" | |
| - name: Run SSL system tests | |
| if: matrix.os == 'ubuntu-22.04' && matrix.ssl == 'ON' | |
| run: | | |
| sudo cp /usr/local/etc/uda.socket /usr/local/etc/[email protected] /etc/systemd/system | |
| sudo chown -R $USER:$USER /usr/local/etc | |
| # pulls in extra config options from machine.d | |
| echo "export UDAHOSTNAME=github-ci-ssl" >> /usr/local/etc/udaserver.cfg | |
| ./scripts/create_certs.sh | |
| mkdir /usr/local/etc/certs | |
| cp rootCA.crt server.crt server.key /usr/local/etc/certs | |
| sudo systemctl start uda.socket | |
| sudo systemctl enable uda.socket | |
| nc -4zv localhost 56565 | |
| export UDA_HOST=localhost | |
| export UDA_PORT=56565 | |
| export UDA_CLIENT_SSL_AUTHENTICATE=OFF | |
| export UDA_CLIENT_CA_SSL_CERT=$PWD/rootCA.crt | |
| export UDA_CLIENT_SSL_CERT=$PWD/client.crt | |
| export UDA_CLIENT_SSL_KEY=$PWD/client.key | |
| set +e | |
| /usr/local/bin/uda_cli --request "help::help()" && exit 1 || echo "process failed successfully" | |
| set -e | |
| export UDA_CLIENT_SSL_AUTHENTICATE=ON | |
| ./build/test/plugins/plugin_test_testplugin | |
| # - name: Test | |
| # working-directory: build | |
| # # Execute tests defined by the CMake configuration. | |
| # # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail | |
| # run: ctest -C ${{ matrix.release }} | |