Skip to content

refactor: rename Workflow Insight to Durable Execution Telemetry #864

refactor: rename Workflow Insight to Durable Execution Telemetry

refactor: rename Workflow Insight to Durable Execution Telemetry #864

name: OTel Conformance Tests
# Per-PR OpenTelemetry conformance run. Reuses the shared orchestrator from
# aws-durable-execution-conformance-tests and points it at this repo's own handlers/templates
# (conformance-tests-otel/) via examples_dir, so the handlers live here while the orchestration
# (backend matrix, ADOT layer, collector build, long-running cycle) stays centralized.
#
# Mirrors the Java preset's language config (setup/prepare commands, ADOT repo, runtime) but calls
# opentelemetry-orchestrator.yml directly, matching the Python SDK's caller.
on:
pull_request:
branches: [main]
paths:
- "sdk/**"
- "otel-plugin/**"
- "conformance-tests-otel/**"
- "pom.xml"
- ".github/workflows/otel-conformance-tests.yml"
push:
branches: [main]
paths:
- "sdk/**"
- "otel-plugin/**"
- "conformance-tests-otel/**"
- "pom.xml"
- ".github/workflows/otel-conformance-tests.yml"
workflow_dispatch:
inputs:
phase:
description: Run short tests, launch a long run, or check the active long run
required: true
default: short
type: choice
options:
- short
- launch
- check
delay_seconds:
description: Durable delay in seconds (1-86400, launch only)
required: true
default: "82800"
type: string
aws_region:
description: AWS region
required: true
default: us-west-2
type: string
conformance_test_ref:
description: Optional conformance test commit SHA or branch name
required: false
type: string
permissions: {}
# Serialize shared test resources and retain pending PR runs instead of replacing them.
concurrency:
group: otel-conformance-tests
cancel-in-progress: false
queue: max
jobs:
opentelemetry:
# 1. Run for non-PR events, such as scheduled runs and manual invocations
# 2. For PRs, run only same-repo branches from non-Dependabot actors; forked PRs or Dependabot should not access secrets.
if: github.event_name != 'pull_request' || (github.actor != 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository)
permissions:
actions: write
contents: read
id-token: write
uses: aws/aws-durable-execution-conformance-tests/.github/workflows/opentelemetry-orchestrator.yml@d8b8399264628dae57b7a96bf4cbf3e39a99fd8d
with:
case_count: 20
runs_on: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository && 'ubuntu-latest' || format('codebuild-github-actions-runner-{0}-{1}', github.run_id, github.run_attempt) }}
language: java
resource_prefix: j
sdk_repository: aws/aws-durable-execution-sdk-java
sdk_ref: ${{ github.event.pull_request.head.sha || github.sha }}
conformance_test_ref: ${{ inputs.conformance_test_ref || '02d6dca971a38c13d94d6233d12f687e55b2a572' }}
checkout_sdk: true
# Build the handlers from this repo's checked-out module instead of the conformance repo's
# bundled examples/java. Path is relative to the conformance workspace where the SDK is
# checked out (.build/durable-sdk).
examples_dir: .build/durable-sdk/conformance-tests-otel
setup_command: |
set -euo pipefail
if [ -n "${JAVA_HOME_21_X64:-}" ]; then
export JAVA_HOME="$JAVA_HOME_21_X64"
elif [ -x /usr/lib/jvm/java-21-amazon-corretto/bin/java ]; then
export JAVA_HOME=/usr/lib/jvm/java-21-amazon-corretto
elif [ -z "${JAVA_HOME:-}" ]; then
export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v java)")")")"
fi
if [ ! -x "$JAVA_HOME/bin/java" ] || [ ! -x "$JAVA_HOME/bin/javac" ]; then
echo "Selected JAVA_HOME=$JAVA_HOME is not a complete JDK"
exit 1
fi
export PATH="$JAVA_HOME/bin:$PATH"
java_spec=$(java -XshowSettings:properties -version 2>&1 | awk '$1 == "java.specification.version" {print $3}')
if [ "$java_spec" != "21" ]; then
echo "Java 21 is required; selected JAVA_HOME=$JAVA_HOME reports specification version $java_spec"
exit 1
fi
javac_version=$(javac -version 2>&1)
if [[ ! "$javac_version" =~ ^javac[[:space:]]21([.]|[[:space:]]|$) ]]; then
echo "Java 21 javac is required; selected compiler reports $javac_version"
exit 1
fi
java -version
javac -version
if [ -n "${GITHUB_ENV:-}" ]; then
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
fi
if [ -n "${GITHUB_PATH:-}" ]; then
echo "$JAVA_HOME/bin" >> "$GITHUB_PATH"
fi
prepare_command: |
JAVA_SDK_VERSION=$(
mvn -B -q \
--file "$SDK_CHECKOUT/pom.xml" \
-Dstyle.color=never \
-Dexpression=project.version \
-DforceStdout \
help:evaluate
)
mvn -B -q \
--file "$SDK_CHECKOUT/pom.xml" \
--projects sdk,otel-plugin \
--also-make \
-DskipTests \
install
echo "Using Java SDK version $JAVA_SDK_VERSION"
echo "JAVA_SDK_VERSION=$JAVA_SDK_VERSION" >> "$GITHUB_ENV"
mvn -B -q -DskipTests package \
-Ddurable.sdk.version="$JAVA_SDK_VERSION" \
--file "$EXAMPLES_DIR/pom.xml"
adot_release_repository: aws-observability/aws-otel-java-instrumentation
collector_compatible_runtime: java21
collector_otlp_endpoint: http://localhost:4318
phase: ${{ inputs.phase || 'short' }}
delay_seconds: ${{ inputs.delay_seconds || '82800' }}
aws_region: ${{ inputs.aws_region || 'us-west-2' }}
secrets:
CONFORMANCE_TEST_ROLE_ARN: ${{ secrets.TEST_ROLE_ARN }}
CONFORMANCE_TEST_ACCOUNT_ID: ${{ secrets.TEST_ACCOUNT_ID }}
CONFORMANCE_TEST_LAMBDA_EXECUTION_ROLE_ARN: ${{ secrets.TEST_LAMBDA_EXECUTION_ROLE_ARN }}
DASH0_AUTH_TOKEN: ${{ secrets.DASH0_AUTH_TOKEN }}
DATADOG_ACCESS_TOKEN: ${{ secrets.DATADOG_ACCESS_TOKEN }}
DATADOG_API_KEY: ${{ secrets.DATADOG_API_KEY }}
DATADOG_APPLICATION_KEY: ${{ secrets.DATADOG_APPLICATION_KEY }}