Skip to content

Commit 30edd0f

Browse files
Release scripts (#32)
* add gitlab releasing support for packages * update local builds script, package tomls * address comments, add traceloop package, remove docker images * updates * only trigger on alpha tag creation
1 parent 26e8819 commit 30edd0f

File tree

9 files changed

+379
-11
lines changed

9 files changed

+379
-11
lines changed

.gitlab-ci.yml

Lines changed: 295 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,295 @@
1+
default:
2+
image: 'python:3.11-slim'
3+
4+
include:
5+
- project: core-ee/signing/api-integration
6+
ref: develop
7+
file: /templates/.sign-client.yml
8+
9+
stages:
10+
- build
11+
- sign
12+
- deploy
13+
14+
variables:
15+
# Define package configurations: name, path, and PyPI package name
16+
PACKAGES: |
17+
util-genai:util/opentelemetry-util-genai:splunk-otel-util-genai
18+
util-genai-evals:util/opentelemetry-util-genai-evals:splunk-otel-util-genai-evals
19+
genai-emitters-splunk:util/opentelemetry-util-genai-emitters-splunk:splunk-otel-genai-emitters-splunk
20+
genai-evals-deepeval:util/opentelemetry-util-genai-evals-deepeval:splunk-otel-genai-evals-deepeval
21+
instrumentation-langchain:instrumentation-genai/opentelemetry-instrumentation-langchain:splunk-otel-instrumentation-langchain
22+
genai-translator-traceloop:util/opentelemetry-util-genai-traceloop-translator:splunk-otel-util-genai-translator-traceloop
23+
24+
# Build jobs for each package
25+
build-util-genai:
26+
stage: build
27+
script:
28+
- pip install hatch
29+
- cd util/opentelemetry-util-genai
30+
- hatch build
31+
- mkdir -p ../../dist/util-genai
32+
- mv dist/* ../../dist/util-genai/
33+
- cd ../../dist/util-genai
34+
- sha256sum * > checksums.txt
35+
artifacts:
36+
paths:
37+
- dist/util-genai/
38+
rules:
39+
- if: '$CI_COMMIT_TAG =~ /^util-genai-v0\.[0-9]+\.[0-9]+.*/'
40+
41+
build-util-genai-evals:
42+
stage: build
43+
script:
44+
- pip install hatch
45+
- cd util/opentelemetry-util-genai-evals
46+
- hatch build
47+
- mkdir -p ../../dist/util-genai-evals
48+
- mv dist/* ../../dist/util-genai-evals/
49+
- cd ../../dist/util-genai-evals
50+
- sha256sum * > checksums.txt
51+
artifacts:
52+
paths:
53+
- dist/util-genai-evals/
54+
rules:
55+
- if: '$CI_COMMIT_TAG =~ /^util-genai-evals-v0\.[0-9]+\.[0-9]+.*/'
56+
57+
build-genai-emitters-splunk:
58+
stage: build
59+
script:
60+
- pip install hatch
61+
- cd util/opentelemetry-util-genai-emitters-splunk
62+
- hatch build
63+
- mkdir -p ../../dist/genai-emitters-splunk
64+
- mv dist/* ../../dist/genai-emitters-splunk/
65+
- cd ../../dist/genai-emitters-splunk
66+
- sha256sum * > checksums.txt
67+
artifacts:
68+
paths:
69+
- dist/genai-emitters-splunk/
70+
rules:
71+
- if: '$CI_COMMIT_TAG =~ /^genai-emitters-splunk-v0\.[0-9]+\.[0-9]+.*/'
72+
73+
build-genai-evals-deepeval:
74+
stage: build
75+
script:
76+
- pip install hatch
77+
- cd util/opentelemetry-util-genai-evals-deepeval
78+
- hatch build
79+
- mkdir -p ../../dist/genai-evals-deepeval
80+
- mv dist/* ../../dist/genai-evals-deepeval/
81+
- cd ../../dist/genai-evals-deepeval
82+
- sha256sum * > checksums.txt
83+
artifacts:
84+
paths:
85+
- dist/genai-evals-deepeval/
86+
rules:
87+
- if: '$CI_COMMIT_TAG =~ /^genai-evals-deepeval-v0\.[0-9]+\.[0-9]+.*/'
88+
89+
build-instrumentation-langchain:
90+
stage: build
91+
script:
92+
- pip install hatch
93+
- cd instrumentation-genai/opentelemetry-instrumentation-langchain
94+
- hatch build
95+
- mkdir -p ../../dist/instrumentation-langchain
96+
- mv dist/* ../../dist/instrumentation-langchain/
97+
- cd ../../dist/instrumentation-langchain
98+
- sha256sum * > checksums.txt
99+
artifacts:
100+
paths:
101+
- dist/instrumentation-langchain/
102+
rules:
103+
- if: '$CI_COMMIT_TAG =~ /^instrumentation-langchain-v0\.[0-9]+\.[0-9]+.*/'
104+
105+
build-genai-translator-traceloop:
106+
stage: build
107+
script:
108+
- pip install hatch
109+
- cd util/opentelemetry-util-genai-traceloop-translator
110+
- hatch build
111+
- mkdir -p ../../dist/genai-translator-traceloop
112+
- mv dist/* ../../dist/genai-translator-traceloop/
113+
- cd ../../dist/genai-translator-traceloop
114+
- sha256sum * > checksums.txt
115+
artifacts:
116+
paths:
117+
- dist/genai-translator-traceloop/
118+
rules:
119+
- if: '$CI_COMMIT_TAG =~ /^genai-translator-traceloop-v0\.[0-9]+\.[0-9]+.*/'
120+
121+
# Signing jobs for each package
122+
sign-util-genai:
123+
stage: sign
124+
extends: .submit-signing-request
125+
needs:
126+
- build-util-genai
127+
variables:
128+
ARTIFACT: dist/util-genai/checksums.txt
129+
SIGN_TYPE: GPG
130+
DOWNLOAD_DIR: dist/util-genai
131+
LOGLEVEL: DEBUG
132+
artifacts:
133+
paths:
134+
- dist/util-genai/
135+
rules:
136+
- if: '$CI_COMMIT_TAG =~ /^util-genai-v0\.[0-9]+\.[0-9]+.*/'
137+
138+
sign-util-genai-evals:
139+
stage: sign
140+
extends: .submit-signing-request
141+
needs:
142+
- build-util-genai-evals
143+
variables:
144+
ARTIFACT: dist/util-genai-evals/checksums.txt
145+
SIGN_TYPE: GPG
146+
DOWNLOAD_DIR: dist/util-genai-evals
147+
LOGLEVEL: DEBUG
148+
artifacts:
149+
paths:
150+
- dist/util-genai-evals/
151+
rules:
152+
- if: '$CI_COMMIT_TAG =~ /^util-genai-evals-v0\.[0-9]+\.[0-9]+.*/'
153+
154+
sign-genai-emitters-splunk:
155+
stage: sign
156+
extends: .submit-signing-request
157+
needs:
158+
- build-genai-emitters-splunk
159+
variables:
160+
ARTIFACT: dist/genai-emitters-splunk/checksums.txt
161+
SIGN_TYPE: GPG
162+
DOWNLOAD_DIR: dist/genai-emitters-splunk
163+
LOGLEVEL: DEBUG
164+
artifacts:
165+
paths:
166+
- dist/genai-emitters-splunk/
167+
rules:
168+
- if: '$CI_COMMIT_TAG =~ /^genai-emitters-splunk-v0\.[0-9]+\.[0-9]+.*/'
169+
170+
sign-genai-evals-deepeval:
171+
stage: sign
172+
extends: .submit-signing-request
173+
needs:
174+
- build-genai-evals-deepeval
175+
variables:
176+
ARTIFACT: dist/genai-evals-deepeval/checksums.txt
177+
SIGN_TYPE: GPG
178+
DOWNLOAD_DIR: dist/genai-evals-deepeval
179+
LOGLEVEL: DEBUG
180+
artifacts:
181+
paths:
182+
- dist/genai-evals-deepeval/
183+
rules:
184+
- if: '$CI_COMMIT_TAG =~ /^genai-evals-deepeval-v0\.[0-9]+\.[0-9]+.*/'
185+
186+
sign-instrumentation-langchain:
187+
stage: sign
188+
extends: .submit-signing-request
189+
needs:
190+
- build-instrumentation-langchain
191+
variables:
192+
ARTIFACT: dist/instrumentation-langchain/checksums.txt
193+
SIGN_TYPE: GPG
194+
DOWNLOAD_DIR: dist/instrumentation-langchain
195+
LOGLEVEL: DEBUG
196+
artifacts:
197+
paths:
198+
- dist/instrumentation-langchain/
199+
rules:
200+
- if: '$CI_COMMIT_TAG =~ /^instrumentation-langchain-v0\.[0-9]+\.[0-9]+.*/'
201+
202+
sign-genai-translator-traceloop:
203+
stage: sign
204+
extends: .submit-signing-request
205+
needs:
206+
- build-genai-translator-traceloop
207+
variables:
208+
ARTIFACT: dist/genai-translator-traceloop/checksums.txt
209+
SIGN_TYPE: GPG
210+
DOWNLOAD_DIR: dist/genai-translator-traceloop
211+
LOGLEVEL: DEBUG
212+
artifacts:
213+
paths:
214+
- dist/genai-translator-traceloop/
215+
rules:
216+
- if: '$CI_COMMIT_TAG =~ /^genai-translator-traceloop-v0\.[0-9]+\.[0-9]+.*/'
217+
218+
# Deploy jobs for each package
219+
deploy-util-genai:
220+
stage: deploy
221+
script:
222+
- pip install hatch keyrings.alt
223+
- cd util/opentelemetry-util-genai
224+
- mkdir -p dist
225+
- cp ../../dist/util-genai/* dist/
226+
- hatch --no-interactive publish
227+
needs:
228+
- sign-util-genai
229+
rules:
230+
- if: '$CI_COMMIT_TAG =~ /^util-genai-v0\.[0-9]+\.[0-9]+.*/'
231+
232+
deploy-util-genai-evals:
233+
stage: deploy
234+
script:
235+
- pip install hatch keyrings.alt
236+
- cd util/opentelemetry-util-genai-evals
237+
- mkdir -p dist
238+
- cp ../../dist/util-genai-evals/* dist/
239+
- hatch --no-interactive publish
240+
needs:
241+
- sign-util-genai-evals
242+
rules:
243+
- if: '$CI_COMMIT_TAG =~ /^util-genai-evals-v0\.[0-9]+\.[0-9]+.*/'
244+
245+
deploy-genai-emitters-splunk:
246+
stage: deploy
247+
script:
248+
- pip install hatch keyrings.alt
249+
- cd util/opentelemetry-util-genai-emitters-splunk
250+
- mkdir -p dist
251+
- cp ../../dist/genai-emitters-splunk/* dist/
252+
- hatch --no-interactive publish
253+
needs:
254+
- sign-genai-emitters-splunk
255+
rules:
256+
- if: '$CI_COMMIT_TAG =~ /^genai-emitters-splunk-v0\.[0-9]+\.[0-9]+.*/'
257+
258+
deploy-genai-evals-deepeval:
259+
stage: deploy
260+
script:
261+
- pip install hatch keyrings.alt
262+
- cd util/opentelemetry-util-genai-evals-deepeval
263+
- mkdir -p dist
264+
- cp ../../dist/genai-evals-deepeval/* dist/
265+
- hatch --no-interactive publish
266+
needs:
267+
- sign-genai-evals-deepeval
268+
rules:
269+
- if: '$CI_COMMIT_TAG =~ /^genai-evals-deepeval-v0\.[0-9]+\.[0-9]+.*/'
270+
271+
deploy-instrumentation-langchain:
272+
stage: deploy
273+
script:
274+
- pip install hatch keyrings.alt
275+
- cd instrumentation-genai/opentelemetry-instrumentation-langchain
276+
- mkdir -p dist
277+
- cp ../../dist/instrumentation-langchain/* dist/
278+
- hatch --no-interactive publish
279+
needs:
280+
- sign-instrumentation-langchain
281+
rules:
282+
- if: '$CI_COMMIT_TAG =~ /^instrumentation-langchain-v0\.[0-9]+\.[0-9]+.*/'
283+
284+
deploy-genai-translator-traceloop:
285+
stage: deploy
286+
script:
287+
- pip install hatch keyrings.alt
288+
- cd util/opentelemetry-util-genai-traceloop-translator
289+
- mkdir -p dist
290+
- cp ../../dist/genai-translator-traceloop/* dist/
291+
- hatch --no-interactive publish
292+
needs:
293+
- sign-genai-translator-traceloop
294+
rules:
295+
- if: '$CI_COMMIT_TAG =~ /^genai-translator-traceloop-v0\.[0-9]+\.[0-9]+.*/'

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ pip install -e util/opentelemetry-util-genai --no-deps
261261
pip install -e util/opentelemetry-util-genai-evals --no-deps
262262
pip install -e util/opentelemetry-util-genai-evals-deepeval --no-deps
263263
pip install -e util/opentelemetry-util-genai-emitters-splunk --no-deps
264+
pip install -e util/opentelemetry-util-genai-traceloop-translator --no-deps
264265
pip install -e instrumentation-genai/opentelemetry-instrumentation-langchain --no-deps
265266
pip install -r dev-genai-requirements.txt
266267
pip install -r instrumentation-genai/opentelemetry-instrumentation-langchain/examples/manual/requirements.txt

RELEASING.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Overview
2+
3+
This document describes how to release packages from this repository.
4+
5+
## Releasing GenAI Packages
6+
7+
How to release a new version of the GenAI packages
8+
(util-genai, util-genai-evals, genai-emitters-splunk,
9+
genai-evals-deepeval, instrumentation-langchain, genai-translator-traceloop):
10+
11+
### Package Information
12+
13+
| Package Name | Path | Tag Format |
14+
|-------------|------|------------------------------------|
15+
| splunk-otel-util-genai | `util/opentelemetry-util-genai` | `util-genai-v0.Y.Z` |
16+
| splunk-otel-util-genai-evals | `util/opentelemetry-util-genai-evals` | `util-genai-evals-v0.Y.Z` |
17+
| splunk-otel-genai-emitters-splunk | `util/opentelemetry-util-genai-emitters-splunk` | `genai-emitters-splunk-v0.Y.Z` |
18+
| splunk-otel-genai-evals-deepeval | `util/opentelemetry-util-genai-evals-deepeval` | `genai-evals-deepeval-v0.Y.Z` |
19+
| splunk-otel-instrumentation-langchain | `instrumentation-genai/opentelemetry-instrumentation-langchain` | `instrumentation-langchain-v0.Y.Z` |
20+
| splunk-otel-util-genai-translator-traceloop | `util/opentelemetry-util-genai-traceloop-translator` | `genai-translator-traceloop-v0.Y.Z` |
21+
22+
### Release Steps
23+
24+
1) Create a new branch from `main`
25+
26+
2) Navigate to the package directory you want to release
27+
28+
3) Bump dependency versions in the package's `pyproject.toml`
29+
- update otel dependencies to the latest versions if needed
30+
31+
4) Bump the version in the package's `version.py` file
32+
- e.g., `util/opentelemetry-util-genai/src/opentelemetry/util/genai/version.py`
33+
- update `__version__ = "0.1.0"` to the new version
34+
35+
5) Add a new entry in CHANGELOG.md for the package release
36+
37+
6) Commit the changes with a message like "Bump util-genai version to 0.1.0"
38+
39+
7) Push the changes to the Github Splunk OTel Python repo
40+
41+
8) Open a PR and merge after approval
42+
43+
9) Navigate to the GitLab mirror and verify that the mirror has pulled the version you just merged by checking the
44+
version number in the package's `version.py` file
45+
46+
10) When ready to release, create a new tag with the **package-specific format** on main in GitLab
47+
- **IMPORTANT**: GenAI packages use a tag format that includes the package name prefix
48+
- Examples:
49+
- For `splunk-otel-util-genai` version `0.1.0`, create tag: `util-genai-v0.1.0`
50+
- For `splunk-otel-instrumentation-langchain` version `0.2.0`, create tag: `instrumentation-langchain-v0.2.0`
51+
- A tag matching the package-specific format will trigger the CI pipeline to build and publish that specific package to PyPI
52+
53+
11) Monitor the release pipeline in GitLab to ensure it completes successfully
54+
- The pipeline will show jobs like `build-util-genai`, `sign-util-genai`, `deploy-util-genai`
55+
56+
12) Post release, verify that the new package is available on PyPI
57+
- e.g., `https://pypi.org/project/splunk-otel-util-genai/0.1.0/`
58+
59+
13) Smoke test the release locally by installing the new package and running it with a small app
60+
```bash
61+
pip install splunk-otel-util-genai==0.1.0
62+
```
63+
64+
14) Navigate to Pipelines in the GitLab repo, click the download button for the build job that just ran,
65+
and select the package-specific build job artifact (e.g., `build-util-genai`)
66+
- this will download a tarball of the package files
67+
68+
15) Navigate to the Splunk OTel Python repo and create a New Release
69+
- create a new tag on publish with the tag name you created in step 10 (e.g., `util-genai-v0.1.0`)
70+
- set the title to that tag name
71+
- unpack the tarball from step 14 and drag its contents onto the attachments section of the New Release page
72+
- Leave the defaults selected and click Publish

instrumentation-genai/opentelemetry-instrumentation-langchain/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ requires = ["hatchling"]
33
build-backend = "hatchling.build"
44

55
[project]
6-
name = "opentelemetry-instrumentation-langchain"
6+
name = "splunk-otel-instrumentation-langchain"
77
dynamic = ["version"]
88
description = "OpenTelemetry Official Langchain instrumentation"
99
readme = "README.rst"
@@ -27,7 +27,7 @@ dependencies = [
2727
"opentelemetry-api ~= 1.38.0.dev0",
2828
"opentelemetry-instrumentation ~= 0.59b0.dev0",
2929
"opentelemetry-semantic-conventions ~= 0.59b0.dev0",
30-
"opentelemetry-util-genai", # new util-genai dependency for updated handler
30+
"splunk-otel-util-genai", # new util-genai dependency for updated handler
3131
]
3232

3333
[project.optional-dependencies]

0 commit comments

Comments
 (0)