Skip to content

Separate shared libraries into platform specific directories #1

Separate shared libraries into platform specific directories

Separate shared libraries into platform specific directories #1

name: "Test Packaging"
on:
push:
branch:
- 'separate_libraries'
jobs:
build-ubuntu:
runs-on: ubuntu-latest
container:
image: ubuntu:20.04
env:
OPENTELEMETRY_MATLAB_INSTALL_FOLDER: "otel_matlab_install" # not including the context github.workspace since it doesn't work inside a container due to a bug
steps:
- name: Download OpenTelemetry-Matlab source
uses: actions/checkout@v3
with:
path: opentelemetry-matlab
- name: Install compiler and other tools
env:
DEBIAN_FRONTEND: "noninteractive"
run: apt update && apt install -y build-essential git curl pkg-config zip python3 ninja-build
- name: Install CMake
env:
MY_CMAKE_VERSION: 4.1.2
run: |
curl -LO https://github.com/Kitware/CMake/releases/download/v$MY_CMAKE_VERSION/cmake-$MY_CMAKE_VERSION-linux-x86_64.tar.gz
tar -xvzf cmake-$MY_CMAKE_VERSION-linux-x86_64.tar.gz
echo "$GITHUB_WORKSPACE/cmake-$MY_CMAKE_VERSION-linux-x86_64/bin" >> "$GITHUB_PATH"
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2
with:
release: R2025a
products: MATLAB_Compiler
- name: Build OpenTelemetry-Matlab
working-directory: opentelemetry-matlab
run: |
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DWITH_OTLP_FILE=ON -DOTEL_MATLAB_VERSION=${{ github.ref_name }} -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/$OPENTELEMETRY_MATLAB_INSTALL_FOLDER
cmake --build build --config Release --target install
- name: Compress into single artifact
run: tar -czf otel-matlab-ubuntu.tar.gz otel_matlab_install
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: otel-matlab-ubuntu.tar.gz
path: ./otel-matlab-ubuntu.tar.gz
build-windows:
runs-on: windows-latest
env:
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
steps:
- name: Download OpenTelemetry-Matlab source
uses: actions/checkout@v3
with:
path: opentelemetry-matlab
- name: Install ninja-build
run: choco install ninja
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2
with:
release: R2025a
products: MATLAB_Compiler
- name: Build OpenTelemetry-Matlab
working-directory: opentelemetry-matlab
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DWITH_OTLP_FILE=ON -DFETCH_VCPKG=ON -DOTEL_MATLAB_VERSION=${{ github.ref_name }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
cmake --build build --config Release --target install
- name: Compress into single artifact
working-directory: ${{ github.workspace }}
run: tar -czf otel-matlab-windows.tar.gz otel_matlab_install
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: otel-matlab-windows.tar.gz
path: ${{ github.workspace }}/otel-matlab-windows.tar.gz
build-macos:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-13, macos-14] # runs on Mac with both Intel (macos-13) and Apple Silicon (macos-14) processors
env:
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
steps:
- name: Download OpenTelemetry-Matlab source
uses: actions/checkout@v3
with:
path: opentelemetry-matlab
- name: Install ninja-build
run: brew install ninja
- name: Install MATLAB
uses: matlab-actions/setup-matlab@v2
with:
release: R2025a
products: MATLAB_Compiler
- name: Build OpenTelemetry-Matlab
working-directory: opentelemetry-matlab
env:
CMAKE_POLICY_VERSION_MINIMUM: 3.5 # required by upb because its cmake requirement is not compatible with cmake 4
run: |
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DWITH_OTLP_FILE=ON -DOTEL_MATLAB_VERSION=${{ github.ref_name }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
cmake --build build --config Release --target install
- name: Compress into single artifact
working-directory: ${{ github.workspace }}
run: tar -czf otel-matlab-${{ matrix.os }}.tar.gz otel_matlab_install
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: otel-matlab-${{ matrix.os }}.tar.gz
path: ${{ github.workspace }}/otel-matlab-${{ matrix.os }}.tar.gz
package-mltbx:
name: Package MATLAB Toolbox (MLTBX) Files
runs-on: ubuntu-22.04
permissions:
contents: write
needs:
- build-ubuntu
- build-windows
- build-macos
env:
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
WITHGRPC_FOLDER: "${{ github.workspace }}/withgrpc"
steps:
- name: Checkout OpenTelemetry-Matlab
uses: actions/checkout@v3
with:
path: OpenTelemetry-Matlab
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts-downloaded
- name: Decompress Artifacts
run: |
mkdir $WITHGRPC_FOLDER
cd $WITHGRPC_FOLDER
mv ../artifacts-downloaded/*/otel-matlab-ubuntu.tar.gz .
mv ../artifacts-downloaded/*/otel-matlab-macos*.tar.gz .
mv ../artifacts-downloaded/*/otel-matlab-windows.tar.gz .
tar -xzvf otel-matlab-ubuntu.tar.gz
tar -xzvf otel-matlab-macos-13.tar.gz
tar -xzvf otel-matlab-macos-14.tar.gz
tar -xzvf otel-matlab-windows.tar.gz
- name: Compress into single artifact
run: tar -czf otel-matlab-test-package.tar.gz $WITHGRPC_FOLDER
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: otel-matlab-test-package.tar.gz
path: otel-matlab-test-package.tar.gz