Test SDK's Span.IsRecording #4574
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: e2e-tests | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]+*' | |
pull_request: | |
jobs: | |
kubernetes-test: | |
strategy: | |
matrix: | |
k8s-version: ["v1.26.0"] | |
library: ["nethttp", "nethttp_custom", "gin", "databasesql", "grpc", "otelglobal", "kafka-go"] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: "~1.23.1" | |
check-latest: true | |
- name: Setup BATS | |
uses: mig4/setup-bats@v1 | |
- name: Build auto-instrumentation | |
run: | | |
IMG=otel-go-instrumentation:latest make docker-build | |
- name: Build sample app | |
run: | | |
cd internal/test/e2e/${{ matrix.library }} | |
docker build -t sample-app:latest . | |
- name: Set up Helm | |
uses: azure/setup-helm@v4 | |
with: | |
version: v3.9.0 | |
- name: Create kind cluster | |
uses: helm/[email protected] | |
with: | |
node_image: kindest/node:${{ matrix.k8s-version }} | |
kubectl_version: ${{ matrix.k8s-version }} | |
- name: Check kind | |
run: | | |
kubectl cluster-info --context kind-chart-testing | |
kubectl get node | |
docker ps -a --filter label=io.x-k8s.kind.cluster=chart-testing | |
- name: Kind load images | |
run: | | |
kind load docker-image otel-go-instrumentation --name chart-testing | |
kind load docker-image sample-app --name chart-testing | |
- name: Add Dependencies | |
shell: bash | |
run: | | |
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts | |
- uses: actions/checkout@v4 | |
with: | |
repository: 'open-telemetry/opentelemetry-helm-charts' | |
path: opentelemetry-helm-charts | |
- name: Helm install collector | |
run: | | |
if [ -f ./internal/test/e2e/${{ matrix.library }}/collector-helm-values.yml ]; then | |
helm install test -f ./internal/test/e2e/${{ matrix.library }}/collector-helm-values.yml opentelemetry-helm-charts/charts/opentelemetry-collector | |
else | |
helm install test -f .github/workflows/e2e/k8s/collector-helm-values.yml opentelemetry-helm-charts/charts/opentelemetry-collector | |
fi | |
- name: check collector status | |
# The loop is needed if the pod is not created yet | |
# once https://github.com/kubernetes/kubectl/issues/1516 is fixed we can remove the loop | |
run: | | |
while : ; do | |
kubectl get pod/test-opentelemetry-collector-0 && break | |
sleep 5 | |
done | |
kubectl wait --for=condition=Ready --timeout=60s pod/test-opentelemetry-collector-0 | |
- name: start sample job | |
run: | | |
kubectl -n default create -f .github/workflows/e2e/k8s/sample-job.yml | |
- name: check job status | |
id: job-status | |
run: | | |
kubectl wait --for=condition=Complete --timeout=60s job/sample-job | |
- name: copy telemetry trace output | |
run: | | |
kubectl cp -c filecp default/test-opentelemetry-collector-0:tmp/trace.json ./internal/test/e2e/${{ matrix.library }}/traces-orig.json | |
rm -f ./internal/test/e2e/${{ matrix.library }}/traces.json | |
if: always() && steps.job-status.outcome == 'success' | |
- name: print auto-instrumentation logs | |
run: | | |
kubectl logs -l app=sample -c auto-instrumentation --tail=300 | |
exit 1 | |
if: always() && steps.job-status.outcome == 'failure' | |
- name: verify output and redact to traces.json | |
run: | | |
bats ./internal/test/e2e/${{ matrix.library }}/verify.bats | |
if: always() && steps.job-status.outcome == 'success' |