Skip to content

feat(aws_s3 sink): Add Apache Parquet encoding support #6088

feat(aws_s3 sink): Add Apache Parquet encoding support

feat(aws_s3 sink): Add Apache Parquet encoding support #6088

# Integration CI Review Trigger
#
# This workflow runs one or more integration tests triggered by a comment in a PR.
# The comment must include '/ci-run-integration'.
# More than one can be specified.
#
# Examples:
#
# 1. Run a single integration test:
#
# /ci-run-integration-amqp
#
# 2. Run two integration tests:
#
# /ci-run-integration-datadog-logs
# /ci-run-integration-splunk
#
# 3. Run all integration tests:
#
# /ci-run-integration-all
#
# 4. Run all CI (including all integration tests)
#
# /ci-run-all
#
# NOTE: This workflow runs on Pull Request Review Comments rather than normal comments to be able to
# capture the SHA that the comment is associated with.
name: CI Integration Review Trigger
on:
pull_request_review:
types: [submitted]
permissions:
contents: read
env:
AXIOM_TOKEN: ${{ secrets.AXIOM_TOKEN }}
TEST_APPSIGNAL_PUSH_API_KEY: ${{ secrets.TEST_APPSIGNAL_PUSH_API_KEY }}
TEST_DATADOG_API_KEY: ${{ secrets.CI_TEST_DATADOG_API_KEY }}
CONTAINER_TOOL: "docker"
DD_ENV: "ci"
DD_API_KEY: ${{ secrets.DD_API_KEY }}
RUST_BACKTRACE: full
VECTOR_LOG: vector=debug
VERBOSE: true
CI: true
PROFILE: debug
jobs:
prep-pr:
name: (PR review) Signal pending to PR
runs-on: ubuntu-24.04
timeout-minutes: 5
if: startsWith(github.event.review.body, '/ci-run-integration') || startsWith(github.event.review.body, '/ci-run-e2e') || contains(github.event.review.body, '/ci-run-all')
permissions:
statuses: write # Required to set commit status to pending
steps:
- name: Generate authentication token
id: generate_token
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
with:
app_id: ${{ secrets.GH_APP_DATADOG_VECTOR_CI_APP_ID }}
private_key: ${{ secrets.GH_APP_DATADOG_VECTOR_CI_APP_PRIVATE_KEY }}
- name: Get PR review author
id: comment
uses: tspascoal/get-user-teams-membership@57e9f42acd78f4d0f496b3be4368fc5f62696662 # v3.0.0
with:
username: ${{ github.actor }}
team: "Vector"
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
- name: Validate author membership
if: steps.comment.outputs.isTeamMember == 'false'
run: exit 1
- name: (PR review) Set latest commit status as pending
uses: myrotvorets/set-commit-status-action@3730c0a348a2ace3c110851bed53331bc6406e9f # v2.0.1
with:
sha: ${{ github.event.review.commit_id }}
token: ${{ secrets.GITHUB_TOKEN }}
status: pending
build-test-runner:
needs: prep-pr
permissions:
contents: read
packages: write # Required to push test runner image to GHCR
uses: ./.github/workflows/build-test-runner.yml
with:
commit_sha: ${{ github.event.review.commit_id }}
checkout_ref: ${{ github.event.review.commit_id }}
integration-tests:
needs:
- prep-pr
- build-test-runner
runs-on: ubuntu-24.04
timeout-minutes: 90
permissions:
contents: read
packages: read # Required to pull test runner image from GHCR
strategy:
fail-fast: false
matrix:
service:
[
"amqp",
"appsignal",
"axiom",
"aws",
"azure",
"clickhouse",
"databend",
"datadog-agent",
"datadog-logs",
"datadog-metrics",
"datadog-traces",
"dnstap",
"docker-logs",
"doris",
"elasticsearch",
"eventstoredb",
"fluent",
"gcp",
"greptimedb",
"http-client",
"influxdb",
"kafka",
"logstash",
"loki",
"mqtt",
"mongodb",
"nats",
"nginx",
"opentelemetry",
"postgres",
"prometheus",
"pulsar",
"redis",
"webhdfs"
]
steps:
- name: Evaluate run condition
id: run_condition
env:
REVIEW_BODY: ${{ github.event.review.body }}
SERVICE: ${{ matrix.service }}
run: |
if [[ "$REVIEW_BODY" == /ci-run-integration-all* ]] || [[ "$REVIEW_BODY" == /ci-run-all* ]] || [[ "$REVIEW_BODY" == "/ci-run-integration-${SERVICE}"* ]]; then
echo "should_run=true" >> "$GITHUB_OUTPUT"
else
echo "should_run=false" >> "$GITHUB_OUTPUT"
fi
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: steps.run_condition.outputs.should_run == 'true'
with:
submodules: "recursive"
ref: ${{ github.event.review.commit_id }}
- uses: ./.github/actions/setup
with:
vdev: true
datadog-ci: true
- name: Pull test runner image
if: steps.run_condition.outputs.should_run == 'true'
uses: ./.github/actions/pull-test-runner
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
commit_sha: ${{ github.event.review.commit_id }}
- name: Integration Tests - ${{ matrix.service }}
if: steps.run_condition.outputs.should_run == 'true'
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
timeout_minutes: 30
max_attempts: 3
command: |
bash scripts/environment/prepare.sh --modules=datadog-ci
bash scripts/run-integration-test.sh int ${{ matrix.service }}
e2e-tests:
needs:
- prep-pr
- build-test-runner
runs-on: ubuntu-24.04-8core
timeout-minutes: 30
permissions:
contents: read
packages: read # Required to pull test runner image from GHCR
strategy:
fail-fast: false
matrix:
service: ["datadog-logs", "datadog-metrics", "opentelemetry-logs", "opentelemetry-metrics"]
steps:
- name: Evaluate run condition
id: run_condition
env:
REVIEW_BODY: ${{ github.event.review.body }}
SERVICE: ${{ matrix.service }}
run: |
if [[ "$REVIEW_BODY" == /ci-run-e2e-all* ]] || [[ "$REVIEW_BODY" == /ci-run-all* ]] || [[ "$REVIEW_BODY" == "/ci-run-e2e-${SERVICE}"* ]]; then
echo "should_run=true" >> "$GITHUB_OUTPUT"
else
echo "should_run=false" >> "$GITHUB_OUTPUT"
fi
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
if: steps.run_condition.outputs.should_run == 'true'
with:
submodules: "recursive"
ref: ${{ github.event.review.commit_id }}
- uses: ./.github/actions/setup
with:
vdev: true
datadog-ci: true
- name: Pull test runner image
if: steps.run_condition.outputs.should_run == 'true'
uses: ./.github/actions/pull-test-runner
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
commit_sha: ${{ github.event.review.commit_id }}
- name: E2E Tests - ${{ matrix.service }}
if: steps.run_condition.outputs.should_run == 'true'
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2
with:
timeout_minutes: 35
max_attempts: 3
command: |
bash scripts/environment/prepare.sh --modules=datadog-ci
bash scripts/run-integration-test.sh e2e ${{ matrix.service }}
update-pr-status:
name: Signal result to PR
runs-on: ubuntu-24.04
timeout-minutes: 5
needs:
- integration-tests
- e2e-tests
if: always() && (startsWith(github.event.review.body, '/ci-run-integration') || contains(github.event.review.body, '/ci-run-all') || contains(github.event.review.body, '/ci-run-e2e'))
permissions:
statuses: write # Required to set final commit status
env:
FAILED: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
steps:
- name: Generate authentication token
id: generate_token
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
with:
app_id: ${{ secrets.GH_APP_DATADOG_VECTOR_CI_APP_ID }}
private_key: ${{ secrets.GH_APP_DATADOG_VECTOR_CI_APP_PRIVATE_KEY }}
- name: Validate issue comment
if: github.event_name == 'pull_request_review'
uses: tspascoal/get-user-teams-membership@57e9f42acd78f4d0f496b3be4368fc5f62696662 # v3.0.0
with:
username: ${{ github.actor }}
team: "Vector"
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}
- name: (PR review) Submit PR result as success
if: github.event_name == 'pull_request_review' && env.FAILED != 'true'
uses: myrotvorets/set-commit-status-action@3730c0a348a2ace3c110851bed53331bc6406e9f # v2.0.1
with:
sha: ${{ github.event.review.commit_id }}
token: ${{ secrets.GITHUB_TOKEN }}
status: "success"
- name: Check all jobs status
run: |
if [[ "${{ env.FAILED }}" == "true" ]]; then
echo "One or more jobs failed or were cancelled"
exit 1
else
echo "All jobs completed successfully"
fi