Skip to content

feature/actions: WIP #17

feature/actions: WIP

feature/actions: WIP #17

Workflow file for this run

name: Enable Tracing for PR
on:
pull_request:
types: [opened, synchronize, labeled, unlabeled, closed]
jobs:
tracing:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Check for "enable tracing" label
id: check-label
run: |
label=$(jq -r '.pull_request.labels[].name' "$GITHUB_EVENT_PATH")
if [[ "$label" == "enable tracing" ]]; then
echo "Enable tracing label found."
echo "trace=true" >> $GITHUB_OUTPUT
else
echo "Enable tracing label not found."
echo "trace=true" >> $GITHUB_OUTPUT
fi
echo "$PWD"
- name: Build Example GRPC Server Docker Image
if: steps.check-label.outputs.trace == 'true'
run: |
# Build the Docker image
docker build -t example-grpc-server:latest -f ./internal/examples/example-grpc-client-server/server/Dockerfile.ci .
- name: Setup Grafana and OpenTelemetry
id: docker-setup
if: steps.check-label.outputs.trace == 'true'
run: |
# Create network
docker network create tracing_network
# Start Grafana
cd ./internal/examples/example-otlp-agent-tempo-grafana/
docker run -d --name=grafana -p 3000:3000 -v $PWD/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml -e GF_AUTH_ANONYMOUS_ENABLED=true -e GF_AUTH_ANONYMOUS_ORG_ROLE=Admin -e GF_AUTH_DISABLE_LOGIN_FORM=true -e GF_FEATURE_TOGGLES_ENABLE=traceqlEditor grafana/grafana:9.4.3
# Start Tempo
docker run -d --network=tracing_network --name=tempo -v ./tempo.yaml:/etc/tempo.yaml -v $PWD/tempo-data:/tmp/tempo grafana/tempo:latest -config.file=/etc/tempo.yaml
# Start OpenTelemetry Collector
docker run -d --network=tracing_network --name=otel-collector -v $PWD/otel-collector.yaml:/etc/otel-collector.yaml -p 4317:4317 otel/opentelemetry-collector:0.61.0 --config=/etc/otel-collector.yaml
# Start Example GRPC Server
docker run -d --network=tracing_network --name=example-grpc-server -p 50051:50051 -e ENABLE_TELEMETRY=true -e TELEMETRY_TARGET=otel-collector:4317 example-grpc-server:latest
- name: Run client to generate traces
run: |
cd internal/example/client
go run .
- name: Teardown
if: steps.check-label.outputs.trace == 'true' || github.event_name == 'pull_request' && github.event.action == 'closed'
run: |
docker stop grafana-tempo grafana-ui otel-collector
docker rm grafana-tempo grafana-ui otel-collector