Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
295 changes: 295 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,295 @@
default:
image: 'python:3.11-slim'

include:
- project: core-ee/signing/api-integration
ref: develop
file: /templates/.sign-client.yml

stages:
- build
- sign
- deploy

variables:
# Define package configurations: name, path, and PyPI package name
PACKAGES: |
util-genai:util/opentelemetry-util-genai:splunk-otel-util-genai
util-genai-evals:util/opentelemetry-util-genai-evals:splunk-otel-util-genai-evals
genai-emitters-splunk:util/opentelemetry-util-genai-emitters-splunk:splunk-otel-genai-emitters-splunk
genai-evals-deepeval:util/opentelemetry-util-genai-evals-deepeval:splunk-otel-genai-evals-deepeval
instrumentation-langchain:instrumentation-genai/opentelemetry-instrumentation-langchain:splunk-otel-instrumentation-langchain
genai-translator-traceloop:util/opentelemetry-util-genai-traceloop-translator:splunk-otel-util-genai-translator-traceloop

# Build jobs for each package
build-util-genai:
stage: build
script:
- pip install hatch
- cd util/opentelemetry-util-genai
- hatch build
- mkdir -p ../../dist/util-genai
- mv dist/* ../../dist/util-genai/
- cd ../../dist/util-genai
- sha256sum * > checksums.txt
artifacts:
paths:
- dist/util-genai/
rules:
- if: '$CI_COMMIT_TAG =~ /^util-genai-v0\.[0-9]+\.[0-9]+.*/'

build-util-genai-evals:
stage: build
script:
- pip install hatch
- cd util/opentelemetry-util-genai-evals
- hatch build
- mkdir -p ../../dist/util-genai-evals
- mv dist/* ../../dist/util-genai-evals/
- cd ../../dist/util-genai-evals
- sha256sum * > checksums.txt
artifacts:
paths:
- dist/util-genai-evals/
rules:
- if: '$CI_COMMIT_TAG =~ /^util-genai-evals-v0\.[0-9]+\.[0-9]+.*/'

build-genai-emitters-splunk:
stage: build
script:
- pip install hatch
- cd util/opentelemetry-util-genai-emitters-splunk
- hatch build
- mkdir -p ../../dist/genai-emitters-splunk
- mv dist/* ../../dist/genai-emitters-splunk/
- cd ../../dist/genai-emitters-splunk
- sha256sum * > checksums.txt
artifacts:
paths:
- dist/genai-emitters-splunk/
rules:
- if: '$CI_COMMIT_TAG =~ /^genai-emitters-splunk-v0\.[0-9]+\.[0-9]+.*/'

build-genai-evals-deepeval:
stage: build
script:
- pip install hatch
- cd util/opentelemetry-util-genai-evals-deepeval
- hatch build
- mkdir -p ../../dist/genai-evals-deepeval
- mv dist/* ../../dist/genai-evals-deepeval/
- cd ../../dist/genai-evals-deepeval
- sha256sum * > checksums.txt
artifacts:
paths:
- dist/genai-evals-deepeval/
rules:
- if: '$CI_COMMIT_TAG =~ /^genai-evals-deepeval-v0\.[0-9]+\.[0-9]+.*/'

build-instrumentation-langchain:
stage: build
script:
- pip install hatch
- cd instrumentation-genai/opentelemetry-instrumentation-langchain
- hatch build
- mkdir -p ../../dist/instrumentation-langchain
- mv dist/* ../../dist/instrumentation-langchain/
- cd ../../dist/instrumentation-langchain
- sha256sum * > checksums.txt
artifacts:
paths:
- dist/instrumentation-langchain/
rules:
- if: '$CI_COMMIT_TAG =~ /^instrumentation-langchain-v0\.[0-9]+\.[0-9]+.*/'

build-genai-translator-traceloop:
stage: build
script:
- pip install hatch
- cd util/opentelemetry-util-genai-traceloop-translator
- hatch build
- mkdir -p ../../dist/genai-translator-traceloop
- mv dist/* ../../dist/genai-translator-traceloop/
- cd ../../dist/genai-translator-traceloop
- sha256sum * > checksums.txt
artifacts:
paths:
- dist/genai-translator-traceloop/
rules:
- if: '$CI_COMMIT_TAG =~ /^genai-translator-traceloop-v0\.[0-9]+\.[0-9]+.*/'

# Signing jobs for each package
sign-util-genai:
stage: sign
extends: .submit-signing-request
needs:
- build-util-genai
variables:
ARTIFACT: dist/util-genai/checksums.txt
SIGN_TYPE: GPG
DOWNLOAD_DIR: dist/util-genai
LOGLEVEL: DEBUG
artifacts:
paths:
- dist/util-genai/
rules:
- if: '$CI_COMMIT_TAG =~ /^util-genai-v0\.[0-9]+\.[0-9]+.*/'

sign-util-genai-evals:
stage: sign
extends: .submit-signing-request
needs:
- build-util-genai-evals
variables:
ARTIFACT: dist/util-genai-evals/checksums.txt
SIGN_TYPE: GPG
DOWNLOAD_DIR: dist/util-genai-evals
LOGLEVEL: DEBUG
artifacts:
paths:
- dist/util-genai-evals/
rules:
- if: '$CI_COMMIT_TAG =~ /^util-genai-evals-v0\.[0-9]+\.[0-9]+.*/'

sign-genai-emitters-splunk:
stage: sign
extends: .submit-signing-request
needs:
- build-genai-emitters-splunk
variables:
ARTIFACT: dist/genai-emitters-splunk/checksums.txt
SIGN_TYPE: GPG
DOWNLOAD_DIR: dist/genai-emitters-splunk
LOGLEVEL: DEBUG
artifacts:
paths:
- dist/genai-emitters-splunk/
rules:
- if: '$CI_COMMIT_TAG =~ /^genai-emitters-splunk-v0\.[0-9]+\.[0-9]+.*/'

sign-genai-evals-deepeval:
stage: sign
extends: .submit-signing-request
needs:
- build-genai-evals-deepeval
variables:
ARTIFACT: dist/genai-evals-deepeval/checksums.txt
SIGN_TYPE: GPG
DOWNLOAD_DIR: dist/genai-evals-deepeval
LOGLEVEL: DEBUG
artifacts:
paths:
- dist/genai-evals-deepeval/
rules:
- if: '$CI_COMMIT_TAG =~ /^genai-evals-deepeval-v0\.[0-9]+\.[0-9]+.*/'

sign-instrumentation-langchain:
stage: sign
extends: .submit-signing-request
needs:
- build-instrumentation-langchain
variables:
ARTIFACT: dist/instrumentation-langchain/checksums.txt
SIGN_TYPE: GPG
DOWNLOAD_DIR: dist/instrumentation-langchain
LOGLEVEL: DEBUG
artifacts:
paths:
- dist/instrumentation-langchain/
rules:
- if: '$CI_COMMIT_TAG =~ /^instrumentation-langchain-v0\.[0-9]+\.[0-9]+.*/'

sign-genai-translator-traceloop:
stage: sign
extends: .submit-signing-request
needs:
- build-genai-translator-traceloop
variables:
ARTIFACT: dist/genai-translator-traceloop/checksums.txt
SIGN_TYPE: GPG
DOWNLOAD_DIR: dist/genai-translator-traceloop
LOGLEVEL: DEBUG
artifacts:
paths:
- dist/genai-translator-traceloop/
rules:
- if: '$CI_COMMIT_TAG =~ /^genai-translator-traceloop-v0\.[0-9]+\.[0-9]+.*/'

# Deploy jobs for each package
deploy-util-genai:
stage: deploy
script:
- pip install hatch keyrings.alt
- cd util/opentelemetry-util-genai
- mkdir -p dist
- cp ../../dist/util-genai/* dist/
- hatch --no-interactive publish
needs:
- sign-util-genai
rules:
- if: '$CI_COMMIT_TAG =~ /^util-genai-v0\.[0-9]+\.[0-9]+.*/'

deploy-util-genai-evals:
stage: deploy
script:
- pip install hatch keyrings.alt
- cd util/opentelemetry-util-genai-evals
- mkdir -p dist
- cp ../../dist/util-genai-evals/* dist/
- hatch --no-interactive publish
needs:
- sign-util-genai-evals
rules:
- if: '$CI_COMMIT_TAG =~ /^util-genai-evals-v0\.[0-9]+\.[0-9]+.*/'

deploy-genai-emitters-splunk:
stage: deploy
script:
- pip install hatch keyrings.alt
- cd util/opentelemetry-util-genai-emitters-splunk
- mkdir -p dist
- cp ../../dist/genai-emitters-splunk/* dist/
- hatch --no-interactive publish
needs:
- sign-genai-emitters-splunk
rules:
- if: '$CI_COMMIT_TAG =~ /^genai-emitters-splunk-v0\.[0-9]+\.[0-9]+.*/'

deploy-genai-evals-deepeval:
stage: deploy
script:
- pip install hatch keyrings.alt
- cd util/opentelemetry-util-genai-evals-deepeval
- mkdir -p dist
- cp ../../dist/genai-evals-deepeval/* dist/
- hatch --no-interactive publish
needs:
- sign-genai-evals-deepeval
rules:
- if: '$CI_COMMIT_TAG =~ /^genai-evals-deepeval-v0\.[0-9]+\.[0-9]+.*/'

deploy-instrumentation-langchain:
stage: deploy
script:
- pip install hatch keyrings.alt
- cd instrumentation-genai/opentelemetry-instrumentation-langchain
- mkdir -p dist
- cp ../../dist/instrumentation-langchain/* dist/
- hatch --no-interactive publish
needs:
- sign-instrumentation-langchain
rules:
- if: '$CI_COMMIT_TAG =~ /^instrumentation-langchain-v0\.[0-9]+\.[0-9]+.*/'

deploy-genai-translator-traceloop:
stage: deploy
script:
- pip install hatch keyrings.alt
- cd util/opentelemetry-util-genai-traceloop-translator
- mkdir -p dist
- cp ../../dist/genai-translator-traceloop/* dist/
- hatch --no-interactive publish
needs:
- sign-genai-translator-traceloop
rules:
- if: '$CI_COMMIT_TAG =~ /^genai-translator-traceloop-v0\.[0-9]+\.[0-9]+.*/'
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,7 @@ pip install -e util/opentelemetry-util-genai --no-deps
pip install -e util/opentelemetry-util-genai-evals --no-deps
pip install -e util/opentelemetry-util-genai-evals-deepeval --no-deps
pip install -e util/opentelemetry-util-genai-emitters-splunk --no-deps
pip install -e util/opentelemetry-util-genai-traceloop-translator --no-deps
pip install -e instrumentation-genai/opentelemetry-instrumentation-langchain --no-deps
pip install -r dev-genai-requirements.txt
pip install -r instrumentation-genai/opentelemetry-instrumentation-langchain/examples/manual/requirements.txt
Expand Down
72 changes: 72 additions & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Overview

This document describes how to release packages from this repository.

## Releasing GenAI Packages

How to release a new version of the GenAI packages
(util-genai, util-genai-evals, genai-emitters-splunk,
genai-evals-deepeval, instrumentation-langchain, genai-translator-traceloop):

### Package Information

| Package Name | Path | Tag Format |
|-------------|------|------------------------------------|
| splunk-otel-util-genai | `util/opentelemetry-util-genai` | `util-genai-v0.Y.Z` |
| splunk-otel-util-genai-evals | `util/opentelemetry-util-genai-evals` | `util-genai-evals-v0.Y.Z` |
| splunk-otel-genai-emitters-splunk | `util/opentelemetry-util-genai-emitters-splunk` | `genai-emitters-splunk-v0.Y.Z` |
| splunk-otel-genai-evals-deepeval | `util/opentelemetry-util-genai-evals-deepeval` | `genai-evals-deepeval-v0.Y.Z` |
| splunk-otel-instrumentation-langchain | `instrumentation-genai/opentelemetry-instrumentation-langchain` | `instrumentation-langchain-v0.Y.Z` |
| splunk-otel-util-genai-translator-traceloop | `util/opentelemetry-util-genai-traceloop-translator` | `genai-translator-traceloop-v0.Y.Z` |

### Release Steps

1) Create a new branch from `main`

2) Navigate to the package directory you want to release

3) Bump dependency versions in the package's `pyproject.toml`
- update otel dependencies to the latest versions if needed

4) Bump the version in the package's `version.py` file
- e.g., `util/opentelemetry-util-genai/src/opentelemetry/util/genai/version.py`
- update `__version__ = "0.1.0"` to the new version

5) Add a new entry in CHANGELOG.md for the package release

6) Commit the changes with a message like "Bump util-genai version to 0.1.0"

7) Push the changes to the Github Splunk OTel Python repo

8) Open a PR and merge after approval

9) Navigate to the GitLab mirror and verify that the mirror has pulled the version you just merged by checking the
version number in the package's `version.py` file

10) When ready to release, create a new tag with the **package-specific format** on main in GitLab
- **IMPORTANT**: GenAI packages use a tag format that includes the package name prefix
- Examples:
- For `splunk-otel-util-genai` version `0.1.0`, create tag: `util-genai-v0.1.0`
- For `splunk-otel-instrumentation-langchain` version `0.2.0`, create tag: `instrumentation-langchain-v0.2.0`
- A tag matching the package-specific format will trigger the CI pipeline to build and publish that specific package to PyPI

11) Monitor the release pipeline in GitLab to ensure it completes successfully
- The pipeline will show jobs like `build-util-genai`, `sign-util-genai`, `deploy-util-genai`

12) Post release, verify that the new package is available on PyPI
- e.g., `https://pypi.org/project/splunk-otel-util-genai/0.1.0/`

13) Smoke test the release locally by installing the new package and running it with a small app
```bash
pip install splunk-otel-util-genai==0.1.0
```

14) Navigate to Pipelines in the GitLab repo, click the download button for the build job that just ran,
and select the package-specific build job artifact (e.g., `build-util-genai`)
- this will download a tarball of the package files

15) Navigate to the Splunk OTel Python repo and create a New Release
- create a new tag on publish with the tag name you created in step 10 (e.g., `util-genai-v0.1.0`)
- set the title to that tag name
- unpack the tarball from step 14 and drag its contents onto the attachments section of the New Release page
- Leave the defaults selected and click Publish
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "opentelemetry-instrumentation-langchain"
name = "splunk-otel-instrumentation-langchain"
dynamic = ["version"]
description = "OpenTelemetry Official Langchain instrumentation"
readme = "README.rst"
Expand All @@ -27,7 +27,7 @@ dependencies = [
"opentelemetry-api ~= 1.38.0.dev0",
"opentelemetry-instrumentation ~= 0.59b0.dev0",
"opentelemetry-semantic-conventions ~= 0.59b0.dev0",
"opentelemetry-util-genai", # new util-genai dependency for updated handler
"splunk-otel-util-genai", # new util-genai dependency for updated handler
]

[project.optional-dependencies]
Expand Down
Loading
Loading