Skip to content

Commit 34c0f03

Browse files
authored
Merge pull request #143 from mathworks/release_workflow
Refactor Release workflow to build mltbx before creating the release
2 parents 1aa60f8 + b7b0431 commit 34c0f03

File tree

7 files changed

+76
-38
lines changed

7 files changed

+76
-38
lines changed

.github/workflows/build_and_test_full.yml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,27 @@ on:
88
env:
99
MLM_LICENSE_TOKEN: ${{ secrets.MLM_LICENSE_TOKEN }}
1010
jobs:
11+
get_version:
12+
runs-on: ubuntu-20.04
13+
outputs:
14+
version: ${{ steps.getversion.outputs.latest_tag }}
15+
steps:
16+
# need fetch-depth:0 to also download the tags
17+
- name: Download OpenTelemetry-Matlab source
18+
uses: actions/checkout@v3
19+
with:
20+
path: opentelemetry-matlab
21+
fetch-depth: 0
22+
- name: Get Version
23+
id: getversion
24+
shell: bash
25+
working-directory: opentelemetry-matlab
26+
run: echo "latest_tag=$(sed -re 's/^v?([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+)?.*/\1/' <<< $(git describe --tags --abbrev=0))" >> $GITHUB_OUTPUT
1127
build-and-run-tests-ubuntu:
1228
# Running on ubuntu-latest would use a glibc version that is incompatible when using the built mex files on a Debian 11
1329
# Instead, run on ubuntu-20.04
1430
runs-on: ubuntu-20.04
31+
needs: get_version
1532
env:
1633
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
1734
SYSTEM_LIBSTDCPP_PATH: "/usr/lib/x86_64-linux-gnu/libstdc++.so.6"
@@ -29,7 +46,7 @@ jobs:
2946
- name: Build OpenTelemetry-Matlab
3047
working-directory: opentelemetry-matlab
3148
run: |
32-
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DWITH_OTLP_GRPC=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
49+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DWITH_OTLP_GRPC=ON -DUSE_BATCH_FOR_MCC=ON -DOTEL_MATLAB_VERSION=${{ needs.get_version.outputs.version }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
3350
cmake --build build --config Release --target install
3451
- name: Run tests
3552
env:
@@ -41,6 +58,7 @@ jobs:
4158
select-by-folder: opentelemetry-matlab/test
4259
build-and-run-tests-windows:
4360
runs-on: windows-latest
61+
needs: get_version
4462
env:
4563
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
4664
steps:
@@ -59,7 +77,7 @@ jobs:
5977
shell: cmd
6078
run: |
6179
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
62-
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DWITH_OTLP_GRPC=ON -DUSE_BATCH_FOR_MCC=ON -DFETCH_VCPKG=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
80+
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DWITH_OTLP_GRPC=ON -DUSE_BATCH_FOR_MCC=ON -DFETCH_VCPKG=ON -DOTEL_MATLAB_VERSION=${{ needs.get_version.outputs.version }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
6381
cmake --build build --config Release --target install
6482
- name: Run tests
6583
env:
@@ -74,6 +92,7 @@ jobs:
7492
strategy:
7593
matrix:
7694
os: [macos-13, macos-14] # runs on Mac with both Intel (macos-13) and Apple Silicon (macos-14) processors
95+
needs: get_version
7796
env:
7897
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
7998
steps:
@@ -90,7 +109,7 @@ jobs:
90109
- name: Build OpenTelemetry-Matlab
91110
working-directory: opentelemetry-matlab
92111
run: |
93-
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DWITH_OTLP_GRPC=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
112+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DWITH_OTLP_GRPC=ON -DUSE_BATCH_FOR_MCC=ON -DOTEL_MATLAB_VERSION=${{ needs.get_version.outputs.version }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
94113
cmake --build build --config Release --target install
95114
- name: Run tests
96115
env:

.github/workflows/build_and_test_simple.yml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,27 @@ on:
99
env:
1010
MLM_LICENSE_TOKEN: ${{ secrets.MLM_LICENSE_TOKEN }}
1111
jobs:
12+
get_version:
13+
runs-on: ubuntu-20.04
14+
outputs:
15+
version: ${{ steps.getversion.outputs.latest_tag }}
16+
steps:
17+
# need fetch-depth:0 to also download the tags
18+
- name: Download OpenTelemetry-Matlab source
19+
uses: actions/checkout@v3
20+
with:
21+
path: opentelemetry-matlab
22+
fetch-depth: 0
23+
- name: Get Version
24+
id: getversion
25+
shell: bash
26+
working-directory: opentelemetry-matlab
27+
run: echo "latest_tag=$(sed -re 's/^v?([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+)?.*/\1/' <<< $(git describe --tags --abbrev=0))" >> $GITHUB_OUTPUT
1228
build-and-run-tests-ubuntu:
1329
# Running on ubuntu-latest would use a glibc version that is incompatible when using the built mex files on a Debian 11
1430
# Instead, run on ubuntu-20.04
1531
runs-on: ubuntu-20.04
32+
needs: get_version
1633
env:
1734
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
1835
SYSTEM_LIBSTDCPP_PATH: "/usr/lib/x86_64-linux-gnu/libstdc++.so.6"
@@ -30,7 +47,7 @@ jobs:
3047
- name: Build OpenTelemetry-Matlab
3148
working-directory: opentelemetry-matlab
3249
run: |
33-
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
50+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DOTEL_MATLAB_VERSION=${{ needs.get_version.outputs.version }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
3451
cmake --build build --config Release --target install
3552
- name: Run tests
3653
env:
@@ -42,6 +59,7 @@ jobs:
4259
select-by-folder: opentelemetry-matlab/test
4360
build-and-run-tests-windows:
4461
runs-on: windows-latest
62+
needs: get_version
4563
env:
4664
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
4765
steps:
@@ -60,7 +78,7 @@ jobs:
6078
shell: cmd
6179
run: |
6280
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
63-
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DFETCH_VCPKG=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
81+
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DFETCH_VCPKG=ON -DOTEL_MATLAB_VERSION=${{ needs.get_version.outputs.version }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
6482
cmake --build build --config Release --target install
6583
- name: Run tests
6684
env:
@@ -75,6 +93,7 @@ jobs:
7593
strategy:
7694
matrix:
7795
os: [macos-13, macos-14] # runs on Mac with both Intel (macos-13) and Apple Silicon (macos-14) processors
96+
needs: get_version
7897
env:
7998
OPENTELEMETRY_MATLAB_INSTALL: "${{ github.workspace }}/otel_matlab_install"
8099
steps:
@@ -91,7 +110,7 @@ jobs:
91110
- name: Build OpenTelemetry-Matlab
92111
working-directory: opentelemetry-matlab
93112
run: |
94-
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
113+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_BATCH_FOR_MCC=ON -DOTEL_MATLAB_VERSION=${{ needs.get_version.outputs.version }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
95114
cmake --build build --config Release --target install
96115
- name: Run tests
97116
env:

.github/workflows/publish_mltbx.yml renamed to .github/workflows/create_release.yml

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
name: "Publish mltbx"
2-
on:
3-
workflow_dispatch:
4-
release:
5-
types: published
1+
name: "Create Release"
2+
on:
3+
push:
4+
tags:
5+
- '[0-9]+.[0-9]+.[0-9]+'
66
jobs:
77
build-ubuntu:
88
# Running on ubuntu-latest would use a glibc version that is incompatible when using the built mex files on a Debian 11
@@ -24,7 +24,7 @@ jobs:
2424
- name: Build OpenTelemetry-Matlab
2525
working-directory: opentelemetry-matlab
2626
run: |
27-
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
27+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DOTEL_MATLAB_VERSION=${{ github.ref_name }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
2828
cmake --build build --config Release --target install
2929
- name: Compress into single artifact
3030
working-directory: ${{ github.workspace }}
@@ -54,7 +54,7 @@ jobs:
5454
shell: cmd
5555
run: |
5656
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
57-
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DFETCH_VCPKG=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
57+
cmake -S . -B build -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DWITH_OTLP_GRPC=ON -DFETCH_VCPKG=ON -DOTEL_MATLAB_VERSION=${{ github.ref_name }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
5858
cmake --build build --config Release --target install
5959
- name: Compress into single artifact
6060
working-directory: ${{ github.workspace }}
@@ -85,7 +85,7 @@ jobs:
8585
- name: Build OpenTelemetry-Matlab
8686
working-directory: opentelemetry-matlab
8787
run: |
88-
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_GRPC=ON -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
88+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DWITH_GRPC=ON -DOTEL_MATLAB_VERSION=${{ github.ref_name }} -DCMAKE_INSTALL_PREFIX=${{ env.OPENTELEMETRY_MATLAB_INSTALL }}
8989
cmake --build build --config Release --target install
9090
- name: Compress into single artifact
9191
working-directory: ${{ github.workspace }}
@@ -111,10 +111,6 @@ jobs:
111111
uses: actions/checkout@v3
112112
with:
113113
path: OpenTelemetry-Matlab
114-
- name: Read version
115-
id: getversion
116-
working-directory: OpenTelemetry-Matlab
117-
run: echo "version=$(cat VERSION.txt)" >> $GITHUB_OUTPUT
118114
- name: Download Artifacts
119115
uses: actions/download-artifact@v3
120116
with:
@@ -133,16 +129,17 @@ jobs:
133129
MATLABPATH: OpenTelemetry-Matlab/tools
134130
OTEL_MATLAB_TOOLBOX_FOLDER: otel_matlab_install
135131
OTEL_MATLAB_TOOLBOX_OUTPUT_FOLDER:
136-
OTEL_MATLAB_TOOLBOX_VERSION: ${{ steps.getversion.outputs.version }}
132+
OTEL_MATLAB_TOOLBOX_VERSION: ${{ github.ref_name }}
137133
uses: matlab-actions/run-command@v1
138134
with:
139135
command: packageMatlabInterface
140-
- name: Upload Release Asset
141-
uses: actions/upload-release-asset@v1
142-
env:
143-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
144-
with:
145-
upload_url: ${{ github.event.release.upload_url }}
146-
asset_path: ./otel-matlab.mltbx
147-
asset_name: otel-matlab.mltbx
148-
asset_content_type: application/octet-stream
136+
- name: Create release
137+
uses: softprops/action-gh-release@v2
138+
with:
139+
files: ./otel-matlab.mltbx
140+
name: "Version ${{ github.ref_name }}"
141+
fail_on_unmatched_files: true
142+
generate_release_notes: false
143+
prerelease: false
144+
make_latest: false
145+
draft: true

CMakeLists.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,9 @@ endif()
102102
set(CLIENT_PROJECT_NAME otel-matlab)
103103

104104
# read version number
105-
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/VERSION.txt OTEL_MATLAB_VERSION_RAW)
106-
string(STRIP ${OTEL_MATLAB_VERSION_RAW} OTEL_MATLAB_VERSION)
107-
105+
if(NOT DEFINED OTEL_MATLAB_VERSION)
106+
set(OTEL_MATLAB_VERSION 0.0.0) # set to an invalid default if not defined
107+
endif()
108108

109109
project(${CLIENT_PROJECT_NAME} VERSION ${OTEL_MATLAB_VERSION} LANGUAGES CXX)
110110

@@ -472,7 +472,7 @@ set(OTLP_GRPC_EXPORTER_MATLAB_SOURCES
472472
${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/+opentelemetry/+exporters/+otlp/OtlpGrpcMetricExporter.m
473473
${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/+opentelemetry/+exporters/+otlp/OtlpGrpcLogRecordExporter.m
474474
${CMAKE_CURRENT_SOURCE_DIR}/exporters/otlp/+opentelemetry/+exporters/+otlp/OtlpGrpcValidator.m)
475-
set(OTLP_MISC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/VERSION.txt)
475+
set(OTLP_MISC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
476476

477477
set(OTLP_EXPORTERS_DIR +opentelemetry/+exporters/+otlp)
478478

@@ -493,7 +493,7 @@ endif()
493493
if(WITH_OTLP_GRPC)
494494
install(FILES ${OTLP_GRPC_EXPORTER_MATLAB_SOURCES} DESTINATION ${OTLP_EXPORTERS_DIR})
495495
endif()
496-
# Install license and version. The only reason these are needed is to work around a packaging bug where if
496+
# Install license. The only reason it is needed is to work around a packaging bug where if
497497
# all files are in packages (+xxx directories), matlab.addons.toolbox.packageToolbox refuses to add the
498498
# toolbox path into MATLAB path. This issue is fixed in R2024a
499499
install(FILES ${OTLP_MISC_FILES} DESTINATION .)

VERSION.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/tlogs.m

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,10 @@ function testBasic(testCase)
8585

8686
versionidx = find(resourcekeys == "telemetry.sdk.version");
8787
verifyNotEmpty(testCase, versionidx);
88-
versionstr = strip(fileread(fullfile("..", "VERSION.txt")));
89-
verifyEqual(testCase, results.resourceLogs.resource.attributes(versionidx).value.stringValue, versionstr);
88+
versionpattern = digitsPattern + "." + digitsPattern + "." + digitsPattern;
89+
version_actual = results.resourceLogs.resource.attributes(versionidx).value.stringValue;
90+
verifyTrue(testCase, matches(version_actual, versionpattern), ...
91+
"Invalid version string: " + version_actual);
9092

9193
nameidx = find(resourcekeys == "telemetry.sdk.name");
9294
verifyNotEmpty(testCase, nameidx);

test/ttrace.m

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,10 @@ function testBasic(testCase)
8888

8989
versionidx = find(resourcekeys == "telemetry.sdk.version");
9090
verifyNotEmpty(testCase, versionidx);
91-
versionstr = strip(fileread(fullfile("..", "VERSION.txt")));
92-
verifyEqual(testCase, results.resourceSpans.resource.attributes(versionidx).value.stringValue, versionstr);
91+
versionpattern = digitsPattern + "." + digitsPattern + "." + digitsPattern;
92+
version_actual = results.resourceSpans.resource.attributes(versionidx).value.stringValue;
93+
verifyTrue(testCase, matches(version_actual, versionpattern), ...
94+
"Invalid version string: " + version_actual);
9395

9496
nameidx = find(resourcekeys == "telemetry.sdk.name");
9597
verifyNotEmpty(testCase, nameidx);

0 commit comments

Comments
 (0)