-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
trying out ssh rev forwarding instead of ngrok
- Loading branch information
1 parent
7373933
commit 4487cd5
Showing
2 changed files
with
122 additions
and
1 deletion.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
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 . | ||
- name: Setup Grafana and OpenTelemetry | ||
id: docker-setup | ||
if: steps.check-label.outputs.trace == 'true' | ||
run: | | ||
# Create network | ||
docker network create tracing_network | ||
# TODO (issues/8): order here matters | ||
# Start Grafana | ||
cd ./internal/examples/example-otlp-agent-tempo-grafana/ | ||
docker run -d --network=tracing_network --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 | ||
- name: Reverse SSH Tunneling | ||
env: | ||
SSH_KEY: ${{ secrets.SSH_KEY }} | ||
SSH_SERVER: ${{ secrets.SSH_SERVER }} | ||
run: | | ||
eval $(ssh-agent) | ||
echo "$SSH_KEY" | ssh-add - | ||
# f: background process | ||
# N: do not execute a remote command | ||
# R: remote port forwarding | ||
ssh -o StrictHostKeyChecking=no -f -N -R 3001:localhost:3000 ubuntu@$SSH_SERVER | ||
echo "To view Grafana locally:" | ||
echo "ssh -i /path/to/key -L 8000:localhost:3001 ubuntu@$SSH_SERVER" | ||
echo "Then visit http://localhost:8000 in a browser" | ||
- name: Run server | ||
id: run-server | ||
run: | | ||
# Start example 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/examples/example-grpc-client-server/client | ||
go run . | ||
- name: Show Grafana Logs | ||
if: steps.check-label.outputs.trace == 'true' | ||
run: | | ||
docker logs grafana | ||
- name: Show Tempo Logs | ||
if: steps.check-label.outputs.trace == 'true' | ||
run: | | ||
docker logs tempo | ||
- name: Show OpenTelemetry Collector Logs | ||
if: steps.check-label.outputs.trace == 'true' | ||
run: | | ||
docker logs otel-collector | ||
- name: Set sleep time to use in future steps | ||
if: steps.check-label.outputs.trace == 'true' | ||
run: | | ||
echo "SLEEP_TIME=300" >> "$GITHUB_ENV" | ||
- name: Keep action running to view traces | ||
if: steps.check-label.outputs.trace == 'true' | ||
run: | | ||
echo "Sleeping for $SLEEP_TIME seconds..." | ||
sleep $SLEEP_TIME | ||
- name: teardown | ||
if: steps.check-label.outputs.trace == 'true' || github.event_name == 'pull_request' && github.event.action == 'closed' | ||
run: | | ||
# Stop and remove containers | ||
docker stop grafana tempo otel-collector example-grpc-server | ||
docker rm grafana tempo otel-collector example-grpc-server | ||
docker network rm tracing_network |