Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
bd6a26f
feat(lambda): Refactor extension to embedded collector model
bardabun Aug 11, 2025
80ff2a7
Refactor Extension to a Unified Collector-Based Layer
bardabun Aug 14, 2025
70b9d69
Update e2e-python.yml
bardabun Aug 14, 2025
558b2a6
Update e2e-python.yml
bardabun Aug 18, 2025
1560004
Update e2e-python.yml
bardabun Aug 18, 2025
a72a86a
Update e2e-python.yml
bardabun Aug 18, 2025
029dddc
Update e2e-python.yml
bardabun Aug 18, 2025
7cca554
Update e2e-python.yml
bardabun Aug 18, 2025
9eb9007
Update e2e-python.yml
bardabun Aug 18, 2025
d50817c
Update e2e-python.yml
bardabun Aug 18, 2025
df85242
Update e2e-python.yml
bardabun Aug 18, 2025
97cae59
Update e2e-python.yml
bardabun Aug 18, 2025
341599f
Update e2e-python.yml
bardabun Aug 18, 2025
5b20d38
Update e2e-python.yml
bardabun Aug 18, 2025
4667d47
Update e2e-python.yml
bardabun Aug 18, 2025
b8b4c51
Update e2e-python.yml
bardabun Aug 18, 2025
61ad34f
Update e2e-python.yml
bardabun Aug 18, 2025
2496fea
Update e2e-python.yml
bardabun Aug 19, 2025
a2811cf
upload tests files
bardabun Aug 19, 2025
c321e65
Update e2e_log_test.go
bardabun Aug 19, 2025
d2445dc
Update e2e_log_test.go
bardabun Aug 19, 2025
b607aab
update queries
bardabun Aug 19, 2025
ea2f345
Update queries
bardabun Aug 19, 2025
bdc381c
Update queries
bardabun Aug 19, 2025
032b331
Update e2e_helpers_test.go
bardabun Aug 19, 2025
220502e
Update e2e_helpers_test.go
bardabun Aug 19, 2025
2ee9a21
Update test
bardabun Aug 19, 2025
02ae293
Update e2e_trace_test.go
bardabun Aug 19, 2025
c788b54
Update e2e_trace_test.go
bardabun Aug 19, 2025
6d1760b
Update e2e_trace_test.go
bardabun Aug 19, 2025
ee79d60
Update e2e_metric_test.go
bardabun Aug 19, 2025
273f31f
Update e2e_metric_test.go
bardabun Aug 19, 2025
9627c4b
Update e2e_runner_test.go
bardabun Aug 19, 2025
72212ed
Update e2e_helpers_test.go
bardabun Aug 20, 2025
87c66bb
Update e2e_metric_test.go
bardabun Aug 20, 2025
799996f
Update tests
bardabun Aug 20, 2025
8e18be3
Update config.e2e.yaml
bardabun Aug 20, 2025
8b270f6
Update config.e2e.yaml
bardabun Aug 20, 2025
60c3e2e
Update config
bardabun Aug 20, 2025
bca8899
revert config
bardabun Aug 20, 2025
5c3c229
Add label tests
bardabun Aug 20, 2025
7eb8d0e
Update metrics tests
bardabun Aug 20, 2025
8a17d04
Update e2e-python.yml
bardabun Aug 20, 2025
178d63c
Add e2e nodejs
bardabun Aug 20, 2025
510a2f2
Update e2e-nodejs.yml
bardabun Aug 20, 2025
a5e1db8
Update e2e-nodejs.yml
bardabun Aug 20, 2025
1d79c7d
Update e2e-nodejs.yml
bardabun Aug 20, 2025
6b2c926
Added java e2e test
bardabun Aug 20, 2025
b3bf5b3
Update e2e-java.yml
bardabun Aug 20, 2025
d4cf8b6
Update e2e-java.yml
bardabun Aug 20, 2025
589434a
Update e2e-java.yml
bardabun Aug 21, 2025
1bfa161
Update tests
bardabun Aug 21, 2025
257c7f2
Add ruby tests
bardabun Aug 21, 2025
82abc6c
Trim the Ruby layer and adjusted the workflow
bardabun Aug 21, 2025
1f2210e
Update Ruby path
bardabun Aug 21, 2025
5a4da61
Update tests
bardabun Aug 21, 2025
61b0e3d
Update ruby layer files
bardabun Aug 21, 2025
94ccd30
Update ruby tests
bardabun Aug 21, 2025
d99057b
Add go e2e tests
bardabun Aug 21, 2025
50a3926
Update e2e_trace_test.go
bardabun Aug 21, 2025
f94fabf
Fix shellcheck
bardabun Aug 24, 2025
1be451a
Update instrumentation-layer-manager.sh
bardabun Aug 24, 2025
2d1e1d1
Update e2e-ruby.yml
bardabun Aug 24, 2025
3078208
Add release combined workflows
bardabun Aug 24, 2025
b54d311
Update NodeJS combined release workflow to Nodejs 20
bardabun Aug 24, 2025
1da4b3e
Update release-combined-layer-java.yml
bardabun Aug 24, 2025
ff2a407
Add readme
bardabun Aug 24, 2025
9a6e141
Delete test-combined-layers.sh
bardabun Aug 24, 2025
8763d86
Code review changes
bardabun Aug 27, 2025
508c756
Revert manager
bardabun Sep 16, 2025
2fe5fe1
Update e2e-python.yml
bardabun Sep 16, 2025
690823c
Update README
bardabun Sep 17, 2025
5b230c3
remove on push python e2e
bardabun Sep 17, 2025
4495812
Update README and RELEASE
bardabun Sep 21, 2025
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
217 changes: 217 additions & 0 deletions .github/workflows/e2e-go.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
name: E2E - Go Layer

on:
workflow_dispatch:
inputs:
logzio_api_url:
description: "Logz.io API base URL (default https://api.logz.io)"
required: false
default: "https://api.logz.io"
aws_region:
description: "AWS Region"
required: false
default: "us-east-1"

permissions:
contents: read

env:
AWS_REGION: ${{ inputs.aws_region || 'us-east-1' }}
AWS_DEFAULT_REGION: ${{ inputs.aws_region || 'us-east-1' }}
ARCHITECTURE: amd64
FUNCTION_NAME: one-layer-e2e-test-go
LAYER_BASE_NAME: otel-go-extension-e2e
SERVICE_NAME: logzio-e2e-go-service
LOGZIO_REGION: us

jobs:
build-layer:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Set up Go (for Collector)
uses: actions/setup-go@v5
with:
go-version-file: collector/go.mod

- name: Build combined Go layer (amd64)
run: |
cd go
ARCHITECTURE=${ARCHITECTURE} ./build-combined.sh

- name: Upload layer artifact
uses: actions/upload-artifact@v4
with:
name: otel-go-extension-layer.zip
path: go/build/otel-go-extension-layer.zip

publish-update-invoke:
runs-on: ubuntu-latest
needs: build-layer
outputs:
layer_arn: ${{ steps.publish.outputs.layer_arn }}
e2e_label: ${{ steps.vars.outputs.e2e_label }}
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Download layer artifact
uses: actions/download-artifact@v4
with:
name: otel-go-extension-layer.zip

- name: Configure AWS (User Credentials)
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}

- name: Publish layer version
id: publish
shell: bash
run: |
set -euo pipefail
LAYER_NAME="${LAYER_BASE_NAME}-amd64"
ARN=$(aws lambda publish-layer-version \
--layer-name "$LAYER_NAME" \
--license-info "Apache-2.0" \
--compatible-architectures x86_64 \
--compatible-runtimes provided provided.al2 \
--zip-file fileb://otel-go-extension-layer.zip \
--query 'LayerVersionArn' --output text)
echo "layer_arn=$ARN" >> "$GITHUB_OUTPUT"

- name: Prepare variables
id: vars
run: |
echo "e2e_label=go-e2e-${GITHUB_RUN_ID}" >> "$GITHUB_OUTPUT"

- name: Check function exists and get current config
run: |
echo "Checking if function exists and its current configuration..."
aws lambda get-function-configuration --function-name "${FUNCTION_NAME}" --query '{Role:Role,KMSKeyArn:KMSKeyArn,State:State,LastUpdateStatus:LastUpdateStatus}' --output table || {
echo "❌ Function ${FUNCTION_NAME} does not exist or is not accessible."
exit 1
}

echo "Current environment variables:"
aws lambda get-function-configuration --function-name "${FUNCTION_NAME}" --query 'Environment.Variables' --output json || echo "No environment variables set"

- name: Update Lambda configuration with current run's layer and env vars
run: |
echo "Updating function configuration with this run's published layer and environment variables..."
aws lambda update-function-configuration \
--function-name "${FUNCTION_NAME}" \
--layers "${{ steps.publish.outputs.layer_arn }}" \
--environment "Variables={OPENTELEMETRY_COLLECTOR_CONFIG_URI=/opt/collector-config/config.e2e.yaml,OTEL_SERVICE_NAME=${SERVICE_NAME},OTEL_TRACES_SAMPLER=always_on,OTEL_RESOURCE_ATTRIBUTES=deployment.environment=${{ steps.vars.outputs.e2e_label }},ENVIRONMENT=${{ steps.vars.outputs.e2e_label }},LOGZIO_REGION=${LOGZIO_REGION},LOGZIO_LOGS_TOKEN=${{ secrets.LOGZIO_LOGS_TOKEN }},LOGZIO_TRACES_TOKEN=${{ secrets.LOGZIO_TRACES_TOKEN }},LOGZIO_METRICS_TOKEN=${{ secrets.LOGZIO_METRICS_TOKEN }}}"

echo "Waiting for function update to complete..."
aws lambda wait function-updated --function-name "${FUNCTION_NAME}"

echo "Updated configuration (layers and environment variables):"
aws lambda get-function-configuration --function-name "${FUNCTION_NAME}" --query '{Layers:Layers[].Arn,Environment:Environment.Variables}' --output json

- name: Invoke function multiple times
run: |
echo "Invoking function first time..."
aws lambda invoke --function-name "${FUNCTION_NAME}" --payload '{}' --cli-binary-format raw-in-base64-out response1.json
echo "First invocation response:"
cat response1.json
echo ""

echo "Invoking function second time..."
aws lambda invoke --function-name "${FUNCTION_NAME}" --payload '{}' --cli-binary-format raw-in-base64-out response2.json
echo "Second invocation response:"
cat response2.json
echo ""

echo "Sleeping for 5 seconds before additional invocations..."
sleep 5

echo "Invoking function third time..."
aws lambda invoke --function-name "${FUNCTION_NAME}" --payload '{}' --cli-binary-format raw-in-base64-out response3.json
echo "Third invocation response:"
cat response3.json
echo ""

echo "Invoking function fourth time..."
aws lambda invoke --function-name "${FUNCTION_NAME}" --payload '{}' --cli-binary-format raw-in-base64-out response4.json
echo "Fourth invocation response:"
cat response4.json
echo ""

echo "Invoking function fifth time..."
aws lambda invoke --function-name "${FUNCTION_NAME}" --payload '{}' --cli-binary-format raw-in-base64-out response5.json
echo "Fifth invocation response:"
cat response5.json
echo ""

- name: Check CloudWatch logs
run: |
echo "Checking recent CloudWatch logs for the function..."
LOG_GROUP_NAME="/aws/lambda/${FUNCTION_NAME}"

# Get recent log events (last 5 minutes)
aws logs filter-log-events \
--log-group-name "$LOG_GROUP_NAME" \
--start-time $(date -d '5 minutes ago' +%s)000 \
--query 'events[].message' \
--output text || {
echo "❌ Could not fetch CloudWatch logs. Log group might not exist or no recent logs."
echo "Checking if log group exists..."
aws logs describe-log-groups --log-group-name-prefix "$LOG_GROUP_NAME" --query 'logGroups[].logGroupName' --output text
}

verify-e2e:
runs-on: ubuntu-latest
needs: publish-update-invoke
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'

- name: Run E2E verification tests
working-directory: e2e_tests
env:
LOGZIO_API_KEY: ${{ secrets.LOGZIO_API_KEY }}
LOGZIO_API_URL: ${{ inputs.logzio_api_url || 'https://api.logz.io' }}
LOGZIO_API_METRICS_KEY: ${{ secrets.LOGZIO_API_METRICS_KEY }}
LOGZIO_METRICS_QUERY_URL: ${{ inputs.logzio_api_url || 'https://api.logz.io' }}
LOGZIO_API_TRACES_KEY: ${{ secrets.LOGZIO_API_TRACES_KEY }}
E2E_TEST_ENVIRONMENT_LABEL: ${{ needs.publish-update-invoke.outputs.e2e_label }}
EXPECTED_LAMBDA_FUNCTION_NAME: one-layer-e2e-test-go
EXPECTED_SERVICE_NAME: ${{ env.SERVICE_NAME }}
GITHUB_RUN_ID: ${{ github.run_id }}
AWS_REGION: ${{ env.AWS_REGION }}
run: |
go mod tidy
go test ./... -v -tags=e2e -run TestE2ERunner

cleanup:
if: always()
runs-on: ubuntu-latest
needs: [publish-update-invoke, verify-e2e]
steps:
- name: Configure AWS (User Credentials)
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ inputs.aws_region || 'us-east-1' }}
- name: Delete published layer version
if: ${{ needs.publish-update-invoke.outputs.layer_arn != '' }}
shell: bash
run: |
ARN="${{ needs.publish-update-invoke.outputs.layer_arn }}"
LAYER_NAME=$(echo "$ARN" | cut -d: -f7)
LAYER_VERSION=$(echo "$ARN" | cut -d: -f8)
aws lambda delete-layer-version --layer-name "$LAYER_NAME" --version-number "$LAYER_VERSION" || echo "Failed to delete layer version."


Loading
Loading