diff --git a/.azure-pipelines/bazel.yml b/.azure-pipelines/ci.yml
similarity index 70%
rename from .azure-pipelines/bazel.yml
rename to .azure-pipelines/ci.yml
index 66b737caf2bf..1d959856d503 100644
--- a/.azure-pipelines/bazel.yml
+++ b/.azure-pipelines/ci.yml
@@ -176,31 +176,68 @@ steps:
tmpfsDockerDisabled: "${{ parameters.tmpfsDockerDisabled }}"
- script: |
- if [[ "${{ parameters.bazelUseBES }}" == 'false' ]]; then
- unset GOOGLE_BES_PROJECT_ID
+ ENVOY_SHARED_TMP_DIR=/tmp/bazel-shared
+ mkdir -p "$ENVOY_SHARED_TMP_DIR"
+ BAZEL_BUILD_EXTRA_OPTIONS="${{ parameters.bazelBuildExtraOptions }}"
+ if [[ "${{ parameters.rbe }}" == "True" ]]; then
+ # mktemp will create a tempfile with u+rw permission minus umask, it will not be readable by all
+ # users by default.
+ GCP_SERVICE_ACCOUNT_KEY_PATH=$(mktemp -p "${ENVOY_SHARED_TMP_DIR}" -t gcp_service_account.XXXXXX.json)
+ bash -c 'echo "$(GcpServiceAccountKey)"' | base64 --decode > "${GCP_SERVICE_ACCOUNT_KEY_PATH}"
+ BAZEL_BUILD_EXTRA_OPTIONS+=" ${{ parameters.bazelConfigRBE }} --google_credentials=${GCP_SERVICE_ACCOUNT_KEY_PATH}"
+ ENVOY_RBE=1
+ if [[ "${{ parameters.bazelUseBES }}" == "True" && -n "${GOOGLE_BES_PROJECT_ID}" ]]; then
+ BAZEL_BUILD_EXTRA_OPTIONS+=" --config=rbe-google-bes --bes_instance_name=${GOOGLE_BES_PROJECT_ID}"
+ fi
+ else
+ echo "using local build cache."
+ # Normalize branches - `release/vX.xx`, `vX.xx`, `vX.xx.x` -> `vX.xx`
+ TARGET_BRANCH=$(echo "${CI_TARGET_BRANCH}" | cut -d/ -f2-)
+ BRANCH_NAME="$(echo "${TARGET_BRANCH}" | cut -d/ -f2 | cut -d. -f-2)"
+ if [[ "$BRANCH_NAME" == "merge" ]]; then
+ # Manually run PR commit - there is no easy way of telling which branch
+ # it is, so just set it to `main` - otherwise it tries to cache as `branch/merge`
+ BRANCH_NAME=main
+ fi
+ BAZEL_REMOTE_INSTANCE="branch/${BRANCH_NAME}"
+ echo "instance_name: ${BAZEL_REMOTE_INSTANCE}."
+ BAZEL_BUILD_EXTRA_OPTIONS+=" --config=ci --config=cache-local --remote_instance_name=${BAZEL_REMOTE_INSTANCE} --remote_timeout=600"
fi
- ci/run_envoy_docker.sh 'ci/do_ci.sh fetch-${{ parameters.ciTarget }}'
- condition: and(not(canceled()), not(failed()), ne('${{ parameters.cacheName }}', ''), ne(variables.CACHE_RESTORED, 'true'))
+ if [[ "${{ parameters.cacheTestResults }}" != "True" ]]; then
+ VERSION_DEV="$(cut -d- -f2 "VERSION.txt")"
+ # Use uncached test results for non-release scheduledruns.
+ if [[ $VERSION_DEV == "dev" ]]; then
+ BAZEL_EXTRA_TEST_OPTIONS+=" --nocache_test_results"
+ fi
+ fi
+ # Any PR or CI run in envoy-presubmit uses the fake SCM hash
+ if [[ "${{ variables['Build.Reason'] }}" == "PullRequest" || "${{ variables['Build.DefinitionName'] }}" == 'envoy-presubmit' ]]; then
+ # sha1sum of `ENVOY_PULL_REQUEST`
+ BAZEL_FAKE_SCM_REVISION=e3b4a6e9570da15ac1caffdded17a8bebdc7dfc9
+ fi
+ echo "##vso[task.setvariable variable=BAZEL_BUILD_EXTRA_OPTIONS]${BAZEL_BUILD_EXTRA_OPTIONS}"
+ echo "##vso[task.setvariable variable=BAZEL_EXTRA_TEST_OPTIONS]${BAZEL_EXTRA_TEST_OPTIONS}"
+ echo "##vso[task.setvariable variable=BAZEL_FAKE_SCM_REVISION]${BAZEL_FAKE_SCM_REVISION}"
+ echo "##vso[task.setvariable variable=BAZEL_STARTUP_EXTRA_OPTIONS]${{ parameters.bazelStartupExtraOptions }}"
+ echo "##vso[task.setvariable variable=CI_TARGET_BRANCH]${CI_TARGET_BRANCH}"
+ echo "##vso[task.setvariable variable=ENVOY_BUILD_FILTER_EXAMPLE]${{ parameters.envoyBuildFilterExample }}"
+ echo "##vso[task.setvariable variable=ENVOY_DOCKER_BUILD_DIR]$(Build.StagingDirectory)"
+ echo "##vso[task.setvariable variable=ENVOY_RBE]${ENVOY_RBE}"
+ echo "##vso[task.setvariable variable=ENVOY_SHARED_TMP_DIR]${ENVOY_SHARED_TMP_DIR}"
+ echo "##vso[task.setvariable variable=GCP_SERVICE_ACCOUNT_KEY_PATH]${GCP_SERVICE_ACCOUNT_KEY_PATH}"
+ echo "##vso[task.setvariable variable=GITHUB_TOKEN]${{ parameters.authGithub }}"
workingDirectory: $(Build.SourcesDirectory)
env:
- ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
- GITHUB_TOKEN: "${{ parameters.authGithub }}"
- BAZEL_STARTUP_EXTRA_OPTIONS: "${{ parameters.bazelStartupExtraOptions }}"
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
CI_TARGET_BRANCH: "origin/$(System.PullRequest.TargetBranch)"
${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
CI_TARGET_BRANCH: "origin/$(Build.SourceBranchName)"
- # Any PR or CI run in envoy-presubmit uses the fake SCM hash
- ${{ if or(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'envoy-presubmit')) }}:
- # sha1sum of `ENVOY_PULL_REQUEST`
- BAZEL_FAKE_SCM_REVISION: e3b4a6e9570da15ac1caffdded17a8bebdc7dfc9
- ${{ if parameters.rbe }}:
- GCP_SERVICE_ACCOUNT_KEY: $(GcpServiceAccountKey)
- ENVOY_RBE: "1"
- BAZEL_BUILD_EXTRA_OPTIONS: "${{ parameters.bazelConfigRBE }} ${{ parameters.bazelBuildExtraOptions }}"
- ${{ if eq(parameters.rbe, false) }}:
- BAZEL_BUILD_EXTRA_OPTIONS: "--config=ci ${{ parameters.bazelBuildExtraOptions }}"
- BAZEL_REMOTE_CACHE: $(LocalBuildCache)
+ displayName: "CI env ${{ parameters.ciTarget }}"
+
+- script: ci/run_envoy_docker.sh 'ci/do_ci.sh fetch-${{ parameters.ciTarget }}'
+ condition: and(not(canceled()), not(failed()), ne('${{ parameters.cacheName }}', ''), ne(variables.CACHE_RESTORED, 'true'))
+ workingDirectory: $(Build.SourcesDirectory)
+ env:
${{ each var in parameters.env }}:
${{ var.key }}: ${{ var.value }}
displayName: "Fetch assets (${{ parameters.ciTarget }})"
@@ -231,34 +268,10 @@ steps:
displayName: "Enable IPv6"
condition: ${{ parameters.managedAgent }}
-- script: |
- if [[ "${{ parameters.bazelUseBES }}" == 'false' ]]; then
- unset GOOGLE_BES_PROJECT_ID
- fi
- ci/run_envoy_docker.sh 'ci/do_ci.sh ${{ parameters.ciTarget }}'
+- script: ci/run_envoy_docker.sh 'ci/do_ci.sh ${{ parameters.ciTarget }}'
workingDirectory: $(Build.SourcesDirectory)
env:
- ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
ENVOY_BUILD_FILTER_EXAMPLE: ${{ parameters.envoyBuildFilterExample }}
- GITHUB_TOKEN: "${{ parameters.authGithub }}"
- BAZEL_STARTUP_EXTRA_OPTIONS: "${{ parameters.bazelStartupExtraOptions }}"
- ${{ if ne(parameters['cacheTestResults'], true) }}:
- BAZEL_NO_CACHE_TEST_RESULTS: 1
- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
- CI_TARGET_BRANCH: "origin/$(System.PullRequest.TargetBranch)"
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
- CI_TARGET_BRANCH: "origin/$(Build.SourceBranchName)"
- # Any PR or CI run in envoy-presubmit uses the fake SCM hash
- ${{ if or(eq(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'envoy-presubmit')) }}:
- # sha1sum of `ENVOY_PULL_REQUEST`
- BAZEL_FAKE_SCM_REVISION: e3b4a6e9570da15ac1caffdded17a8bebdc7dfc9
- ${{ if parameters.rbe }}:
- GCP_SERVICE_ACCOUNT_KEY: $(GcpServiceAccountKey)
- ENVOY_RBE: "1"
- BAZEL_BUILD_EXTRA_OPTIONS: "${{ parameters.bazelConfigRBE }} ${{ parameters.bazelBuildExtraOptions }}"
- ${{ if eq(parameters.rbe, false) }}:
- BAZEL_BUILD_EXTRA_OPTIONS: "--config=ci ${{ parameters.bazelBuildExtraOptions }}"
- BAZEL_REMOTE_CACHE: $(LocalBuildCache)
${{ each var in parameters.env }}:
${{ var.key }}: ${{ var.value }}
displayName: "Run CI script ${{ parameters.ciTarget }}"
@@ -296,6 +309,13 @@ steps:
- ${{ each pair in step }}:
${{ pair.key }}: ${{ pair.value }}
+- bash: |
+ if [[ -n "$GCP_SERVICE_ACCOUNT_KEY_PATH" && -e "$GCP_SERVICE_ACCOUNT_KEY_PATH" ]]; then
+ echo "Removed key: ${GCP_SERVICE_ACCOUNT_KEY_PATH}"
+ rm -rf "$GCP_SERVICE_ACCOUNT_KEY_PATH"
+ fi
+ condition: not(canceled())
+
- script: |
set -e
sudo .azure-pipelines/docker/save_cache.sh "$(Build.StagingDirectory)" /mnt/cache/all true true
diff --git a/.azure-pipelines/env.yml b/.azure-pipelines/env.yml
index be55bdbf4962..3b3ebf6d2eeb 100644
--- a/.azure-pipelines/env.yml
+++ b/.azure-pipelines/env.yml
@@ -135,19 +135,12 @@ jobs:
# TODO(phlax): move this to a script to ensure proper linting etc
set -e
- # Run everything in postsubmit
- if [[ "$(Build.Reason)" != "PullRequest" ]]; then
- echo "##vso[task.setvariable variable=build;isoutput=true]true"
- echo "##vso[task.setvariable variable=checks;isoutput=true]true"
- echo "##vso[task.setvariable variable=docker;isoutput=true]true"
- echo "##vso[task.setvariable variable=packaging;isoutput=true]true"
- exit 0
- fi
-
RUN_BUILD=true
RUN_CHECKS=true
RUN_DOCKER=true
RUN_PACKAGING=true
+ RUN_RELEASE_TESTS=true
+
if [[ "$(changed.mobileOnly)" == true || "$(changed.docsOnly)" == true ]]; then
RUN_BUILD=false
RUN_DOCKER=false
@@ -159,10 +152,25 @@ jobs:
if [[ "$(changed.examplesOnly)" == true ]]; then
RUN_CHECKS=false
fi
+ if [[ "$ISSTABLEBRANCH" == True && -n "$POSTSUBMIT" && "$(state.isDev)" == false ]]; then
+ RUN_RELEASE_TESTS=false
+ fi
+
+ # Run ~everything in postsubmit
+ if [[ "$(Build.Reason)" != "PullRequest" ]]; then
+ echo "##vso[task.setvariable variable=build;isoutput=true]true"
+ echo "##vso[task.setvariable variable=checks;isoutput=true]true"
+ echo "##vso[task.setvariable variable=docker;isoutput=true]true"
+ echo "##vso[task.setvariable variable=packaging;isoutput=true]true"
+ echo "##vso[task.setvariable variable=releaseTests;isoutput=true]${RUN_RELEASE_TESTS}"
+ exit 0
+ fi
+
echo "##vso[task.setvariable variable=build;isoutput=true]${RUN_BUILD}"
echo "##vso[task.setvariable variable=checks;isoutput=true]${RUN_CHECKS}"
echo "##vso[task.setvariable variable=docker;isoutput=true]${RUN_DOCKER}"
echo "##vso[task.setvariable variable=packaging;isoutput=true]${RUN_PACKAGING}"
+ echo "##vso[task.setvariable variable=releaseTests;isoutput=true]${RUN_RELEASE_TESTS}"
displayName: "Decide what to run"
workingDirectory: $(Build.SourcesDirectory)
@@ -174,32 +182,18 @@ jobs:
PUBLISH_GITHUB_RELEASE=$(run.packaging)
PUBLISH_DOCKERHUB=false
- PUBLISH_DOCS=false
- PUBLISH_DOCS_LATEST=false
- PUBLISH_DOCS_RELEASE=false
if [[ "$ISSTABLEBRANCH" == True && -n "$POSTSUBMIT" && "$NOSYNC" != true ]]; then
- # Build docs for publishing either latest or a release build
- PUBLISH_DOCS=true
# main
if [[ "$ISMAIN" == True ]]; then
# Update the Dockerhub README
PUBLISH_DOCKERHUB=true
- if [[ "$(state.isDev)" == true ]]; then
- # Postsubmit on `main` trigger rebuild of latest docs
- PUBLISH_DOCS_LATEST=true
- fi
# Not main, and not -dev
elif [[ "$(state.isDev)" == false ]]; then
if [[ "$(state.versionPatch)" -eq 0 ]]; then
# A just-forked branch
PUBLISH_GITHUB_RELEASE=false
fi
- # A stable release, publish docs to the release
- PUBLISH_DOCS_RELEASE=true
- else
- # Postsubmit for non-main/release, skip publishing docs in this case
- PUBLISH_DOCS=false
fi
fi
@@ -210,9 +204,6 @@ jobs:
echo "##vso[task.setvariable variable=githubRelease;isoutput=true]${PUBLISH_GITHUB_RELEASE}"
echo "##vso[task.setvariable variable=dockerhub;isoutput=true]${PUBLISH_DOCKERHUB}"
- echo "##vso[task.setvariable variable=docs;isoutput=true]${PUBLISH_DOCS}"
- echo "##vso[task.setvariable variable=docsLatest;isoutput=true]${PUBLISH_DOCS_LATEST}"
- echo "##vso[task.setvariable variable=docsRelease;isoutput=true]${PUBLISH_DOCS_RELEASE}"
displayName: "Decide what to publish"
workingDirectory: $(Build.SourcesDirectory)
@@ -231,12 +222,10 @@ jobs:
echo "env.outputs['run.build']: $(run.build)"
echo "env.outputs['run.checks']: $(run.checks)"
echo "env.outputs['run.packaging']: $(run.packaging)"
+ echo "env.outputs['run.releaseTests']: $(run.releaseTests)"
echo
echo "env.outputs['publish.githubRelease']: $(publish.githubRelease)"
echo "env.outputs['publish.dockerhub]: $(publish.dockerhub)"
- echo "env.outputs['publish.docs]: $(publish.docs)"
- echo "env.outputs['publish.docsLatest]: $(publish.docsLatest)"
- echo "env.outputs['publish.docsRelease]: $(publish.docsRelease)"
displayName: "Print build environment"
diff --git a/.azure-pipelines/pipelines.yml b/.azure-pipelines/pipelines.yml
index 6cb7ac6fff03..0b55d0a6219a 100644
--- a/.azure-pipelines/pipelines.yml
+++ b/.azure-pipelines/pipelines.yml
@@ -45,7 +45,7 @@ variables:
## Variable settings
# Caches (tip: append a version suffix while testing caches)
- name: cacheKeyVersion
- value: v2
+ value: v3
- name: cacheKeyBazel
value: '.bazelversion | ./WORKSPACE | **/*.bzl, !mobile/**, !envoy-docs/**'
- name: cacheKeyDocker
@@ -80,10 +80,6 @@ stages:
- env
checkStageDeps:
- env
- macBuildStageDeps:
- - env
- windowsBuildStageDeps:
- - env
# Postsubmit main/release branches
- ${{ if eq(variables.pipelinePostsubmit, true) }}:
@@ -96,7 +92,3 @@ stages:
- env
checkStageDeps:
- env
- macBuildStageDeps:
- - env
- windowsBuildStageDeps:
- - env
diff --git a/.azure-pipelines/stage/checks.yml b/.azure-pipelines/stage/checks.yml
index 50fdb0956cda..8c03249e227b 100644
--- a/.azure-pipelines/stage/checks.yml
+++ b/.azure-pipelines/stage/checks.yml
@@ -77,7 +77,7 @@ jobs:
timeoutInMinutes: 180
pool: envoy-x64-small
steps:
- - template: ../bazel.yml
+ - template: ../ci.yml
parameters:
ciTarget: $(CI_TARGET)
cacheName: $(CI_TARGET)
@@ -101,15 +101,7 @@ jobs:
displayName: "Upload $(CI_TARGET) Report to GCS"
condition: and(not(canceled()), or(eq(variables['CI_TARGET'], 'coverage'), eq(variables['CI_TARGET'], 'fuzz_coverage')))
env:
- ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
- ENVOY_RBE: "1"
- BAZEL_BUILD_EXTRA_OPTIONS: "--config=ci --config=rbe-google --jobs=$(RbeJobs)"
- GCP_SERVICE_ACCOUNT_KEY: ${{ parameters.authGCP }}
GCS_ARTIFACT_BUCKET: ${{ parameters.bucketGCP }}
- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
- BAZEL_REMOTE_INSTANCE_BRANCH: "$(System.PullRequest.TargetBranch)"
- ${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
- BAZEL_REMOTE_INSTANCE_BRANCH: "$(Build.SourceBranchName)"
- job: complete
displayName: "Checks complete"
diff --git a/.azure-pipelines/stage/linux.yml b/.azure-pipelines/stage/linux.yml
index be4e4a6ada14..5c3caa11d3ab 100644
--- a/.azure-pipelines/stage/linux.yml
+++ b/.azure-pipelines/stage/linux.yml
@@ -11,6 +11,10 @@ parameters:
displayName: "Artifact suffix"
type: string
default:
+- name: runTests
+ displayName: "Run release tests"
+ type: string
+ default: true
- name: rbe
displayName: "Use RBE"
type: boolean
@@ -22,6 +26,9 @@ parameters:
- name: bazelBuildExtraOptions
type: string
default: ""
+- name: bazelConfigRBE
+ type: string
+ default: --config=remote-ci --config=rbe-google --jobs=$(RbeJobs)
- name: managedAgent
type: boolean
@@ -45,11 +52,21 @@ jobs:
timeoutInMinutes: ${{ parameters.timeoutBuild }}
pool: ${{ parameters.pool }}
steps:
- - template: ../bazel.yml
+ - bash: |
+ if [[ "${{ parameters.runTests }}" == "false" ]]; then
+ CI_TARGET="release.server_only"
+ else
+ CI_TARGET="release"
+ fi
+ echo "${CI_TARGET}"
+ echo "##vso[task.setvariable variable=value;isoutput=true]${CI_TARGET}"
+ name: target
+ - template: ../ci.yml
parameters:
managedAgent: ${{ parameters.managedAgent }}
- ciTarget: release
+ ciTarget: $(target.value)
cacheName: "release"
+ bazelConfigRBE: ${{ parameters.bazelConfigRBE }}
bazelBuildExtraOptions: ${{ parameters.bazelBuildExtraOptions }}
cacheTestResults: ${{ parameters.cacheTestResults }}
cacheVersion: $(cacheKeyBazel)
diff --git a/.azure-pipelines/stage/macos.yml b/.azure-pipelines/stage/macos.yml
deleted file mode 100644
index 6089bd89ee89..000000000000
--- a/.azure-pipelines/stage/macos.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-parameters:
-
-# Auth
-- name: authGCP
- type: string
- default: ""
-
-- name: runBuild
- displayName: "Run build"
- type: string
- default: true
-
-jobs:
-- job: test
- displayName: Build and test
- condition: |
- and(not(canceled()),
- eq(${{ parameters.runBuild }}, 'true'))
- timeoutInMinutes: 180
- pool:
- vmImage: "macos-11"
- steps:
- - script: ./ci/mac_ci_setup.sh
- displayName: "Install dependencies"
-
- - script: ./ci/mac_ci_steps.sh
- displayName: "Run Mac CI"
- env:
- BAZEL_BUILD_EXTRA_OPTIONS: "--remote_download_toplevel --flaky_test_attempts=2"
- BAZEL_REMOTE_CACHE: grpcs://remotebuildexecution.googleapis.com
- BAZEL_REMOTE_INSTANCE: projects/envoy-ci/instances/default_instance
- GCP_SERVICE_ACCOUNT_KEY: ${{ parameters.authGCP }}
- ENVOY_RBE: 1
-
- - task: PublishTestResults@2
- inputs:
- testResultsFiles: "**/bazel-testlogs/**/test.xml"
- testRunTitle: "macOS"
- timeoutInMinutes: 10
- condition: not(canceled())
-
-- job: tested
- displayName: Complete
- dependsOn: ["test"]
- pool:
- vmImage: $(agentUbuntu)
- # This condition ensures that this (required) job passes if all of
- # the preceeding jobs either pass or are skipped
- # adapted from:
- # https://learn.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#job-to-job-dependencies-within-one-stage
- condition: and(eq(variables['Build.Reason'], 'PullRequest'), in(dependencies.test.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'))
- steps:
- - checkout: none
- - bash: |
- echo "macos tested"
diff --git a/.azure-pipelines/stage/prechecks.yml b/.azure-pipelines/stage/prechecks.yml
index 09ff21fe05d5..b699a960eace 100644
--- a/.azure-pipelines/stage/prechecks.yml
+++ b/.azure-pipelines/stage/prechecks.yml
@@ -32,11 +32,18 @@ parameters:
# a lot of change - eg protobuf changed, or a primitve proto changed.
default: 40
+- name: runPrechecks
+ displayName: "Run prechecks"
+ type: string
+ default: true
jobs:
- job: prechecks
displayName: Precheck
timeoutInMinutes: ${{ parameters.timeoutPrechecks }}
+ condition: |
+ and(not(canceled()),
+ eq(${{ parameters.runPrechecks }}, 'true'))
pool:
vmImage: $(agentUbuntu)
variables:
@@ -48,11 +55,13 @@ jobs:
CI_TARGET: "format"
protobuf:
CI_TARGET: "check_and_fix_proto_format"
- publishing:
- CI_TARGET: docs
+ ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
+ publishing:
+ CI_TARGET: docs
steps:
- - template: ../bazel.yml
+ - template: ../ci.yml
parameters:
+ bazelBuildExtraOptions: --config=docs-ci
ciTarget: $(CI_TARGET)
cacheName: $(CI_TARGET)
cacheTestResults: ${{ parameters.cacheTestResults }}
@@ -90,7 +99,7 @@ jobs:
authGPGKey: ${{ parameters.authGPGKey }}
# GNUPGHOME inside the container
pathGPGConfiguredHome: /build/.gnupg
- pathGPGHome: /tmp/envoy-docker-build/.gnupg
+ pathGPGHome: $(Build.StagingDirectory)/.gnupg
- bash: |
set -e
ci/run_envoy_docker.sh "
@@ -98,7 +107,7 @@ jobs:
&& gpg --clearsign /tmp/authority \
&& cat /tmp/authority.asc \
&& gpg --verify /tmp/authority.asc"
- rm -rf /tmp/envoy-docker-build/.gnupg
+ rm -rf $(Build.StagingDirectory)/.gnupg
displayName: "Ensure container CI can sign with GPG"
condition: and(not(canceled()), eq(variables['CI_TARGET'], 'docs'))
@@ -120,10 +129,6 @@ jobs:
ci/run_envoy_docker.sh 'ci/do_ci.sh dockerhub-readme'
displayName: "Dockerhub publishing test"
env:
- ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
- ENVOY_RBE: "1"
- BAZEL_BUILD_EXTRA_OPTIONS: "--config=remote-ci --config=rbe-google --jobs=$(RbeJobs)"
- GCP_SERVICE_ACCOUNT_KEY: ${{ parameters.authGCP }}
GCS_ARTIFACT_BUCKET: ${{ parameters.bucketGCP }}
condition: eq(variables['CI_TARGET'], 'docs')
@@ -146,14 +151,9 @@ jobs:
condition: and(failed(), eq(variables['CI_TARGET'], 'check_and_fix_proto_format'))
# Publish docs
- - script: |
- ci/run_envoy_docker.sh 'ci/do_ci.sh docs-upload'
+ - script: ci/run_envoy_docker.sh 'ci/do_ci.sh docs-upload'
displayName: "Upload Docs to GCS"
env:
- ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
- ENVOY_RBE: "1"
- BAZEL_BUILD_EXTRA_OPTIONS: "--config=remote-ci --config=rbe-google --jobs=$(RbeJobs)"
- GCP_SERVICE_ACCOUNT_KEY: ${{ parameters.authGCP }}
GCS_ARTIFACT_BUCKET: ${{ parameters.bucketGCP }}
condition: eq(variables['CI_TARGET'], 'docs')
diff --git a/.azure-pipelines/stage/publish.yml b/.azure-pipelines/stage/publish.yml
index b04013b69721..30e62ebc362c 100644
--- a/.azure-pipelines/stage/publish.yml
+++ b/.azure-pipelines/stage/publish.yml
@@ -39,24 +39,12 @@ parameters:
- name: authGPGKey
type: string
default: ""
-- name: authNetlifyURL
- type: string
- default: ""
- name: authDockerUser
type: string
default: ""
- name: authDockerPassword
type: string
default: ""
-- name: authSSHDocsKey
- type: string
- default: ""
-- name: authSSHDocsKeyPublic
- type: string
- default: ""
-- name: authSSHKeyPassphrase
- type: string
- default: ""
- name: runDocker
displayName: "Run Docker"
@@ -71,18 +59,6 @@ parameters:
displayName: "Publish Dockerhub"
type: string
default: false
-- name: publishDocs
- displayName: "Publish Docs"
- type: string
- default: false
-- name: publishDocsLatest
- displayName: "Publish latest docs"
- type: string
- default: false
-- name: publishDocsRelease
- displayName: "Publish release docs"
- type: string
- default: false
- name: publishGithubRelease
displayName: "Publish Github release"
type: string
@@ -104,7 +80,7 @@ jobs:
artifactName: "release"
itemPattern: "release/**/bin/*"
targetPath: $(Build.StagingDirectory)
- - template: ../bazel.yml
+ - template: ../ci.yml
parameters:
ciTarget: docker-upload
cacheName: docker-upload
@@ -120,32 +96,36 @@ jobs:
echo "disk space at beginning of Docker build:"
df -h
displayName: "Check disk space before Docker build"
+ # TODO(phlax): switch docker <> docker-upload as main task
- bash: |
set -e
-
- mkdir -p linux/amd64 linux/arm64
-
- # x64
- cp -a $(Build.StagingDirectory)/release/x64/bin/release.tar.zst linux/amd64/release.tar.zst
- cp -a $(Build.StagingDirectory)/release/x64/bin/schema_validator_tool linux/amd64/schema_validator_tool
-
- # arm64
- cp -a $(Build.StagingDirectory)/release/arm64/bin/release.tar.zst linux/arm64/release.tar.zst
- cp -a $(Build.StagingDirectory)/release/arm64/bin/schema_validator_tool linux/arm64/schema_validator_tool
-
- # Debug what files appear to have been downloaded
- find linux -type f -name "*" | xargs ls -l
-
- ci/docker_ci.sh
+ mkdir -p $(Build.StagingDirectory)/envoy
+ rm -rf $(Build.StagingDirectory)/envoy/*
+ mv $(Build.StagingDirectory)/release/* $(Build.StagingDirectory)/envoy
+ ./ci/run_envoy_docker.sh 'ci/do_ci.sh docker'
displayName: Build Docker images
timeoutInMinutes: ${{ parameters.timeoutDockerPublish }}
workingDirectory: $(Build.SourcesDirectory)
env:
- AZP_BRANCH: $(Build.SourceBranch)
- AZP_SHA1: $(Build.SourceVersion)
+ CI_BRANCH: $(Build.SourceBranch)
+ CI_SHA1: $(Build.SourceVersion)
DOCKERHUB_USERNAME: ${{ parameters.authDockerUser }}
DOCKERHUB_PASSWORD: ${{ parameters.authDockerPassword }}
DOCKER_BUILD_TIMEOUT: ${{ parameters.timeoutDockerBuild }}
+ ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
+ ENVOY_DOCKER_IN_DOCKER: 1
+
+ stepsPost:
+ - script: |
+ ci/run_envoy_docker.sh 'ci/do_ci.sh dockerhub-publish'
+ condition: |
+ and(not(canceled()), succeeded(),
+ eq(${{ parameters.publishDockerhub }}, 'true'))
+ displayName: "Publish Dockerhub description and README"
+ env:
+ GCS_ARTIFACT_BUCKET: ${{ parameters.bucketGCP }}
+ DOCKERHUB_USERNAME: ${{ parameters.authDockerUser }}
+ DOCKERHUB_PASSWORD: ${{ parameters.authDockerPassword }}
- job: package_x64
displayName: Linux debs (x64)
@@ -163,7 +143,7 @@ jobs:
artifactName: "release"
itemPattern: "release/x64/bin/*"
targetPath: $(Build.StagingDirectory)
- - template: ../bazel.yml
+ - template: ../ci.yml
parameters:
ciTarget: distribution
cacheName: distribution
@@ -197,7 +177,7 @@ jobs:
itemPattern: "release/arm64/bin/*"
targetPath: $(Build.StagingDirectory)
- - template: ../bazel.yml
+ - template: ../ci.yml
parameters:
managedAgent: false
ciTarget: distribution
@@ -220,80 +200,6 @@ jobs:
set -e
rm -rf $(Build.StagingDirectory)/.gnupg
-- job: docs
- displayName: Publish docs
- dependsOn: []
- condition: |
- and(not(canceled()),
- eq(${{ parameters.publishDocs }}, 'true'))
- pool:
- vmImage: $(agentUbuntu)
- steps:
- - template: ../bazel.yml
- parameters:
- ciTarget: docs
- cacheName: docs
- cacheVersion: $(cacheKeyBazel)
- publishEnvoy: false
- publishTestResults: false
- env:
- AZP_BRANCH: $(Build.SourceBranch)
- stepsPost:
-
- - script: |
- ci/run_envoy_docker.sh 'ci/do_ci.sh dockerhub-publish'
- condition: |
- and(not(canceled()),
- eq(${{ parameters.publishDockerhub }}, 'true'))
- displayName: "Publish Dockerhub description and README"
- env:
- ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
- ENVOY_RBE: "1"
- BAZEL_BUILD_EXTRA_OPTIONS: "--config=remote-ci --config=rbe-google --jobs=$(RbeJobs)"
- GCP_SERVICE_ACCOUNT_KEY: ${{ parameters.authGCP }}
- GCS_ARTIFACT_BUCKET: ${{ parameters.bucketGCP }}
- DOCKERHUB_USERNAME: ${{ parameters.authDockerUser }}
- DOCKERHUB_PASSWORD: ${{ parameters.authDockerPassword }}
-
- # Trigger Netlify rebuild of latest docs
- - script: |
- ci/run_envoy_docker.sh 'ci/do_ci.sh docs-upload'
- displayName: "Upload Docs to GCS"
- condition: |
- and(not(canceled()),
- eq(${{ parameters.publishDocsLatest }}, 'true'))
- env:
- ENVOY_DOCKER_BUILD_DIR: $(Build.StagingDirectory)
- ENVOY_RBE: "1"
- BAZEL_BUILD_EXTRA_OPTIONS: "--config=remote-ci --config=rbe-google --jobs=$(RbeJobs)"
- GCP_SERVICE_ACCOUNT_KEY: ${{ parameters.authGCP }}
- GCS_ARTIFACT_BUCKET: ${{ parameters.bucketGCP }}
- - script: ci/run_envoy_docker.sh 'ci/do_ci.sh docs-publish-latest'
- condition: |
- and(not(canceled()),
- eq(${{ parameters.publishDocsLatest }}, 'true'))
- displayName: "Publish latest docs"
- workingDirectory: $(Build.SourcesDirectory)
- env:
- NETLIFY_TRIGGER_URL: ${{ parameters.authNetlifyURL }}
-
- # Publish docs to the website
- - task: InstallSSHKey@0
- condition: |
- and(not(canceled()),
- eq(${{ parameters.publishDocsRelease }}, 'true'))
- inputs:
- hostName: $(authGithubSSHKeyPublic)
- sshPublicKey: "${{ parameters.authSSHDocsKeyPublic }}"
- sshPassphrase: "${{ parameters.authSSHKeyPassphrase }}"
- sshKeySecureFile: "${{ parameters.authSSHDocsKey }}"
- - script: docs/publish.sh
- condition: |
- and(not(canceled()),
- eq(${{ parameters.publishDocsRelease }}, 'true'))
- displayName: "Publish release docs"
- workingDirectory: $(Build.SourcesDirectory)
-
- job: signed_release
displayName: Signed binaries
dependsOn:
@@ -318,7 +224,7 @@ jobs:
artifactName: "distribution"
itemPattern: "distribution/**/packages.*.tar.gz"
targetPath: $(Build.StagingDirectory)
- - template: ../bazel.yml
+ - template: ../ci.yml
parameters:
ciTarget: release.signed
cacheName: release-signed
@@ -333,8 +239,14 @@ jobs:
authGPGKey: ${{ parameters.authGPGKey }}
pathGPGConfiguredHome: /build/.gnupg
pathGPGHome: $(Build.StagingDirectory)/.gnupg
+ - bash: |
+ set -e -o pipefail
+ mkdir -p distribution/custom
+ cp -a $(Build.StagingDirectory)/*/*64 distribution/custom/
+ workingDirectory: $(Build.SourcesDirectory)
+
- job: success
- dependsOn: ["docker", "docs", "signed_release"]
+ dependsOn: ["docker", "signed_release"]
displayName: Success (linux artefacts)
pool:
vmImage: $(agentUbuntu)
@@ -345,7 +257,6 @@ jobs:
condition: |
and(
in(dependencies.docker.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
- in(dependencies.docs.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
in(dependencies.signed_release.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'))
steps:
- checkout: none
@@ -362,7 +273,17 @@ jobs:
pool:
vmImage: $(agentUbuntu)
steps:
- - template: ../bazel.yml
+ - task: DownloadSecureFile@1
+ name: WorkflowTriggerKey
+ displayName: 'Download workflow trigger key'
+ inputs:
+ secureFile: '${{ parameters.authGithubWorkflow }}'
+ - bash: |
+ set -e
+ KEY="$(cat $(WorkflowTriggerKey.secureFilePath) | base64 -w0)"
+ echo "##vso[task.setvariable variable=value;isoutput=true]$KEY"
+ name: key
+ - template: ../ci.yml
parameters:
ciTarget: verify.trigger
cacheName: verify-trigger
@@ -371,6 +292,7 @@ jobs:
publishEnvoy: false
publishTestResults: false
env:
+ ENVOY_REPO: $(Build.Repository.Name)
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
ENVOY_HEAD_REF: "$(Build.SourceBranch)"
ENVOY_BRANCH: "$(System.PullRequest.TargetBranch)"
@@ -395,13 +317,3 @@ jobs:
mkdir -p $(Build.StagingDirectory)/release.signed
mv release.signed.tar.zst $(Build.StagingDirectory)/release.signed
displayName: Fetch signed release
- - task: DownloadSecureFile@1
- name: WorkflowTriggerKey
- displayName: 'Download workflow trigger key'
- inputs:
- secureFile: '${{ parameters.authGithubWorkflow }}'
- - bash: |
- set -e
- KEY="$(cat $(WorkflowTriggerKey.secureFilePath) | base64 -w0)"
- echo "##vso[task.setvariable variable=value;isoutput=true]$KEY"
- name: key
diff --git a/.azure-pipelines/stage/verify.yml b/.azure-pipelines/stage/verify.yml
index 2214bee7971e..f429feb4ff44 100644
--- a/.azure-pipelines/stage/verify.yml
+++ b/.azure-pipelines/stage/verify.yml
@@ -12,8 +12,7 @@ jobs:
displayName: Debs (x64)
condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true'))
timeoutInMinutes: 120
- pool:
- vmImage: $(agentUbuntu)
+ pool: envoy-x64-small
steps:
- task: DownloadBuildArtifacts@0
inputs:
@@ -22,11 +21,12 @@ jobs:
itemPattern: "distribution/x64/packages.x64.tar.gz"
downloadType: single
targetPath: $(Build.StagingDirectory)
- - template: ../bazel.yml
+ - template: ../ci.yml
parameters:
ciTarget: verify_distro
cacheName: verify_distro
publishTestResults: false
+ tmpfsDockerDisabled: true
env:
ENVOY_DOCKER_IN_DOCKER: 1
@@ -43,7 +43,7 @@ jobs:
itemPattern: "distribution/arm64/packages.arm64.tar.gz"
downloadType: single
targetPath: $(Build.StagingDirectory)
- - template: ../bazel.yml
+ - template: ../ci.yml
parameters:
managedAgent: false
ciTarget: verify_distro
diff --git a/.azure-pipelines/stage/windows.yml b/.azure-pipelines/stage/windows.yml
deleted file mode 100644
index e9e400da52e7..000000000000
--- a/.azure-pipelines/stage/windows.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-
-parameters:
-
-# Auth
-- name: authGCP
- type: string
- default: ""
-
-- name: runBuild
- displayName: "Run build"
- type: string
- default: true
-
-jobs:
-- job: release
- displayName: Build and test
- condition: |
- and(not(canceled()),
- eq(${{ parameters.runBuild }}, 'true'))
- timeoutInMinutes: 180
- pool:
- vmImage: "windows-2019"
- steps:
- - task: Cache@2
- inputs:
- key: '"windows.release" | $(cacheKeyBazel)'
- path: $(Build.StagingDirectory)/repository_cache
- continueOnError: true
- - bash: ci/run_envoy_docker.sh ci/windows_ci_steps.sh
- displayName: "Run Windows msvc-cl CI"
- env:
- CI_TARGET: "windows"
- ENVOY_DOCKER_BUILD_DIR: "$(Build.StagingDirectory)"
- ENVOY_RBE: "true"
- BAZEL_BUILD_EXTRA_OPTIONS: "--config=remote-ci --config=rbe-google --config=remote-msvc-cl --jobs=$(RbeJobs) --flaky_test_attempts=2"
- GCP_SERVICE_ACCOUNT_KEY: ${{ parameters.authGCP }}
-
- - task: PublishTestResults@2
- inputs:
- testResultsFiles: "**/bazel-out/**/testlogs/**/test.xml"
- testRunTitle: "windows"
- searchFolder: $(Build.StagingDirectory)/tmp
- timeoutInMinutes: 10
- condition: not(canceled())
- - task: PublishBuildArtifacts@1
- inputs:
- pathtoPublish: "$(Build.StagingDirectory)/envoy"
- artifactName: windows.release
- timeoutInMinutes: 10
- condition: not(canceled())
-
-- job: docker
- displayName: Build Docker image
- condition: and(not(canceled()), succeeded(), ne(stageDependencies.env.repo.outputs['changed.mobileOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.docsOnly'], 'true'), ne(stageDependencies.env.repo.outputs['changed.examplesOnly'], 'true'))
- strategy:
- matrix:
- windows2019:
- imageName: 'windows-2019'
- windowsBuildType: "windows"
- windowsImageBase: "mcr.microsoft.com/windows/servercore"
- windowsImageTag: "ltsc2019"
- windows2022:
- imageName: 'windows-2022'
- windowsBuildType: "windows-ltsc2022"
- windowsImageBase: "mcr.microsoft.com/windows/nanoserver"
- windowsImageTag: "ltsc2022"
- dependsOn: ["release"]
- timeoutInMinutes: 120
- pool:
- vmImage: $(imageName)
- steps:
- - task: DownloadBuildArtifacts@0
- inputs:
- buildType: current
- artifactName: "windows.release"
- itemPattern: "windows.release/envoy_binary.tar.gz"
- downloadType: single
- targetPath: $(Build.StagingDirectory)
- - bash: |
- set -e
- # Convert to Unix-style path so tar doesn't think drive letter is a hostname
- STAGING_DIR="/$(echo '$(Build.StagingDirectory)' | tr -d ':' | tr '\\' '/')"
- mkdir -p windows/amd64 && tar zxf "${STAGING_DIR}/windows.release/envoy_binary.tar.gz" -C ./windows/amd64
- ci/docker_ci.sh
- workingDirectory: $(Build.SourcesDirectory)
- env:
- AZP_BRANCH: $(Build.SourceBranch)
- AZP_SHA1: $(Build.SourceVersion)
- DOCKERHUB_USERNAME: $(DockerUsername)
- DOCKERHUB_PASSWORD: $(DockerPassword)
- WINDOWS_BUILD_TYPE: $(windowsBuildType)
- WINDOWS_IMAGE_BASE: $(windowsImageBase)
- WINDOWS_IMAGE_TAG: $(windowsImageTag)
-
-- job: released
- displayName: Complete
- dependsOn: ["release", "docker"]
- pool:
- vmImage: $(agentUbuntu)
- # This condition ensures that this (required) job passes if all of
- # the preceeding jobs either pass or are skipped
- # adapted from:
- # https://learn.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#job-to-job-dependencies-within-one-stage
- condition: |
- and(
- eq(variables['Build.Reason'], 'PullRequest'),
- in(dependencies.release.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'),
- in(dependencies.docker.result, 'Succeeded', 'SucceededWithIssues', 'Skipped'))
- steps:
- - checkout: none
- - bash: |
- echo "windows released"
diff --git a/.azure-pipelines/stages.yml b/.azure-pipelines/stages.yml
index 1d070158ec98..aff98c359839 100644
--- a/.azure-pipelines/stages.yml
+++ b/.azure-pipelines/stages.yml
@@ -8,18 +8,6 @@ parameters:
default:
- env
- prechecks
-- name: macBuildStageDeps
- displayName: "macOS stage dependencies"
- type: object
- default:
- - env
- - prechecks
-- name: windowsBuildStageDeps
- displayName: "Windows stage dependencies"
- type: object
- default:
- - env
- - prechecks
- name: checkStageDeps
displayName: "Check stage dependencies"
type: object
@@ -57,7 +45,6 @@ stages:
jobs:
- template: env.yml
-
- stage: prechecks
displayName: Prechecks
dependsOn: ["env"]
@@ -71,24 +58,30 @@ stages:
authGPGKey: $(MaintainerGPGKeySecureFileDownloadPath)
authGPGPath: $(MaintainerGPGKey.secureFilePath)
bucketGCP: $(GcsArtifactBucket)
+ runPrechecks: stageDependencies.env.repo.outputs['run.releaseTests']
- stage: linux_x64
displayName: Linux x64
dependsOn: ${{ parameters.buildStageDeps }}
variables:
RUN_BUILD: $[stageDependencies.env.repo.outputs['run.build']]
+ RUN_TESTS: $[stageDependencies.env.repo.outputs['run.releaseTests']]
jobs:
- template: stage/linux.yml
parameters:
cacheTestResults: ${{ parameters.cacheTestResults }}
+ bazelConfigRBE: --config=remote-ci --config=rbe-google --jobs=200
+ pool: envoy-x64-large
+ # these are parsed differently and _must_ be expressed in this way
runBuild: variables['RUN_BUILD']
- tmpfsDockerDisabled: true
+ runTests: $(RUN_TESTS)
- stage: linux_arm64
displayName: Linux arm64
dependsOn: ${{ parameters.buildStageDeps }}
variables:
RUN_BUILD: $[stageDependencies.env.repo.outputs['run.build']]
+ RUN_TESTS: $[stageDependencies.env.repo.outputs['run.releaseTests']]
jobs:
- template: stage/linux.yml
parameters:
@@ -98,6 +91,7 @@ stages:
timeoutBuild: 180
pool: envoy-arm-large
runBuild: variables['RUN_BUILD']
+ runTests: $(RUN_TESTS)
bazelBuildExtraOptions: "--sandbox_base=/tmp/sandbox_base"
- stage: check
@@ -123,9 +117,6 @@ stages:
RUN_PACKAGING: $[stageDependencies.env.repo.outputs['run.packaging']]
PUBLISH_GITHUB_RELEASE: $[stageDependencies.env.repo.outputs['publish.githubRelease']]
PUBLISH_DOCKERHUB: $[stageDependencies.env.repo.outputs['publish.dockerhub']]
- PUBLISH_DOCS: $[stageDependencies.env.repo.outputs['publish.docs']]
- PUBLISH_DOCS_LATEST: $[stageDependencies.env.repo.outputs['publish.docsLatest']]
- PUBLISH_DOCS_RELEASE: $[stageDependencies.env.repo.outputs['publish.docsRelease']]
jobs:
- template: stage/publish.yml
parameters:
@@ -138,18 +129,11 @@ stages:
authGPGPassphrase: $(MaintainerGPGKeyPassphrase)
authGPGKey: $(MaintainerGPGKeySecureFileDownloadPath)
authGPGPath: $(MaintainerGPGKey.secureFilePath)
- authNetlifyURL: $(NetlifyTriggerURL)
- authSSHDocsKeyPublic: $(DocsPublicKey)
- authSSHDocsKey: $(DocsPrivateKey)
- authSSHKeyPassphrase: $(SshDeployKeyPassphrase)
bucketGCP: $(GcsArtifactBucket)
timeoutDockerBuild: ${{ parameters.timeoutDockerBuild }}
timeoutDockerPublish: ${{ parameters.timeoutDockerPublish }}
runDocker: variables['RUN_DOCKER']
runPackaging: variables['RUN_PACKAGING']
- publishDocs: variables['PUBLISH_DOCS']
- publishDocsLatest: variables['PUBLISH_DOCS_LATEST']
- publishDocsRelease: variables['PUBLISH_DOCS_RELEASE']
publishDockerhub: variables['PUBLISH_DOCKERHUB']
publishGithubRelease: variables['PUBLISH_GITHUB_RELEASE']
@@ -162,25 +146,3 @@ stages:
- template: stage/verify.yml
parameters:
authGCP: $(GcpServiceAccountKey)
-
-- stage: macos
- displayName: macOS
- dependsOn: ${{ parameters.macBuildStageDeps }}
- variables:
- RUN_BUILD: $[stageDependencies.env.repo.outputs['run.build']]
- jobs:
- - template: stage/macos.yml
- parameters:
- authGCP: $(GcpServiceAccountKey)
- runBuild: variables['RUN_BUILD']
-
-- stage: windows
- displayName: Windows
- dependsOn: ${{ parameters.windowsBuildStageDeps }}
- variables:
- RUN_BUILD: $[stageDependencies.env.repo.outputs['run.build']]
- jobs:
- - template: stage/windows.yml
- parameters:
- authGCP: $(GcpServiceAccountKey)
- runBuild: variables['RUN_BUILD']
diff --git a/.bazelrc b/.bazelrc
index 8167ab650f21..dedce6437731 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -48,6 +48,8 @@ build --action_env=BAZEL_FAKE_SCM_REVISION --host_action_env=BAZEL_FAKE_SCM_REVI
build --test_summary=terse
+build:docs-ci --action_env=DOCS_RST_CHECK=1 --host_action_env=DOCS_RST_CHECK=1
+
# TODO(keith): Remove once these 2 are the default
build --incompatible_config_setting_private_default_visibility
build --incompatible_enforce_config_setting_visibility
@@ -59,6 +61,7 @@ common --experimental_allow_tags_propagation
# Enable position independent code (this is the default on macOS and Windows)
# (Workaround for https://github.com/bazelbuild/rules_foreign_cc/issues/421)
+build:linux --copt=-fdebug-types-section
build:linux --copt=-fPIC
build:linux --copt=-Wno-deprecated-declarations
build:linux --cxxopt=-std=c++17 --host_cxxopt=-std=c++17
@@ -90,6 +93,14 @@ build:clang-pch --define=ENVOY_CLANG_PCH=1
# Use gold linker for gcc compiler.
build:gcc --linkopt=-fuse-ld=gold
+# Clang-tidy
+# TODO(phlax): enable this, its throwing some errors as well as finding more issues
+# build:clang-tidy --@envoy_toolshed//format/clang_tidy:executable=@envoy//tools/clang-tidy
+build:clang-tidy --@envoy_toolshed//format/clang_tidy:config=//:clang_tidy_config
+build:clang-tidy --aspects @envoy_toolshed//format/clang_tidy:clang_tidy.bzl%clang_tidy_aspect
+build:clang-tidy --output_groups=report
+build:clang-tidy --build_tag_filters=-notidy
+
# Basic ASAN/UBSAN that works for gcc
build:asan --action_env=ENVOY_ASAN=1
build:asan --config=sanitizer
@@ -225,6 +236,8 @@ build:fuzz-coverage --config=plain-fuzzer
build:fuzz-coverage --run_under=@envoy//bazel/coverage:fuzz_coverage_wrapper.sh
build:fuzz-coverage --test_tag_filters=-nocoverage
+build:cache-local --remote_cache=grpc://localhost:9092
+
# Remote execution: https://docs.bazel.build/versions/master/remote-execution.html
build:rbe-toolchain --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
@@ -289,6 +302,7 @@ build:remote-windows --spawn_strategy=remote,local
build:remote-windows --strategy=Javac=remote,local
build:remote-windows --strategy=Closure=remote,local
build:remote-windows --strategy=Genrule=remote,local
+build:remote-windows --strategy=CppLink=local
build:remote-windows --remote_timeout=7200
build:remote-windows --google_default_credentials=true
build:remote-windows --remote_download_toplevel
@@ -343,7 +357,7 @@ build:compile-time-options --@envoy//source/extensions/filters/http/kill_request
# Docker sandbox
# NOTE: Update this from https://github.com/envoyproxy/envoy-build-tools/blob/main/toolchains/rbe_toolchains_config.bzl#L8
-build:docker-sandbox --experimental_docker_image=envoyproxy/envoy-build-ubuntu:56f235b141079013e64912d676fe7da981368402@sha256:d44499c6fd28a8a6a75dc61668b8a9e7bc3d99db11f9a61e8ea1d1f39c20a236
+build:docker-sandbox --experimental_docker_image=envoyproxy/envoy-build-ubuntu:fd9ec000fdd72d5c5e4e4ef16db4f9103058779e@sha256:1386a26f687826850ba488d66a6cd5337c5941b3b8793d08cfa6f9df12aa2fcf
build:docker-sandbox --spawn_strategy=docker
build:docker-sandbox --strategy=Javac=docker
build:docker-sandbox --strategy=Closure=docker
@@ -429,7 +443,7 @@ build:windows --define hot_restart=disabled
build:windows --define tcmalloc=disabled
build:windows --define wasm=disabled
build:windows --define manual_stamp=manual_stamp
-build:windows --cxxopt="/std:c++17"
+build:windows --cxxopt="/std:c++20"
build:windows --output_groups=+pdb_file
# TODO(wrowe,sunjayBhatia): Resolve bugs upstream in curl and rules_foreign_cc
@@ -472,11 +486,12 @@ build:windows --features=static_link_msvcrt
build:windows --dynamic_mode=off
# RBE (Google)
-build:rbe-google --google_default_credentials=true
-build:rbe-google --remote_cache=grpcs://remotebuildexecution.googleapis.com
+build:cache-google --google_default_credentials=true
+build:cache-google --remote_cache=grpcs://remotebuildexecution.googleapis.com
+build:cache-google --remote_instance_name=projects/envoy-ci/instances/default_instance
+build:cache-google --remote_timeout=7200
build:rbe-google --remote_executor=grpcs://remotebuildexecution.googleapis.com
-build:rbe-google --remote_timeout=7200
-build:rbe-google --remote_instance_name=projects/envoy-ci/instances/default_instance
+build:rbe-google --config=cache-google
build:rbe-google-bes --bes_backend=grpcs://buildeventservice.googleapis.com
build:rbe-google-bes --bes_results_url=https://source.cloud.google.com/results/invocations/
@@ -493,6 +508,18 @@ build:rbe-engflow --remote_timeout=3600s
build:rbe-engflow --bes_timeout=3600s
build:rbe-engflow --bes_upload_mode=fully_async
+build:rbe-envoy-engflow --google_default_credentials=false
+build:rbe-envoy-engflow --remote_cache=grpcs://morganite.cluster.engflow.com
+build:rbe-envoy-engflow --remote_executor=grpcs://morganite.cluster.engflow.com
+build:rbe-envoy-engflow --bes_backend=grpcs://morganite.cluster.engflow.com/
+build:rbe-envoy-engflow --bes_results_url=https://morganite.cluster.engflow.com/invocation/
+build:rbe-envoy-engflow --credential_helper=*.engflow.com=%workspace%/bazel/engflow-bazel-credential-helper.sh
+build:rbe-envoy-engflow --grpc_keepalive_time=30s
+build:rbe-envoy-engflow --remote_timeout=3600s
+build:rbe-envoy-engflow --bes_timeout=3600s
+build:rbe-envoy-engflow --bes_upload_mode=fully_async
+build:rbe-envoy-engflow --remote_default_exec_properties=container-image=docker://docker.io/envoyproxy/envoy-build-ubuntu:fd9ec000fdd72d5c5e4e4ef16db4f9103058779e@sha256:1386a26f687826850ba488d66a6cd5337c5941b3b8793d08cfa6f9df12aa2fcf
+
#############################################################################
# debug: Various Bazel debugging flags
#############################################################################
diff --git a/.clang-tidy b/.clang-tidy
index 7e9d197c9921..72f533b39c11 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -56,9 +56,39 @@ CheckOptions:
value: 'CamelCase'
# Ignore GoogleTest function macros.
- key: readability-identifier-naming.FunctionIgnoredRegexp
- value: '(TEST|TEST_F|TEST_P|INSTANTIATE_TEST_SUITE_P|MOCK_METHOD|TYPED_TEST)'
+ # To have the regex chomped correctly fence all items with `|` (other than first/last)
+ value: >-
+ (^AbslHashValue$|
+ |^called_count$|
+ |^case_sensitive$|
+ |^Create$|
+ |^envoy_resolve_dns$|
+ |^evconnlistener_free$|
+ |^event_base_free$|
+ |^(get|set)EVP_PKEY$|
+ |^has_value$|
+ |^Ip6(ntohl|htonl)$|
+ |^get_$|
+ |^HeaderHasValue(Ref)?$|
+ |^HeaderValueOf$|
+ |^Is(Superset|Subset)OfHeaders$|
+ |^LLVMFuzzerInitialize$|
+ |^LLVMFuzzerTestOneInput$|
+ |^Locality$|
+ |^MOCK_METHOD$|
+ |^PrepareCall$|
+ |^PrintTo$|
+ |^resolve_dns$|
+ |^result_type$|
+ |Returns(Default)?WorkerId$|
+ |^sched_getaffinity$|
+ |^shutdownThread_$|
+ |TEST|
+ |^use_count$)
- key: readability-identifier-naming.ParameterCase
value: 'lower_case'
+- key: readability-identifier-naming.ParameterIgnoredRegexp
+ value: (^cname_ttl_$)
- key: readability-identifier-naming.PrivateMemberCase
value: 'lower_case'
- key: readability-identifier-naming.PrivateMemberSuffix
@@ -67,11 +97,21 @@ CheckOptions:
value: 'CamelCase'
- key: readability-identifier-naming.TypeAliasCase
value: 'CamelCase'
+- key: readability-identifier-naming.TypeAliasIgnoredRegexp
+ value: '(result_type)'
- key: readability-identifier-naming.UnionCase
value: 'CamelCase'
- key: readability-identifier-naming.FunctionCase
value: 'camelBack'
+HeaderFilterRegex: '^./source/.*|^./contrib/.*|^./test/.*|^./envoy/.*'
+
UseColor: true
WarningsAsErrors: '*'
+
+## The version here is arbitrary since any change to this file will
+## trigger a full run of clang-tidy against all files.
+## It can be useful as it seems some header changes may not trigger the
+## expected rerun.
+# v0
diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index ae03bdd50ba1..cdf3e9815ce9 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -1,4 +1,4 @@
-FROM gcr.io/envoy-ci/envoy-build:56f235b141079013e64912d676fe7da981368402@sha256:6e3e8bd34ba568befa3f9c2fd067a1d82c1e55f0f597bcc5fddebbb644930761
+FROM gcr.io/envoy-ci/envoy-build:fd9ec000fdd72d5c5e4e4ef16db4f9103058779e@sha256:b0c0e07c97337fdd56423ddd6749a4250adaea9f66f85763a8d9cec36162c972
ARG USERNAME=vscode
ARG USER_UID=501
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 77852d506a02..f24d57d22ede 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -16,34 +16,38 @@
"containerEnv": {
"ENVOY_SRCDIR": "${containerWorkspaceFolder}",
},
- "settings": {
- "terminal.integrated.shell.linux": "/bin/bash",
- "bazel.buildifierFixOnFormat": true,
- "clangd.path": "/opt/llvm/bin/clangd",
- "python.pythonPath": "/usr/bin/python3",
- "python.formatting.provider": "yapf",
- "python.formatting.yapfArgs": [
- "--style=${workspaceFolder}/.style.yapf"
- ],
- "files.exclude": {
- "**/.clangd/**": true,
- "**/bazel-*/**": true
- },
- "files.watcherExclude": {
- "**/.clangd/**": true,
- "**/bazel-*/**": true
- }
- },
"remoteUser": "vscode",
"containerUser": "vscode",
"postCreateCommand": ".devcontainer/setup.sh",
- "extensions": [
- "github.vscode-pull-request-github",
- "zxh404.vscode-proto3",
- "bazelbuild.vscode-bazel",
- "llvm-vs-code-extensions.vscode-clangd",
- "vadimcn.vscode-lldb",
- "webfreak.debug",
- "ms-python.python"
- ]
+ "customizations": {
+ "vscode": {
+ "settings": {
+ "terminal.integrated.shell.linux": "/bin/bash",
+ "bazel.buildifierFixOnFormat": true,
+ "clangd.path": "/opt/llvm/bin/clangd",
+ "python.pythonPath": "/usr/bin/python3",
+ "python.formatting.provider": "yapf",
+ "python.formatting.yapfArgs": [
+ "--style=${workspaceFolder}/.style.yapf"
+ ],
+ "files.exclude": {
+ "**/.clangd/**": true,
+ "**/bazel-*/**": true
+ },
+ "files.watcherExclude": {
+ "**/.clangd/**": true,
+ "**/bazel-*/**": true
+ }
+ },
+ "extensions": [
+ "github.vscode-pull-request-github",
+ "zxh404.vscode-proto3",
+ "bazelbuild.vscode-bazel",
+ "llvm-vs-code-extensions.vscode-clangd",
+ "vadimcn.vscode-lldb",
+ "webfreak.debug",
+ "ms-python.python"
+ ]
+ }
+ },
}
diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh
index d2a54b474bb1..b50bb1190d66 100755
--- a/.devcontainer/setup.sh
+++ b/.devcontainer/setup.sh
@@ -1,10 +1,8 @@
#!/usr/bin/env bash
-. ci/setup_cache.sh
-trap - EXIT # Don't remove the key file written into a temporary file
-
BAZELRC_FILE=~/.bazelrc bazel/setup_clang.sh /opt/llvm
+# TODO(phlax): use user.bazelrc
# Use generated toolchain config because we know the base container is the one we're using in RBE.
# Not using libc++ here because clangd will raise some tidy issue in libc++ header as of version 9.
echo "build --config=rbe-toolchain-clang" >> ~/.bazelrc
diff --git a/.github/actions/do_ci/action.yml b/.github/actions/do_ci/action.yml
deleted file mode 100644
index 5a024feede03..000000000000
--- a/.github/actions/do_ci/action.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-inputs:
- target:
- required: true
- type: string
- rbe:
- type: boolean
- default: true
- managed:
- type: boolean
- default: true
-
- auth_bazel_rbe:
- type: string
- default: ''
-
- bazel_extra:
- type: string
- default:
- bazel_local_cache:
- type: string
- default:
- bazel_rbe_cache:
- type: string
- default: grpcs://remotebuildexecution.googleapis.com
- bazel_rbe_instance:
- type: string
- default: projects/envoy-ci/instances/default_instance
- bazel_rbe_jobs:
- type: number
- default: 75
-
- command_prefix:
- type: string
- default: ./ci/run_envoy_docker.sh
- command_ci:
- type: string
- default: ./ci/do_ci.sh
-
- env:
- type: string
-
- GITHUB_TOKEN:
- required: true
-
-runs:
- using: composite
- steps:
- - id: do_ci
- name: 'Run CI target ${{ inputs.target }}'
- run: |
- if [[ "${#INPUT_ENV}" -ne 0 ]]; then
- SOURCETMP="$(mktemp)"
- # TODO(phlax): Fix escaping
- echo "${{ inputs.env }}" > "$SOURCETMP"
- . "$SOURCETMP"
- rm -rf "$SOURCETMP"
- fi
- if [[ "${{ inputs.rbe }}" == 'true' ]]; then
- export ENVOY_RBE=1
- export GCP_SERVICE_ACCOUNT_KEY=${{ inputs.auth_bazel_rbe }}
- export BAZEL_BUILD_EXTRA_OPTIONS="--config=remote-ci --jobs=${{ inputs.bazel_rbe_jobs }} ${{ inputs.bazel_extra }}"
- export BAZEL_REMOTE_CACHE=${{ inputs.bazel_rbe_cache }}"
- export BAZEL_REMOTE_INSTANCE=${{ inputs.bazel_rbe_instance }}"
- else
- export BAZEL_BUILD_EXTRA_OPTIONS="--config=ci ${{ inputs.bazel_extra }}"
- export BAZEL_REMOTE_CACHE="${{ inputs.bazel_local_cache }}"
- if [[ "${{ github.event_name }}" == "pull_request" ]]; then
- export BAZEL_REMOTE_INSTANCE_BRANCH="${{ github.event.base.ref }}"
- else
- export BAZEL_REMOTE_INSTANCE_BRANCH="${{ github.ref }}"
- fi
- fi
-
- if [[ -n "${{ inputs.command_prefix }}" ]]; then
- ${{ inputs.command_prefix }} '${{ inputs.command_ci }} ${{ inputs.target }}'
- else
- ${{ inputs.command_ci }} ${{ inputs.target }}
- fi
-
- if [[ ${{ github.event_name }} == "pull_request" ]]; then
- export BAZEL_FAKE_SCM_REVISION=e3b4a6e9570da15ac1caffdded17a8bebdc7dfc9
- export CI_TARGET_BRANCH="${{ github.event.base.ref }}"
- else
- export CI_TARGET_BRANCH="${{ github.ref }}"
- fi
- shell: bash
- env:
- GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }}
- ENVOY_DOCKER_BUILD_DIR: ${{ runner.temp }}
- INPUT_ENV: ${{ inputs.env }}
diff --git a/.github/actions/env/action.yml b/.github/actions/env/action.yml
deleted file mode 100644
index b5d44c56d24f..000000000000
--- a/.github/actions/env/action.yml
+++ /dev/null
@@ -1,175 +0,0 @@
-inputs:
- build_image_tag:
- type: string
- required: true
- build_image_repo:
- type: string
- required: true
- build_image_mobile_sha:
- type: string
- required: true
- build_image_sha:
- type: string
- required: true
-
- repo_ref:
- type: string
- repo_ref_sha:
- type: string
- repo_ref_name:
- type: string
-
- trusted_bots:
- type: string
- default: |
- trigger-release-envoy[bot]
-
- check_mobile_run:
- type: boolean
- default: true
-
-outputs:
- build_image_ubuntu:
- value: ${{ steps.build.outputs.build_image_ubuntu }}
- build_image_ubuntu_mobile:
- value: ${{ steps.build.outputs.build_image_ubuntu_mobile }}
-
- mobile_android_build:
- value: ${{ steps.should_run.outputs.mobile_android_build }}
- mobile_android_build_all:
- value: ${{ steps.should_run.outputs.mobile_android_build_all }}
- mobile_android_tests:
- value: ${{ steps.should_run.outputs.mobile_android_tests }}
- mobile_asan:
- value: ${{ steps.should_run.outputs.mobile_asan }}
- mobile_cc_tests:
- value: ${{ steps.should_run.outputs.mobile_cc_tests }}
- mobile_compile_time_options:
- value: ${{ steps.should_run.outputs.mobile_compile_time_options }}
- mobile_coverage:
- value: ${{ steps.should_run.outputs.mobile_coverage }}
- mobile_formatting:
- value: ${{ steps.should_run.outputs.mobile_formatting }}
- mobile_ios_build:
- value: ${{ steps.should_run.outputs.mobile_ios_build }}
- mobile_ios_build_all:
- value: ${{ steps.should_run.outputs.mobile_ios_build_all }}
- mobile_ios_tests:
- value: ${{ steps.should_run.outputs.mobile_ios_tests }}
- mobile_release_validation:
- value: ${{ steps.should_run.outputs.mobile_release_validation }}
- mobile_tsan:
- value: ${{ steps.should_run.outputs.mobile_tsan }}
- repo_ref:
- value: ${{ steps.context.outputs.repo_ref }}
- repo_ref_name:
- value: ${{ steps.context.outputs.repo_ref_name }}
- repo_ref_pr_number:
- value: ${{ steps.context.outputs.repo_ref_pr_number }}
- repo_ref_sha:
- value: ${{ steps.context.outputs.repo_ref_sha }}
- repo_ref_sha_short:
- value: ${{ steps.context.outputs.repo_ref_sha_short }}
- repo_ref_title:
- value: ${{ steps.context.outputs.repo_ref_title }}
- trusted:
- value: ${{ steps.trusted.outputs.trusted }}
- version_dev:
- value: ${{ steps.context.outputs.version_dev }}
- version_patch:
- value: ${{ steps.context.outputs.version_patch }}
-
-runs:
- using: composite
- steps:
-
- - if: ${{ inputs.check_mobile_run != 'false' }}
- id: should_run
- name: 'Check what to run'
- run: ./mobile/tools/what_to_run.sh
- shell: bash
-
- - id: trusted
- name: 'Check if its a trusted run'
- run: |
- TRUSTED=1
- ACTOR="${{ github.actor }}"
- if [[ "$ACTOR" =~ \[bot\] ]]; then
- TRUSTED_BOT=
- TRUSTED_BOTS=(${{ inputs.trusted_bots }})
- for bot in ${TRUSTED_BOTS[@]}; do
- if [[ "$bot" == "$ACTOR" ]]; then
- # Trusted bot account, ie non-PR
- TRUSTED_BOT=1
- break
- fi
- done
- if [[ -z "$TRUSTED_BOT" ]]; then
- echo "Not trusted bot account"
- TRUSTED=
- fi
- fi
- if [[ "${{ github.event_name }}" == "pull_request" ]]; then
- echo "Not trusted pull_request event"
- TRUSTED=
- fi
- if [[ -n "$TRUSTED" ]]; then
- echo "trusted=true" >> "$GITHUB_OUTPUT"
- else
- echo "trusted=false" >> "$GITHUB_OUTPUT"
- fi
- shell: bash
-
- - id: context
- name: 'CI context'
- run: |
- if grep dev VERSION.txt; then
- VERSION_DEV="$(cat VERSION.txt | cut -d- -f2)"
- else
- VERSION_DEV=""
- fi
- VERSION_PATCH="$(cat VERSION.txt | cut -d- -f1 | rev | cut -d. -f1 | rev)"
- # TODO: strip merge from pr names
- REF_NAME=${{ inputs.repo_ref_name || github.ref_name }}
- if [[ "$REF_NAME" =~ ^refs/pull/ ]]; then
- REF_NAME="${REF_NAME:10}"
- REF_PR_NUMBER="$(echo "${REF_NAME}" | cut -d/ -f1)"
- elif [[ "${{ github.event_name }}" == 'pull_request' ]]; then
- REF_PR_NUMBER="$(echo "${REF_NAME}" | cut -d/ -f1)"
- fi
- echo "SET PR NUMBER: ${REF_PR_NUMBER}"
-
- REF="${{ steps.trusted.outputs.trusted != 'true' && inputs.repo_ref || '' }}"
- REF_SHA=${{ inputs.repo_ref_sha || github.event.pull_request.head.sha || github.sha }}
- REF_SHA_SHORT="${REF_SHA:0:7}"
- REF_TITLE=(
- "${{ steps.trusted.outputs.trusted == 'true' && 'postsubmit' || 'pr' }}/"
- "${REF_NAME}"
- "@${REF_SHA_SHORT}")
- REF_TITLE="$(printf %s "${REF_TITLE[@]}" $'\n')"
- {
- echo "repo_ref=$REF"
- echo "repo_ref_name=$REF_NAME"
- echo "repo_ref_pr_number=$REF_PR_NUMBER"
- echo "repo_ref_sha=$REF_SHA"
- echo "repo_ref_title=$REF_TITLE"
- echo "repo_ref_sha_short=$REF_SHA_SHORT"
- echo "version_dev=$VERSION_DEV"
- echo "version_patch=$VERSION_PATCH"
- } >> "$GITHUB_OUTPUT"
- shell: bash
-
- - id: build
- name: 'Check current build images'
- run: |
- {
- echo "build_image_ubuntu=${BUILD_IMAGE_UBUNTU_REPO}:${BUILD_IMAGE_UBUNTU}@sha256:${BUILD_IMAGE_UBUNTU_SHA}"
- echo "build_image_ubuntu_mobile=${BUILD_IMAGE_UBUNTU_REPO}:mobile-${BUILD_IMAGE_UBUNTU}@sha256:${BUILD_IMAGE_UBUNTU_MOBILE_SHA}"
- } >> "$GITHUB_OUTPUT"
- env:
- # TODO(phlax): derive these from a config file
- BUILD_IMAGE_UBUNTU_REPO: ${{ inputs.build_image_repo }}
- BUILD_IMAGE_UBUNTU: ${{ inputs.build_image_tag }}
- BUILD_IMAGE_UBUNTU_SHA: ${{ inputs.build_image_sha }}
- BUILD_IMAGE_UBUNTU_MOBILE_SHA: ${{ inputs.build_image_mobile_sha }}
- shell: bash
diff --git a/.github/actions/pr_notifier/pr_notifier.py b/.github/actions/pr_notifier/pr_notifier.py
deleted file mode 100644
index 4366327d2888..000000000000
--- a/.github/actions/pr_notifier/pr_notifier.py
+++ /dev/null
@@ -1,267 +0,0 @@
-# Script for collecting PRs in need of review, and informing maintainers via
-# slack.
-#
-# By default this runs in "developer mode" which means that it collects PRs
-# associated with maintainers and API reviewers, and spits them out (badly
-# formatted) to the command line.
-#
-# .github/workflows/pr_notifier.yml runs the script with --cron_job
-# which instead sends the collected PRs to the various slack channels.
-#
-# NOTE: Slack IDs can be found in the user's full profile from within Slack.
-
-from __future__ import print_function
-
-import argparse
-import datetime
-import os
-import sys
-
-import github
-from slack_sdk import WebClient
-from slack_sdk.errors import SlackApiError
-
-MAINTAINERS = {
- 'alyssawilk': 'U78RP48V9',
- 'mattklein123': 'U5CALEVSL',
- 'lizan': 'U79E51EQ6',
- 'snowp': 'U93KTPQP6',
- 'ggreenway': 'U78MBV869',
- 'htuch': 'U78E7055Z',
- 'zuercher': 'U78J72Q82',
- 'phlax': 'U017PLM0GNQ',
- 'jmarantz': 'U80HPLBPG',
- 'ravenblackx': 'U02MJHFEX35',
- 'yanavlasov': 'UJHLR5KFS',
- 'RyanTheOptimist': 'U01SW3JC8GP',
- 'adisuissa': 'UT17EMMTP',
- 'KBaichoo': 'U016ZPU8KBK',
- 'wbpcode': 'U017KF5C0Q6',
- 'kyessenov': 'U7KTRAA8M',
- 'keith': 'UGS5P90CF',
- 'abeyad': 'U03CVM7GPM1',
- 'soulxu': 'U01GNQ3B8AY',
-}
-
-# First pass reviewers who are not maintainers should get
-# notifications but not result in a PR not getting assigned a
-# maintainer owner.
-FIRST_PASS = {
- 'dmitri-d': 'UB1883Q5S',
- 'tonya11en': 'U989BG2CW',
- 'esmet': 'U01BCGBUUAE',
- 'mathetake': 'UG9TD2FSB',
-}
-
-# Only notify API reviewers who aren't maintainers.
-# Maintainers are already notified of pending PRs.
-API_REVIEWERS = {
- 'markdroth': 'UMN8K55A6',
- 'adisuissa': 'UT17EMMTP',
-}
-
-
-def get_slo_hours():
- # on Monday, allow for 24h + 48h
- if datetime.date.today().weekday() == 0:
- return 72
- return 24
-
-
-# Return true if the PR has a waiting tag, false otherwise.
-def is_waiting(labels):
- for label in labels:
- if label.name == 'waiting' or label.name == 'waiting:any':
- return True
- return False
-
-
-def is_contrib(labels):
- return any(label.name == "contrib" for label in labels)
-
-
-# Return true if the PR has an API tag, false otherwise.
-def is_api(labels):
- for label in labels:
- if label.name == 'api':
- return True
- return False
-
-
-# Generate a pr message, bolding the time if it's out-SLO
-def pr_message(pr_age, pr_url, pr_title, delta_days, delta_hours):
- if pr_age < datetime.timedelta(hours=get_slo_hours()):
- return "<%s|%s> has been waiting %s days %s hours\n" % (
- pr_url, pr_title, delta_days, delta_hours)
- else:
- return "<%s|%s> has been waiting *%s days %s hours*\n" % (
- pr_url, pr_title, delta_days, delta_hours)
-
-
-# Adds reminder lines to the appropriate assignee to review the assigned PRs
-# Returns true if one of the assignees is in the primary_assignee_map, false otherwise.
-def add_reminders(
- assignees, assignees_and_prs, message, primary_assignee_map, first_pass_assignee_map):
- has_primary_assignee = False
- for assignee_info in assignees:
- assignee = assignee_info.login
- if assignee in primary_assignee_map:
- has_primary_assignee = True
- elif assignee not in first_pass_assignee_map:
- continue
- if assignee not in assignees_and_prs.keys():
- assignees_and_prs[
- assignee] = "Hello, %s, here are your PR reminders for the day \n" % assignee
- assignees_and_prs[assignee] = assignees_and_prs[assignee] + message
- return has_primary_assignee
-
-
-# Returns true if the PR needs an LGTM from an API shephard.
-def needs_api_review(labels, repo, pr_info):
- # API reviews should always have the label, so don't bother doing an RPC if
- # it's not tagged (this helps avoid github rate limiting)
- if not (is_api(labels)):
- return False
- # repokitten tags each commit as pending unless there has been an API LGTM
- # since the latest API changes. If this PR is tagged pendding it needs an
- # API review, otherwise it's set.
- status = repo.get_commit(pr_info.head.sha).get_statuses()
- return status[0].state == "pending" if status.totalCount else False
-
-
-def track_prs(github_token):
- git = github.Github(github_token)
-
- repo = git.get_repo('envoyproxy/envoy')
-
- # The list of PRs which are not waiting, but are well within review SLO
- recent_prs = []
- # A dict of maintainer : outstanding_pr_string to be sent to slack
- maintainers_and_prs = {}
- # A placeholder for unassigned PRs, to be sent to #maintainers eventually
- maintainers_and_prs['unassigned'] = ""
- # A dict of shephard : outstanding_pr_string to be sent to slack
- api_review_and_prs = {}
- # Out-SLO PRs to be sent to #envoy-maintainer-oncall
- stalled_prs = ""
-
- # Snag all PRs, including drafts
- for pr_info in repo.get_pulls("open", "updated", "desc"):
- labels = pr_info.labels
- assignees = pr_info.assignees
- # If the PR is waiting, continue.
- if is_waiting(labels):
- continue
- # Drafts are not covered by our SLO (repokitteh warns of this)
- if pr_info.draft:
- continue
- # Don't warn for dependabot.
- if pr_info.user.login == 'dependabot[bot]':
- continue
-
- # Update the time based on the time zone delta from github's
- pr_age = pr_info.updated_at - datetime.timedelta(hours=4)
- delta = datetime.datetime.now() - pr_age
- delta_days = delta.days
- delta_hours = delta.seconds // 3600
-
- # If we get to this point, the review may be in SLO - nudge if it's in
- # SLO, nudge in bold if not.
- message = pr_message(delta, pr_info.html_url, pr_info.title, delta_days, delta_hours)
-
- if (needs_api_review(labels, repo, pr_info)):
- add_reminders(pr_info.assignees, api_review_and_prs, message, API_REVIEWERS, [])
-
- # If the PR has been out-SLO for over a day, inform on-call
- if delta > datetime.timedelta(hours=get_slo_hours() + 36):
- stalled_prs = stalled_prs + message
-
- # Add a reminder to each maintainer-assigner on the PR.
- has_maintainer_assignee = add_reminders(
- pr_info.assignees, maintainers_and_prs, message, MAINTAINERS, FIRST_PASS)
-
- # If there was no maintainer, track it as unassigned.
- if not has_maintainer_assignee and not is_contrib(labels):
- maintainers_and_prs['unassigned'] = maintainers_and_prs['unassigned'] + message
-
- # Return the dict of {maintainers : PR notifications},
- # the dict of {api-shephards-who-are-not-maintainers: PR notifications},
- # and stalled PRs
- return maintainers_and_prs, api_review_and_prs, stalled_prs
-
-
-def post_to_assignee(client, assignees_and_messages, assignees_map):
- # Post updates to individual assignees
- for key in assignees_and_messages:
- message = assignees_and_messages[key]
-
- # Only send messages if we have the slack UID
- if key not in assignees_map:
- continue
- uid = assignees_map[key]
-
- # Ship messages off to slack.
- try:
- print(assignees_and_messages[key])
- response = client.conversations_open(users=uid, text="hello")
- channel_id = response["channel"]["id"]
- client.chat_postMessage(channel=channel_id, text=message)
- except SlackApiError as e:
- print("Unexpected error %s", e.response["error"])
-
-
-def post_to_oncall(client, unassigned_prs, out_slo_prs):
- # Post updates to #envoy-maintainer-oncall
- unassigned_prs = maintainers_and_messages['unassigned']
- try:
- client.chat_postMessage(
- channel='#envoy-maintainer-oncall',
- text=("*'Unassigned' PRs* (PRs with no maintainer assigned)\n%s" % unassigned_prs))
- client.chat_postMessage(
- channel='#envoy-maintainer-oncall',
- text=("*Stalled PRs* (PRs with review out-SLO, please address)\n%s" % out_slo_prs))
- issue_link = "https://github.com/envoyproxy/envoy/issues?q=is%3Aissue+is%3Aopen+label%3Atriage"
- client.chat_postMessage(
- channel='#envoy-maintainer-oncall',
- text=(
- "*Untriaged Issues* (please tag and cc area experts)\n<%s|%s>" %
- (issue_link, issue_link)))
- except SlackApiError as e:
- print("Unexpected error %s", e.response["error"])
-
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument(
- '--cron_job',
- action="store_true",
- help="true if this is run by the daily cron job, false if run manually by a developer")
- args = parser.parse_args()
-
- github_token = os.getenv('GITHUB_TOKEN')
- if not github_token:
- print('Missing GITHUB_TOKEN: please check github workflow configuration')
- sys.exit(1)
-
- slack_bot_token = os.getenv('SLACK_BOT_TOKEN')
- if not slack_bot_token:
- print(
- 'Missing SLACK_BOT_TOKEN: please export token from https://api.slack.com/apps/A023NPQQ33K/oauth?'
- )
- sys.exit(1)
-
- maintainers_and_messages, shephards_and_messages, stalled_prs = track_prs(github_token)
-
- if not args.cron_job:
- print(maintainers_and_messages)
- print("\n\n\n")
- print(shephards_and_messages)
- print("\n\n\n")
- print(stalled_prs)
- exit(0)
-
- client = WebClient(token=slack_bot_token)
- post_to_oncall(client, maintainers_and_messages['unassigned'], stalled_prs)
- post_to_assignee(client, shephards_and_messages, API_REVIEWERS)
- post_to_assignee(client, maintainers_and_messages, MAINTAINERS)
- post_to_assignee(client, maintainers_and_messages, FIRST_PASS)
diff --git a/.github/actions/pr_notifier/requirements.in b/.github/actions/pr_notifier/requirements.in
deleted file mode 100644
index b27ccacba25a..000000000000
--- a/.github/actions/pr_notifier/requirements.in
+++ /dev/null
@@ -1,2 +0,0 @@
-pygithub
-slack_sdk
diff --git a/.github/actions/pr_notifier/requirements.txt b/.github/actions/pr_notifier/requirements.txt
deleted file mode 100644
index 4dfea44d1807..000000000000
--- a/.github/actions/pr_notifier/requirements.txt
+++ /dev/null
@@ -1,224 +0,0 @@
-#
-# This file is autogenerated by pip-compile
-# To update, run:
-#
-# pip-compile --generate-hashes .github/actions/pr_notifier/requirements.txt
-#
-certifi==2023.7.22 \
- --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \
- --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9
- # via requests
-cffi==1.14.5 \
- --hash=sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813 \
- --hash=sha256:04c468b622ed31d408fea2346bec5bbffba2cc44226302a0de1ade9f5ea3d373 \
- --hash=sha256:06d7cd1abac2ffd92e65c0609661866709b4b2d82dd15f611e602b9b188b0b69 \
- --hash=sha256:06db6321b7a68b2bd6df96d08a5adadc1fa0e8f419226e25b2a5fbf6ccc7350f \
- --hash=sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06 \
- --hash=sha256:0f861a89e0043afec2a51fd177a567005847973be86f709bbb044d7f42fc4e05 \
- --hash=sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea \
- --hash=sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee \
- --hash=sha256:1bf1ac1984eaa7675ca8d5745a8cb87ef7abecb5592178406e55858d411eadc0 \
- --hash=sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396 \
- --hash=sha256:24a570cd11895b60829e941f2613a4f79df1a27344cbbb82164ef2e0116f09c7 \
- --hash=sha256:24ec4ff2c5c0c8f9c6b87d5bb53555bf267e1e6f70e52e5a9740d32861d36b6f \
- --hash=sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73 \
- --hash=sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315 \
- --hash=sha256:293e7ea41280cb28c6fcaaa0b1aa1f533b8ce060b9e701d78511e1e6c4a1de76 \
- --hash=sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1 \
- --hash=sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49 \
- --hash=sha256:3c3f39fa737542161d8b0d680df2ec249334cd70a8f420f71c9304bd83c3cbed \
- --hash=sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892 \
- --hash=sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482 \
- --hash=sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058 \
- --hash=sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5 \
- --hash=sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53 \
- --hash=sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045 \
- --hash=sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3 \
- --hash=sha256:681d07b0d1e3c462dd15585ef5e33cb021321588bebd910124ef4f4fb71aef55 \
- --hash=sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5 \
- --hash=sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e \
- --hash=sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c \
- --hash=sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369 \
- --hash=sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827 \
- --hash=sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053 \
- --hash=sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa \
- --hash=sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4 \
- --hash=sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322 \
- --hash=sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132 \
- --hash=sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62 \
- --hash=sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa \
- --hash=sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0 \
- --hash=sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396 \
- --hash=sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e \
- --hash=sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991 \
- --hash=sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6 \
- --hash=sha256:cc5a8e069b9ebfa22e26d0e6b97d6f9781302fe7f4f2b8776c3e1daea35f1adc \
- --hash=sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1 \
- --hash=sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406 \
- --hash=sha256:df5052c5d867c1ea0b311fb7c3cd28b19df469c056f7fdcfe88c7473aa63e333 \
- --hash=sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d \
- --hash=sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c
- # via
- # cryptography
- # pynacl
-charset-normalizer==3.1.0 \
- --hash=sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6 \
- --hash=sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1 \
- --hash=sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e \
- --hash=sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373 \
- --hash=sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62 \
- --hash=sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230 \
- --hash=sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be \
- --hash=sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c \
- --hash=sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0 \
- --hash=sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448 \
- --hash=sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f \
- --hash=sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649 \
- --hash=sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d \
- --hash=sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0 \
- --hash=sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706 \
- --hash=sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a \
- --hash=sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59 \
- --hash=sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23 \
- --hash=sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5 \
- --hash=sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb \
- --hash=sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e \
- --hash=sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e \
- --hash=sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c \
- --hash=sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28 \
- --hash=sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d \
- --hash=sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41 \
- --hash=sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974 \
- --hash=sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce \
- --hash=sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f \
- --hash=sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1 \
- --hash=sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d \
- --hash=sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8 \
- --hash=sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017 \
- --hash=sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31 \
- --hash=sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7 \
- --hash=sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8 \
- --hash=sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e \
- --hash=sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14 \
- --hash=sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd \
- --hash=sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d \
- --hash=sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795 \
- --hash=sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b \
- --hash=sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b \
- --hash=sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b \
- --hash=sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203 \
- --hash=sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f \
- --hash=sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19 \
- --hash=sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1 \
- --hash=sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a \
- --hash=sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac \
- --hash=sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9 \
- --hash=sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0 \
- --hash=sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137 \
- --hash=sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f \
- --hash=sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6 \
- --hash=sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5 \
- --hash=sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909 \
- --hash=sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f \
- --hash=sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0 \
- --hash=sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324 \
- --hash=sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755 \
- --hash=sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb \
- --hash=sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854 \
- --hash=sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c \
- --hash=sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60 \
- --hash=sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84 \
- --hash=sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0 \
- --hash=sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b \
- --hash=sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1 \
- --hash=sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531 \
- --hash=sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1 \
- --hash=sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11 \
- --hash=sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326 \
- --hash=sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df \
- --hash=sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab
- # via requests
-cryptography==41.0.3 \
- --hash=sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306 \
- --hash=sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84 \
- --hash=sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47 \
- --hash=sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d \
- --hash=sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116 \
- --hash=sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207 \
- --hash=sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81 \
- --hash=sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087 \
- --hash=sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd \
- --hash=sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507 \
- --hash=sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858 \
- --hash=sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae \
- --hash=sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34 \
- --hash=sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906 \
- --hash=sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd \
- --hash=sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922 \
- --hash=sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7 \
- --hash=sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4 \
- --hash=sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574 \
- --hash=sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1 \
- --hash=sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c \
- --hash=sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e \
- --hash=sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de
- # via pyjwt
-deprecated==1.2.13 \
- --hash=sha256:43ac5335da90c31c24ba028af536a91d41d53f9e6901ddb021bcc572ce44e38d \
- --hash=sha256:64756e3e14c8c5eea9795d93c524551432a0be75629f8f29e67ab8caf076c76d
- # via pygithub
-idna==2.10 \
- --hash=sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6 \
- --hash=sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0
- # via requests
-pycparser==2.20 \
- --hash=sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0 \
- --hash=sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705
- # via cffi
-pygithub==1.59.1 \
- --hash=sha256:3d87a822e6c868142f0c2c4bf16cce4696b5a7a4d142a7bd160e1bdf75bc54a9 \
- --hash=sha256:c44e3a121c15bf9d3a5cc98d94c9a047a5132a9b01d22264627f58ade9ddc217
- # via -r requirements.in
-pyjwt[crypto]==2.4.0 \
- --hash=sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf \
- --hash=sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba
- # via pygithub
-pynacl==1.4.0 \
- --hash=sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4 \
- --hash=sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4 \
- --hash=sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574 \
- --hash=sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d \
- --hash=sha256:4e10569f8cbed81cb7526ae137049759d2a8d57726d52c1a000a3ce366779634 \
- --hash=sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25 \
- --hash=sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f \
- --hash=sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505 \
- --hash=sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122 \
- --hash=sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7 \
- --hash=sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420 \
- --hash=sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f \
- --hash=sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96 \
- --hash=sha256:c914f78da4953b33d4685e3cdc7ce63401247a21425c16a39760e282075ac4a6 \
- --hash=sha256:cd401ccbc2a249a47a3a1724c2918fcd04be1f7b54eb2a5a71ff915db0ac51c6 \
- --hash=sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514 \
- --hash=sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff \
- --hash=sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80
- # via pygithub
-requests==2.31.0 \
- --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \
- --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1
- # via pygithub
-six==1.16.0 \
- --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
- --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
- # via pynacl
-slack-sdk==3.22.0 \
- --hash=sha256:6eacce0fa4f8cfb4d84eac0d7d7e1b1926040a2df654ae86b94179bdf2bc4d8c \
- --hash=sha256:f102a4902115dff3b97c3e8883ad4e22d54732221886fc5ef29bfc290f063b4a
- # via -r requirements.in
-urllib3==1.26.6 \
- --hash=sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4 \
- --hash=sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f
- # via requests
-wrapt==1.12.1 \
- --hash=sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7
- # via deprecated
diff --git a/.github/actions/publish/release/setup/action.yml b/.github/actions/publish/release/setup/action.yml
deleted file mode 100644
index 4e0935710d2d..000000000000
--- a/.github/actions/publish/release/setup/action.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-inputs:
- ref:
- type: string
- required: true
- bucket:
- type: string
- required: true
-
-runs:
- using: composite
- steps:
- - id: url
- run: |
- echo "base=https://storage.googleapis.com/${{ inputs.bucket }}/${REF:0:7}/release" \
- >> "$GITHUB_OUTPUT"
- env:
- REF: ${{ inputs.ref }}
- shell: bash
- - uses: envoyproxy/toolshed/gh-actions/fetch@actions-v0.0.10
- id: fetch
- with:
- url: "${{ steps.url.outputs.base }}/release.signed.tar.zst"
- - run: |
- mkdir -p ${{ runner.temp }}/release.signed
- mv ${{ steps.fetch.outputs.path }} ${{ runner.temp }}/release.signed
- shell: bash
diff --git a/.github/actions/verify/examples/setup/action.yml b/.github/actions/verify/examples/setup/action.yml
deleted file mode 100644
index 18f3205721ce..000000000000
--- a/.github/actions/verify/examples/setup/action.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-inputs:
- ref:
- type: string
- required: true
- bucket:
- type: string
- default: envoy-pr
-
-runs:
- using: composite
- steps:
- - id: url
- run: |
- echo "base=https://storage.googleapis.com/${{ inputs.bucket }}/${REF:0:7}/docker" \
- >> "$GITHUB_OUTPUT"
- env:
- REF: ${{ inputs.ref }}
- shell: bash
- - uses: envoyproxy/toolshed/gh-actions/docker/fetch@actions-v0.0.10
- with:
- url: "${{ steps.url.outputs.base }}/envoy.tar"
- variant: dev
- - uses: envoyproxy/toolshed/gh-actions/docker/fetch@actions-v0.0.10
- with:
- url: "${{ steps.url.outputs.base }}/envoy-contrib.tar"
- variant: contrib-dev
- - uses: envoyproxy/toolshed/gh-actions/docker/fetch@actions-v0.0.10
- with:
- url: "${{ steps.url.outputs.base }}/envoy-google-vrp.tar"
- variant: google-vrp-dev
- - run: docker images | grep envoy
- shell: bash
- - run: |
- export DEBIAN_FRONTEND=noninteractive
- sudo apt-get -qq update -y
- sudo apt-get -qq install -y --no-install-recommends expect
- shell: bash
diff --git a/.github/config.yml b/.github/config.yml
new file mode 100644
index 000000000000..b7b51adaad95
--- /dev/null
+++ b/.github/config.yml
@@ -0,0 +1,413 @@
+agent-ubuntu: ubuntu-22.04
+build-image:
+ # Authoritative configuration for build image/s
+ repo: envoyproxy/envoy-build-ubuntu
+ sha: 1386a26f687826850ba488d66a6cd5337c5941b3b8793d08cfa6f9df12aa2fcf
+ mobile-sha: 1db9bac6578115179fe686cd0e58ee340e2cb3737d19d9136a264d5d94351961
+ # this is authoritative, but is not currently used in github ci
+ gcr-sha: b0c0e07c97337fdd56423ddd6749a4250adaea9f66f85763a8d9cec36162c972
+ tag: fd9ec000fdd72d5c5e4e4ef16db4f9103058779e
+
+config:
+ envoy:
+ icon: >-
+ [![](https://avatars.githubusercontent.com/u/30125649?s=24&v=4)](#)
+
+checks:
+ # Checks: this configures which _checks_ will be activated or skipped
+ #
+ # The configured _names_ need to match the checks configured for the repo
+ #
+ # Any check that is marked as `required` but is not triggered by the run
+ # config above in a given CI run is marked as `skipped`
+ #
+ # For example if macos is marked as `required: true` but then has a path
+ # selection that means its doesnt run the check will be `skipped` and pass
+ macos:
+ name: Envoy/macOS
+ required: true
+ on-run:
+ - build-macos
+ mobile-android:
+ name: Mobile/Android
+ required: true
+ on-run:
+ - mobile-android
+ mobile-android-tests:
+ name: Mobile/Android tests
+ required: true
+ on-run:
+ - mobile-android-tests
+ mobile-asan:
+ name: Mobile/ASAN
+ required: true
+ on-run:
+ - mobile-asan
+ mobile-cc:
+ name: Mobile/CC
+ required: true
+ on-run:
+ - mobile-cc
+ mobile-compile-time-options:
+ name: Mobile/Compile time options
+ on-run:
+ - mobile-compile-time-options
+ mobile-core:
+ name: Mobile/Core
+ required: true
+ on-run:
+ - mobile-core
+ mobile-coverage:
+ name: Mobile/Coverage
+ required: true
+ on-run:
+ - mobile-coverage
+ mobile-docs:
+ name: Mobile/Docs
+ on-run:
+ - mobile-docs
+ mobile-format:
+ name: Mobile/Format
+ required: true
+ on-run:
+ - mobile-format
+ mobile-ios:
+ name: Mobile/iOS
+ required: true
+ cache:
+ on-run:
+ - mobile-ios
+ mobile-ios-tests:
+ name: Mobile/iOS tests
+ required: true
+ on-run:
+ - mobile-ios-tests
+ mobile-perf:
+ name: Mobile/Perf
+ required: true
+ on-run:
+ - mobile-perf
+ mobile-release-validation:
+ name: Mobile/Release validation
+ required: true
+ on-run:
+ - mobile-release-validation
+ mobile-tsan:
+ name: Mobile/TSAN
+ required: true
+ on-run:
+ - mobile-tsan
+ prechecks:
+ name: Envoy/Prechecks
+ on-run:
+ - precheck-deps
+ required: true
+ # yamllint disable rule:line-length
+ advice:
+ general: |
+ ### Ensuring your commits are signed off
+
+ You can set up DCO using Envoy's git hooks.
+
+ ### Git hooks
+
+ To set this up, do the following:
+
+ ```console
+ $ ./support/bootstrap
+ ```
+
+ If you only want the DCO check you can do the following to disable the
+ other hooks
+
+ ```console
+ $ echo NO_VERIFY=1 > .env
+ ```
+ deps: |
+ ### Advice on updating dependencies
+
+ General information about Envoy's depdendencies [can be found here](https://github.com/envoyproxy/envoy/blob/main/DEPENDENCY_POLICY.md)
+ format: |
+ ### Advice on correct formatting
+
+ Envoy ensures a minimum standard for all files in the repository.
+
+ You are strongly advised to heed the following CI notice:
+
+ ```console
+ Please fix your editor to ensure:
+
+ - no trailing whitespace
+ - no preceding mixed tabs/spaces
+ - all files end with a newline
+ ```
+ # yamllint enable rule:line-length
+ publish:
+ name: >-
+ Envoy/Publish and verify
+ on-run:
+ - publish
+ - verify
+ required: true
+ windows:
+ name: Envoy/Windows
+ required: true
+ on-run:
+ - build-windows
+
+run:
+ build-windows:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - api/**/*
+ - bazel/**/*
+ - ci/**/*
+ - configs/**/*
+ - contrib/**/*
+ - envoy/**/*
+ - source/**/*
+ - test/**/*
+ build-macos:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - api/**/*
+ - bazel/**/*
+ - ci/**/*
+ - configs/**/*
+ - contrib/**/*
+ - envoy/**/*
+ - source/**/*
+ - test/**/*
+ mobile-android:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-android-all:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ push: never
+ mobile-android-tests:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-asan:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-cc:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-compile-time-options:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-coverage:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-core:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-format:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-ios:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-ios-all:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ push: never
+ mobile-ios-tests:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-perf:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-release-validation:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ mobile-tsan:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - bazel/external/quiche.BUILD
+ - bazel/repository_locations.bzl
+ - mobile/**/*
+ - tools/code_format/check_format.py
+ precheck-deps:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - .github/dependabot.yml
+ - bazel/BUILD
+ - tools/dependency/*
+ - "**/*.bzl"
+ - "**/requirements.txt"
+ - "**/go.mod"
+ - "**/Dockerfile*"
+ publish:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - api/**/*
+ - bazel/**/*
+ - ci/**/*
+ - contrib/**/*
+ - envoy/**/*
+ - examples/**/*
+ - source/**/*
+ - tools/**/*
+ verify:
+ paths:
+ - .bazelrc
+ - .bazelversion
+ - .github/config.yml
+ - api/**/*
+ - bazel/**/*
+ - ci/**/*
+ - contrib/**/*
+ - envoy/**/*
+ - examples/**/*
+ - source/**/*
+ - tools/**/*
+ push: paths
+
+tables:
+ env:
+ collapse: true
+ title: Environment
+ table-title: Request variables
+ filter: |
+ .request
+ | del(.["build-image" as $prefix | keys[] | select(startswith($prefix))])
+ | del(.["version" as $prefix | keys[] | select(startswith($prefix))])
+ | .actor = " @\(.actor.name)"
+ build-image:
+ collapse: true
+ title: Build image
+ table-title: Container image/s (as used in this CI run)
+ filter: |
+ "https://hub.docker.com/r/envoyproxy/envoy-build-ubuntu/tags?page=1&name=" as $dockerLink
+ | .request["build-image"]
+ | del(.changed)
+ | with_entries(
+ .value as $v
+ | ($v | split(":") | .[1] | split("@") | .[0]) as $tag
+ | .value = "[\($v | split("@") | .[0])](\($dockerLink)\($tag))")
+ build-image-current:
+ collapse: true
+ title: Build image (current)
+ table-title: Current or previous container image
+ filter: |
+ "https://hub.docker.com/r/envoyproxy/envoy-build-ubuntu/tags?page=1&name=" as $dockerLink
+ | if .request["build-image"].changed then
+ .request["build-image-current"]
+ | with_entries(
+ .value as $v
+ | ($v | split(":") | .[1] | split("@") | .[0]) as $tag
+ | .value = "[\($v | split("@") | .[0])](\($dockerLink)\($tag))")
+ else {} end
+ version:
+ collapse: true
+ title: Version
+ table-title: Envoy version (as used in this CI run)
+ filter: |
+ .request.version
+ | del(.changed)
+ version-current:
+ collapse: true
+ title: Version (current)
+ table-title: Current or previous version
+ filter: |
+ if .request.version.changed then
+ .request["version-current"]
+ else
+ {}
+ end
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index a9462ca3b88d..03641ba10b21 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -9,44 +9,49 @@ updates:
#
# Please ensure any new ones are added here, and any that are removed are removed here also.
-- package-ecosystem: "pip"
- directory: "/.github/actions/pr_notifier"
- schedule:
- interval: "daily"
- time: "06:00"
-
- package-ecosystem: "pip"
directory: "/examples/grpc-bridge/client"
+ groups:
+ examples-grpc-bridge:
+ patterns:
+ - "*"
schedule:
interval: "daily"
time: "06:00"
- package-ecosystem: "pip"
directory: "/examples/cache"
+ groups:
+ examples-cache:
+ patterns:
+ - "*"
schedule:
interval: "daily"
time: "06:00"
- package-ecosystem: "pip"
directory: "/examples/shared/python/aiohttp"
+ groups:
+ examples-shared-python:
+ patterns:
+ - "*"
schedule:
interval: "daily"
time: "06:00"
- package-ecosystem: "pip"
directory: "/examples/shared/python/postgres"
+ groups:
+ examples-postgres:
+ patterns:
+ - "*"
schedule:
interval: "daily"
time: "06:00"
- package-ecosystem: "pip"
directory: "/tools/base"
- schedule:
- interval: "daily"
- time: "06:00"
-
-- package-ecosystem: "pip"
- directory: "/tools/code_format"
+ open-pull-requests-limit: 20
schedule:
interval: "daily"
time: "06:00"
@@ -65,6 +70,10 @@ updates:
- package-ecosystem: "docker"
directory: "/examples/ext_authz"
+ groups:
+ examples-ext-authz:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
@@ -77,24 +86,40 @@ updates:
- package-ecosystem: "docker"
directory: "/examples/golang-network"
+ groups:
+ examples-golang-network:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "docker"
directory: "/examples/grpc-bridge"
+ groups:
+ examples-grpc-bridge:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "docker"
directory: "/examples/kafka"
+ groups:
+ examples-kafka:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "docker"
directory: "/examples/local_ratelimit"
+ groups:
+ examples-local-ratelimit:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
@@ -204,42 +229,90 @@ updates:
- package-ecosystem: "gomod"
directory: "/contrib/golang/filters/http/test/test_data/basic"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/contrib/golang/filters/http/test/test_data/dummy"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/contrib/golang/filters/http/test/test_data/echo"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/contrib/golang/filters/http/test/test_data/metric"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/contrib/golang/filters/http/test/test_data/passthrough"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/contrib/golang/filters/http/test/test_data/access_log"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
+ schedule:
+ interval: daily
+ time: "06:00"
+
+- package-ecosystem: "gomod"
+ directory: "/contrib/golang/filters/http/test/test_data/action"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
+ schedule:
+ interval: daily
+ time: "06:00"
+
+- package-ecosystem: "gomod"
+ directory: "/contrib/golang/filters/http/test/test_data/buffer"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/contrib/golang/filters/http/test/test_data/routeconfig"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
@@ -251,43 +324,71 @@ updates:
time: "06:00"
- package-ecosystem: "gomod"
- directory: "/contrib/golang/router/cluster_specifier/test/test_data/simple"
+ directory: "/contrib/golang/filters/network/test/test_data"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
- directory: "/contrib/golang/filters/network/test/test_data"
+ directory: "/contrib/golang/router/cluster_specifier/test/test_data/simple"
+ groups:
+ contrib-golang:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/examples/ext_authz/auth/grpc-service"
+ groups:
+ examples-ext-authz:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/examples/load-reporting-service"
+ groups:
+ examples-load-reporting:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/examples/grpc-bridge/server"
+ groups:
+ examples-grpc-bridge:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/examples/golang-http/simple"
+ groups:
+ examples-golang-http:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
- package-ecosystem: "gomod"
directory: "/examples/golang-network/simple"
+ groups:
+ examples-golang-network:
+ patterns:
+ - "*"
schedule:
interval: daily
time: "06:00"
diff --git a/.github/workflows/README.md b/.github/workflows/README.md
new file mode 100644
index 000000000000..743c7f39acdd
--- /dev/null
+++ b/.github/workflows/README.md
@@ -0,0 +1,198 @@
+## CI configuration
+
+CI is configured in .github/config.yml.
+
+The configuration is per-branch and in this way different branches can have a different
+runtime configuration.
+
+In a pull request only 2 things are read from the config.yml submitted in the request:
+
+- version
+- build image
+
+As these can change the way the CI runs they are allowed to change. No other configuration
+is read from the pull request itself.
+
+### Checks
+
+Which checks should run against a commit or PR is configured under the `checks` key.
+
+The names of these checks should match any checks that are set to required for the repo,
+and if a check is required this should be set in the config to ensure the check is marked
+as skipped if the related runs are skipped.
+
+### Runs
+
+This controls which workflows run, and where necessary which jobs in the workflows.
+
+This paths can be configured with glob matches to match changed files.
+
+Paths are always matched for PRs.
+
+For push requests the config can be set to:
+
+- always (default): Always runs
+- paths: Runs when paths match
+- never: Doesnt run on pushes
+
+## CI requests
+
+### All CI is requested
+
+Whether triggered by push event or a pull_request all CI should be viewed as "requested".
+
+This is very important as it means we can treat incoming triggers in much the same way
+as we might handle an incoming web request.
+
+Much like a web request, CI requests may be "trusted" or "untrusted" and as a consequence
+have more or less capability or access.
+
+Again, much like web requests, CI requests cannot be assumed to be safe.
+
+Any incoming data - critically data over which a user has the capability to change should
+be treated in the same way that user data is handled in a web request.
+
+Failure to do this opens our CI up to many of the same attacks you might expect in a web scenario
+- mostly injection attacks of various sorts.
+
+### Requests are always made _from_ the triggering branch
+
+The only CI workflow that is required/used on any branch other than `main` is `request.yml`.
+
+This file contains any custom configurations required by the branch - for example, build images.
+
+The request workflow on any branch always delegates to the `_request.yml` on `main`.
+
+The `_request.yml` workflow contains all required configuration for handling an incoming request.
+
+All other CI listens for the request workflow to run, and then runs with the requested/parsed data.
+
+### CI is always run _in_ the context of main
+
+Other than updating configurations in any given `request.yml` - no CI workflows are parsed
+anywhere other than in the context of `main`.
+
+This means that **all** changes must be made to the `main` workflows for _any_ branch _and_ for PRs.
+
+Like branch CI, PRs also run in the context of `main` - making changes to these files in a PR will have
+no effect until/unless they are landed on the `main` branch.
+
+### Lifecycle of a CI request
+
+#### Incoming request:
+
+Requests can be triggered by a `push` to `main` or a release branch or from a
+`pull_request_target` to those branches.
+
+The `request.yml` file handles this and *must* live on every branch.
+
+This wf then calls the reusable `_request.yml` workflow, typically on `main`, but
+branches can pin this if required.
+
+#### Request is handled by `_request.yml` workflow:
+
+This workflow initially reads the `.github/config.yml` from the target branch.
+
+It uses this to decide which CI and which checks need to be run, and collects information
+about the CI request.
+
+This can be configured on a per-branch basis, by editing the file on the branch.
+
+This also holds the authoritative build image information.
+
+Users can request a CI run in a PR with custom build images by editing the config.yml file
+on the relevant branch. CI will allow this but flag the change.
+
+Likewise the version is checked at this stage, and CI flags if it has changed.
+
+No other CI vars should be editable by users in a PR.
+
+#### CI check runs *on main* listen for incoming requests and run if required:
+
+These checks *always* run on `main` but with the repo checked out for the branch or the PR.
+
+If branches require custom CI this can be added in the relevant file *on main* with
+a condition to only trigger for relevant target branch.
+
+#### Checks are completed at the end of each CI run:
+
+Currently this reports only on the overall outcome of the CI run and updates the check.
+
+We can add eg Slack reporting here to notify on failed `main` runs.
+
+#### Retesting
+
+PR CI can be retested by issuing `/retest` on the PR.
+
+This finds the checks related to the latest request and restarts them if they are
+failed or cancelled.
+
+Links on the request page link to the original checks, but the checks themselves will
+offer a `reload` button to refresh to the latest version.
+
+## Branch CI
+
+All CI is run on `main` - branch CI included.
+
+The CI will checkout the correct commits and run the CI at that point.
+
+This means that the CI on `main` should always be able to run the current supported branches.
+
+There are possible workaround for custom branch CI but the better path is to ensure legacy support
+in current `main` or backport any required changes.
+
+## CI caching
+
+Currently only x86 Docker images are cached.
+
+Github has a hard per-repo limit of 10GB cache for CI which is LRU cycled when exceeded.
+
+This should just be enough to store x86 and arm Docker images for most of our release branches
+but will not leave anything to spare.
+
+We can probably set up a bucket cache for bazel and other caching but this will need to be
+done separately for un/trusted CI.
+
+### Cache mutex
+
+Due to shortcomings in Github's concurrency algorithm we are using a mutex lock that
+is currently stored in the (private) https://github.com/envoyproxy/ci-mutex repository.
+
+The lock allows CI jobs to wait while the cache is being primed rather than all jobs attempting
+to prime the cache simultaneously.
+
+## Development, testing and CI
+
+Any Github workflows that use the repository context (`pull_request_target`, `workflow_run`, etc)
+**are not tested in Pull Requests**
+
+This means that changes to CI must be tested/verified in the (private) staging repository.
+
+### CI enabling vars
+
+The CI workflows and actions are receptive to certain environment variables being set.
+
+`ENVOY_CI`: this allows CI to run in non-`envoyproxy/envoy` repos
+`ENVOY_MOBILE_CI`: this allows mobile CI to be run in non-`envoyproxy/envoy` repos
+`ENVOY_MACOS_CI`: this allows macOS CI to be run in non-`envoyproxy/envoy` repos
+`ENVOY_WINDOWS_CI`: this allows Windows CI to be run in non-`envoyproxy/envoy` repos
+
+With these flags activated the CI runs will respect the normal conditions for running.
+
+### CI override vars
+
+The CI workflows will also trigger for specific run settings.
+
+For example:
+
+`ENVOY_CI_RUN_MOBILE_ANDROID` would trigger the android CI irrespective of files changed, etc.
+
+These correspond to the run names as configured in config.yml - for example:
+
+`ENVOY_CI_RUN_BUILD_MACOS` would ensure the `build-macos` run is triggered.
+
+### Debugging CI
+
+Setting `CI_DEBUG` will provide a large amount of runtime information.
+
+Generally this does not want to be set in a production context.
diff --git a/.github/workflows/_cache.yml b/.github/workflows/_cache.yml
new file mode 100644
index 000000000000..b2fa26c3e2f6
--- /dev/null
+++ b/.github/workflows/_cache.yml
@@ -0,0 +1,69 @@
+name: Cache prime (docker)
+
+permissions:
+ contents: read
+
+on:
+ workflow_call:
+ secrets:
+ app-id:
+ required: true
+ app-key:
+ required: true
+ inputs:
+ image-tag:
+ type: string
+ required: true
+ request:
+ type: string
+ required: true
+ lock-repository:
+ type: string
+ default: envoyproxy/ci-mutex
+
+## Docker cache
+#
+# This workflow will only prime the cache, and should be done separately first, prior
+# to any jobs that require it.
+#
+# For a job that does, you can restore with something like:
+#
+# steps:
+# - uses: envoyproxy/toolshed/gh-actions/docker/cache/restore@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+# with:
+# key: "${{ needs.env.outputs.build-image }}"
+#
+
+
+jobs:
+ docker:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: appauth
+ name: Appauth (mutex lock)
+ with:
+ app_id: ${{ secrets.app-id }}
+ key: ${{ secrets.app-key }}
+ - uses: envoyproxy/toolshed/gh-actions/docker/cache/prime@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: docker
+ name: Prime Docker cache (${{ inputs.image-tag }})
+ with:
+ image-tag: ${{ inputs.image-tag }}
+ lock-token: ${{ steps.appauth.outputs.token }}
+ lock-repository: ${{ inputs.lock-repository }}
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: data
+ name: Cache data
+ with:
+ input-format: yaml
+ input: |
+ cached: ${{ steps.docker.outputs.cached }}
+ key: ${{ inputs.image-tag }}
+ - uses: envoyproxy/toolshed/gh-actions/json/table@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Summary
+ with:
+ json: ${{ steps.data.outputs.value }}
+ output-path: GITHUB_STEP_SUMMARY
+ title: >-
+ Cache (Docker x64)
diff --git a/.github/workflows/_cache_docker.yml b/.github/workflows/_cache_docker.yml
deleted file mode 100644
index 84386d5aedfc..000000000000
--- a/.github/workflows/_cache_docker.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: Cache prime (docker)
-
-permissions:
- contents: read
-
-on:
- workflow_call:
- inputs:
- image_tag:
- type: string
- required: true
- image_repo:
- type: string
- required: true
- image_sha:
- type: string
- required: true
-
-concurrency:
- group: cache_docker-${{ inputs.image_tag }}
- cancel-in-progress: false
-
-## Docker cache
-#
-# This workflow will only prime the cache, and should be done separately first, prior
-# to any jobs that require it.
-#
-# For a job that does, you can restore with something like:
-#
-# steps:
-# - uses: envoyproxy/toolshed/gh-actions/docker/cache/restore@actions-v0.0.5
-# with:
-# key: "${{ needs.env.outputs.build_image_ubuntu }}"
-#
-
-jobs:
- docker:
- runs-on: ubuntu-22.04
- steps:
- - uses: envoyproxy/toolshed/gh-actions/docker/cache/prime@actions-v0.0.18
- name: Prime Docker cache (${{ inputs.image_repo }}:${{ inputs.image_tag }}@sha256:${{ inputs.image_sha }})
- with:
- image_tag: "${{ inputs.image_repo }}:${{ inputs.image_tag }}@sha256:${{ inputs.image_sha }}"
diff --git a/.github/workflows/_ci.yml b/.github/workflows/_ci.yml
deleted file mode 100644
index 057d4d462012..000000000000
--- a/.github/workflows/_ci.yml
+++ /dev/null
@@ -1,160 +0,0 @@
-name: Envoy CI
-
-on:
- workflow_call:
- inputs:
- target:
- required: true
- type: string
- rbe:
- type: boolean
- default: true
- managed:
- type: boolean
- default: true
-
- auth_bazel_rbe:
- type: string
- default: ''
-
- bazel_extra:
- type: string
- default:
- bazel_local_cache:
- type: string
- default:
- bazel_rbe_cache:
- type: string
- default: grpcs://remotebuildexecution.googleapis.com
- bazel_rbe_instance:
- type: string
- default: projects/envoy-ci/instances/default_instance
- bazel_rbe_jobs:
- type: number
- default: 75
-
- cache_build_image:
- type: string
-
- command_prefix:
- type: string
- default: ./ci/run_envoy_docker.sh
- command_ci:
- type: string
- default: ./ci/do_ci.sh
-
- diskspace_hack:
- type: boolean
- default: false
-
- run_pre:
- type: string
- default:
- run_pre_with:
- type: string
- default:
-
- run_post:
- type: string
- default:
- run_post_with:
- type: string
- default:
-
- repo_fetch_depth:
- type: number
- default: 1
- repo_ref:
- type: string
- skip:
- type: boolean
- default: false
- trusted:
- type: boolean
- default: false
-
- env:
- type: string
-
-concurrency:
- group: |
- ${{ github.actor != 'trigger-release-envoy[bot]'
- && github.event.inputs.head_ref
- || github.run_id
- }}-${{ github.workflow }}-${{ inputs.target }}
- cancel-in-progress: true
-
-jobs:
- do_ci:
- if: ${{ ! inputs.skip }}
- runs-on: ubuntu-22.04
- name: ${{ inputs.command_ci }} ${{ inputs.target }}
- steps:
- - if: ${{ inputs.cache_build_image }}
- name: Restore Docker cache (${{ inputs.cache_build_image }})
- uses: envoyproxy/toolshed/gh-actions/docker/cache/restore@actions-v0.0.18
- with:
- image_tag: ${{ inputs.cache_build_image }}
-
- # If the run is "trusted" (ie has access to secrets) then it should
- # **not** set the ref and should use the code of the calling context.
- - if: ${{ inputs.repo_ref && inputs.trusted }}
- run: |
- echo '`repo_ref` should not be set for trusted CI runs'
- exit 1
-
- - uses: actions/checkout@v4
- name: Checkout Envoy repository
- with:
- fetch-depth: ${{ inputs.repo_fetch_depth }}
- # WARNING: This allows untrusted code to run!!!
- # If this is set, then anything before or after in the job should be regarded as
- # compromised.
- ref: ${{ ! inputs.trusted && inputs.repo_ref || '' }}
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
-
- - if: ${{ inputs.diskspace_hack }}
- uses: envoyproxy/toolshed/gh-actions/diskspace@actions-v0.0.18
- - run: |
- echo "disk space at beginning of build:"
- df -h
- name: "Check disk space at beginning"
-
- - if: ${{ inputs.run_pre }}
- name: Run pre action ${{ inputs.run_pre && format('({0})', inputs.run_pre) || '' }}
- uses: envoyproxy/toolshed/gh-actions/using/recurse@actions-v0.0.18
- with:
- uses: ${{ inputs.run_pre }}
- with: ${{ inputs.run_pre_with }}
-
- - uses: ./.github/actions/do_ci
- name: Do CI
- with:
- target: ${{ inputs.target }}
- rbe: ${{ inputs.rbe }}
- managed: ${{ inputs.managed }}
- auth_bazel_rbe: ${{ inputs.auth_bazel_rbe }}
- bazel_extra: ${{ inputs.bazel_extra }}
- bazel_local_cache: ${{ inputs.bazel_local_cache }}
- bazel_rbe_cache: ${{ inputs.bazel_rbe_cache }}
- bazel_rbe_instance: ${{ inputs.bazel_rbe_instance }}
- bazel_rbe_jobs: ${{ inputs.bazel_rbe_jobs }}
- command_prefix: ${{ inputs.command_prefix }}
- command_ci: ${{ inputs.command_ci }}
- env: ${{ inputs.env }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - if: ${{ inputs.run_post }}
- name: Run post action ${{ inputs.run_pre && format('({0})', inputs.run_post) || '' }}
- uses: envoyproxy/toolshed/gh-actions/using/recurse@actions-v0.0.18
- with:
- uses: ${{ inputs.run_post }}
- with: ${{ inputs.run_post_with }}
-
- - run: |
- echo "disk space at end of build:"
- df -h
- echo
- du -ch "${{ runner.temp }}" | grep -E "[0-9]{2,}M|[0-9]G"
- name: "Check disk space at end"
diff --git a/.github/workflows/_env.yml b/.github/workflows/_env.yml
deleted file mode 100644
index 3ec7f4082c7a..000000000000
--- a/.github/workflows/_env.yml
+++ /dev/null
@@ -1,187 +0,0 @@
-name: Environment
-
-permissions:
- contents: read
-
-on:
- workflow_call:
- inputs:
- # Authoritative configuration for build image/s
- build_image_repo:
- type: string
- default: envoyproxy/envoy-build-ubuntu
- build_image_sha:
- type: string
- default: d44499c6fd28a8a6a75dc61668b8a9e7bc3d99db11f9a61e8ea1d1f39c20a236
- build_image_mobile_sha:
- type: string
- default: b3cfc59c2fd1a86a2b12d303324f33d7f7248458233f3be2959fab119b11fa6f
- build_image_tag:
- type: string
- default: 56f235b141079013e64912d676fe7da981368402
-
- check_mobile_run:
- type: boolean
- default: true
- prime_build_image:
- type: boolean
- default: false
-
- start_check_status:
- type: string
- default:
-
- repo_ref:
- type: string
- default:
- repo_ref_sha:
- type: string
- default:
- repo_ref_name:
- type: string
- default:
-
- outputs:
- debug:
- value: false
- agent_ubuntu:
- value: ubuntu-22.04
- build_image_ubuntu:
- value: ${{ jobs.repo.outputs.build_image_ubuntu }}
- build_image_ubuntu_mobile:
- value: ${{ jobs.repo.outputs.build_image_ubuntu_mobile }}
- mobile_android_build:
- value: ${{ jobs.repo.outputs.mobile_android_build }}
- mobile_android_build_all:
- value: ${{ jobs.repo.outputs.mobile_android_build_all }}
- mobile_android_tests:
- value: ${{ jobs.repo.outputs.mobile_android_tests }}
- mobile_asan:
- value: ${{ jobs.repo.outputs.mobile_asan }}
- mobile_cc_tests:
- value: ${{ jobs.repo.outputs.mobile_cc_tests }}
- mobile_compile_time_options:
- value: ${{ jobs.repo.outputs.mobile_compile_time_options }}
- mobile_coverage:
- value: ${{ jobs.repo.outputs.mobile_coverage }}
- mobile_formatting:
- value: ${{ jobs.repo.outputs.mobile_formatting }}
- mobile_ios_build:
- value: ${{ jobs.repo.outputs.mobile_ios_build }}
- mobile_ios_build_all:
- value: ${{ jobs.repo.outputs.mobile_ios_build_all }}
- mobile_ios_tests:
- value: ${{ jobs.repo.outputs.mobile_ios_tests }}
- mobile_release_validation:
- value: ${{ jobs.repo.outputs.mobile_release_validation }}
- mobile_tsan:
- value: ${{ jobs.repo.outputs.mobile_tsan }}
-
- repo_ref:
- value: ${{ jobs.repo.outputs.repo_ref }}
- repo_ref_name:
- value: ${{ jobs.repo.outputs.repo_ref_name }}
- repo_ref_sha:
- value: ${{ jobs.repo.outputs.repo_ref_sha }}
- repo_ref_sha_short:
- value: ${{ jobs.repo.outputs.repo_ref_sha_short }}
- repo_ref_title:
- value: ${{ jobs.repo.outputs.repo_ref_title }}
-
- trusted:
- value: ${{ jobs.repo.outputs.trusted }}
-
- version_dev:
- value: ${{ jobs.repo.outputs.version_dev }}
- version_patch:
- value: ${{ jobs.repo.outputs.version_patch }}
-
-concurrency:
- group: |
- ${{ github.actor != 'trigger-release-envoy[bot]'
- && github.event.inputs.head_ref
- || github.run_id
- }}-${{ github.workflow }}-env
- cancel-in-progress: true
-
-jobs:
- repo:
- if: github.repository == 'envoyproxy/envoy'
- runs-on: ubuntu-22.04
- outputs:
- build_image_ubuntu: ${{ steps.env.outputs.build_image_ubuntu }}
- build_image_ubuntu_mobile: ${{ steps.env.outputs.build_image_ubuntu_mobile }}
- mobile_android_build: ${{ steps.env.outputs.mobile_android_build }}
- mobile_android_build_all: ${{ steps.env.outputs.mobile_android_build_all }}
- mobile_android_tests: ${{ steps.env.outputs.mobile_android_tests }}
- mobile_asan: ${{ steps.env.outputs.mobile_asan }}
- mobile_cc_tests: ${{ steps.env.outputs.mobile_cc_tests }}
- mobile_compile_time_options: ${{ steps.env.outputs.mobile_compile_time_options }}
- mobile_coverage: ${{ steps.env.outputs.mobile_coverage }}
- mobile_formatting: ${{ steps.env.outputs.mobile_formatting }}
- mobile_ios_build: ${{ steps.env.outputs.mobile_ios_build }}
- mobile_ios_build_all: ${{ steps.env.outputs.mobile_ios_build_all }}
- mobile_ios_tests: ${{ steps.env.outputs.mobile_ios_tests }}
- mobile_release_validation: ${{ steps.env.outputs.mobile_release_validation }}
- mobile_tsan: ${{ steps.env.outputs.mobile_tsan }}
- repo_ref: ${{ steps.env.outputs.repo_ref }}
- repo_ref_name: ${{ steps.env.outputs.repo_ref_name }}
- repo_ref_sha: ${{ steps.env.outputs.repo_ref_sha }}
- repo_ref_sha_short: ${{ steps.env.outputs.repo_ref_sha_short }}
- repo_ref_title: ${{ steps.env.outputs.repo_ref_title }}
- trusted: ${{ steps.env.outputs.trusted }}
- version_dev: ${{ steps.env.outputs.version_dev }}
- version_patch: ${{ steps.env.outputs.version_patch }}
- steps:
- - uses: actions/checkout@v4
- name: Checkout Envoy repository
- with:
- fetch-depth: ${{ ! inputs.check_mobile_run && 1 || 0 }}
- - uses: ./.github/actions/env
- name: Generate environment variables
- id: env
- with:
- check_mobile_run: ${{ inputs.check_mobile_run }}
- repo_ref: ${{ inputs.repo_ref }}
- repo_ref_name: ${{ inputs.repo_ref_name }}
- repo_ref_sha: ${{ inputs.repo_ref_sha }}
- build_image_repo: ${{ inputs.build_image_repo }}
- build_image_tag: ${{ inputs.build_image_tag }}
- build_image_mobile_sha: ${{ inputs.build_image_mobile_sha }}
- build_image_sha: ${{ inputs.build_image_sha }}
-
- - name: 'Print env'
- run: |
- echo "version_dev=${{ steps.env.outputs.version_dev }}"
- echo "version_patch=${{ steps.env.outputs.version_patch }}"
- echo "trusted=${{ steps.env.outputs.trusted }}"
- echo "repo_ref=${{ steps.env.outputs.repo_ref }}"
- echo "repo_ref_name=${{ steps.env.outputs.repo_ref_name }}"
- echo "repo_ref_pr_number=${{ steps.env.outputs.repo_ref_pr_number }}"
- echo "repo_ref_sha=${{ steps.env.outputs.repo_ref_sha }}"
- echo "repo_ref_sha_short=${{ steps.env.outputs.repo_ref_sha_short }}"
- echo "repo_ref_title=${{ steps.env.outputs.repo_ref_title }}"
- echo "build_image_ubuntu=${{ steps.env.outputs.build_image_ubuntu }}"
- echo "build_image_ubuntu_mobile=${{ steps.env.outputs.build_image_ubuntu_mobile }}"
- echo
- if [[ -n "${{ steps.env.outputs.repo_ref_pr_number }}" ]]; then
- echo "PR: https://github.com/envoyproxy/envoy/pull/${{ steps.env.outputs.repo_ref_pr_number }}"
- fi
-
- check:
- if: ${{ inputs.start_check_status && github.event_name != 'pull_request' }}
- uses: ./.github/workflows/_workflow-start.yml
- permissions:
- contents: read
- statuses: write
- with:
- workflow_name: ${{ inputs.start_check_status }}
- sha: ${{ inputs.repo_ref_sha }}
-
- cache:
- if: ${{ inputs.prime_build_image }}
- uses: ./.github/workflows/_cache_docker.yml
- with:
- image_repo: ${{ inputs.build_image_repo }}
- image_tag: ${{ inputs.build_image_tag }}
- image_sha: ${{ inputs.build_image_sha }}
diff --git a/.github/workflows/_finish.yml b/.github/workflows/_finish.yml
new file mode 100644
index 000000000000..5aae4ba0c9aa
--- /dev/null
+++ b/.github/workflows/_finish.yml
@@ -0,0 +1,115 @@
+name: Workflow/complete
+
+permissions:
+ contents: read
+
+
+on:
+ # Do not run untrusted code here
+ workflow_call:
+ secrets:
+ app-id:
+ required: true
+ app-key:
+ required: true
+ inputs:
+ needs:
+ type: string
+ required: true
+ template-check-text:
+ type: string
+ default: |
+ ## \($icon) Check run finished (\($outcome.name) \($outcome.icon))
+
+ ## The check run can be viewed here:
+
+ # \($icon) \($run_link)
+
+env:
+ CI_DEBUG: ${{ vars.CI_DEBUG && true || false }}
+
+
+jobs:
+ complete:
+ runs-on: ubuntu-22.04
+ permissions:
+ actions: read
+ contents: read
+ steps:
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Incoming data
+ id: needs
+ with:
+ input: |
+ check_name: ${{ fromJSON(inputs.needs).load.outputs.check-name }}
+ repo: ${{ github.repository }}
+ run_id: ${{ github.run_id }}
+ outcomes: ${{ toJSON(fromJSON(inputs.needs).*.result) }}
+ load: ${{ toJSON(fromJSON(inputs.needs).load.outputs) }}
+ input-format: yaml
+ print-result: ${{ fromJSON(env.CI_DEBUG || 'false') && true || false }}
+ filter: |
+ .repo as $repo
+ | .run_id as $run_id
+ | .needs as $result
+ | .check_name as $check_name
+ | .load as $load
+ | $load["check-id"] as $check_id
+ | $load["run-id"] as $workflow_id
+ | (.load.request | fromjson) as $request
+ | $request.config.envoy.icon as $icon
+ | .outcomes
+ | if any(. == "failure") then
+ {name: "failure", icon: ":x:"}
+ elif any(. == "cancelled") then
+ {name: "cancelled", icon: ""}
+ elif all(. == "skipped") then
+ {name: "skipped", icon: ""}
+ else
+ {name: "success", icon: ":heavy_check_mark:"}
+ end
+ | . as $outcome
+ | "\($request.check.name) (\($request.summary.title))" as $run_link_text
+ | "[\($run_link_text)](https://github.com/\($repo)/actions/runs/\($run_id))" as $run_link
+ | "${{ inputs.template-check-text }}" as $text
+ | {"summary-title": "\($icon) \($request.check.name) complete (\($outcome.name))",
+ "check-id": $check_id,
+ conclusion: $outcome.name,
+ checks: {
+ ($check_name): {
+ name: $request.check.name,
+ head_sha: $request.request.sha,
+ status: "completed",
+ conclusion: $outcome.name,
+ external_id: "\($run_id)",
+ output: {
+ title: "\($request.check.name) (\($outcome.name))",
+ summary: "Check has finished",
+ text: $text}}}}
+
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Print summary
+ with:
+ input: ${{ toJSON(steps.needs.outputs.value).summary-title }}
+ filter: |
+ "## \(.)"
+ options: -Rr
+ output-path: GITHUB_STEP_SUMMARY
+ - uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Appauth
+ id: appauth
+ with:
+ app_id: ${{ secrets.app-id }}
+ key: ${{ secrets.app-key }}
+ - uses: envoyproxy/toolshed/gh-actions/github/checks@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Update check
+ with:
+ action: update
+ checks: ${{ toJSON(fromJSON(steps.needs.outputs.value).checks) }}
+ token: ${{ steps.appauth.outputs.token }}
+
+ # This is necessary to ensure that any retests have their checks updated
+ - name: Fail the job
+ if: ${{ fromJSON(steps.needs.outputs.value).conclusion != 'success' }}
+ run: |
+ exit 1
diff --git a/.github/workflows/_load.yml b/.github/workflows/_load.yml
new file mode 100644
index 000000000000..ae8b21646189
--- /dev/null
+++ b/.github/workflows/_load.yml
@@ -0,0 +1,165 @@
+name: Request/load
+
+permissions:
+ contents: read
+
+on:
+ workflow_call:
+ secrets:
+ app-id:
+ required: true
+ app-key:
+ required: true
+ lock-app-id:
+ required: true
+ lock-app-key:
+ required: true
+
+ inputs:
+ agent-ubuntu:
+ type: string
+ default: ubuntu-22.04
+ cache-docker:
+ type: boolean
+ default: true
+ check-name:
+ type: string
+ required: true
+ check-title:
+ type: string
+ default:
+ head-sha:
+ type: string
+ default:
+ run-id:
+ type: string
+ default: ${{ github.event.workflow_run.id }}
+ template-request-summary:
+ type: string
+ default: |
+ ## \($linkedTitle)
+
+ \($summary)
+
+ \($extra)
+
+ outputs:
+ build-image:
+ value: ${{ jobs.request.outputs.build-image }}
+ build-image-mobile:
+ value: ${{ jobs.request.outputs.build-image-mobile }}
+ check-id:
+ value: ${{ jobs.request.outputs.check-id }}
+ check-name:
+ value: ${{ inputs.check-name }}
+ request:
+ value: ${{ jobs.request.outputs.request }}
+ run-id:
+ value: ${{ inputs.run-id }}
+ trusted:
+ value: ${{ jobs.request.outputs.trusted }}
+
+concurrency:
+ group: |
+ ${{ github.actor != 'trigger-release-envoy[bot]'
+ && github.head_ref
+ || github.run_id
+ }}-${{ github.workflow }}-env
+ cancel-in-progress: true
+
+env:
+ CI_DEBUG: ${{ vars.CI_DEBUG && true || false }}
+
+
+jobs:
+ request:
+ if: ${{ github.repository == 'envoyproxy/envoy' || vars.ENVOY_CI }}
+ runs-on: ubuntu-22.04
+ permissions:
+ actions: read
+ contents: read
+ pull-requests: read
+ outputs:
+ build-image: ${{ toJSON(fromJSON(steps.request-output.outputs.value).request.build-image) }}
+ build-image-mobile: ${{ fromJSON(steps.request-output.outputs.value).request.build-image-mobile }}
+ check-id: ${{ fromJSON(steps.request-output.outputs.value).check.check-id }}
+ request: ${{ steps.request-output.outputs.value }}
+ trusted: ${{ fromJSON(steps.request-output.outputs.value).request.trusted }}
+ skip: ${{ fromJSON(steps.request-output.outputs.value).check.action != 'RUN' }}
+ steps:
+ # Load env data
+ # Handle any failure in triggering job
+ # Remove any `checks` we dont care about
+ # Prepare a check request
+ - uses: envoyproxy/toolshed/gh-actions/github/env/load@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Load env
+ id: data
+ with:
+ run-id: ${{ inputs.run-id }}
+ check-name: ${{ inputs.check-name }}
+ head-sha: ${{ inputs.head-sha }}
+ env:
+ GH_TOKEN: ${{ github.token }}
+
+ # Update the check
+ - uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Appauth
+ id: appauth
+ with:
+ app_id: ${{ secrets.app-id }}
+ key: ${{ secrets.app-key }}
+ - uses: envoyproxy/toolshed/gh-actions/github/checks@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Update check
+ if: ${{ fromJSON(steps.data.outputs.data).data.check.action == 'RUN' }}
+ with:
+ action: update
+ checks: ${{ toJSON(fromJSON(steps.data.outputs.data).checks) }}
+ token: ${{ steps.appauth.outputs.token }}
+
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Print request summary
+ with:
+ input: |
+ action: ${{ fromJSON(steps.data.outputs.data).data.check.action }}
+ summary: ${{ toJSON(fromJSON(steps.data.outputs.data).data.summary) }}
+ input-format: yaml
+ output-path: GITHUB_STEP_SUMMARY
+ options: -r
+ filter: |
+ .action as $action
+ | .summary as $summary
+ | if ($action != "RUN") then
+ "### ${{ github.workflow }} was skipped"
+ else "" end
+ | . as $extra
+ | $summary["linked-title"] as $linkedTitle
+ | $summary.summary as $summary
+ | "${{ inputs.template-request-summary }}"
+
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: request-output
+ name: Load request
+ with:
+ input: |
+ check: ${{ toJSON(fromJSON(steps.data.outputs.data).data.check) }}
+ config: ${{ toJSON(fromJSON(steps.data.outputs.data).data.config) }}
+ request: ${{ toJSON(fromJSON(steps.data.outputs.data).data.request) }}
+ run: ${{ toJSON(fromJSON(steps.data.outputs.data).data.run) }}
+ summary_title: ${{ fromJSON(steps.data.outputs.data).data.summary.title }}
+ input-format: yaml
+ filter: |
+ .
+ | .summary = {title: .summary_title}
+ | del(.request.message, .summary_title)
+ print-result: ${{ fromJSON(env.CI_DEBUG || 'false') && true || false }}
+
+ cache:
+ secrets:
+ app-id: ${{ secrets.lock-app-id }}
+ app-key: ${{ secrets.lock-app-key }}
+ uses: ./.github/workflows/_cache.yml
+ needs: request
+ if: ${{ inputs.cache-docker && ! fromJSON(needs.request.outputs.skip) }}
+ with:
+ request: ${{ toJSON(needs.request.outputs) }}
+ image-tag: ${{ fromJSON(needs.request.outputs.build-image).default }}
diff --git a/.github/workflows/_load_env.yml b/.github/workflows/_load_env.yml
new file mode 100644
index 000000000000..b5d19f3ab7e2
--- /dev/null
+++ b/.github/workflows/_load_env.yml
@@ -0,0 +1,114 @@
+name: Request/load
+
+permissions:
+ contents: read
+
+on:
+ workflow_call:
+ secrets:
+ lock-app-id:
+ required: true
+ lock-app-key:
+ required: true
+
+ inputs:
+ branch-name:
+ type: string
+ default: main
+ cache-docker:
+ type: boolean
+ default: true
+ config-file:
+ type: string
+ default: ./.github/config.yml
+ event-name:
+ type: string
+ default: ${{ github.workflow }}
+ event-type:
+ type: string
+ default: ${{ github.event_name == 'workflow_dispatch' && 'dispatch' || 'scheduled' }}
+ trusted:
+ type: boolean
+ default: true
+
+ outputs:
+ build-image:
+ value: ${{ jobs.request.outputs.build-image }}
+ build-image-mobile:
+ value: ${{ jobs.request.outputs.build-image-mobile }}
+ request:
+ value: ${{ jobs.request.outputs.request }}
+ trusted:
+ value: ${{ jobs.request.outputs.trusted }}
+
+concurrency:
+ group: |
+ ${{ github.actor != 'trigger-release-envoy[bot]'
+ && github.head_ref
+ || github.run_id
+ }}-${{ github.workflow }}-env
+ cancel-in-progress: true
+
+env:
+ CI_DEBUG: ${{ vars.CI_DEBUG && true || false }}
+
+
+jobs:
+ request:
+ if: ${{ github.repository == 'envoyproxy/envoy' || vars.ENVOY_CI }}
+ runs-on: ubuntu-22.04
+ outputs:
+ build-image: ${{ toJSON(fromJSON(steps.env.outputs.data).request.build-image) }}
+ build-image-mobile: ${{ fromJSON(steps.env.outputs.data).request.build-image-mobile }}
+ request: ${{ steps.env.outputs.data }}
+ trusted: true
+ steps:
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: started
+ name: Create timestamp
+ with:
+ options: -r
+ filter: |
+ now
+ - uses: envoyproxy/toolshed/gh-actions/github/checkout@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: checkout
+ name: Checkout Envoy repository
+ - name: Generate environment variables
+ uses: envoyproxy/toolshed/gh-actions/envoy/ci/env@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: env
+ with:
+ branch-name: ${{ inputs.branch-name }}
+ config-file: ${{ inputs.config-file }}
+ started: ${{ steps.started.outputs.value }}
+ token: ${{ secrets.GITHUB_TOKEN }}
+ vars: ${{ toJSON(vars) }}
+ trusted: ${{ inputs.trusted }}
+
+ - name: Request summary
+ id: summary
+ uses: envoyproxy/toolshed/gh-actions/github/env/summary@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ actor: ${{ toJSON(fromJSON(steps.env.outputs.data).request.actor) }}
+ base-sha: ${{ fromJSON(steps.env.outputs.data).request.base-sha }}
+ event-name: ${{ inputs.event-name }}
+ event-type: ${{ inputs.event-type }}
+ link: ${{ format('https://github.com/{0}/actions/runs/{1}', github.repository, github.run_id) }}
+ output-path: GITHUB_STEP_SUMMARY
+ data: ${{ steps.env.outputs.data }}
+ tables: ${{ toJSON(fromJSON(steps.env.outputs.data).config.tables) }}
+ icon: ${{ fromJSON(steps.env.outputs.data).config.envoy.icon }}
+ message: ${{ fromJSON(steps.env.outputs.data).request.message }}
+ ref: ${{ fromJSON(steps.env.outputs.data).request.ref }}
+ sha: ${{ fromJSON(steps.env.outputs.data).request.sha }}
+ target-branch: ${{ fromJSON(steps.env.outputs.data).request.target-branch }}
+
+ cache:
+ secrets:
+ app-id: ${{ secrets.lock-app-id }}
+ app-key: ${{ secrets.lock-app-key }}
+ uses: ./.github/workflows/_cache.yml
+ needs: request
+ if: ${{ inputs.cache-docker }}
+ with:
+ request: ${{ toJSON(needs.request.outputs) }}
+ image-tag: ${{ fromJSON(needs.request.outputs.build-image).default }}
diff --git a/.github/workflows/_mobile_container_ci.yml b/.github/workflows/_mobile_container_ci.yml
new file mode 100644
index 000000000000..da6b777c46e7
--- /dev/null
+++ b/.github/workflows/_mobile_container_ci.yml
@@ -0,0 +1,153 @@
+name: Mobile CI
+
+permissions:
+ contents: read
+
+on:
+ workflow_call:
+ secrets:
+ app-id:
+ app-key:
+ rbe-key:
+ ssh-key-extra:
+ inputs:
+ args:
+ type: string
+ catch-errors:
+ type: boolean
+ default: false
+ checkout-extra:
+ type: string
+ default:
+ command:
+ type: string
+ default: ./bazelw
+ container:
+ type: string
+ container-output:
+ type: string
+ default:
+ container-command:
+ type: string
+ default: >-
+ docker run
+ --volume=${PWD}:/source
+ --volume=${TMP_ENTRYPOINT}:/tmp/mobile-entrypoint.sh
+ --volume=/tmp/cache:/root/.cache
+ --volume=/tmp/container-output:/tmp/container-output
+ --workdir=/source/mobile
+ --entrypoint=/tmp/mobile-entrypoint.sh
+ -e GITHUB_TOKEN
+ -e CC
+ -e CXX
+ -e COVERAGE_THRESHOLD
+ -e BAZEL_BUILD_OPTION_LIST
+ -e MOBILE_DOCS_CHECKOUT_DIR
+ diskspace-hack:
+ type: boolean
+ default: false
+ downloads:
+ type: string
+ default:
+ entrypoint:
+ type: string
+ default:
+ entrypoint-DEFAULT:
+ type: string
+ default: |
+ #!/bin/bash -e
+ export PATH=/opt/llvm/bin:$PATH
+ exec "$@"
+ error-match:
+ type: string
+ default: |
+ ERROR
+ error:
+ Error:
+ notice-match:
+ type: string
+ default: |
+ NOTICE
+ Streaming build results
+ output-path:
+ type: string
+ default: /tmp/container-output
+ rbe:
+ type: boolean
+ default: true
+ ref:
+ type: string
+ request:
+ type: string
+ required: true
+ runs-on:
+ type: string
+ skip:
+ type: boolean
+ default: false
+ source:
+ type: string
+ default:
+ steps-pre:
+ type: string
+ steps-pre-name:
+ type: string
+ steps-post:
+ type: string
+ default:
+ steps-post-name:
+ type: string
+ target:
+ type: string
+ required: true
+ temp-dir:
+ type: string
+ timeout-minutes:
+ type: number
+ trusted:
+ type: boolean
+ default: false
+ upload-name:
+ type: string
+ upload-path:
+ type: string
+ warning-match:
+ type: string
+ default: |
+ WARNING
+ warning:
+ Warning:
+
+
+jobs:
+ ci:
+ uses: ./.github/workflows/_run.yml
+ name: ${{ inputs.target }}
+ permissions:
+ contents: read
+ packages: read
+ secrets:
+ ssh-key-extra: ${{ secrets.ssh-key-extra }}
+ with:
+ args: ${{ inputs.args }}
+ rbe: ${{ inputs.rbe }}
+ # This always just caches the main build image, the mobile one is layered on top
+ cache-build-image: ${{ fromJSON(inputs.request).request.build-image.default }}
+ catch-errors: ${{ inputs.catch-errors }}
+ container-command: ${{ inputs.container-command }} ${{ inputs.container || fromJSON(inputs.request).request.build-image.default }}
+ container-output: ${{ inputs.container-output }}
+ command: ${{ inputs.command }}
+ entrypoint: ${{ inputs.entrypoint || inputs.entrypoint-DEFAULT }}
+ downloads: ${{ inputs.downloads }}
+ error-match: ${{ inputs.error-match }}
+ notice-match: ${{ inputs.notice-match }}
+ output-path: ${{ inputs.output-path }}
+ request: ${{ inputs.request }}
+ source: ${{ inputs.source }}
+ steps-pre: ${{ inputs.steps-pre }}
+ steps-post: ${{ inputs.steps-post }}
+ target: ${{ inputs.target }}
+ trusted: ${{ fromJSON(inputs.request).request.trusted }}
+ upload-name: ${{ inputs.upload-name }}
+ upload-path: ${{ inputs.upload-path }}
+ warning-match: ${{ inputs.warning-match }}
diff --git a/.github/workflows/_precheck_deps.yml b/.github/workflows/_precheck_deps.yml
new file mode 100644
index 000000000000..df9157fe84c5
--- /dev/null
+++ b/.github/workflows/_precheck_deps.yml
@@ -0,0 +1,58 @@
+name: Precheck/deps
+
+permissions:
+ contents: read
+
+on:
+ workflow_call:
+ inputs:
+ dependency-review:
+ type: boolean
+ default: false
+ request:
+ type: string
+ required: true
+ trusted:
+ type: boolean
+ required: true
+
+concurrency:
+ group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}-publish
+ cancel-in-progress: true
+
+
+jobs:
+ prechecks:
+ permissions:
+ contents: read
+ packages: read
+ uses: ./.github/workflows/_run.yml
+ name: ${{ matrix.target }}
+ with:
+ bazel-extra: '--config=rbe-envoy-engflow'
+ cache-build-image: ${{ fromJSON(inputs.request).request.build-image.default }}
+ request: ${{ inputs.request }}
+ error-match: |
+ ERROR
+ error:
+ Error:
+ rbe: ${{ matrix.rbe }}
+ target: ${{ matrix.target }}
+ trusted: ${{ inputs.trusted }}
+ strategy:
+ matrix:
+ include:
+ - target: deps
+ rbe: false
+
+ dependency-review:
+ runs-on: ubuntu-22.04
+ if: ${{ inputs.dependency-review }}
+ steps:
+ - name: Checkout Repository
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ with:
+ ref: ${{ fromJSON(inputs.request).request.sha }}
+ persist-credentials: false
+ - name: Dependency Review
+ uses: actions/dependency-review-action@01bc87099ba56df1e897b6874784491ea6309bc4 # v3.1.4
diff --git a/.github/workflows/_request.yml b/.github/workflows/_request.yml
new file mode 100644
index 000000000000..11b1b945767d
--- /dev/null
+++ b/.github/workflows/_request.yml
@@ -0,0 +1,121 @@
+name: Request/incoming
+
+permissions:
+ contents: read
+
+on:
+ workflow_call:
+ secrets:
+ app-id:
+ required: true
+ app-key:
+ required: true
+
+ # Defaults are set .github/config.yml on the `main` branch.
+ inputs:
+ config-file:
+ type: string
+ default: ./.github/config.yml
+
+concurrency:
+ group: |
+ ${{ github.actor != 'trigger-release-envoy[bot]'
+ && github.head_ref
+ || github.run_id
+ }}-${{ github.workflow }}-env-prime
+ cancel-in-progress: true
+
+env:
+ CI_DEBUG: ${{ (vars.CI_DEBUG || vars.RUNNER_DEBUG) && true || false }}
+
+
+jobs:
+ incoming:
+ if: ${{ github.repository == 'envoyproxy/envoy' || vars.ENVOY_CI }}
+ runs-on: ubuntu-22.04
+ permissions:
+ contents: read
+ pull-requests: read
+ outputs:
+ env: ${{ steps.data.outputs.value }}
+ config: ${{ steps.config.outputs.config }}
+ steps:
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: started
+ name: Create timestamp
+ with:
+ options: -r
+ filter: |
+ now
+ - uses: envoyproxy/toolshed/gh-actions/github/checkout@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: checkout
+ name: Checkout Envoy repository
+ with:
+ pr: ${{ github.event.number }}
+ branch: ${{ github.ref_name }}
+ config: |
+ fetch-depth: ${{ startsWith(github.event_name, 'pull_request') && 1 || 2 }}
+ # This step *LOOKS AT* the repo at the point requested
+ # Its essential that this _job_ *MUST NOT EXECUTE ANY CODE FROM THE CHECKED OUT REPO*
+ # *ALL* variables collected should be treated as untrusted and should be sanitized before
+ # use
+ - name: Generate environment variables from commit
+ uses: envoyproxy/toolshed/gh-actions/envoy/ci/request@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: env
+ with:
+ branch-name: ${{ steps.checkout.outputs.branch-name }}
+ config-file: ${{ inputs.config-file }}
+ merge-commit: ${{ steps.checkout.outputs.merge-commit }}
+ started: ${{ steps.started.outputs.value }}
+ token: ${{ secrets.GITHUB_TOKEN }}
+ vars: ${{ toJSON(vars) }}
+ - name: Request summary
+ id: summary
+ uses: envoyproxy/toolshed/gh-actions/github/env/summary@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ actor: ${{ toJSON(fromJSON(steps.env.outputs.data).request.actor) }}
+ base-sha: ${{ fromJSON(steps.env.outputs.data).request.base-sha }}
+ link: ${{ format('https://github.com/{0}/actions/runs/{1}', github.repository, github.run_id) }}
+ output-path: GITHUB_STEP_SUMMARY
+ pr: ${{ github.event.number }}
+ data: ${{ steps.env.outputs.data }}
+ tables: ${{ toJSON(fromJSON(steps.env.outputs.data).config.tables) }}
+ icon: ${{ fromJSON(steps.env.outputs.data).config.envoy.icon }}
+ message: ${{ fromJSON(steps.env.outputs.data).request.message }}
+ ref: ${{ fromJSON(steps.env.outputs.data).request.ref }}
+ sha: ${{ fromJSON(steps.env.outputs.data).request.sha }}
+ target-branch: ${{ fromJSON(steps.env.outputs.data).request.target-branch }}
+
+ - name: Environment data
+ uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: data
+ with:
+ input: |
+ env: ${{ steps.env.outputs.data }}
+ title: ${{ steps.summary.outputs.title }}
+ link: ${{ format('https://github.com/{0}/actions/runs/{1}', github.repository, github.run_id) }}
+ summary: ${{ steps.summary.outputs.summary }}
+ input-format: yaml
+ filter: |
+ .title as $title
+ | .env.config.envoy.icon as $icon
+ | .link as $link
+ | "\($icon) Request ([\($title)](\($link)))" as $linkedTitle
+ | .summary as $summary
+ | .env
+ | .summary = {
+ $summary,
+ $title,
+ $link,
+ "linked-title": $linkedTitle}
+ | del(.config.tables)
+
+ checks:
+ if: ${{ github.repository == 'envoyproxy/envoy' || vars.ENVOY_CI }}
+ needs: incoming
+ uses: ./.github/workflows/_start.yml
+ secrets:
+ app-id: ${{ secrets.app-id }}
+ app-key: ${{ secrets.app-key }}
+ with:
+ env: ${{ needs.incoming.outputs.env }}
diff --git a/.github/workflows/_run.yml b/.github/workflows/_run.yml
new file mode 100644
index 000000000000..2670d17a7ae7
--- /dev/null
+++ b/.github/workflows/_run.yml
@@ -0,0 +1,265 @@
+name: Envoy CI
+
+permissions:
+ contents: read
+
+on:
+ workflow_call:
+ secrets:
+ app-id:
+ app-key:
+ rbe-key:
+ ssh-key:
+ ssh-key-extra:
+ inputs:
+ args:
+ type: string
+ bazel-extra:
+ type: string
+ bazel-rbe-jobs:
+ type: number
+ default: 75
+ cache-build-image:
+ type: string
+ catch-errors:
+ type: boolean
+ default: false
+ checkout-extra:
+ type: string
+ container-command:
+ type: string
+ default: ./ci/run_envoy_docker.sh
+ container-output:
+ type: string
+ default:
+ command:
+ type: string
+ default: ./ci/do_ci.sh
+ diskspace-hack:
+ type: boolean
+ default: false
+ diskspace-hack-paths:
+ type: string
+ default:
+ downloads:
+ type: string
+ entrypoint:
+ type: string
+ default:
+ error-match:
+ type: string
+ default: |
+ ERROR
+ error:
+ Error:
+ notice-match:
+ type: string
+ default: |
+ NOTICE
+ Streaming build results
+ output-path:
+ type: string
+ default:
+ rbe:
+ type: boolean
+ default: true
+ repo-fetch-depth:
+ type: number
+ default: 1
+ report-pre:
+ type: string
+ default: |
+ - run: |
+ echo "disk space at beginning of build:"
+ df -h
+ shell: bash
+ report-post:
+ type: string
+ default: |
+ - run: |
+ echo "disk space at end of build:"
+ df -h
+ shell: bash
+ request:
+ type: string
+ required: true
+ runs-on:
+ type: string
+ default:
+ skip:
+ type: boolean
+ default: false
+ source:
+ type: string
+ summary-post:
+ type: string
+ default: |
+ - uses: envoyproxy/toolshed/gh-actions/envoy/run/summary@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ context: %{{ inputs.context }}
+ steps-pre:
+ type: string
+ steps-pre-name:
+ type: string
+ steps-post:
+ type: string
+ default: |
+ - run: |
+ du -ch "%{{ inputs.temp-dir || runner.temp }}" | grep -E "[0-9]{2,}M|[0-9]G" || :
+ shell: bash
+ steps-post-name:
+ type: string
+ target:
+ type: string
+ required: true
+ temp-dir:
+ type: string
+ timeout-minutes:
+ type: number
+ trusted:
+ type: boolean
+ required: true
+ upload-name:
+ type: string
+ upload-path:
+ type: string
+ warning-match:
+ type: string
+ default: |
+ WARNING
+ warning:
+ Warning:
+ working-directory:
+ type: string
+ default: .
+
+concurrency:
+ group: >-
+ ${{ github.actor != 'trigger-release-envoy[bot]'
+ && github.head_ref
+ || github.run_id
+ }}-${{ github.workflow }}-${{ inputs.target }}
+ cancel-in-progress: true
+
+env:
+ CI_DEBUG: ${{ vars.CI_DEBUG }}
+
+
+jobs:
+ ci:
+ permissions:
+ contents: read
+ packages: read
+ if: ${{ ! inputs.skip }}
+ runs-on: ${{ inputs.runs-on || fromJSON(inputs.request).config.ci.agent-ubuntu }}
+ name: ${{ inputs.command }} ${{ inputs.target }}
+ timeout-minutes: ${{ inputs.timeout-minutes }}
+ steps:
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: started
+ name: Create timestamp
+ with:
+ options: -r
+ filter: |
+ now
+ # This controls which input vars are exposed to the run action (and related steps)
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Context
+ id: context
+ with:
+ print-result: ${{ fromJSON(env.CI_DEBUG || 'false') && true || false }}
+ input: ${{ inputs.request }}
+ filter: |
+ .
+ | (.check // {name: "${{ github.workflow }}"}) as $check
+ | .config as $config
+ | if "${{ inputs.runs-on }}" != "" then
+ "${{ inputs.runs-on }}"
+ else .config.ci["agent-ubuntu"] end
+ | . as $runsOn
+ | {"target": "${{ inputs.target }}",
+ "catch-errors": ${{ inputs.catch-errors }},
+ "runs-on": $runsOn,
+ "job-started": ${{ steps.started.outputs.value }}}
+ | . * {$config, $check}
+ - if: ${{ inputs.cache-build-image }}
+ name: Restore Docker cache ${{ inputs.cache-build-image && format('({0})', inputs.cache-build-image) || '' }}
+ uses: envoyproxy/toolshed/gh-actions/docker/cache/restore@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ image_tag: ${{ inputs.cache-build-image }}
+
+ - uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: appauth
+ name: Appauth
+ if: ${{ inputs.trusted }}
+ with:
+ app_id: ${{ secrets.app-id }}
+ key: ${{ secrets.app-key }}
+ # You cant use a secret as a condition so this always runs even if the app id/key are empty
+ # - the workaround is to allow the token to be passed through.
+ token: ${{ github.token }}
+ token-ok: true
+ - uses: envoyproxy/toolshed/gh-actions/github/checkout@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: checkout
+ name: Checkout Envoy repository
+ with:
+ branch: ${{ fromJSON(inputs.request).request.target-branch }}
+ config: |
+ fetch-depth: ${{ inputs.repo-fetch-depth }}
+ # WARNING: This allows untrusted code to run!!!
+ # If this is set to run untrusted code, then anything before or after in the job should be regarded as
+ # compromisable.
+ ref: ${{ inputs.trusted && fromJSON(inputs.request).request.sha || fromJSON(inputs.request).request.ref }}
+ fetch-merge-commit: false
+ pr: ${{ fromJSON(inputs.request).request.pr }}
+ ssh-key: ${{ inputs.trusted && inputs.ssh-key || '' }}
+ token: ${{ inputs.trusted && steps.appauth.outputs.token || github.token }}
+
+ # This is currently only use by mobile-docs and can be removed once they are updated to the newer website
+ - uses: envoyproxy/toolshed/gh-actions/github/checkout@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: checkout-extra
+ name: Checkout extra repository (for publishing)
+ if: ${{ inputs.checkout-extra }}
+ with:
+ config: ${{ inputs.checkout-extra }}
+ ssh-key: ${{ inputs.trusted && inputs.ssh-key-extra || '' }}
+
+ - uses: envoyproxy/toolshed/gh-actions/github/run@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Run CI ${{ inputs.command }} ${{ inputs.target }}
+ with:
+ args: ${{ inputs.args != '--' && inputs.args || inputs.target }}
+ catch-errors: ${{ inputs.catch-errors }}
+ command: ${{ inputs.command }}
+ container-command: ${{ env.CONTAINER_COMMAND || inputs.container-command }}
+ container-output: ${{ inputs.container-output }}
+ context: ${{ steps.context.outputs.value }}
+ diskspace-hack: ${{ inputs.diskspace-hack }}
+ diskspace-hack-paths: ${{ inputs.diskspace-hack-paths }}
+ downloads: ${{ inputs.downloads }}
+ entrypoint: ${{ inputs.entrypoint }}
+ error-match: ${{ inputs.error-match }}
+ notice-match: ${{ inputs.notice-match }}
+ output-path: ${{ inputs.output-path }}
+ report-pre: ${{ inputs.report-pre }}
+ report-post: ${{ inputs.report-post }}
+ source: ${{ inputs.source }}
+ steps-pre: ${{ inputs.steps-pre }}
+ steps-pre-name: ${{ inputs.steps-pre-name }}
+ steps-post: ${{ inputs.steps-post }}
+ steps-post-name: ${{ inputs.steps-post-name }}
+ summary-post: ${{ inputs.summary-post }}
+ upload-name: ${{ inputs.upload-name }}
+ upload-path: ${{ inputs.upload-path }}
+ warning-match: ${{ inputs.warning-match }}
+ working-directory: ${{ inputs.working-directory }}
+ env:
+ GITHUB_TOKEN: ${{ steps.checkout.outputs.token && steps.checkout.outputs.token || secrets.GITHUB_TOKEN }}
+ ENVOY_DOCKER_BUILD_DIR: ${{ runner.temp }}
+ ENVOY_RBE: ${{ inputs.rbe != 'false' && 1 || '' }}
+ RBE_KEY: ${{ secrets.rbe-key }}
+ BAZEL_BUILD_EXTRA_OPTIONS: >-
+ --config=remote-ci
+ ${{ inputs.bazel-extra }}
+ ${{ inputs.rbe != 'false' && format('--jobs={0}', inputs.bazel-rbe-jobs) || '' }}
+ BAZEL_FAKE_SCM_REVISION: ${{ github.event_name == 'pull_request' && 'e3b4a6e9570da15ac1caffdded17a8bebdc7dfc9' || '' }}
+ CI_TARGET_BRANCH: ${{ fromJSON(inputs.request).request.target-branch }}
diff --git a/.github/workflows/_stage_publish.yml b/.github/workflows/_stage_publish.yml
index 2b0dcca963cc..374cf0e6e1fa 100644
--- a/.github/workflows/_stage_publish.yml
+++ b/.github/workflows/_stage_publish.yml
@@ -11,82 +11,103 @@ permissions:
on:
workflow_call:
+ secrets:
+ ENVOY_CI_SYNC_APP_ID:
+ ENVOY_CI_SYNC_APP_KEY:
+ ENVOY_CI_PUBLISH_APP_ID:
+ ENVOY_CI_PUBLISH_APP_KEY:
inputs:
+ request:
+ type: string
+ required: true
trusted:
type: boolean
- default: false
- build_image_ubuntu:
- type: string
- default: ''
- version_dev:
- type: string
- default: ''
- head_ref:
- type: string
- default: ''
- repo_ref:
- type: string
- given_ref:
- type: string
+ required: true
concurrency:
- group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}-publish
+ group: >-
+ ${{ github.actor != 'trigger-release-envoy[bot]'
+ && github.event.inputs.head_ref
+ || github.run_id
+ }}-${{ github.event.workflow.id }}-publish
cancel-in-progress: true
+
jobs:
- publish_ci:
- if: ${{ ! inputs.trusted }}
+ publish:
+ secrets:
+ app-id: ${{ inputs.trusted && secrets.ENVOY_CI_PUBLISH_APP_ID || '' }}
+ app-key: ${{ inputs.trusted && secrets.ENVOY_CI_PUBLISH_APP_KEY || '' }}
+ permissions:
+ contents: read
+ packages: read
name: ${{ matrix.name || matrix.target }}
- strategy:
- fail-fast: false
- matrix:
- include:
- - target: publish
- name: github
- run_pre: ./.github/actions/publish/release/setup
- run_pre_with: |
- ref: ${{ inputs.given_ref }}
- bucket: envoy-pr
- env: |
- export ENVOY_PUBLISH_DRY_RUN=1
- uses: ./.github/workflows/_ci.yml
+ uses: ./.github/workflows/_run.yml
with:
target: ${{ matrix.target }}
rbe: false
- managed: true
- cache_build_image: ${{ inputs.build_image_ubuntu }}
- run_pre: ${{ matrix.run_pre }}
- run_pre_with: ${{ matrix.run_pre_with }}
- env: ${{ matrix.env }}
- trusted: false
- repo_ref: ${{ inputs.repo_ref }}
-
- publish:
- if: ${{ inputs.trusted }}
- name: ${{ matrix.name || matrix.target }}
- permissions:
- contents: write
+ cache-build-image: ${{ fromJSON(inputs.request).request.build-image.default }}
+ source: ${{ matrix.source }}
+ request: ${{ inputs.request }}
+ steps-pre: ${{ matrix.steps-pre }}
+ trusted: ${{ inputs.trusted }}
strategy:
fail-fast: false
matrix:
include:
- target: publish
name: github
- run_pre: ./.github/actions/publish/release/setup
- run_pre_with: |
- ref: ${{ inputs.given_ref }}
- bucket: envoy-postsubmit
- env: |
- if [[ '${{ inputs.version_dev }}' != '' ]]; then
- export ENVOY_PUBLISH_DRY_RUN=1
- fi
- uses: ./.github/workflows/_ci.yml
- with:
- target: ${{ matrix.target }}
- rbe: false
- managed: true
- cache_build_image: ${{ inputs.build_image_ubuntu }}
- run_pre: ${{ matrix.run_pre }}
- run_pre_with: ${{ matrix.run_pre_with }}
- env: ${{ matrix.env }}
- trusted: true
+ source: |
+ export ENVOY_COMMIT=${{ fromJSON(inputs.request).request.sha }}
+ export ENVOY_REPO=${{ github.repository }}
+ export ENVOY_PUBLISH_DRY_RUN=${{ (fromJSON(inputs.request).request.version.dev || ! inputs.trusted) && 1 || '' }}
+ steps-pre: |
+ - id: url
+ uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ options: -Rr
+ input: >-
+ ${{ inputs.trusted
+ && fromJSON(inputs.request).request.sha
+ || fromJSON(inputs.request).request.ref }}
+ filter: |
+ .[:7] as $sha
+ | "release/release.signed.tar.zst" as $path
+ | if ${{ inputs.trusted }} then
+ "envoy-postsubmit"
+ else
+ "envoy-pr"
+ end
+ | . as $bucket
+ | "https://storage.googleapis.com/\($bucket)/\($sha)/\($path)"
+ - uses: envoyproxy/toolshed/gh-actions/fetch@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ url: %{{ steps.url.outputs.value }}
+ path: %{{ runner.temp }}/release.signed
+
+ publish_docs:
+ # For normal commits to Envoy main this will trigger an update in the website repo,
+ # which will update its envoy dep shas, and rebuild the website for the latest docs
+ #
+ # For commits that create a release, it instead triggers an update in the archive repo,
+ # which builds a static version of the docs for the release and commits it to the archive.
+ # In turn the archive repo triggers an update in the website so the new release docs are
+ # included in the published site
+ if: ${{ inputs.trusted && github.repository == 'envoyproxy/envoy' }}
+ runs-on: ubuntu-22.04
+ needs:
+ - publish
+ steps:
+ - uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: appauth
+ with:
+ app_id: ${{ secrets.ENVOY_CI_SYNC_APP_ID }}
+ key: ${{ secrets.ENVOY_CI_SYNC_APP_KEY }}
+ - uses: envoyproxy/toolshed/gh-actions/dispatch@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ ref: main
+ repository: ${{ fromJSON(inputs.request).request.version.dev && 'envoyproxy/envoy-website' || 'envoyproxy/archive' }}
+ token: ${{ steps.appauth.outputs.token }}
+ workflow: envoy-sync.yaml
+ inputs: |
+ commit_sha: ${{ fromJSON(inputs.request).request.version.dev && github.sha || '' }}
diff --git a/.github/workflows/_stage_verify.yml b/.github/workflows/_stage_verify.yml
index a9dcf195c5db..31b12d98666b 100644
--- a/.github/workflows/_stage_verify.yml
+++ b/.github/workflows/_stage_verify.yml
@@ -6,48 +6,84 @@ permissions:
on:
workflow_call:
inputs:
+ request:
+ type: string
+ required: true
trusted:
type: boolean
- default: false
- repo_ref:
- type: string
- given_ref:
- type: string
+ required: true
concurrency:
- group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}-verify
+ group: >-
+ ${{ github.actor != 'trigger-release-envoy[bot]'
+ && github.event.inputs.head_ref
+ || github.run_id
+ }}-${{ github.event.workflow.id }}-verify
cancel-in-progress: true
+
jobs:
verify:
+ permissions:
+ contents: read
+ packages: read
name: ${{ matrix.name || matrix.target }}
+ uses: ./.github/workflows/_run.yml
+ with:
+ cache-build-image:
+ container-command:
+ rbe: ${{ matrix.rbe }}
+ request: ${{ inputs.request }}
+ runs-on: envoy-x64-small
+ steps-pre: ${{ matrix.steps-pre }}
+ source: ${{ matrix.source }}
+ target: ${{ matrix.target }}
+ trusted: ${{ inputs.trusted }}
strategy:
fail-fast: false
matrix:
include:
- - target: verify_examples
- name: examples
- rbe: false
- managed: true
- cache_build_image: ""
- command_prefix: ""
- diskspace_hack: true
- run_pre: ./.github/actions/verify/examples/setup
- run_pre_with: |
- bucket: envoy-${{ inputs.trusted && 'postsubmit' || 'pr' }}
- ref: ${{ inputs.given_ref }}
- env: |
+ - name: examples
+ target: verify_examples
+ source: |
export NO_BUILD_SETUP=1
- uses: ./.github/workflows/_ci.yml
- with:
- target: ${{ matrix.target }}
- rbe: ${{ matrix.rbe }}
- managed: ${{ matrix.managed }}
- cache_build_image: ${{ matrix.cache_build_image }}
- diskspace_hack: ${{ matrix.diskspace_hack }}
- command_prefix: ${{ matrix.command_prefix }}
- run_pre: ${{ matrix.run_pre }}
- run_pre_with: ${{ matrix.run_pre_with }}
- env: ${{ matrix.env }}
- trusted: ${{ inputs.trusted }}
- repo_ref: ${{ ! inputs.trusted && inputs.repo_ref || '' }}
+ rbe: false
+ steps-pre: |
+ - id: url
+ uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ options: -Rr
+ input: >-
+ ${{ inputs.trusted
+ && fromJSON(inputs.request).request.sha
+ || fromJSON(inputs.request).request.ref }}
+ filter: |
+ .[:7] as $sha
+ | if ${{ inputs.trusted }} then
+ "envoy-postsubmit"
+ else
+ "envoy-pr"
+ end
+ | . as $bucket
+ | "https://storage.googleapis.com/\($bucket)/\($sha)"
+ - uses: envoyproxy/toolshed/gh-actions/docker/fetch@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ url: %{{ steps.url.outputs.value }}/docker/envoy.tar
+ variant: dev
+ - uses: envoyproxy/toolshed/gh-actions/docker/fetch@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ url: %{{ steps.url.outputs.value }}/docker/envoy-contrib.tar
+ variant: contrib-dev
+ - uses: envoyproxy/toolshed/gh-actions/docker/fetch@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ url: %{{ steps.url.outputs.value }}/docker/envoy-google-vrp.tar
+ variant: google-vrp-dev
+ - run: docker images | grep envoy
+ shell: bash
+ - run: |
+ # Install expected host packages
+ export DEBIAN_FRONTEND=noninteractive
+ sudo apt-get -qq update -y
+ sudo apt-get -qq install -y --no-install-recommends expect gettext whois
+ pip install -r ./.github/workflows/verify-requirements.txt
+ shell: bash
diff --git a/.github/workflows/_start.yml b/.github/workflows/_start.yml
new file mode 100644
index 000000000000..7f084737130d
--- /dev/null
+++ b/.github/workflows/_start.yml
@@ -0,0 +1,132 @@
+name: Workflow start
+# This workflow is only required for externally triggered jobs that need to manually
+# set the check status for a commit/PR
+
+permissions:
+ contents: read
+
+on:
+ workflow_call:
+ secrets:
+ app-id:
+ required: true
+ app-key:
+ required: true
+ inputs:
+ details-url:
+ type: string
+ default: >-
+ https://github.com/envoyproxy/envoy/tree/main/.github/workflows
+ env:
+ type: string
+ required: true
+ run-summary:
+ type: string
+ default: >-
+ The check will start once any required jobs have completed and a VM becomes available
+ run-title:
+ type: string
+ default: >-
+ Waiting for check ...
+ skipped-summary:
+ type: string
+ default: >-
+ This check was not triggered in this CI run
+ skipped-title:
+ type: string
+ default: >-
+ Check was skipped
+ template-run-text:
+ type: string
+ default: |
+ ## \($icon) Check run pending
+
+ ## Details of the check run will be provided here once it has started.
+
+ ### Check started by
+
+
+env:
+ CI_DEBUG: ${{ (vars.CI_DEBUG || vars.RUNNER_DEBUG) && true || false }}
+
+
+jobs:
+ start:
+ runs-on: ubuntu-22.04
+ steps:
+ - uses: envoyproxy/toolshed/gh-actions/jq@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: check-config
+ name: Prepare check data
+ with:
+ print-result: ${{ fromJSON(env.CI_DEBUG || 'false') && true || false }}
+ input: ${{ inputs.env }}
+ filter: |
+ . as $env
+ | .config.envoy.icon as $icon
+ | {}
+ | .["head_sha"] = $env.request.sha
+ | .details_url = "${{ inputs.details-url }}"
+ | {run: ., skipped: ., request: $env.summary.summary}
+ | .run.output.title = "${{ inputs.run-title }}"
+ | .run.output.summary = "${{ inputs.run-summary }}"
+ | .run.output.text = "${{ inputs.template-run-text }}"
+ | .run.status = "queued"
+ | .skipped.status = "completed"
+ | .skipped.conclusion = "skipped"
+ | .skipped.output.title = "${{ inputs.skipped-title }}"
+ | .skipped.output.summary = "${{ inputs.skipped-summary }}"
+ | .skipped.output.text = ""
+
+ - uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Appauth
+ id: appauth
+ with:
+ app_id: ${{ secrets.app-id }}
+ key: ${{ secrets.app-key }}
+ - uses: envoyproxy/toolshed/gh-actions/github/checks@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Start checks
+ id: checks
+ with:
+ checks: ${{ toJSON(fromJSON(inputs.env).checks) }}
+ config: ${{ steps.check-config.outputs.value }}
+ text-extra: |
+ ## ${{ fromJSON(inputs.env).summary.linked-title }}
+
+ ${{ fromJSON(inputs.env).summary.summary }}
+ token: ${{ steps.appauth.outputs.token }}
+ - uses: envoyproxy/toolshed/gh-actions/json/table@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Summary
+ with:
+ collapse-open: true
+ json: |
+ {"checks": ${{ steps.checks.outputs.checks }},
+ "config": ${{ toJSON(fromJSON(inputs.env).checks) }}}
+ filter: |
+ .checks
+ heading: >-
+ ${{ fromJSON(inputs.env).config.envoy.icon }} Checks
+ mutate-cells: |
+ .cell as $cell
+ | .row as $row
+ | .table as $table
+ | $cell
+ | if ($row | index($cell) == 0) then
+ $table.data.config[$cell].name
+ elif ($table.data.config[$row[0]].action != "SKIP") then
+ "[started](http://github.com/${{ github.repository }}/runs/\($cell))"
+ else "skipped" end
+ output-path: GITHUB_STEP_SUMMARY
+ title: Checks started/skipped
+
+ - uses: envoyproxy/toolshed/gh-actions/github/env/save@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Save env
+ id: data
+ with:
+ env: ${{ inputs.env }}
+ env-filter: |
+ ${{ steps.checks.outputs.checks }} as $checksStarted
+ | .checks
+ |= with_entries(
+ if $checksStarted[.key] != "skipped" then
+ .value["check-id"] = $checksStarted[.key]
+ else . end)
diff --git a/.github/workflows/_workflow-start.yml b/.github/workflows/_workflow-start.yml
deleted file mode 100644
index 0a8944c25c0e..000000000000
--- a/.github/workflows/_workflow-start.yml
+++ /dev/null
@@ -1,50 +0,0 @@
-name: Workflow start
-# This workflow is only required for externally triggered jobs that need to manually
-# set the check status for a commit/PR
-
-permissions:
- contents: read
-
-on:
- workflow_call:
- inputs:
- workflow_name:
- required: true
- type: string
- sha:
- required: true
- type: string
-
-jobs:
- start:
- runs-on: ubuntu-22.04
- permissions:
- statuses: write
- steps:
- - uses: actions/checkout@v4
- - uses: ./.github/actions/env
- id: env
- with:
- check_mobile_run: false
-
- - if: ${{ steps.env.outputs.trusted != 'true' }}
- name: Start status check
- uses: envoyproxy/toolshed/gh-actions/status@actions-v0.0.18
- with:
- authToken: ${{ secrets.GITHUB_TOKEN }}
- context: ${{ inputs.workflow_name }}
- state: 'pending'
- sha: ${{ inputs.sha }}
- target_url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
- - if: ${{ steps.env.outputs.trusted != 'true' }}
- name: Save the SHA
- env:
- STATE_SHA: ${{ inputs.sha }}
- run: |
- mkdir -p ./sha
- echo $STATE_SHA > ./sha/state_sha
- - if: ${{ steps.env.outputs.trusted != 'true' }}
- uses: actions/upload-artifact@v3
- with:
- name: state_sha
- path: sha/
diff --git a/.github/workflows/check-deps.yml b/.github/workflows/check-deps.yml
deleted file mode 100644
index eae216b3a1a0..000000000000
--- a/.github/workflows/check-deps.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-name: Check dependencies
-
-permissions:
- contents: read
-
-on:
- schedule:
- - cron: '0 8 * * *'
- workflow_dispatch:
-
-jobs:
- build:
- runs-on: ubuntu-22.04
- if: >-
- ${{
- github.repository == 'envoyproxy/envoy'
- && (github.event.schedule
- || !contains(github.actor, '[bot]'))
- }}
- permissions:
- contents: read # to fetch code (actions/checkout)
- issues: write # required to open/close dependency issues
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- with:
- ref: ${{ github.head_ref }}
- - name: Set up Python (3.10)
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1
- with:
- python-version: "3.10"
-
- - name: Run dependency checker
- run: |
- TODAY_DATE=$(date -u -I"date")
- export TODAY_DATE
- bazel run //tools/dependency:check --action_env=TODAY_DATE -- -c release_issues --fix
- bazel run //tools/dependency:check --action_env=TODAY_DATE -- -c cves -w error
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/codeql-daily.yml b/.github/workflows/codeql-daily.yml
index cd05ce9ac045..9eba30588dac 100644
--- a/.github/workflows/codeql-daily.yml
+++ b/.github/workflows/codeql-daily.yml
@@ -1,3 +1,8 @@
+name: CodeQL/daily
+
+permissions:
+ contents: read
+
on:
schedule:
- cron: '0 12 * * 4'
@@ -6,11 +11,13 @@ concurrency:
group: ${{ github.head_ref-github.workflow || github.run_id }}
cancel-in-progress: true
+
jobs:
CodeQL-Build:
permissions:
security-events: write # for github/codeql-action/analyze to upload SARIF results
+ pull-requests: read
strategy:
fail-fast: false
@@ -20,20 +27,11 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v4
- with:
- # We must fetch at least the immediate parents so that if this is
- # a pull request then we can checkout the head.
- fetch-depth: 2
-
- # If this run was triggered by a pull request event, then checkout
- # the head of the pull request instead of the merge commit.
- - run: git checkout HEAD^2
- if: ${{ github.event_name == 'pull_request' }}
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@cdcdbb579706841c47f7063dda365e292e5cad7a
+ uses: github/codeql-action/init@cdcdbb579706841c47f7063dda365e292e5cad7a # codeql-bundle-v2.13.4
# Override language selection by uncommenting this and choosing your languages
with:
languages: cpp
@@ -64,4 +62,4 @@ jobs:
git clean -xdf
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@cdcdbb579706841c47f7063dda365e292e5cad7a
+ uses: github/codeql-action/analyze@cdcdbb579706841c47f7063dda365e292e5cad7a # codeql-bundle-v2.13.4
diff --git a/.github/workflows/codeql-push.yml b/.github/workflows/codeql-push.yml
index 0ce0abf6bd33..a3773944f4b2 100644
--- a/.github/workflows/codeql-push.yml
+++ b/.github/workflows/codeql-push.yml
@@ -1,5 +1,8 @@
name: CodeQL
+permissions:
+ contents: read
+
on:
push:
paths:
@@ -12,11 +15,13 @@ concurrency:
group: ${{ github.head_ref-github.workflow || github.run_id }}
cancel-in-progress: true
+
jobs:
CodeQL-Build:
permissions:
security-events: write # for github/codeql-action/analyze to upload SARIF results
+ pull-requests: read
strategy:
fail-fast: false
@@ -25,12 +30,14 @@ jobs:
if: github.repository == 'envoyproxy/envoy'
steps:
- - name: Checkout repository
- uses: actions/checkout@v4
+ - name: Pre-cleanup
+ uses: envoyproxy/toolshed/gh-actions/diskspace@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
with:
- # We must fetch at least the immediate parents so that if this is
- # a pull request then we can checkout the head.
- fetch-depth: 2
+ to_remove: |
+ /usr/local/lib/android
+
+ - name: Checkout repository
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Get build targets
run: |
@@ -38,14 +45,10 @@ jobs:
echo 'BUILD_TARGETS<> $GITHUB_ENV
echo $BUILD_TARGETS_LOCAL >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- # If this run was triggered by a pull request event, then checkout
- # the head of the pull request instead of the merge commit.
- - run: git checkout HEAD^2
- if: ${{ github.event_name == 'pull_request' }}
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@cdcdbb579706841c47f7063dda365e292e5cad7a
+ uses: github/codeql-action/init@cdcdbb579706841c47f7063dda365e292e5cad7a # codeql-bundle-v2.13.4
# Override language selection by uncommenting this and choosing your languages
with:
languages: cpp
@@ -78,4 +81,4 @@ jobs:
- name: Perform CodeQL Analysis
if: env.BUILD_TARGETS != ''
- uses: github/codeql-action/analyze@cdcdbb579706841c47f7063dda365e292e5cad7a
+ uses: github/codeql-action/analyze@cdcdbb579706841c47f7063dda365e292e5cad7a # codeql-bundle-v2.13.4
diff --git a/.github/workflows/command.yml b/.github/workflows/command.yml
new file mode 100644
index 000000000000..fb8d3e144117
--- /dev/null
+++ b/.github/workflows/command.yml
@@ -0,0 +1,57 @@
+name: Command
+
+# NB: **ALL** commands should be permissionless and only use an app token or relevant secrets
+# specific to their requirements!
+permissions:
+ contents: read
+
+on:
+ issue_comment:
+ types:
+ - created
+
+env:
+ CI_DEBUG: ${{ vars.CI_DEBUG }}
+
+
+jobs:
+ # For speed and _security_ only a single command (first matching) will be parsed/run from a comment
+ command:
+ name: Parse and run command
+ runs-on: ubuntu-22.04
+ if: >-
+ ${{
+ github.event.issue.pull_request
+ && (vars.ENVOY_CI
+ || github.repository == 'envoyproxy/envoy')
+ && github.actor != 'repokitteh-read-only[bot]'
+ && github.actor != 'dependabot[bot]'
+ }}
+ steps:
+ - uses: envoyproxy/toolshed/gh-actions/github/command@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Parse command from comment
+ id: command
+ with:
+ text: ${{ github.event.comment.body }}
+ matching: >-
+ ^/(retest)
+
+ # /retest
+ - uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ if: ${{ steps.command.outputs.command == 'retest' }}
+ id: appauth-retest
+ name: Appauth (retest)
+ with:
+ key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app_id: ${{ secrets.ENVOY_CI_APP_ID }}
+ - uses: envoyproxy/toolshed/gh-actions/retest@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ if: ${{ steps.command.outputs.command == 'retest' }}
+ name: Retest
+ with:
+ token: ${{ steps.appauth-retest.outputs.token }}
+ azp_org: cncf
+ azp_token: ${{ secrets.AZP_TOKEN }}
+ comment-id: ${{ github.event.comment.id }}
+ pr-url: ${{ github.event.issue.pull_request.url }}
+ args: ${{ steps.command.outputs.args }}
+ app-owner: ci-envoy
diff --git a/.github/workflows/commands.yml b/.github/workflows/commands.yml
deleted file mode 100644
index 6b964d4bb147..000000000000
--- a/.github/workflows/commands.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-name: commands
-
-on:
- issue_comment:
- types:
- - created
-
-permissions:
- contents: read
-
-jobs:
- retest:
- if: >-
- ${{
- github.event.issue.pull_request
- && github.repository == 'envoyproxy/envoy'
- && github.actor != 'repokitteh-read-only[bot]'
- && github.actor != 'dependabot[bot]'
- }}
- name: Retest
- runs-on: ubuntu-22.04
- permissions:
- pull-requests: write
- actions: write
- checks: read
- steps:
- - uses: envoyproxy/toolshed/gh-actions/retest@actions-v0.0.18
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
- azp_org: cncf
- azp_token: ${{ secrets.AZP_TOKEN }}
diff --git a/.github/workflows/depsreview.yml b/.github/workflows/depsreview.yml
deleted file mode 100644
index 3890070d58d5..000000000000
--- a/.github/workflows/depsreview.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: 'Dependency Review'
-on: [pull_request]
-
-concurrency:
- group: ${{ github.head_ref-github.workflow || github.run_id }}
- cancel-in-progress: true
-
-jobs:
- dependency-review:
- runs-on: ubuntu-22.04
- if: github.repository == 'envoyproxy/envoy'
- steps:
- - name: 'Checkout Repository'
- uses: actions/checkout@v4
- - name: 'Dependency Review'
- uses: actions/dependency-review-action@6c5ccdad469c9f8a2996bfecaec55a631a347034
diff --git a/.github/workflows/envoy-dependency.yml b/.github/workflows/envoy-dependency.yml
new file mode 100644
index 000000000000..623aa1a2a586
--- /dev/null
+++ b/.github/workflows/envoy-dependency.yml
@@ -0,0 +1,246 @@
+name: Envoy/dependency
+
+permissions:
+ contents: read
+
+on:
+ schedule:
+ - cron: '0 8 * * *'
+ workflow_dispatch:
+ inputs:
+ task:
+ description: Select a task
+ required: true
+ default: bazel
+ type: choice
+ options:
+ - bazel
+ - bazel-api
+ - build-image
+ - check
+ dependency:
+ description: Dependency to update (if applicable)
+ version:
+ description: Version to set (optional)
+ pr:
+ type: boolean
+ default: true
+ pr-message:
+ description: Additional message for PR, eg to fix an issue (optional)
+
+concurrency:
+ group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
+ cancel-in-progress: true
+
+env:
+ COMMITTER_NAME: dependency-envoy[bot]
+ COMMITTER_EMAIL: 148525496+dependency-envoy[bot]@users.noreply.github.com
+
+jobs:
+ update-bazel:
+ if: >-
+ ${{
+ github.event_name == 'workflow_dispatch'
+ && startsWith(inputs.task, 'bazel')
+ }}
+ name: >-
+ Update dep
+ (${{ inputs.pr && 'PR/' || '' }}${{ inputs.task == 'bazel' && 'bazel' || 'bazel/api' }}/${{ inputs.dependency }}/${{ inputs.version }})
+ runs-on: ubuntu-22.04
+ steps:
+ - id: appauth
+ name: Appauth
+ uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ app_id: ${{ secrets.ENVOY_CI_DEP_APP_ID }}
+ key: ${{ secrets.ENVOY_CI_DEP_APP_KEY }}
+ - id: checkout
+ name: Checkout Envoy repository
+ uses: envoyproxy/toolshed/gh-actions/github/checkout@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ token: ${{ steps.appauth.outputs.token }}
+ - uses: envoyproxy/toolshed/gh-actions/bson@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: update
+ name: Update dependency (${{ inputs.dependency }})
+ with:
+ input: |
+ dependency: ${{ inputs.dependency }}
+ task: ${{ inputs.task }}
+ version: "${{ inputs.version }}"
+ input-format: yaml
+ filter: |
+ .version as $version
+ | .dependency as $dependency
+ | .task as $task
+ | (try ($version | validate::sha(40) | .[:7])
+ catch $version) as $version_short
+ | {}
+ | if $task == "bazel" then
+ .
+ | .task = "bazel"
+ | .target = "update"
+ else
+ .
+ | .task = "api/bazel"
+ | .target = "api-update"
+ end
+ | .task as $task
+ | .target as $target
+ | ("
+ echo \"Updating(\($task)): \($dependency) -> \($version_short)\"
+ bazel run --config=ci //bazel:\($target) \($dependency) \($version)
+ OUTPUT=\($version_short)
+ " | bash::output)
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - uses: envoyproxy/toolshed/gh-actions/upload/diff@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Upload diff
+ with:
+ name: ${{ inputs.dependency }}-${{ steps.update.outputs.output }}
+ - name: Create a PR
+ if: ${{ inputs.pr }}
+ uses: envoyproxy/toolshed/gh-actions/github/pr@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ base: main
+ body: |
+ Created by Envoy dependency bot for @${{ github.actor }}
+
+ ${{ inputs.pr-message }}
+ branch: >-
+ dependency/${{ inputs.task }}/${{ inputs.dependency }}/${{ steps.update.outputs.output }}
+ commit-message: |
+ ${{ inputs.task == 'bazel' && 'deps' || 'deps/api' }}: Bump `${{ inputs.dependency }}` -> ${{ steps.update.outputs.output }}
+
+ Signed-off-by: ${{ env.COMMITTER_NAME }} <${{ env.COMMITTER_EMAIL }}>
+ committer-name: ${{ env.COMMITTER_NAME }}
+ committer-email: ${{ env.COMMITTER_EMAIL }}
+ title: >-
+ ${{ inputs.task == 'bazel' && 'deps' || 'deps/api' }}: Bump `${{ inputs.dependency }}`
+ -> ${{ steps.update.outputs.output }}
+ GITHUB_TOKEN: ${{ steps.appauth.outputs.token }}
+
+ update-build-image:
+ if: >-
+ ${{
+ github.event_name == 'workflow_dispatch'
+ && github.event.inputs.task == 'build-image'
+ }}
+ name: Update build image (PR)
+ runs-on: ubuntu-22.04
+ steps:
+ - id: appauth
+ name: Appauth
+ uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ app_id: ${{ secrets.ENVOY_CI_DEP_APP_ID }}
+ key: ${{ secrets.ENVOY_CI_DEP_APP_KEY }}
+ - uses: envoyproxy/toolshed/gh-actions/github/checkout@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: checkout
+ name: Checkout Envoy repository
+ with:
+ config: |
+ path: envoy
+ fetch-depth: 0
+ token: ${{ steps.appauth.outputs.token }}
+ - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ name: Checkout Envoy build tools repository
+ with:
+ repository: envoyproxy/envoy-build-tools
+ path: build-tools
+ fetch-depth: 0
+ - run: |
+ shas=(
+ tag
+ sha
+ mobile-sha
+ gcr-sha)
+ for sha in "${shas[@]}"; do
+ current_sha=$(bazel run --config=ci //tools/dependency:build-image-sha "$sha")
+ echo "${sha}=${current_sha}" >> "$GITHUB_OUTPUT"
+ done
+ id: current
+ name: Current SHAs
+ working-directory: envoy
+ - run: |
+ if [[ -z "$CONTAINER_TAG" ]]; then
+ # get current build image version
+ CONTAINER_TAG=$(git log -1 --pretty=format:"%H" "./docker")
+ fi
+ echo "tag=${CONTAINER_TAG}" >> "$GITHUB_OUTPUT"
+ echo "tag_short=${CONTAINER_TAG::7}" >> "$GITHUB_OUTPUT"
+ env:
+ CONTAINER_TAG: ${{ inputs.version }}
+ id: build-tools
+ name: Build image SHA
+ working-directory: build-tools
+
+ - name: Check Docker SHAs
+ id: build-images
+ uses: envoyproxy/toolshed/gh-actions/docker/shas@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ images: |
+ sha: envoyproxy/envoy-build-ubuntu:${{ steps.build-tools.outputs.tag }}
+ mobile-sha: envoyproxy/envoy-build-ubuntu:mobile-${{ steps.build-tools.outputs.tag }}
+ gcr-sha: gcr.io/envoy-ci/envoy-build:${{ steps.build-tools.outputs.tag }}
+
+ - run: |
+ SHA_REPLACE=(
+ "$CURRENT_ENVOY_TAG:$ENVOY_TAG"
+ "$CURRENT_ENVOY_SHA:${{ fromJSON(steps.build-images.outputs.shas).sha }}"
+ "$CURRENT_ENVOY_MOBILE_SHA:${{ fromJSON(steps.build-images.outputs.shas).mobile-sha }}"
+ "$CURRENT_ENVOY_GCR_SHA:${{ fromJSON(steps.build-images.outputs.shas).gcr-sha }}")
+ echo "replace=${SHA_REPLACE[*]}" >> "$GITHUB_OUTPUT"
+ name: Find SHAs to replace
+ id: shas
+ env:
+ ENVOY_TAG: ${{ steps.build-tools.outputs.tag }}
+ CURRENT_ENVOY_TAG: ${{ steps.current.outputs.tag }}
+ CURRENT_ENVOY_SHA: ${{ steps.current.outputs.sha }}
+ CURRENT_ENVOY_MOBILE_SHA: ${{ steps.current.outputs.mobile-sha }}
+ CURRENT_ENVOY_GCR_SHA: ${{ steps.current.outputs.gcr-sha }}
+ - run: |
+ echo "${SHA_REPLACE}" | xargs bazel run --config=ci @envoy_toolshed//sha:replace "${PWD}"
+ env:
+ SHA_REPLACE: ${{ steps.shas.outputs.replace }}
+ name: Update SHAs
+ working-directory: envoy
+ - name: Create a PR
+ uses: envoyproxy/toolshed/gh-actions/github/pr@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ base: main
+ body: Created by Envoy dependency bot
+ branch: dependency-envoy/build-image/latest
+ committer-name: ${{ env.COMMITTER_NAME }}
+ committer-email: ${{ env.COMMITTER_EMAIL }}
+ commit-message: |
+ deps: Bump build images -> `${{ steps.build-tools.outputs.tag_short }}`
+
+ Signed-off-by: ${{ env.COMMITTER_NAME }} <${{ env.COMMITTER_EMAIL }}>
+ title: 'deps: Bump build images -> `${{ steps.build-tools.outputs.tag_short }}`'
+ GITHUB_TOKEN: ${{ steps.appauth.outputs.token }}
+ working-directory: envoy
+
+ scheduled:
+ runs-on: ubuntu-22.04
+ if: >-
+ ${{
+ github.repository == 'envoyproxy/envoy'
+ && (github.event.schedule
+ || (!contains(github.actor, '[bot]')
+ && inputs.task == 'check'))
+ }}
+ permissions:
+ contents: read
+ issues: write
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ - name: Run dependency checker
+ run: |
+ TODAY_DATE=$(date -u -I"date")
+ export TODAY_DATE
+ bazel run --config=ci //tools/dependency:check --action_env=TODAY_DATE -- -c release_issues --fix
+ bazel run --config=ci //tools/dependency:check --action_env=TODAY_DATE -- -c cves -w error
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/envoy-macos.yml b/.github/workflows/envoy-macos.yml
new file mode 100644
index 000000000000..f432d866ee82
--- /dev/null
+++ b/.github/workflows/envoy-macos.yml
@@ -0,0 +1,94 @@
+name: Envoy/macOS
+
+permissions:
+ contents: read
+
+on:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
+
+concurrency:
+ group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
+ cancel-in-progress: true
+
+
+jobs:
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
+ permissions:
+ actions: read
+ contents: read
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ cache-docker: false
+ check-name: macos
+
+ macos:
+ permissions:
+ contents: read
+ packages: read
+ secrets:
+ rbe-key: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}
+ if: ${{ fromJSON(needs.load.outputs.request).run.build-macos }}
+ needs:
+ - load
+ uses: ./.github/workflows/_run.yml
+ name: CI ${{ matrix.name || matrix.target }}
+ with:
+ command:
+ container-command:
+ request: ${{ needs.load.outputs.request }}
+ runs-on: macos-12-xl
+ steps-post:
+ steps-pre: ${{ matrix.steps-pre }}
+ target: ${{ matrix.target }}
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - target: ci/mac_ci_steps.sh
+ name: macOS
+ steps-pre: |
+ - run: ./ci/mac_ci_setup.sh
+ shell: bash
+ name: Setup macos
+ source: |
+ GCP_SERVICE_ACCOUNT_KEY_PATH=$(mktemp -t gcp_service_account.XXXXXX.json)
+ bash -c "echo \"${RBE_KEY}\" | base64 --decode > \"${GCP_SERVICE_ACCOUNT_KEY_PATH}\""
+ _BAZEL_BUILD_EXTRA_OPTIONS=(
+ --remote_download_toplevel
+ --flaky_test_attempts=2
+ --config=cache-google
+ --config=ci
+ --google_credentials=${GCP_SERVICE_ACCOUNT_KEY_PATH})
+ export BAZEL_BUILD_EXTRA_OPTIONS=${_BAZEL_BUILD_EXTRA_OPTIONS[*]}
+
+ request:
+ permissions:
+ actions: read
+ contents: read
+ pull-requests: read
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.build-macos }}
+ needs:
+ - load
+ - macos
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/envoy-prechecks.yml b/.github/workflows/envoy-prechecks.yml
index 67fff9920a8e..bd8400a1a4ae 100644
--- a/.github/workflows/envoy-prechecks.yml
+++ b/.github/workflows/envoy-prechecks.yml
@@ -1,50 +1,71 @@
-name: Envoy/prechecks
+name: Envoy/Prechecks
permissions:
contents: read
on:
- push:
- branches:
- - main
- - release/v*
- pull_request:
- paths:
- - '**/requirements*.txt'
- - '**/go.mod'
- - '**/*.bzl'
- - 'WORKSPACE'
- - '.github/workflows/envoy-prechecks.yml'
- - '.github/workflows/_*.yml'
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
- group: ${{ github.event.inputs.head_ref || github.run_id }}-${{ github.workflow }}
+ group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
+env:
+ CI_DEBUG: ${{ vars.CI_DEBUG }}
+
+
jobs:
- env:
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
+ permissions:
+ actions: read
+ contents: read
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
with:
- prime_build_image: true
- check_mobile_run: false
+ check-name: prechecks
+
+ deps:
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ name: Precheck (${{ fromJSON(needs.load.outputs.request).summary.title }})
+ uses: ./.github/workflows/_precheck_deps.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.precheck-deps }}
+ needs:
+ - load
+ with:
+ dependency-review: ${{ github.event_name == 'pull_request_target' && github.repository == 'envoyproxy/envoy' }}
+ request: ${{ needs.load.outputs.request }}
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
- prechecks:
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.precheck-deps }}
needs:
- - env
- strategy:
- fail-fast: false
- matrix:
- include:
- - target: deps
- rbe: false
- managed: true
- uses: ./.github/workflows/_ci.yml
- name: CI ${{ matrix.target }}
+ - load
+ - deps
+ uses: ./.github/workflows/_finish.yml
with:
- target: ${{ matrix.target }}
- rbe: ${{ matrix.rbe }}
- managed: ${{ matrix.managed }}
- cache_build_image: ${{ needs.env.outputs.build_image_ubuntu }}
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/envoy-publish.yml b/.github/workflows/envoy-publish.yml
index 8bc5d511b01e..593f8ce00455 100644
--- a/.github/workflows/envoy-publish.yml
+++ b/.github/workflows/envoy-publish.yml
@@ -1,4 +1,7 @@
-name: Publish & verify
+# This workflow is triggered by azp currently
+# Once arm/x64 build jobs are shifted to github, this can be triggered
+# by on: workflow_run
+name: Envoy/Publish & verify
permissions:
contents: read
@@ -15,55 +18,85 @@ on:
description: "Ref for grouping PRs"
concurrency:
- group: |
+ group: >-
${{ github.actor != 'trigger-release-envoy[bot]'
&& github.event.inputs.head_ref
|| github.run_id
- }}-${{ github.workflow }}
+ }}-${{ github.event.workflow.id }}
cancel-in-progress: true
jobs:
- env:
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
+ permissions:
+ actions: read
+ contents: read
+ packages: read
+ pull-requests: read
if: >-
${{
- github.repository == 'envoyproxy/envoy'
+ (github.repository == 'envoyproxy/envoy'
+ || vars.ENVOY_CI)
&& (!contains(github.actor, '[bot]')
|| github.actor == 'trigger-workflow-envoy[bot]'
|| github.actor == 'trigger-release-envoy[bot]')
}}
- uses: ./.github/workflows/_env.yml
+ uses: ./.github/workflows/_load.yml
with:
- check_mobile_run: false
- prime_build_image: true
- start_check_status: Verify/examples
- repo_ref: ${{ inputs.ref }}
- repo_ref_sha: ${{ inputs.sha }}
- repo_ref_name: ${{ inputs.head_ref }}
+ check-name: publish
+ head-sha: ${{ inputs.sha }}
+ publish:
+ secrets:
+ ENVOY_CI_SYNC_APP_ID: ${{ fromJSON(needs.load.outputs.trusted) && secrets.ENVOY_CI_SYNC_APP_ID || '' }}
+ ENVOY_CI_SYNC_APP_KEY: ${{ fromJSON(needs.load.outputs.trusted) && secrets.ENVOY_CI_SYNC_APP_KEY || '' }}
+ ENVOY_CI_PUBLISH_APP_ID: ${{ fromJSON(needs.load.outputs.trusted) && secrets.ENVOY_CI_PUBLISH_APP_ID || '' }}
+ ENVOY_CI_PUBLISH_APP_KEY: ${{ fromJSON(needs.load.outputs.trusted) && secrets.ENVOY_CI_PUBLISH_APP_KEY || '' }}
permissions:
contents: read
- statuses: write
-
- publish:
+ packages: read
+ if: ${{ fromJSON(needs.load.outputs.request).run.publish }}
needs:
- - env
+ - load
uses: ./.github/workflows/_stage_publish.yml
- name: Publish ${{ needs.env.outputs.repo_ref_title }}
+ name: Publish
with:
- build_image_ubuntu: ${{ needs.env.outputs.build_image_ubuntu }}
- trusted: ${{ needs.env.outputs.trusted == 'true' && true || false }}
- version_dev: ${{ needs.env.outputs.version_dev }}
- given_ref: ${{ inputs.ref }}
- repo_ref: ${{ needs.env.outputs.trusted != 'true' && inputs.ref || '' }}
- permissions:
- contents: write
+ request: ${{ needs.load.outputs.request }}
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
verify:
+ permissions:
+ contents: read
+ packages: read
+ if: ${{ fromJSON(needs.load.outputs.request).run.verify }}
+ needs:
+ - load
uses: ./.github/workflows/_stage_verify.yml
- name: Verify ${{ needs.env.outputs.repo_ref_title }}
+ name: Verify
+ with:
+ request: ${{ needs.load.outputs.request }}
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && (fromJSON(needs.load.outputs.request).run.publish
+ || fromJSON(needs.load.outputs.request).run.verify) }}
needs:
- - env
+ - load
+ - publish
+ - verify
+ uses: ./.github/workflows/_finish.yml
with:
- trusted: ${{ needs.env.outputs.trusted == 'true' && true || false }}
- given_ref: ${{ inputs.ref }}
- repo_ref: ${{ needs.env.outputs.trusted != 'true' && needs.env.outputs.repo_ref || '' }}
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/envoy-release.yml b/.github/workflows/envoy-release.yml
new file mode 100644
index 000000000000..d4743a7cf45e
--- /dev/null
+++ b/.github/workflows/envoy-release.yml
@@ -0,0 +1,196 @@
+name: Envoy/release
+
+permissions:
+ contents: read
+
+on:
+ release:
+ types:
+ - published
+ branches:
+ - main
+ - release/v*
+ workflow_dispatch:
+ inputs:
+ task:
+ description: Select a task
+ required: true
+ default: create-release
+ type: choice
+ options:
+ - create-release
+ - sync-version-histories
+ pr:
+ type: boolean
+ default: true
+ description: Create a PR
+ pr-message:
+ description: Additional message for PR, eg to fix an issue or additional signoff (optional)
+ wip:
+ type: boolean
+ default: false
+ description: WIP
+ author:
+ description: >-
+ Author: User/email, eg 'Myname '
+ (used by create-release, default: `changelogs/summary.md` last committer)
+ summary:
+ type: boolean
+ default: true
+ description: Use changelog summary (required to publish release)
+
+env:
+ COMMITTER_NAME: publish-envoy[bot]
+ COMMITTER_EMAIL: 140627008+publish-envoy[bot]@users.noreply.github.com
+
+
+jobs:
+ ## Triggerable actions
+
+ # Create a release commit, when landed this will publish.
+ create_release:
+ runs-on: ubuntu-22.04
+ if: github.event_name == 'workflow_dispatch' && inputs.task == 'create-release'
+ name: Create release
+ steps:
+ - id: checkout
+ name: Checkout Envoy repository
+ uses: envoyproxy/toolshed/gh-actions/github/checkout@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ app_id: ${{ secrets.ENVOY_CI_PUBLISH_APP_ID }}
+ app_key: ${{ secrets.ENVOY_CI_PUBLISH_APP_KEY }}
+ committer-name: ${{ env.COMMITTER_NAME }}
+ committer-email: ${{ env.COMMITTER_EMAIL }}
+ strip-prefix: release/
+ - run: |
+ if [[ ! -s "changelogs/summary.md" ]]; then
+ if [[ "${{ inputs.summary }}" == "false" ]]; then
+ echo "::warning::Changelog summary (changelogs/summary.md) is empty!"
+ exit 0
+ fi
+ echo "::error::Changelog summary (changelogs/summary.md) is empty!"
+ exit 1
+ fi
+ COMMITTER=$(git log -n 1 --format='%an <%ae>' -- changelogs/summary.md)
+ echo "committer=${COMMITTER}" >> $GITHUB_OUTPUT
+ id: changelog
+ name: Check changelog summary
+ - if: ${{ inputs.author }}
+ name: Validate signoff email
+ uses: envoyproxy/toolshed/gh-actions/email/validate@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ email: ${{ inputs.author }}
+ - uses: envoyproxy/toolshed/gh-actions/github/run@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Create release
+ with:
+ source: |
+ BAZEL_ARGS=(--)
+ BAZEL_RUN_ARGS=(--config=ci)
+ if [[ -n "${{ inputs.author }}" ]]; then
+ BAZEL_ARGS+=(
+ "--release-author=${{ inputs.author }}"
+ "--signoff=${{ steps.changelog.outputs.committer }}")
+ else
+ BAZEL_ARGS+=("--release-author=${{ steps.changelog.outputs.committer }}")
+ fi
+ command: >-
+ bazel
+ run
+ "${BAZEL_RUN_ARGS[@]}"
+ @envoy_repo//:release
+ "${BAZEL_ARGS[@]}"
+ - run: |
+ VERSION=$(cat VERSION.txt)
+ echo "version=v${VERSION}" >> $GITHUB_OUTPUT
+ name: Release version
+ id: release
+ - name: Create a PR
+ uses: envoyproxy/toolshed/gh-actions/github/pr@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ base: ${{ github.ref_name }}
+ commit: false
+ append-commit-message: true
+ body: |
+ Created by Envoy publish bot for @${{ github.actor }}
+ ${{ ! inputs.summary && ':warning: Created without changelog summary, this will need to be updated before publishing' || '' }}
+ branch: release/create/${{ steps.checkout.outputs.branch-name }}
+ diff-upload: release-${{ steps.checkout.outputs.branch-name }}
+ diff-show: true
+ dry-run: ${{ ! inputs.pr }}
+ wip: ${{ ! inputs.summary || inputs.wip }}
+ title: >-
+ [${{ (! inputs.summary || inputs.wip) && 'WIP/' || '' }}release/${{ steps.branch.outputs.name }}]
+ repo: Release ${{ steps.release.outputs.version }}
+ GITHUB_TOKEN: ${{ steps.checkout.outputs.token }}
+
+ sync_version_histories:
+ runs-on: ubuntu-22.04
+ if: github.event_name == 'workflow_dispatch' && inputs.task == 'sync-version-histories'
+ name: Sync version histories
+ steps:
+ - id: checkout
+ name: Checkout Envoy repository
+ uses: envoyproxy/toolshed/gh-actions/github/checkout@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ app_id: ${{ secrets.ENVOY_CI_PUBLISH_APP_ID }}
+ app_key: ${{ secrets.ENVOY_CI_PUBLISH_APP_KEY }}
+ committer-name: ${{ env.COMMITTER_NAME }}
+ committer-email: ${{ env.COMMITTER_EMAIL }}
+ - uses: envoyproxy/toolshed/gh-actions/github/run@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ name: Sync version histories
+ with:
+ command: >-
+ bazel
+ run
+ --config=ci @envoy_repo//:sync
+ --
+ --signoff="${{ env.COMMITTER_NAME }} <${{ env.COMMITTER_EMAIL }}>"
+ - name: Create a PR
+ uses: envoyproxy/toolshed/gh-actions/github/pr@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ append-commit-message: true
+ base: ${{ github.ref_name }}
+ commit: false
+ body: |
+ Created by Envoy publish bot for @${{ github.actor }}
+ branch: release/sync/${{ steps.checkout.outputs.branch-name }}
+ diff-upload: version-histories-${{ steps.checkout.outputs.branch-name }}
+ diff-show: true
+ dry-run: ${{ ! inputs.pr }}
+ GITHUB_TOKEN: ${{ steps.checkout.outputs.token }}
+ title: >-
+ ${{ steps.branch.outputs.name != 'main' && '[${{ steps.branch.outputs.name }}]' || '' }}
+ repo: Sync version histories
+
+
+ ## Triggered actions
+
+ # On release to `main`:
+ # - fork the branch to a release branch
+ # - add an initial dev commit
+ # - remove anything unwanted
+ # - push branch
+ create_release_branch:
+ runs-on: ubuntu-22.04
+ if: github.event_name == 'release' && endsWith(github.ref, '.0')
+ name: Create release branch
+ steps:
+ - name: Checkout repository
+ uses: envoyproxy/toolshed/gh-actions/github/checkout@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ app_id: ${{ secrets.ENVOY_CI_PUBLISH_APP_ID }}
+ app_key: ${{ secrets.ENVOY_CI_PUBLISH_APP_KEY }}
+ committer-name: ${{ env.COMMITTER_NAME }}
+ committer-email: ${{ env.COMMITTER_EMAIL }}
+ - name: Create release branch
+ run: |
+ version="$(cut -d- -f1 < VERSION.txt | cut -d. -f-2)"
+ release_branch="release/v${version}"
+ commit_sha="$(git rev-parse HEAD)"
+ echo "Creating ${release_branch} from ${commit_sha}"
+ git checkout -b "$release_branch"
+ bazel run @envoy_repo//:dev -- --patch
+ git rm -rf .github/workflows/mobile*yml
+ git commit . -m "repo: Remove mobile ci for release branch"
+ git log
+ git push origin "$release_branch"
diff --git a/.github/workflows/envoy-sync.yml b/.github/workflows/envoy-sync.yml
index 8bb631066f85..d24ad17f2253 100644
--- a/.github/workflows/envoy-sync.yml
+++ b/.github/workflows/envoy-sync.yml
@@ -1,5 +1,8 @@
name: 'Sync downstream'
+permissions:
+ contents: read
+
on:
push:
branches:
@@ -26,11 +29,16 @@ jobs:
- go-control-plane
- envoy-filter-example
- data-plane-api
+ - mobile-website
steps:
- - uses: envoyproxy/toolshed/gh-actions/dispatch@actions-v0.0.18
+ - uses: envoyproxy/toolshed/gh-actions/appauth@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ id: appauth
+ with:
+ app_id: ${{ secrets.ENVOY_CI_SYNC_APP_ID }}
+ key: ${{ secrets.ENVOY_CI_SYNC_APP_KEY }}
+ - uses: envoyproxy/toolshed/gh-actions/dispatch@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
with:
repository: "envoyproxy/${{ matrix.downstream }}"
ref: main
- key: "${{ secrets.ENVOY_CI_SYNC_APP_KEY }}"
+ token: ${{ steps.appauth.outputs.token }}
workflow: envoy-sync.yaml
- app_id: ${{ secrets.ENVOY_CI_SYNC_APP_ID }}
diff --git a/.github/workflows/envoy-windows.yml b/.github/workflows/envoy-windows.yml
new file mode 100644
index 000000000000..17be3ff309e8
--- /dev/null
+++ b/.github/workflows/envoy-windows.yml
@@ -0,0 +1,139 @@
+name: Envoy/Windows
+
+permissions:
+ contents: read
+
+on:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
+
+concurrency:
+ group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
+ cancel-in-progress: true
+
+
+jobs:
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
+ permissions:
+ actions: read
+ contents: read
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ cache-docker: false
+ check-name: windows
+
+ windows:
+ permissions:
+ contents: read
+ packages: read
+ secrets:
+ rbe-key: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}
+ if: ${{ fromJSON(needs.load.outputs.request).run.build-windows }}
+ needs:
+ - load
+ uses: ./.github/workflows/_run.yml
+ name: CI ${{ matrix.name || matrix.target }}
+ with:
+ command:
+ request: ${{ needs.load.outputs.request }}
+ runs-on: envoy-win19-small
+ source: |
+ export ENVOY_SHARED_TMP_DIR="C:\Users\runner\AppData\Local\Temp\bazel-shared"
+ export ENVOY_DOCKER_BUILD_DIR="C:\Users\runner\AppData\Local\Temp"
+ mkdir -p "$ENVOY_SHARED_TMP_DIR"
+ GCP_SERVICE_ACCOUNT_KEY_PATH=$(mktemp -p "${ENVOY_SHARED_TMP_DIR}" -t gcp_service_account.XXXXXX.json)
+ bash -c "echo \"${RBE_KEY}\" | base64 --decode > \"${GCP_SERVICE_ACCOUNT_KEY_PATH}\""
+ _BAZEL_BUILD_EXTRA_OPTIONS=(
+ --config=remote-ci
+ --config=rbe-google
+ --config=remote-msvc-cl
+ --google_credentials=${GCP_SERVICE_ACCOUNT_KEY_PATH}
+ --jobs=75
+ --flaky_test_attempts=2)
+ export BAZEL_BUILD_EXTRA_OPTIONS=${_BAZEL_BUILD_EXTRA_OPTIONS[*]}
+ steps-post:
+ target: ${{ matrix.target }}
+ temp-dir: 'C:\Users\runner\AppData\Local\Temp\bazel-shared'
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ upload-name: windows.release
+ upload-path: 'C:\Users\runner\AppData\Local\Temp\envoy'
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - target: ci/windows_ci_steps.sh
+ name: Windows 2019
+
+ docker:
+ needs:
+ - load
+ - windows
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - target: windows2019
+ name: Windows 2019
+ runs-on: envoy-win19-small
+ build-type: windows
+ image-base: mcr.microsoft.com/windows/servercore
+ image-tag: ltsc2019
+ - target: windows2022
+ name: Windows 2022
+ runs-on: envoy-win22-small
+ build-type: windows-ltsc2022
+ image-base: mcr.microsoft.com/windows/nanoserver
+ image-tag: ltsc2022
+ runs-on: ${{ matrix.runs-on }}
+ steps:
+ - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ with:
+ ref: ${{ needs.load.outputs.repo_ref }}
+ - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ with:
+ name: windows.release
+ - run: |
+ # Convert to Unix-style path so tar doesn't think drive letter is a hostname
+ STAGING_DIR="$(echo $PWD | tr -d ':' | tr '\\' '/')"
+ mkdir -p windows/amd64 && tar zxf "${STAGING_DIR}/envoy_binary.tar.gz" -C ./windows/amd64
+ CI_SHA1=$(git rev-parse head)
+ export CI_SHA1
+ ci/docker_ci.sh
+ shell: bash
+ env:
+ CI_BRANCH: ${{ github.ref }}
+ DOCKERHUB_USERNAME: ${{ fromJSON(needs.load.outputs.trusted) && secrets.DOCKERHUB_USERNAME || '' }}
+ DOCKERHUB_PASSWORD: ${{ fromJSON(needs.load.outputs.trusted) && secrets.DOCKERHUB_PASSWORD || '' }}
+ WINDOWS_BUILD_TYPE: ${{ matrix.build-type }}
+ WINDOWS_IMAGE_BASE: ${{ matrix.image-base }}
+ WINDOWS_IMAGE_TAG: ${{ matrix.image-tag }}
+ request:
+ permissions:
+ actions: read
+ contents: read
+ pull-requests: read
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.build-windows }}
+ needs:
+ - load
+ - windows
+ - docker
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-android_build.yml b/.github/workflows/mobile-android_build.yml
index 24840a28f653..76d8b368fbcc 100644
--- a/.github/workflows/mobile-android_build.yml
+++ b/.github/workflows/mobile-android_build.yml
@@ -1,264 +1,178 @@
-name: android_build
+name: Mobile/Android build
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
-jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
- permissions:
- contents: read
- statuses: write
- androidbuild:
- if: ${{ needs.env.outputs.mobile_android_build == 'true' }}
- needs: env
+jobs:
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
packages: read
- name: android_build
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 90
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu_mobile }}
- env:
- CC: /opt/llvm/bin/clang
- CXX: /opt/llvm/bin/clang++
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Build envoy.aar distributable'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=mobile-remote-ci \
- --fat_apk_cpu=x86_64 \
- --linkopt=-fuse-ld=lld \
- //:android_dist
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-android
- javahelloworld:
- if: ${{ needs.env.outputs.mobile_android_build_all == 'true' }}
- needs:
- - env
- - androidbuild
+ build:
permissions:
contents: read
packages: read
- name: java_helloworld
- runs-on: macos-12
- timeout-minutes: 50
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2
- with:
- java-version: '8'
- java-package: jdk
- architecture: x64
- distribution: zulu
- - run: |
- cd mobile
- ./ci/mac_ci_setup.sh --android
- name: 'Install dependencies'
- - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd
- name: 'Start emulator'
- with:
- timeout_minutes: 10
- max_attempts: 3
- command: ./mobile/ci/start_android_emulator.sh
- # Return to using:
- # cd mobile && ./bazelw mobile-install --fat_apk_cpu=x86_64 --start_app //examples/java/hello_world:hello_envoy
- # When https://github.com/envoyproxy/envoy-mobile/issues/853 is fixed.
- - name: 'Start java app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=mobile-remote-ci-macos \
- --fat_apk_cpu=x86_64 \
- //examples/java/hello_world:hello_envoy
- adb install -r --no-incremental bazel-bin/examples/java/hello_world/hello_envoy.apk
- adb shell am start -n io.envoyproxy.envoymobile.helloenvoy/.MainActivity
- - name: 'Check connectivity'
- run: |
- timeout 30 adb logcat -e "received headers with status 301" -m 1 || {
- echo "Failed checking for headers in adb logcat" >&2
- timeout 30 adb logcat || {
- echo "Failed dumping adb logcat" >&2
- }
- exit 1
- }
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-android }}
+ needs: load
+ name: Build envoy.aar distributable
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ with:
+ args: >-
+ build
+ --config=mobile-remote-release-clang-android
+ //:android_dist
+ container: ${{ fromJSON(needs.load.outputs.build-image).mobile }}
+ diskspace-hack: true
+ request: ${{ needs.load.outputs.request }}
+ timeout-minutes: 90
+ target: build
- kotlinhelloworld:
- if: ${{ needs.env.outputs.mobile_android_build == 'true' }}
- needs:
- - env
- - androidbuild
+ kotlin-hello-world:
permissions:
contents: read
packages: read
- name: kotlin_helloworld
- runs-on: macos-12
- timeout-minutes: 50
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2
- with:
- java-version: '8'
- java-package: jdk
- architecture: x64
- distribution: zulu
- - name: 'Install dependencies'
- run: |
- cd mobile
- ./ci/mac_ci_setup.sh --android
- - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd
- name: 'Start emulator'
- with:
- timeout_minutes: 10
- max_attempts: 3
- command: ./mobile/ci/start_android_emulator.sh
- # Return to using:
- # ./bazelw mobile-install --fat_apk_cpu=x86_64 --start_app //examples/kotlin/hello_world:hello_envoy_kt
- # When https://github.com/envoyproxy/envoy-mobile/issues/853 is fixed.
- - name: 'Start kotlin app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=mobile-remote-ci-macos \
- --fat_apk_cpu=x86_64 \
- //examples/kotlin/hello_world:hello_envoy_kt
- adb install -r --no-incremental bazel-bin/examples/kotlin/hello_world/hello_envoy_kt.apk
- adb shell am start -n io.envoyproxy.envoymobile.helloenvoykotlin/.MainActivity
- - name: 'Check connectivity'
- run: |
- timeout 30 adb logcat -e "received headers with status 200" -m 1 || {
- echo "Failed checking for headers in adb logcat" >&2
- timeout 30 adb logcat || {
- echo "Failed dumping adb logcat" >&2
- }
- exit 1
- }
-
- kotlinbaselineapp:
- if: ${{ needs.env.outputs.mobile_android_build_all == 'true' }}
+ name: kotlin-hello-world
+ uses: ./.github/workflows/_run.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-android }}
needs:
- - env
- - androidbuild
+ - load
+ - build
+ with:
+ command: ./bazelw
+ container-command:
+ # Return to using:
+ # ./bazelw mobile-install --fat_apk_cpu=x86_64 --start_app //examples/kotlin/hello_world:hello_envoy_kt
+ # When https://github.com/envoyproxy/envoy-mobile/issues/853 is fixed.
+ args: >-
+ build
+ --config=mobile-remote-release-clang-android
+ //examples/kotlin/hello_world:hello_envoy_kt
+ request: ${{ needs.load.outputs.request }}
+ target: kotlin-hello-world
+ runs-on: envoy-x64-small
+ steps-pre: |
+ - uses: envoyproxy/toolshed/gh-actions/envoy/android/pre@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ steps-post: |
+ - uses: envoyproxy/toolshed/gh-actions/envoy/android/post@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ apk: bazel-bin/examples/kotlin/hello_world/hello_envoy_kt.apk
+ app: io.envoyproxy.envoymobile.helloenvoykotlin/.MainActivity
+ status: 200
+ timeout-minutes: 50
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ working-directory: mobile
+
+ apps:
permissions:
contents: read
packages: read
- name: kotlin_baseline_app
- runs-on: macos-12
- timeout-minutes: 50
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2
- with:
- java-version: '8'
- java-package: jdk
- architecture: x64
- distribution: zulu
- - name: 'Install dependencies'
- run: |
- cd mobile
- ./ci/mac_ci_setup.sh --android
- - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd
- name: 'Start emulator'
- with:
- timeout_minutes: 10
- max_attempts: 3
- command: ./mobile/ci/start_android_emulator.sh
- # Return to using:
- # ./bazelw mobile-install --fat_apk_cpu=x86_64 --start_app //examples/kotlin/hello_world:hello_envoy_kt
- # When https://github.com/envoyproxy/envoy-mobile/issues/853 is fixed.
- - name: 'Start kotlin app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=mobile-remote-ci-macos \
- --fat_apk_cpu=x86_64 \
+ name: Android apps
+ uses: ./.github/workflows/_run.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-android-all }}
+ needs:
+ - load
+ - build
+ with:
+ command: ./bazelw
+ container-command:
+ args: ${{ matrix.args }}
+ request: ${{ needs.load.outputs.request }}
+ target: ${{ matrix.target }}
+ runs-on: envoy-x64-small
+ steps-pre: |
+ - uses: envoyproxy/toolshed/gh-actions/envoy/android/pre@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ steps-post: ${{ matrix.steps-post }}
+ timeout-minutes: 50
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ working-directory: mobile
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: java-hello-world
+ steps-post: |
+ - uses: envoyproxy/toolshed/gh-actions/envoy/android/post@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ apk: bazel-bin/examples/java/hello_world/hello_envoy.apk
+ app: io.envoyproxy.envoymobile.helloenvoy/.MainActivity
+ status: 301
+ target: java-hello-world
+ args: >-
+ build
+ --config=mobile-remote-release-clang-android
+ //examples/java/hello_world:hello_envoy
+ - name: kotlin-baseline-app
+ # Return to using:
+ # ./bazelw mobile-install --fat_apk_cpu=x86_64 --start_app //examples/kotlin/hello_world:hello_envoy_kt
+ # When https://github.com/envoyproxy/envoy-mobile/issues/853 is fixed.
+ args: >-
+ build
+ --config=mobile-remote-release-clang-android
//test/kotlin/apps/baseline:hello_envoy_kt
- adb install -r --no-incremental bazel-bin/test/kotlin/apps/baseline/hello_envoy_kt.apk
- adb shell am start -n io.envoyproxy.envoymobile.helloenvoybaselinetest/.MainActivity
- - name: 'Check connectivity'
- run: |
- timeout 30 adb logcat -e "received headers with status 301" -m 1 || {
- echo "Failed checking for headers in adb logcat" >&2
- timeout 30 adb logcat || {
- echo "Failed dumping adb logcat" >&2
- }
- exit 1
- }
+ steps-post: |
+ - uses: envoyproxy/toolshed/gh-actions/envoy/android/post@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ apk: bazel-bin/test/kotlin/apps/baseline/hello_envoy_kt.apk
+ app: io.envoyproxy.envoymobile.helloenvoybaselinetest/.MainActivity
+ status: 301
+ target: kotlin-baseline-app
+ - name: kotlin-experimental-app
+ # Return to using:
+ # ./bazelw mobile-install --fat_apk_cpu=x86_64 --start_app //examples/kotlin/hello_world:hello_envoy_kt
+ # When https://github.com/envoyproxy/envoy-mobile/issues/853 is fixed.
+ args: >-
+ build
+ --config=mobile-remote-release-clang-android
+ //test/kotlin/apps/experimental:hello_envoy_kt
+ steps-post: |
+ - uses: envoyproxy/toolshed/gh-actions/envoy/android/post@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ apk: bazel-bin/test/kotlin/apps/experimental/hello_envoy_kt.apk
+ app: io.envoyproxy.envoymobile.helloenvoyexperimentaltest/.MainActivity
+ status: 200
+ target: kotlin-experimental-app
- kotlinexperimentalapp:
- if: ${{ needs.env.outputs.mobile_android_build_all == 'true' }}
- needs:
- - env
- - androidbuild
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
permissions:
+ actions: read
contents: read
- packages: read
- name: kotlin_experimental_app
- runs-on: macos-12
- timeout-minutes: 50
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2
- with:
- java-version: '8'
- java-package: jdk
- architecture: x64
- distribution: zulu
- - name: 'Install dependencies'
- run: |
- cd mobile
- ./ci/mac_ci_setup.sh --android
- - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd
- name: 'Start emulator'
- with:
- timeout_minutes: 10
- max_attempts: 3
- command: ./mobile/ci/start_android_emulator.sh
- # Return to using:
- # ./bazelw mobile-install --fat_apk_cpu=x86_64 --start_app //examples/kotlin/hello_world:hello_envoy_kt
- # When https://github.com/envoyproxy/envoy-mobile/issues/853 is fixed.
- - name: 'Start kotlin app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=mobile-remote-ci-macos \
- --fat_apk_cpu=x86_64 \
- --define envoy_mobile_listener=enabled \
- //test/kotlin/apps/experimental:hello_envoy_kt
- adb install -r --no-incremental bazel-bin/test/kotlin/apps/experimental/hello_envoy_kt.apk
- adb shell am start -n io.envoyproxy.envoymobile.helloenvoyexperimentaltest/.MainActivity
- - name: 'Check connectivity'
- run: |
- timeout 30 adb logcat -e "received headers with status 200" -m 1 || {
- echo "Failed checking for headers in adb logcat" >&2
- timeout 30 adb logcat || {
- echo "Failed dumping adb logcat" >&2
- }
- exit 1
- }
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-android }}
+ needs:
+ - load
+ - build
+ - kotlin-hello-world
+ - apps
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-android_tests.yml b/.github/workflows/mobile-android_tests.yml
index 7f9fde9d270a..d7f4a23b10f7 100644
--- a/.github/workflows/mobile-android_tests.yml
+++ b/.github/workflows/mobile-android_tests.yml
@@ -1,124 +1,84 @@
-name: android_tests
+name: Mobile/Android tests
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
-jobs:
- env:
- uses: ./.github/workflows/_env.yml
- permissions:
- contents: read
- statuses: write
- kotlintestsmac:
- if: ${{ needs.env.outputs.mobile_android_tests == 'true' }}
- needs: env
+jobs:
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
packages: read
- # revert to //test/kotlin/... once fixed
- # https://github.com/envoyproxy/envoy-mobile/issues/1932
- name: kotlin_tests_mac
- runs-on: macos-12
- timeout-minutes: 90
- steps:
- - uses: actions/checkout@v4
- - name: 'Java setup'
- uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2
- with:
- java-version: '8'
- java-package: jdk
- architecture: x64
- distribution: zulu
- - name: 'Install dependencies'
- run: |
- cd mobile
- ./ci/mac_ci_setup.sh
- - name: 'Run Kotlin library tests'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw test \
- --build_tests_only \
- --config=mobile-remote-ci-macos \
- --define=signal_trace=disabled \
- //test/kotlin/io/...
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-android-tests
- javatestsmac:
- if: ${{ needs.env.outputs.mobile_android_tests == 'true' }}
- needs: env
+ linux:
permissions:
contents: read
packages: read
- name: java_tests_mac
- runs-on: macos-12
- timeout-minutes: 120
- steps:
- - uses: actions/checkout@v4
- - name: 'Java setup'
- uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2
- with:
- java-version: '8'
- java-package: jdk
- architecture: x64
- distribution: zulu
- - name: 'Install dependencies'
- run: |
- cd mobile
- ./ci/mac_ci_setup.sh
- - name: 'Run Java library tests'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw test \
- --build_tests_only \
- --config test-android \
- --define envoy_mobile_listener=enabled \
- --config=mobile-remote-ci-macos \
- --define=signal_trace=disabled \
- --define=system-helper=android \
+ name: Android linux tests
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-android-tests }}
+ needs: load
+ with:
+ args: ${{ matrix.args }}
+ container: ${{ fromJSON(needs.load.outputs.build-image).mobile }}
+ diskspace-hack: true
+ request: ${{ needs.load.outputs.request }}
+ target: ${{ matrix.target }}
+ timeout-minutes: 90
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: java
+ target: java_tests_linux
+ args: >-
+ test
+ --config=mobile-remote-ci-android
//test/java/...
+ - name: kotlin
+ target: kotlin_tests_linux
+ args: >-
+ test
+ --config=mobile-remote-ci-android
+ //test/kotlin/...
- kotlintestslinux:
- if: ${{ needs.env.outputs.mobile_android_tests == 'true' }}
- needs: env
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
permissions:
+ actions: read
contents: read
- packages: read
- # Only kotlin tests are executed since with linux:
- # https://github.com/envoyproxy/envoy-mobile/issues/1418.
- name: kotlin_tests_linux
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 90
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu_mobile }}
- env:
- CC: /opt/llvm/bin/clang
- CXX: /opt/llvm/bin/clang++
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Run Kotlin library integration tests'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw test \
- --build_tests_only \
- --config test-android \
- --config=mobile-remote-ci \
- --define=signal_trace=disabled \
- //test/kotlin/...
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-android-tests }}
+ needs:
+ - load
+ - linux
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-asan.yml b/.github/workflows/mobile-asan.yml
index c129661893cd..7d630b70a65c 100644
--- a/.github/workflows/mobile-asan.yml
+++ b/.github/workflows/mobile-asan.yml
@@ -1,50 +1,68 @@
-name: mobile_asan
+name: Mobile/ASAN
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
+
jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-asan
asan:
- if: ${{ needs.env.outputs.mobile_asan == 'true' }}
- needs: env
permissions:
contents: read
packages: read
name: asan
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 180
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu_mobile }}
- env:
- CC: /opt/llvm/bin/clang
- CXX: /opt/llvm/bin/clang++
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Run tests'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw test \
- --test_env=ENVOY_IP_TEST_VERSIONS=v4only \
- --config=mobile-remote-ci-linux-asan \
- //test/common/...
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-asan }}
+ needs: load
+ with:
+ args: >-
+ test
+ --config=mobile-remote-ci-linux-asan
+ //test/common/...
+ request: ${{ needs.load.outputs.request }}
+ target: asan
+ timeout-minutes: 180
+
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-asan }}
+ needs:
+ - load
+ - asan
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-cc_tests.yml b/.github/workflows/mobile-cc_tests.yml
index fdf1f1ed2ce3..506e150440d2 100644
--- a/.github/workflows/mobile-cc_tests.yml
+++ b/.github/workflows/mobile-cc_tests.yml
@@ -1,49 +1,68 @@
-name: mobile_cc_tests
+name: Mobile/CC
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
+
jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-cc
- cctests:
- if: ${{ needs.env.outputs.mobile_cc_tests == 'true' }}
- needs: env
+ cc-tests:
permissions:
contents: read
packages: read
- name: cc_tests
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 120
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu }}
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 'Run tests'
- # Regression test using the new API listener. TODO(#2711) clean up.
- run: |
- cd mobile
- ./bazelw test \
- --action_env=LD_LIBRARY_PATH \
- --copt=-DUSE_API_LISTENER \
- --config=mobile-remote-ci \
- //test/cc/...
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-cc }}
+ needs: load
+ name: cc-tests
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ with:
+ args: >-
+ test
+ --config=mobile-remote-ci-cc
+ //test/cc/...
+ request: ${{ needs.load.outputs.request }}
+ target: cc-tests
+ timeout-minutes: 120
+
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-cc }}
+ needs:
+ - load
+ - cc-tests
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-compile_time_options.yml b/.github/workflows/mobile-compile_time_options.yml
index 4d646072cfb7..9ea03ea16079 100644
--- a/.github/workflows/mobile-compile_time_options.yml
+++ b/.github/workflows/mobile-compile_time_options.yml
@@ -1,150 +1,143 @@
-name: mobile_compile_time_options
+name: Mobile/Compile time options
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
-jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
- permissions:
- contents: read
- statuses: write
- cc_test_no_yaml:
- needs: env
+jobs:
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
packages: read
- name: cc_test_no_yaml
- runs-on: ubuntu-20.04
- timeout-minutes: 120
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu }}
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Running C++ test with YAML disabled'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- # Envoy Mobile build which verifies that the build configuration where YAML is disabled.
- run: |
- cd mobile
- ./bazelw test \
- --config=mobile-remote-ci \
- --define=envoy_yaml=disabled \
- --define=envoy_full_protos=disabled \
- --test_env=ENVOY_IP_TEST_VERSIONS=v4only \
- //test/common/integration:client_integration_test
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-compile-time-options
- cc_test:
- needs: env
+ cc:
permissions:
contents: read
packages: read
- name: cc_test
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 120
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu }}
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Running C++ tests'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- TARGETS=$(bazel query --noshow_progress --noshow_loading_progress //test/cc/... + //test/common/... except //test/common/integration:client_integration_test)
- ./bazelw test \
- --test_output=all \
- --config=mobile-remote-ci \
- --define=signal_trace=disabled \
- --define=envoy_mobile_request_compression=disabled \
- --define=envoy_enable_http_datagrams=disabled \
- --define=google_grpc=disabled \
- --@com_envoyproxy_protoc_gen_validate//bazel:template-flavor= \
- $TARGETS
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-compile-time-options }}
+ needs: load
+ with:
+ args: ${{ matrix.args }}
+ command: ./bazelw
+ entrypoint: ${{ matrix.entrypoint }}
+ request: ${{ needs.load.outputs.request }}
+ target: ${{ matrix.target }}
+ timeout-minutes: 120
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Running C++ test with YAML disabled
+ target: cc-test-no-yaml
+ args: >-
+ build
+ --config=mobile-remote-ci-cc-no-yaml
+ //test/common/integration:client_integration_test
+ - name: Running C++ build with exceptions disabled
+ target: cc-no-build-exceptions
+ args: >-
+ build
+ --config=mobile-remote-ci-cc-no-exceptions
+ //test/performance:test_binary_size //library/cc/...
+ - name: Running C++ test
+ target: cc-test
+ args: >-
+ test
+ --config=mobile-remote-ci-cc-test
+ entrypoint: |
+ #!/bin/bash -e
+ export PATH=/opt/llvm/bin:$PATH
+ cd /source/mobile
+ EXTRA_ARGS=$(bazel query //test/cc/... + //test/common/... except //test/common/integration:client_integration_test)
+ exec "$@" $EXTRA_ARGS
- swift_build:
- if: ${{ needs.env.outputs.mobile_compile_time_options == 'true' }}
- needs: env
+ build:
permissions:
contents: read
packages: read
- name: swift_build
- runs-on: macos-12
- timeout-minutes: 120
- steps:
- - uses: actions/checkout@v4
- - run: |
- cd mobile
- ./ci/mac_ci_setup.sh
- name: 'Install dependencies'
- - name: 'Build Swift library'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw shutdown
- ./bazelw build \
- --config=ios \
- --config=mobile-remote-ci-macos \
- --define=signal_trace=disabled \
- --define=envoy_mobile_request_compression=disabled \
- --define=envoy_mobile_stats_reporting=disabled \
- --define=envoy_mobile_swift_cxx_interop=disabled \
- --define=envoy_enable_http_datagrams=disabled \
- --define=google_grpc=disabled \
- --@envoy//bazel:http3=False \
- --@com_envoyproxy_protoc_gen_validate//bazel:template-flavor= \
+ uses: ./.github/workflows/_run.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-compile-time-options }}
+ needs: load
+ with:
+ args: ${{ matrix.args }}
+ command: ./bazelw
+ container-command:
+ request: ${{ needs.load.outputs.request }}
+ runs-on: macos-12
+ source: ${{ matrix.source }}
+ steps-pre: ${{ matrix.steps-pre }}
+ target: ${{ matrix.target || matrix.name }}
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ timeout-minutes: 120
+ working-directory: mobile
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: kotlin-build
+ args: >-
+ build
+ --config=mobile-remote-ci-macos-kotlin
+ //:android_dist
+ source: |
+ . ./ci/mac_ci_setup.sh --android
+ echo "ANDROID_NDK_HOME=${ANDROID_NDK_HOME}" >> $GITHUB_ENV
+ export ANDROID_NDK_HOME
+ steps-pre: |
+ - uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3.13.0
+ with:
+ java-version: '8'
+ java-package: jdk
+ architecture: x64
+ distribution: zulu
+ - name: swift-build
+ args: >-
+ build
+ --config=mobile-remote-ci-macos-swift
//library/swift:ios_framework
+ source: |
+ ./ci/mac_ci_setup.sh
+ ./bazelw shutdown
- kotlin_build:
- if: ${{ needs.env.outputs.mobile_compile_time_options == 'true' }}
- needs: env
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
permissions:
+ actions: read
contents: read
- packages: read
- name: kotlin_build
- runs-on: macos-12
- timeout-minutes: 120
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2
- with:
- java-version: '8'
- java-package: jdk
- architecture: x64
- distribution: zulu
- - name: 'Install dependencies'
- run: |
- cd mobile
- ./ci/mac_ci_setup.sh --android
- - name: 'Build Kotlin library'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=mobile-remote-ci-macos \
- --fat_apk_cpu=x86_64 \
- --define=signal_trace=disabled \
- --define=envoy_mobile_request_compression=disabled \
- --define=envoy_enable_http_datagrams=disabled \
- --define=google_grpc=disabled \
- --define=envoy_yaml=disabled \
- --@com_envoyproxy_protoc_gen_validate//bazel:template-flavor= \
- //:android_dist
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-compile-time-options }}
+ needs:
+ - load
+ - cc
+ - build
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-core.yml b/.github/workflows/mobile-core.yml
index 02c16ec1fc7b..70de7033c9a0 100644
--- a/.github/workflows/mobile-core.yml
+++ b/.github/workflows/mobile-core.yml
@@ -1,52 +1,67 @@
-name: mobile_core
+name: Mobile/Core
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
+
jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-core
- unittests:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- needs: env
+ unit-tests:
permissions:
contents: read
packages: read
- name: unit_tests
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 120
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu }}
- steps:
- - uses: actions/checkout@v4
- - name: Ensure no listener leaks
- run: rm source/extensions/listener_managers/listener_manager/listener_manager_impl.h
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Run tests'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw test \
- --build_tests_only \
- --action_env=LD_LIBRARY_PATH \
- --test_env=ENVOY_IP_TEST_VERSIONS=v4only \
- --define envoy_mobile_listener=disabled \
- --config=mobile-remote-ci \
- //test/common/...
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-core }}
+ needs: load
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ with:
+ args: >-
+ test
+ --config=mobile-remote-ci-core
+ //test/common/...
+ request: ${{ needs.load.outputs.request }}
+ target: unit-tests
+ timeout-minutes: 120
+
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-core }}
+ needs:
+ - load
+ - unit-tests
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-coverage.yml b/.github/workflows/mobile-coverage.yml
index 6dd105b56c87..160d36e91ed0 100644
--- a/.github/workflows/mobile-coverage.yml
+++ b/.github/workflows/mobile-coverage.yml
@@ -1,59 +1,79 @@
-name: mobile_coverage
+name: Mobile/Coverage
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
+
jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-coverage
coverage:
- if: ${{ needs.env.outputs.mobile_coverage == 'true' }}
- needs: env
permissions:
contents: read
packages: read
- name: coverage
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 120
- defaults:
- run:
- shell: bash
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu }}
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Run coverage'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- export BAZEL_BUILD_OPTION_LIST="--config=mobile-remote-ci-linux-coverage" \
- PATH=/opt/llvm/bin:${PATH} \
- COVERAGE_THRESHOLD=76
- ../test/run_envoy_bazel_coverage.sh //test/common/... //test/cc/...
- - name: 'Package coverage'
- run: |
- cd mobile
- tar -czf coverage.tar.gz generated/coverage
- - name: 'Upload report'
- uses: actions/upload-artifact@v3
- with:
- name: coverage.tar.gz
- path: mobile/coverage.tar.gz
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-coverage }}
+ needs: load
+ name: Running mobile coverage
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ with:
+ args: >-
+ //test/common/...
+ //test/cc/...
+ command: ../test/run_envoy_bazel_coverage.sh
+ request: ${{ needs.load.outputs.request }}
+ source:
+ export COVERAGE_THRESHOLD=76
+ export BAZEL_BUILD_OPTION_LIST=--config=mobile-remote-ci-linux-coverage
+ steps-post: |
+ - name: Package coverage
+ shell: bash
+ run: |
+ cd mobile
+ tar -czf coverage.tar.gz generated/coverage
+ target: mobile-coverage
+ timeout-minutes: 120
+ upload-name: coverage.tar.gz
+ upload-path: mobile/coverage.tar.gz
+
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-coverage }}
+ needs:
+ - load
+ - coverage
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-docs.yml b/.github/workflows/mobile-docs.yml
index d6a3f4e4d82d..0c3268de6bc1 100644
--- a/.github/workflows/mobile-docs.yml
+++ b/.github/workflows/mobile-docs.yml
@@ -1,50 +1,96 @@
-name: mobile_docs
+name: Mobile/Docs
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
+
jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-docs
docs:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- needs: env
+ secrets:
+ ssh-key-extra: ${{ needs.load.outputs.trusted && secrets.ENVOY_MOBILE_WEBSITE_DEPLOY_KEY || '' }}
permissions:
contents: read
packages: read
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 20
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- - name: Generate docs
- run: ./ci/run_envoy_docker.sh 'cd mobile && docs/build.sh'
- - name: Set up deploy key
- if: github.ref == 'refs/heads/main'
- uses: shimataro/ssh-key-action@v2.5.1
- with:
- key: ${{ secrets.ENVOY_MOBILE_WEBSITE_DEPLOY_KEY }}
- known_hosts: unnecessary
- - name: Publish docs
- if: github.ref == 'refs/heads/main'
- run: ./ci/run_envoy_docker.sh 'cd mobile && docs/publish.sh'
- - uses: actions/upload-artifact@v3
- with:
- name: docs
- path: generated/docs
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-docs }}
+ needs: load
+ uses: ./.github/workflows/_run.yml
+ with:
+ args: >-
+ --
+ command: ./docs/build.sh
+ request: ${{ needs.load.outputs.request }}
+ target: mobile-docs
+ cache-build-image: ${{ fromJSON(needs.load.outputs.build-image).build-image }}
+ checkout-extra: |
+ repository: envoy-mobile/envoy-mobile.github.io
+ path: mobile-docs
+ fetch-depth: 0
+ branch: master
+ source: |
+ echo "ENVOY_DOCKER_SOURCE_DIR=/source/mobile" >> $GITHUB_ENV
+ # Path relative to ./mobile directory
+ echo "MOBILE_DOCS_CHECKOUT_DIR=../mobile-docs" >> $GITHUB_ENV
+ steps-post: |
+ - name: Publish docs
+ shell: bash
+ run: |
+ ./ci/run_envoy_docker.sh docs/publish.sh
+ # This step needs to be done outside the container to access ssh creds
+ - name: Push changes
+ # && github.repository == 'envoyproxy/envoy'
+ if: ${{ needs.load.outputs.trusted }}
+ shell: bash
+ run: |
+ git -C mobile-docs status
+ exit 0
+ git -C mobile-docs push origin master
+ timeout-minutes: 20
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ upload-name: docs
+ upload-path: mobile/generated/docs
+
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-docs }}
+ needs:
+ - load
+ - docs
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-format.yml b/.github/workflows/mobile-format.yml
index 9a979da04ea4..3f09ce951087 100644
--- a/.github/workflows/mobile-format.yml
+++ b/.github/workflows/mobile-format.yml
@@ -1,130 +1,158 @@
-name: mobile_format
+name: Mobile/Format
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
-jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
- permissions:
- contents: read
- statuses: write
- formatall:
- if: ${{ needs.env.outputs.mobile_formatting == 'true' }}
- needs: env
+jobs:
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
packages: read
- name: format_all
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 45
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu }}
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Run formatters'
- run: |
- cd mobile
- ./tools/check_format.sh
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-format
- precommit:
- if: ${{ needs.env.outputs.mobile_formatting == 'true' }}
- needs: env
+ container:
permissions:
contents: read
packages: read
- name: precommit
- runs-on: macos-12
- timeout-minutes: 45
- steps:
- - uses: actions/checkout@v4
- - name: 'Install precommit'
- run: brew install pre-commit
- - name: 'Run precommit'
- run: |
- cd mobile
- find mobile/* | pre-commit run --files
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-format }}
+ needs: load
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ with:
+ args: ${{ matrix.args }}
+ command: ${{ matrix.command }}
+ container: ${{ matrix.container }}
+ request: ${{ needs.load.outputs.request }}
+ target: ${{ matrix.target }}
+ timeout-minutes: ${{ matrix.timeout-minutes }}
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Format all
+ args: check
+ command: ./tools/check_format.sh
+ target: format-all
+ timeout-minutes: 45
+ - name: Swift lint
+ args: >-
+ lint
+ --strict
+ command: swiftlint
+ container: >-
+ ghcr.io/realm/swiftlint:0.50.3
+ target: swift-lint
+ timeout-minutes: 45
- swiftlint:
- if: ${{ needs.env.outputs.mobile_formatting == 'true' }}
- needs: env
+ host:
permissions:
contents: read
packages: read
- name: swift_lint
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 5
- container:
- image: ghcr.io/realm/swiftlint:0.50.3
- steps:
- - uses: actions/checkout@v4
- - name: 'Run Swift Lint (SwiftLint)'
- run: swiftlint lint --strict
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-format }}
+ needs: load
+ uses: ./.github/workflows/_run.yml
+ with:
+ args: ${{ matrix.args }}
+ command: ${{ matrix.command }}
+ container-command:
+ request: ${{ needs.load.outputs.request }}
+ runs-on: ${{ matrix.runs-on }}
+ source: ${{ matrix.source }}
+ steps-pre: ${{ matrix.steps-pre }}
+ steps-post: ${{ matrix.steps-post }}
+ target: ${{ matrix.target }}
+ timeout-minutes: ${{ matrix.timeout-minutes }}
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
working-directory: mobile
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Run drstring
+ args: >-
+ run
+ --config=remote-ci
+ @DrString//:drstring check
+ command: ./bazelw
+ runs-on: macos-12
+ source: |
+ export DEVELOPER_DIR=/Applications/Xcode_14.1.app
+ target: drstring
+ timeout-minutes: 10
+ - name: Pre-commit
+ command: pre-commit
+ args: >-
+ run
+ --files
+ mobile/*
+ source: |
+ pip install pre-commit
+ target: pre-commit
+ timeout-minutes: 45
+ - name: Kotlin lint
+ args: >-
+ build
+ --config=mobile-remote-ci-macos
+ //library/kotlin/io/envoyproxy/envoymobile:envoy_lib_lint
+ //examples/kotlin/hello_world:hello_envoy_kt_lint
+ command: ./bazelw
+ runs-on: macos-12
+ source: |
+ export DEVELOPER_DIR=/Applications/Xcode_14.1.app
+ ./ci/mac_ci_setup.sh
+ steps-pre: |
+ - uses: actions/setup-java@0ab4596768b603586c0de567f2430c30f5b0d2b0 # v3.13.0
+ with:
+ java-version: '8'
+ java-package: jdk
+ architecture: x64
+ distribution: zulu
+ steps-post: |
+ - name: Run Kotlin Formatter (ktlint)
+ shell: bash
+ run: |
+ cd mobile
+ ./bazelw build --config=remote-ci kotlin_format
+ target: kotlin-lint
+ timeout-minutes: 10
- drstring:
- if: ${{ needs.env.outputs.mobile_formatting == 'true' }}
- needs: env
- permissions:
- contents: read
- packages: read
- name: drstring
- runs-on: macos-12
- timeout-minutes: 10
- steps:
- - uses: actions/checkout@v4
- - name: 'Run DrString'
- env:
- DEVELOPER_DIR: /Applications/Xcode_14.1.app
- run: |
- cd mobile
- ./bazelw run --config=remote-ci @DrString//:drstring check
-
- kotlinlint:
- if: ${{ needs.env.outputs.mobile_formatting == 'true' }}
- needs: env
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
permissions:
+ actions: read
contents: read
- packages: read
- name: kotlin_lint
- runs-on: macos-12
- timeout-minutes: 45
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2
- with:
- java-version: '8'
- java-package: jdk
- architecture: x64
- distribution: zulu
- - run: |
- cd mobile
- ./ci/mac_ci_setup.sh
- name: 'Install dependencies'
- - name: 'Run Kotlin Lint (Detekt)'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=mobile-remote-ci-macos \
- //library/kotlin/io/envoyproxy/envoymobile:envoy_lib_lint \
- //examples/kotlin/hello_world:hello_envoy_kt_lint
- - name: 'Run Kotlin Formatter (ktlint)'
- run: |
- cd mobile
- ./bazelw build --config=remote-ci kotlin_format
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-format }}
+ needs:
+ - load
+ - container
+ - host
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-ios_build.yml b/.github/workflows/mobile-ios_build.yml
index 3a6ca86f5dba..11625c4a1430 100644
--- a/.github/workflows/mobile-ios_build.yml
+++ b/.github/workflows/mobile-ios_build.yml
@@ -1,312 +1,184 @@
-name: ios_build
+name: Mobile/iOS build
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
-concurrency:
- group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
- cancel-in-progress: true
jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ cache-docker: false
+ check-name: mobile-ios
- iosbuild:
- if: ${{ needs.env.outputs.mobile_ios_build == 'true' }}
- needs: env
+ build:
permissions:
contents: read
packages: read
- name: ios_build
- runs-on: macos-12
- timeout-minutes: 120
- steps:
- - uses: actions/checkout@v4
- - run: |
- cd mobile
+ uses: ./.github/workflows/_run.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-ios }}
+ needs: load
+ name: ios-build
+ with:
+ args: ${{ matrix.args }}
+ command: ./bazelw
+ container-command:
+ request: ${{ needs.load.outputs.request }}
+ runs-on: macos-12
+ source: |
./ci/mac_ci_setup.sh
- name: 'Install dependencies'
- - name: 'Build Envoy.framework distributable'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
./bazelw shutdown
- ./bazelw build \
- --config=ios \
- --config=mobile-remote-ci-macos \
+ steps-post: ${{ matrix.steps-post }}
+ target: ${{ matrix.target }}
+ timeout-minutes: ${{ matrix.timeout-minutes }}
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ working-directory: mobile
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Build Envoy.framework distributable
+ args: >-
+ build
+ --config=mobile-remote-ci-macos-ios
//library/swift:ios_framework
+ target: ios
+ timeout-minutes: 120
- swifthelloworld:
- if: ${{ needs.env.outputs.mobile_ios_build == 'true' }}
- name: swift_helloworld
- needs:
- - env
- - iosbuild
+ hello-world:
permissions:
contents: read
packages: read
- runs-on: macos-12
- timeout-minutes: 50
- steps:
- - uses: actions/checkout@v4
- - run: |
- cd mobile
- ./ci/mac_ci_setup.sh
- name: 'Install dependencies'
- - name: 'Build app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=ios \
- --config=mobile-remote-ci-macos \
- //examples/swift/hello_world:app
- - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd
- name: 'Start simulator'
- with:
- timeout_minutes: 5
- max_attempts: 3
- command: ./mobile/ci/start_ios_simulator.sh
- # Run the app in the background and redirect logs.
- - name: 'Run app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw run \
- --config=ios \
- --config=mobile-remote-ci-macos \
- //examples/swift/hello_world:app &> /tmp/envoy.log &
- - run: |
- sed '/received headers with status 200/q' <(touch /tmp/envoy.log && tail -F /tmp/envoy.log)
- name: 'Check connectivity'
- - run: cat /tmp/envoy.log
- if: ${{ failure() || cancelled() }}
- name: 'Log app run'
-
- swiftbaselineapp:
- if: ${{ needs.env.outputs.mobile_ios_build_all == 'true' }}
+ uses: ./.github/workflows/_run.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-ios }}
needs:
- - env
- - iosbuild
- permissions:
- contents: read
- packages: read
- name: swift_baseline_app
- runs-on: macos-12
- timeout-minutes: 50
- steps:
- - uses: actions/checkout@v4
- - run: |
- cd mobile
+ - load
+ - build
+ name: ios-hello-world
+ with:
+ args: >-
+ build
+ ${{ matrix.args || '--config=mobile-remote-ci-macos-ios' }}
+ ${{ matrix.app }}
+ command: ./bazelw
+ container-command:
+ request: ${{ needs.load.outputs.request }}
+ runs-on: macos-12
+ source: |
./ci/mac_ci_setup.sh
- name: 'Install dependencies'
- - name: 'Build app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=ios \
- --config=mobile-remote-ci-macos \
- //test/swift/apps/baseline:app
- - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd
- name: 'Start simulator'
- with:
- timeout_minutes: 5
- max_attempts: 3
- command: ./mobile/ci/start_ios_simulator.sh
- # Run the app in the background and redirect logs.
- - name: 'Run app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw run \
- --config=ios \
- --config=mobile-remote-ci-macos \
- //test/swift/apps/baseline:app &> /tmp/envoy.log &
- - run: |
- sed '/received headers with status 301/q' <(touch /tmp/envoy.log && tail -F /tmp/envoy.log)
- name: 'Check connectivity'
- - run: cat /tmp/envoy.log
- if: ${{ failure() || cancelled() }}
- name: 'Log app run'
+ ./bazelw shutdown
+ steps-post: |
+ - uses: envoyproxy/toolshed/gh-actions/envoy/ios/post@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ app: ${{ matrix.app }}
+ args: ${{ matrix.args || '--config=mobile-remote-ci-macos-ios' }}
+ expected: received headers with status ${{ matrix.expected-status }}
+ target: ${{ matrix.target }}
+ timeout-minutes: ${{ matrix.timeout-minutes }}
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ working-directory: mobile
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Build swift hello world
+ app: //examples/swift/hello_world:app
+ expected-status: 200
+ target: swift-hello-world
+ timeout-minutes: 50
- swiftexperimentalapp:
- if: ${{ needs.env.outputs.mobile_ios_build_all == 'true' }}
- needs:
- - env
- - iosbuild
+ apps:
permissions:
contents: read
packages: read
- name: swift_experimental_app
- runs-on: macos-12
- timeout-minutes: 50
- steps:
- - uses: actions/checkout@v4
- - run: |
- cd mobile
- ./ci/mac_ci_setup.sh
- name: 'Install dependencies'
- - name: 'Build app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=ios \
- --config=mobile-remote-ci-macos \
- --define=admin_functionality=enabled \
- --define envoy_mobile_listener=enabled \
- //test/swift/apps/experimental:app
- - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd
- name: 'Start simulator'
- with:
- timeout_minutes: 5
- max_attempts: 3
- command: ./mobile/ci/start_ios_simulator.sh
- # Run the app in the background and redirect logs.
- - name: 'Run app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw run \
- --config=ios \
- --config=mobile-remote-ci-macos \
- --define=admin_functionality=enabled \
- --define envoy_mobile_listener=enabled \
- //test/swift/apps/experimental:app &> /tmp/envoy.log &
- - run: |
- sed '/received headers with status 200/q' <(touch /tmp/envoy.log && tail -F /tmp/envoy.log)
- name: 'Check connectivity'
- - run: cat /tmp/envoy.log
- if: ${{ failure() || cancelled() }}
- name: 'Log app run'
-
- swiftasyncawait:
- if: ${{ needs.env.outputs.mobile_ios_build_all == 'true' }}
+ uses: ./.github/workflows/_run.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-ios-all }}
needs:
- - env
- - iosbuild
- permissions:
- contents: read
- packages: read
- name: swift_async_await
- runs-on: macos-12
- timeout-minutes: 50
- steps:
- - uses: actions/checkout@v4
- - run: |
- cd mobile
+ - load
+ - build
+ name: ios-apps
+ with:
+ args: >-
+ build
+ ${{ matrix.args || '--config=mobile-remote-ci-macos-ios' }}
+ ${{ matrix.app }}
+ command: ./bazelw
+ container-command:
+ request: ${{ needs.load.outputs.request }}
+ runs-on: macos-12
+ source: |
./ci/mac_ci_setup.sh
- name: 'Install dependencies'
- - name: 'Build app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=ios \
- --config=mobile-remote-ci-macos \
- //examples/swift/async_await:app
- - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd
- name: 'Start simulator'
- with:
- timeout_minutes: 5
- max_attempts: 3
- command: ./mobile/ci/start_ios_simulator.sh
- # Run the app in the background and redirect logs.
- - name: 'Run app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw run \
- --config=ios \
- --config=mobile-remote-ci-macos \
- //examples/swift/async_await:app &> /tmp/envoy.log &
- - run: |
- checklogs () {
- sed '/\[2\] Uploaded 7 MB of data/q' <(touch /tmp/envoy.log && tail -F /tmp/envoy.log)
- }
- export -f checklogs
- # TODO(phlax): figure if this needs this long
- timeout 5m bash -c checklogs || {
- retcode=$?
- if [[ "$retcode" != 124 ]]; then
- echo "Command failed" >&2
- elif grep -q "Upload failed" /tmp/envoy.log; then
- echo "Upload failed" >&2
- else
- echo "Upload timed out" >&2
- fi
- exit 1
- }
- if: steps.should_run.outputs.run_ci_job == 'true'
- name: 'Check upload succeeded'
- - run: cat /tmp/envoy.log
- if: ${{ failure() || cancelled() }}
- name: 'Log app run'
+ steps-post: |
+ - uses: envoyproxy/toolshed/gh-actions/envoy/ios/post@6b3ddd1e42c252d68fb98973760c0ee1943c9c21 # actions-v0.2.20
+ with:
+ app: ${{ matrix.app }}
+ args: ${{ matrix.args || '--config=mobile-remote-ci-macos-ios' }}
+ expected: >-
+ ${{ matrix.expected
+ || format('received headers with status {0}', matrix.expected-status) }}
+ target: ${{ matrix.target }}
+ timeout-minutes: 50
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ working-directory: mobile
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Build swift baseline app
+ app: //test/swift/apps/baseline:app
+ expected-status: 301
+ target: swift-baseline-app
+ - name: Build swift experimental app
+ args: >-
+ --config=mobile-remote-ci-macos-ios-admin
+ app: //test/swift/apps/experimental:app
+ expected-status: 200
+ target: swift-experimental-app
+ - name: Build swift async await
+ app: //examples/swift/async_await:app
+ expected: >-
+ \[2\] Uploaded 7 MB of data
+ target: swift-async-await
+ - name: Build objc hello world
+ app: //examples/objective-c/hello_world:app
+ expected-status: 301
+ target: objc-hello-world
- objchelloworld:
- if: ${{ needs.env.outputs.mobile_ios_build_all == 'true' }}
- needs:
- - env
- - iosbuild
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
permissions:
+ actions: read
contents: read
- packages: read
- name: objc_helloworld
- runs-on: macos-12
- timeout-minutes: 50
- steps:
- - uses: actions/checkout@v4
- - run: |
- cd mobile
- ./ci/mac_ci_setup.sh
- name: 'Install dependencies'
- - name: 'Build app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=ios \
- --config=mobile-remote-ci-macos \
- //examples/objective-c/hello_world:app
- - uses: nick-fields/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd
- name: 'Start simulator'
- with:
- timeout_minutes: 5
- max_attempts: 3
- command: ./mobile/ci/start_ios_simulator.sh
- # Run the app in the background and redirect logs.
- - name: 'Run app'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw run \
- --config=ios \
- --config=mobile-remote-ci-macos \
- //examples/objective-c/hello_world:app &> /tmp/envoy.log &
- - run: sed '/received headers with status 301/q' <(touch /tmp/envoy.log && tail -F /tmp/envoy.log)
- name: 'Check connectivity'
- - run: cat /tmp/envoy.log
- if: ${{ failure() || cancelled() }}
- name: 'Log app run'
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-ios }}
+ needs:
+ - load
+ - build
+ - hello-world
+ - apps
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-ios_tests.yml b/.github/workflows/mobile-ios_tests.yml
index 9329d26a6133..2c7a0ae173a1 100644
--- a/.github/workflows/mobile-ios_tests.yml
+++ b/.github/workflows/mobile-ios_tests.yml
@@ -1,78 +1,90 @@
-name: ios_tests
+name: Mobile/iOS tests
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
-concurrency:
- group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
- cancel-in-progress: true
jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ cache-docker: false
+ check-name: mobile-ios-tests
- swifttests:
- if: ${{ needs.env.outputs.mobile_ios_tests == 'true' }}
- needs: env
+ tests:
permissions:
contents: read
packages: read
- name: swift_tests
- runs-on: macos-12
- timeout-minutes: 120
- steps:
- - uses: actions/checkout@v4
- - name: 'Install dependencies'
- run: |
- cd mobile
+ uses: ./.github/workflows/_run.yml
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-ios-tests }}
+ needs: load
+ name: ios-tests
+ with:
+ args: ${{ matrix.args }}
+ command: ./bazelw
+ container-command:
+ request: ${{ needs.load.outputs.request }}
+ runs-on: macos-12
+ source: |
./ci/mac_ci_setup.sh
- - name: 'Run swift library tests'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- # runs with the listener enabled due to IdleTimeoutTest not setting up a test backend.
- run: |
- cd mobile
- ./bazelw test \
- --experimental_ui_max_stdouterr_bytes=10485760 \
- --config=ios \
- --define envoy_mobile_listener=enabled \
- --build_tests_only \
- --config=mobile-remote-ci-macos \
+ steps-post: ${{ matrix.steps-post }}
+ target: ${{ matrix.target }}
+ timeout-minutes: ${{ matrix.timeout-minutes }}
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ working-directory: mobile
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: Run swift library tests
+ args: >-
+ test
+ --config=mobile-remote-ci-macos-ios-swift
//test/swift/...
+ target: swift-tests
+ timeout-minutes: 120
+ - name: Run Objective-C library tests
+ args: >-
+ test
+ --config=mobile-remote-ci-macos-ios-obj-c
+ //test/objective-c/...
+ //test/cc/unit:envoy_config_test
+ target: c-and-objc-tests
+ timeout-minutes: 120
- objctests:
- if: ${{ needs.env.outputs.mobile_ios_tests == 'true' }}
- needs: env
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
permissions:
+ actions: read
contents: read
- packages: read
- name: c_and_objc_tests
- runs-on: macos-12
- timeout-minutes: 120
- steps:
- - uses: actions/checkout@v4
- - name: 'Install dependencies'
- run: |
- cd mobile
- ./ci/mac_ci_setup.sh
- - name: 'Run Objective-C library tests'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw test \
- --config=ios \
- --build_tests_only \
- --config=mobile-remote-ci-macos \
- //test/objective-c/... \
- //test/cc/unit:envoy_config_test
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-ios-tests }}
+ needs:
+ - load
+ - tests
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-perf.yml b/.github/workflows/mobile-perf.yml
index be61176bc5ad..807f1eda861b 100644
--- a/.github/workflows/mobile-perf.yml
+++ b/.github/workflows/mobile-perf.yml
@@ -1,113 +1,128 @@
-name: mobile_perf
+name: Mobile/Perf
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
+
jobs:
- sizecurrent:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
packages: read
- name: size_current
- runs-on: ubuntu-22.04
- timeout-minutes: 120
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu }}
- env:
- CC: /opt/llvm/bin/clang
- CXX: /opt/llvm/bin/clang++
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Build test binary'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=mobile-remote-release-clang \
- //test/performance:test_binary_size
- - uses: actions/upload-artifact@v3
- with:
- name: sizecurrent
- path: mobile/bazel-bin/test/performance/test_binary_size
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-perf
- sizemain:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
+ build:
permissions:
contents: read
packages: read
- name: size_main
- runs-on: ubuntu-22.04
- timeout-minutes: 90
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu }}
- env:
- CC: /opt/llvm/bin/clang
- CXX: /opt/llvm/bin/clang++
- steps:
- - uses: actions/checkout@v4
- with:
- ref: main
- - name: Add safe directory
- run: |
- git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Build test binary'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=mobile-remote-release-clang \
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-perf }}
+ needs: load
+ name: Build test binaries
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ with:
+ args: ${{ matrix.args }}
+ command: ./bazelw
+ ref: ${{ matrix.ref }}
+ request: ${{ needs.load.outputs.request }}
+ source: ${{ matrix.source }}
+ container-output: |
+ "bazel-bin/test/performance/test_binary_size": test_binary_size/${{ matrix.target }}
+ target: ${{ matrix.target }}
+ upload-name: ${{ matrix.target }}
+ upload-path: /tmp/container-output/test_binary_size
+ timeout-minutes: 90
+ strategy:
+ matrix:
+ include:
+ - name: Current size
+ args: >-
+ build
+ --config=mobile-remote-release-clang
+ //test/performance:test_binary_size
+ # Ensure files don't leak back into the main binary
+ source: >-
+ rm
+ source/common/listener_manager/listener_manager_impl.h
+ source/server/overload_manager_impl.cc
+ source/common/network/listen_socket_impl.h
+ source/common/network/tcp_listener_impl.h
+ source/server/guarddog_impl.h
+ source/server/watchdog_impl.h
+ source/server/options_impl.cc
+ target: size-current
+ - name: Main size
+ args: >-
+ build
+ --config=mobile-remote-release-clang
//test/performance:test_binary_size
- - uses: actions/upload-artifact@v3
- with:
- name: sizemain
- path: mobile/bazel-bin/test/performance/test_binary_size
+ ref: main
+ target: size-main
- sizecompare:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- needs:
- - sizecurrent
- - sizemain
+ compare:
permissions:
contents: read
packages: read
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-perf }}
+ needs:
+ - load
+ - build
name: size_compare
- runs-on: ubuntu-22.04
- timeout-minutes: 30
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu }}
- steps:
- - uses: actions/checkout@v4
- - uses: actions/download-artifact@v3
- with:
- name: sizecurrent
- path: dist/sizecurrent
- - uses: actions/download-artifact@v3
- with:
- name: sizemain
- path: dist/sizemain
- - name: 'Strip and Zip binary'
- run: |
- ls -lh dist/
- strip -s -o dist/main.stripped dist/sizemain/test_binary_size
- strip -s -o dist/current.stripped dist/sizecurrent/test_binary_size
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ with:
+ args: >-
+ ../dist/main.zip
+ ../dist/current.zip
+ command: ./ci/test_size_regression.sh
+ downloads: |
+ size-current: dist/sizecurrent
+ size-main: dist/sizemain
+ request: ${{ needs.load.outputs.request }}
+ runs-on: ubuntu-22.04
+ source: |
+ strip -s -o dist/main.stripped dist/sizemain/size-main
+ strip -s -o dist/current.stripped dist/sizecurrent/size-current
zip -9 dist/main.zip dist/main.stripped
zip -9 dist/current.zip dist/current.stripped
- - name: 'Test size regression'
- run: |
- cd mobile
- ./ci/test_size_regression.sh ../dist/main.zip ../dist/current.zip
+ target: size-compare
+ timeout-minutes: 30
+
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-perf }}
+ needs:
+ - load
+ - build
+ - compare
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-release.yml b/.github/workflows/mobile-release.yml
index effa6cd4192c..d051821814f0 100644
--- a/.github/workflows/mobile-release.yml
+++ b/.github/workflows/mobile-release.yml
@@ -1,4 +1,4 @@
-name: mobile_release
+name: Mobile/Release
permissions:
contents: read
@@ -11,86 +11,102 @@ on:
jobs:
env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ secrets:
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
contents: read
- statuses: write
+ uses: ./.github/workflows/_load_env.yml
- android_release_artifacts:
+ release:
+ permissions:
+ contents: read
+ packages: read
if: >-
${{
- github.repository == 'envoyproxy/envoy'
+ (github.repository == 'envoyproxy/envoy'
+ || vars.ENVOY_CI)
&& (github.event.schedule
|| !contains(github.actor, '[bot]'))
}}
needs: env
- permissions:
- contents: read
- packages: read
- name: android_release_artifacts
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 120
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu_mobile }}
- env:
- CC: /opt/llvm/bin/clang
- CXX: /opt/llvm/bin/clang++
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Build envoy.aar distributable'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- working-directory: mobile
- run: |
- version="0.5.0.$(date '+%Y%m%d')"
- ./bazelw build \
- --config=mobile-remote-release-clang \
- --remote_header="Authorization=Bearer $GITHUB_TOKEN" \
- --fat_apk_cpu=x86,x86_64,armeabi-v7a,arm64-v8a \
- --define=pom_version="$version" \
- --config=mobile-release-android \
- --linkopt=-fuse-ld=lld \
- //:android_dist
- - name: 'Tar artifacts'
- run: |
- tar -czvf envoy_android_aar_sources.tar.gz \
- bazel-bin/library/kotlin/io/envoyproxy/envoymobile/envoy.aar \
- bazel-bin/library/kotlin/io/envoyproxy/envoymobile/envoy-pom.xml \
- bazel-bin/library/kotlin/io/envoyproxy/envoymobile/envoy-sources.jar \
- bazel-bin/library/kotlin/io/envoyproxy/envoymobile/envoy-javadoc.jar
- working-directory: mobile
- - uses: actions/upload-artifact@v3
- with:
- name: envoy_android_aar_sources
- path: mobile/envoy_android_aar_sources.tar.gz
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ with:
+ args: ${{ matrix.args }}
+ container: ${{ fromJSON(needs.env.outputs.build-image).mobile }}
+ container-output: |
+ "bazel-bin/library/kotlin/io/envoyproxy/envoymobile/${{ matrix.output }}.aar": build/
+ "bazel-bin/library/kotlin/io/envoyproxy/envoymobile/${{ matrix.output }}-pom.xml": build/
+ "bazel-bin/library/kotlin/io/envoyproxy/envoymobile/${{ matrix.output }}-sources.jar": build/
+ "bazel-bin/library/kotlin/io/envoyproxy/envoymobile/${{ matrix.output }}-javadoc.jar": build/
+ request: ${{ needs.env.outputs.request }}
+ steps-pre: |
+ - run: |
+ mkdir /tmp/mobile
+ VERSION="0.5.0.$(date '+%Y%m%d')"
+ echo "VERSION=${VERSION}" >> $GITHUB_ENV
+ shell: bash
+ steps-post: |
+ - run: |
+ mkdir /tmp/output
+ shell: bash
+ - name: Tar artifacts
+ run: >-
+ tar
+ -czhf
+ /tmp/output/${{ matrix.output }}_android_aar_sources.tar.gz
+ -C
+ /tmp/container-output/build
+ .
+ shell: bash
+ target: ${{ matrix.target }}
+ upload-name: ${{ matrix.output }}_android_aar_sources
+ upload-path: /tmp/output/${{ matrix.output }}_android_aar_sources.tar.gz
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - target: android-release
+ args: >-
+ build
+ --config=mobile-remote-release-clang-android-publish
+ --define=pom_version=$VERSION
+ //:android_dist
+ output: envoy
+ - target: xds-release
+ args: >-
+ build
+ --config=mobile-remote-release-clang-android-publish-xds
+ --define=pom_version=$VERSION
+ //:android_xds_dist
+ output: envoy_xds
- android_release_deploy:
- name: android_release_deploy
- needs: android_release_artifacts
+ deploy:
+ needs: release
permissions:
contents: read
packages: read
runs-on: ubuntu-22.04
timeout-minutes: 20
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - output: envoy
+ - output: envoy_xds
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
fetch-depth: 0
- name: Add safe directory
run: git config --global --add safe.directory /__w/envoy/envoy
- - uses: actions/download-artifact@v3
+ - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
- name: envoy_android_aar_sources
+ name: ${{ matrix.output }}_android_aar_sources
path: .
- name: Expand archive
run: |
- tar -xvf envoy_android_aar_sources.tar.gz
- mv bazel-bin/library/kotlin/io/envoyproxy/envoymobile/* .
+ tar -xf ${{ matrix.output }}_android_aar_sources.tar.gz
- name: 'Configure gpg signing'
env:
GPG_KEY: ${{ secrets.EM_GPG_KEY }}
@@ -107,10 +123,10 @@ jobs:
gpg --passphrase $GPG_PASSPHRASE --batch --import signing-key
shred signing-key
- gpg --pinentry-mode=loopback --passphrase $GPG_PASSPHRASE -ab envoy.aar
- gpg --pinentry-mode=loopback --passphrase $GPG_PASSPHRASE -ab envoy-pom.xml
- gpg --pinentry-mode=loopback --passphrase $GPG_PASSPHRASE -ab envoy-javadoc.jar
- gpg --pinentry-mode=loopback --passphrase $GPG_PASSPHRASE -ab envoy-sources.jar
+ gpg --pinentry-mode=loopback --passphrase $GPG_PASSPHRASE -ab ${{ matrix.output }}.aar
+ gpg --pinentry-mode=loopback --passphrase $GPG_PASSPHRASE -ab ${{ matrix.output }}-pom.xml
+ gpg --pinentry-mode=loopback --passphrase $GPG_PASSPHRASE -ab ${{ matrix.output }}-javadoc.jar
+ gpg --pinentry-mode=loopback --passphrase $GPG_PASSPHRASE -ab ${{ matrix.output }}-sources.jar
- name: 'Release to sonatype repository'
env:
READWRITE_USER: ${{ secrets.EM_SONATYPE_USER }}
@@ -120,14 +136,15 @@ jobs:
version="0.5.0.$(date '+%Y%m%d')"
python mobile/ci/sonatype_nexus_upload.py \
--profile_id=$SONATYPE_PROFILE_ID \
+ --artifact_id=${{ matrix.output }} \
--version=$version \
--files \
- envoy.aar \
- envoy-pom.xml \
- envoy-sources.jar \
- envoy-javadoc.jar \
+ ${{ matrix.output }}.aar \
+ ${{ matrix.output }}-pom.xml \
+ ${{ matrix.output }}-sources.jar \
+ ${{ matrix.output }}-javadoc.jar \
--signed_files \
- envoy.aar.asc \
- envoy-pom.xml.asc \
- envoy-sources.jar.asc \
- envoy-javadoc.jar.asc
+ ${{ matrix.output }}.aar.asc \
+ ${{ matrix.output }}-pom.xml.asc \
+ ${{ matrix.output }}-sources.jar.asc \
+ ${{ matrix.output }}-javadoc.jar.asc
diff --git a/.github/workflows/mobile-release_validation.yml b/.github/workflows/mobile-release_validation.yml
index d55af440e54a..94331c4f3ec7 100644
--- a/.github/workflows/mobile-release_validation.yml
+++ b/.github/workflows/mobile-release_validation.yml
@@ -1,59 +1,92 @@
-name: mobile_release_validation
+name: Mobile/Release validation
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
+
jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ cache-docker: false
+ check-name: mobile-release-validation
- validate_swiftpm_example:
- if: ${{ needs.env.outputs.mobile_release_validation == 'true' }}
- needs: env
+ validate-swiftpm-example:
permissions:
contents: read
packages: read
- name: validate_swiftpm_example
- runs-on: macos-12
- timeout-minutes: 120
- steps:
- - uses: actions/checkout@v4
- - run: |
- cd mobile
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-release-validation }}
+ needs: load
+ uses: ./.github/workflows/_run.yml
+ name: Build xframework
+ with:
+ args: >-
+ build
+ --config=mobile-remote-ci-macos-ios
+ //:ios_xcframework
+ command: ./bazelw
+ container-command:
+ request: ${{ needs.load.outputs.request }}
+ runs-on: macos-12
+ source: |
./ci/mac_ci_setup.sh
- name: 'Install dependencies'
- - name: 'Build xcframework'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw build \
- --config=ios \
- --config=mobile-remote-ci-macos \
- //:ios_xcframework
- # Ignore errors: Bad CRC when unzipping large files: https://bbs.archlinux.org/viewtopic.php?id=153011
- - run: |
- unzip mobile/bazel-bin/library/swift/Envoy.xcframework.zip \
- -d mobile/examples/swift/swiftpm/Packages \
- || :
- name: 'Unzip xcframework'
- - run: |
- xcodebuild -project mobile/examples/swift/swiftpm/EnvoySwiftPMExample.xcodeproj \
- -scheme EnvoySwiftPMExample \
- -destination platform="iOS Simulator,name=iPhone 14 Pro Max,OS=16.1"
- name: 'Build app'
- # TODO(jpsim): Run app and inspect logs to validate
+ # Ignore errors: Bad CRC when unzipping large files: https://bbs.archlinux.org/viewtopic.php?id=153011
+ steps-post: |
+ - run: |
+ unzip mobile/bazel-bin/library/swift/Envoy.xcframework.zip \
+ -d mobile/examples/swift/swiftpm/Packages \
+ || :
+ shell: bash
+ name: Unzip xcframework
+ - run: |
+ xcodebuild -project mobile/examples/swift/swiftpm/EnvoySwiftPMExample.xcodeproj \
+ -scheme EnvoySwiftPMExample \
+ -destination platform="iOS Simulator,name=iPhone 14 Pro Max,OS=16.1"
+ shell: bash
+ name: Build app
+ # TODO(jpsim): Run app and inspect logs to validate
+ target: validate-swiftpm-example
+ timeout-minutes: 120
+ trusted: ${{ fromJSON(needs.load.outputs.trusted) }}
+ working-directory: mobile
+
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ pull-requests: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-release-validation }}
+ needs:
+ - load
+ - validate-swiftpm-example
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/mobile-traffic_director.yml b/.github/workflows/mobile-traffic_director.yml
index 7243138c6cf8..4458469f0636 100644
--- a/.github/workflows/mobile-traffic_director.yml
+++ b/.github/workflows/mobile-traffic_director.yml
@@ -4,9 +4,9 @@ permissions:
contents: read
on:
- schedule:
- # Once a day at midnight.
- - cron: '0 0 * * *'
+ # Disabled scheduled runs until https://github.com/envoyproxy/envoy/issues/31416 is resolved.
+ # schedule:
+ # - cron: '0 0 * * *'
# Allows manual triggering in the UI. Makes it easier to test.
workflow_dispatch:
@@ -30,12 +30,15 @@ jobs:
timeout-minutes: 120
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Add safe directory
run: git config --global --add safe.directory /__w/envoy/envoy
- name: 'Run GcpTrafficDirectorIntegrationTest'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GCP_TEST_PROJECT_PROD_API_KEY: ${{ secrets.GCP_TEST_PROJECT_PROD_API_KEY }}
+ # TODO(abeyad): remove this key once we're fully switched over to using the
+ # prod consumer mesh shard.
GCP_TEST_PROJECT_API_KEY: ${{ secrets.GCP_TEST_PROJECT_API_KEY }}
ENVOY_IP_TEST_VERSIONS: v4only
run: |
diff --git a/.github/workflows/mobile-tsan.yml b/.github/workflows/mobile-tsan.yml
index 281445793e70..70dd452bb9c9 100644
--- a/.github/workflows/mobile-tsan.yml
+++ b/.github/workflows/mobile-tsan.yml
@@ -1,50 +1,70 @@
-name: mobile_tsan
+name: Mobile/TSAN
permissions:
contents: read
on:
- push:
- branches:
- - main
- pull_request:
+ workflow_run:
+ workflows:
+ - Request
+ types:
+ - completed
concurrency:
group: ${{ github.head_ref || github.run_id }}-${{ github.workflow }}
cancel-in-progress: true
+
jobs:
- env:
- if: ${{ github.repository == 'envoyproxy/envoy' }}
- uses: ./.github/workflows/_env.yml
+ load:
+ secrets:
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ lock-app-key: ${{ secrets.ENVOY_CI_MUTEX_APP_KEY }}
+ lock-app-id: ${{ secrets.ENVOY_CI_MUTEX_APP_ID }}
permissions:
+ actions: read
contents: read
- statuses: write
+ packages: read
+ pull-requests: read
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ uses: ./.github/workflows/_load.yml
+ with:
+ check-name: mobile-tsan
+ run-id: ${{ github.event.workflow_run.id }}
tsan:
- if: ${{ needs.env.outputs.mobile_tsan == 'true' }}
- needs: env
permissions:
contents: read
packages: read
+ if: ${{ fromJSON(needs.load.outputs.request).run.mobile-tsan }}
+ needs: load
name: tsan
- runs-on: ${{ needs.env.outputs.agent_ubuntu }}
- timeout-minutes: 90
- container:
- image: ${{ needs.env.outputs.build_image_ubuntu_mobile }}
- env:
- CC: /opt/llvm/bin/clang
- CXX: /opt/llvm/bin/clang++
- steps:
- - uses: actions/checkout@v4
- - name: Add safe directory
- run: git config --global --add safe.directory /__w/envoy/envoy
- - name: 'Run tests'
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: |
- cd mobile
- ./bazelw test \
- --test_env=ENVOY_IP_TEST_VERSIONS=v4only \
- --config=mobile-remote-ci-linux-tsan \
- //test/common/...
+ uses: ./.github/workflows/_mobile_container_ci.yml
+ with:
+ args: >-
+ test
+ --config=mobile-remote-ci-linux-tsan
+ //test/common/...
+ //test/cc/...
+ request: ${{ needs.load.outputs.request }}
+ target: tsan
+ timeout-minutes: 90
+
+ request:
+ secrets:
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ permissions:
+ actions: read
+ contents: read
+ if: >-
+ ${{ always()
+ && github.event.workflow_run.conclusion == 'success'
+ && fromJSON(needs.load.outputs.request).run.mobile-tsan }}
+ needs:
+ - load
+ - tsan
+ uses: ./.github/workflows/_finish.yml
+ with:
+ needs: ${{ toJSON(needs) }}
diff --git a/.github/workflows/pr_notifier.yml b/.github/workflows/pr_notifier.yml
index fbb841977a83..95083e527889 100644
--- a/.github/workflows/pr_notifier.yml
+++ b/.github/workflows/pr_notifier.yml
@@ -1,4 +1,5 @@
on:
+ pull_request:
workflow_dispatch:
schedule:
- cron: '0 5 * * 1,2,3,4,5'
@@ -21,18 +22,14 @@ jobs:
|| !contains(github.actor, '[bot]'))
}}
steps:
- - uses: actions/checkout@v4
- - name: Set up Python 3.8
- uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1
- with:
- python-version: '3.8'
- architecture: 'x64'
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install -r ./.github/actions/pr_notifier/requirements.txt
+ - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Notify about PRs
- run: python ./.github/actions/pr_notifier/pr_notifier.py --cron_job
+ run: |
+ ARGS=()
+ if [[ "${{ github.event_name }}" == 'pull_request' ]]; then
+ ARGS+=(--dry_run)
+ fi
+ bazel run //tools/repo:notify -- "${ARGS[@]}"
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/release_branch.yml b/.github/workflows/release_branch.yml
deleted file mode 100644
index 50dd144d6141..000000000000
--- a/.github/workflows/release_branch.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: Create release branch
-
-on:
- release:
- types:
- - published
- branches:
- - main
-
-permissions: read-all
-
-jobs:
- fork_release_branch:
- runs-on: ubuntu-22.04
- if: github.repository == 'envoyproxy/envoy'
- permissions:
- contents: write
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- with:
- ref: ${{ github.head_ref }}
-
- - name: Create release branch
- run: ./ci/create_release_branch.sh
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- reopen_branch:
- runs-on: ubuntu-22.04
- if: github.repository == 'envoyproxy/envoy'
- permissions:
- contents: write
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- with:
- ref: refs/heads/main
-
- - name: Reopen branch
- run: ./ci/reopen_branch.sh
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/request.yml b/.github/workflows/request.yml
new file mode 100644
index 000000000000..a245052db14a
--- /dev/null
+++ b/.github/workflows/request.yml
@@ -0,0 +1,39 @@
+# This file must live on every branch and pass necessary secrets and permissions
+# to initiate the request
+name: Request
+
+permissions:
+ contents: read
+
+on:
+ pull_request_target:
+ push:
+ branches:
+ - main
+ - release/v*
+
+concurrency:
+ group: |
+ ${{ github.head_ref
+ || github.run_id
+ }}-${{ github.workflow }}-request
+ cancel-in-progress: true
+
+
+jobs:
+ request:
+ # For branches this can be pinned to a specific version if required
+ # NB: `uses` cannot be dynamic so it _must_ be hardcoded anywhere it is read
+ uses: envoyproxy/envoy/.github/workflows/_request.yml@main
+ if: ${{ vars.ENVOY_CI || github.repository == 'envoyproxy/envoy' }}
+ permissions:
+ actions: read
+ contents: read
+ # required for engflow/bazel caching (not yet used)
+ packages: read
+ # required to fetch merge commit
+ pull-requests: read
+ secrets:
+ # these are required to start checks
+ app-key: ${{ secrets.ENVOY_CI_APP_KEY }}
+ app-id: ${{ secrets.ENVOY_CI_APP_ID }}
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
new file mode 100644
index 000000000000..8c4bb04b2ba0
--- /dev/null
+++ b/.github/workflows/scorecard.yml
@@ -0,0 +1,45 @@
+name: Scorecard supply-chain security
+on:
+ branch_protection_rule:
+ schedule:
+ - cron: '33 13 * * 5'
+ push:
+ branches:
+ - "main"
+
+permissions:
+ contents: read
+
+
+jobs:
+ analysis:
+ name: Scorecard analysis
+ runs-on: ubuntu-22.04
+ permissions:
+ security-events: write
+ id-token: write
+
+ steps:
+ - name: "Checkout code"
+ uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
+ with:
+ persist-credentials: false
+
+ - name: "Run analysis"
+ uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
+ with:
+ results_file: results.sarif
+ results_format: sarif
+ publish_results: true
+
+ - name: "Upload artifact"
+ uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ with:
+ name: SARIF file
+ path: results.sarif
+ retention-days: 5
+
+ - name: "Upload to code-scanning"
+ uses: github/codeql-action/upload-sarif@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12
+ with:
+ sarif_file: results.sarif
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index d8f8986bae8a..aed93868a897 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -24,7 +24,7 @@ jobs:
steps:
- name: Prune Stale
- uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84
+ uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# Different amounts of days for issues/PRs are not currently supported but there is a PR
diff --git a/.github/workflows/verify-requirements.in b/.github/workflows/verify-requirements.in
new file mode 100644
index 000000000000..87de2e955af3
--- /dev/null
+++ b/.github/workflows/verify-requirements.in
@@ -0,0 +1 @@
+yq
diff --git a/.github/workflows/verify-requirements.txt b/.github/workflows/verify-requirements.txt
new file mode 100644
index 000000000000..2c6e79d55e41
--- /dev/null
+++ b/.github/workflows/verify-requirements.txt
@@ -0,0 +1,74 @@
+#
+# This file is autogenerated by pip-compile with Python 3.11
+# by the following command:
+#
+# pip-compile --allow-unsafe --generate-hashes verify-requirements.in
+#
+argcomplete==3.2.1 \
+ --hash=sha256:30891d87f3c1abe091f2142613c9d33cac84a5e15404489f033b20399b691fec \
+ --hash=sha256:437f67fb9b058da5a090df505ef9be0297c4883993f3f56cb186ff087778cfb4
+ # via yq
+pyyaml==6.0.1 \
+ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \
+ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \
+ --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \
+ --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \
+ --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \
+ --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \
+ --hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \
+ --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \
+ --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \
+ --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \
+ --hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \
+ --hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \
+ --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \
+ --hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \
+ --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \
+ --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \
+ --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \
+ --hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \
+ --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \
+ --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \
+ --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \
+ --hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \
+ --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \
+ --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \
+ --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \
+ --hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \
+ --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \
+ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \
+ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \
+ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \
+ --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \
+ --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \
+ --hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \
+ --hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \
+ --hash=sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c \
+ --hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \
+ --hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \
+ --hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \
+ --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \
+ --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \
+ --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \
+ --hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \
+ --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \
+ --hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \
+ --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \
+ --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \
+ --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \
+ --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \
+ --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \
+ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f
+ # via yq
+tomlkit==0.12.3 \
+ --hash=sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4 \
+ --hash=sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba
+ # via yq
+xmltodict==0.13.0 \
+ --hash=sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56 \
+ --hash=sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852
+ # via yq
+yq==3.2.3 \
+ --hash=sha256:29c8fe1d36b4f64163f4d01314c6ae217539870f610216dee6025dfb5eafafb1 \
+ --hash=sha256:b50c91894dad9894d1d36ea77d5722d5495cac9482d2351e55089360a90709ae
+ # via -r verify-requirements.in
diff --git a/.github/workflows/workflow-complete.yml b/.github/workflows/workflow-complete.yml
deleted file mode 100644
index a2b32c02756e..000000000000
--- a/.github/workflows/workflow-complete.yml
+++ /dev/null
@@ -1,62 +0,0 @@
-name: Workflow complete
-# This workflow is only required for externally triggered jobs that have manually
-# set the check status for a commit/PR
-
-permissions:
- contents: read
-
-on:
- # Do not run untrusted code here
- workflow_run:
- workflows:
- - Publish & verify
- types:
- - completed
-
-jobs:
- complete:
- if: ${{ github.actor == 'trigger-workflow-envoy[bot]' }}
- runs-on: ubuntu-22.04
- permissions:
- statuses: write
- steps:
- - name: 'Download artifact'
- uses: actions/github-script@v6
- with:
- script: |
- let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
- owner: context.repo.owner,
- repo: context.repo.repo,
- run_id: context.payload.workflow_run.id,
- });
- let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
- return artifact.name == "state_sha"
- })[0];
- let download = await github.rest.actions.downloadArtifact({
- owner: context.repo.owner,
- repo: context.repo.repo,
- artifact_id: matchArtifact.id,
- archive_format: 'zip',
- });
- let fs = require('fs');
- fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/state_sha.zip`, Buffer.from(download.data));
-
- - run: |
- set -e
- unzip state_sha.zip
- STATE_SHA="$(cat state_sha)"
- echo "state_sha=$STATE_SHA" >> "$GITHUB_OUTPUT"
- STATE="${{ github.event.workflow_run.conclusion }}"
- if [[ ${STATE} != "success" ]]; then
- STATE=failure
- fi
- echo "state=${STATE}" >> "$GITHUB_OUTPUT"
- id: job
- - name: Complete status check
- uses: envoyproxy/toolshed/gh-actions/status@actions-v0.0.18
- with:
- authToken: ${{ secrets.GITHUB_TOKEN }}
- context: Verify/examples
- state: ${{ steps.job.outputs.state }}
- sha: ${{ steps.job.outputs.state_sha }}
- target_url: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.event.workflow_run.id }}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 39267d2a1ca0..bb9133367ce8 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -32,6 +32,12 @@
"type": "shell",
"command": "EXCLUDE_CONTRIB=true tools/vscode/refresh_compdb.sh",
"problemMatcher": []
+ },
+ {
+ "label": "Local Fix Format",
+ "type": "shell",
+ "command": "tools/local_fix_format.sh -all",
+ "problemMatcher": []
}
]
}
diff --git a/BUILD b/BUILD
index 34c8e7a4b633..e7f90fcd9ea7 100644
--- a/BUILD
+++ b/BUILD
@@ -1,5 +1,12 @@
+load("//bazel:envoy_build_system.bzl", "envoy_package")
+load("//tools/python:namespace.bzl", "envoy_py_namespace")
+
licenses(["notice"]) # Apache 2
+envoy_package()
+
+envoy_py_namespace()
+
exports_files([
"VERSION.txt",
"API_VERSION.txt",
@@ -8,6 +15,7 @@ exports_files([
".coveragerc",
"CODEOWNERS",
"OWNERS.md",
+ ".github/config.yml",
])
alias(
@@ -20,6 +28,12 @@ alias(
actual = "//source/exe:envoy-static.stripped",
)
+filegroup(
+ name = "clang_tidy_config",
+ srcs = [".clang-tidy"],
+ visibility = ["//visibility:public"],
+)
+
# These two definitions exist to help reduce Envoy upstream core code depending on extensions.
# To avoid visibility problems, see notes in source/extensions/extensions_build_config.bzl
#
diff --git a/CODEOWNERS b/CODEOWNERS
index b20d4198f765..dd0f36e455fe 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -26,13 +26,13 @@ extensions/filters/common/original_src @klarose @mattklein123
/*/extensions/filters/http/ext_proc @gbrail @stevenzzzz @tyxia @mattklein123 @htuch @yanavlasov
/*/extensions/filters/common/mutation_rules @gbrail @tyxia @mattklein123 @htuch @yanavlasov
# jwt_authn http filter extension
-/*/extensions/filters/http/jwt_authn @qiwzhang @lizan
+/*/extensions/filters/http/jwt_authn @taoxuy @lizan
# grpc_field_extraction http filter extension
/*/extensions/filters/http/grpc_field_extraction @taoxuy @nareddyt @yanavlasov
# grpc_http1_reverse_bridge http filter extension
/*/extensions/filters/http/grpc_http1_reverse_bridge @zuercher @mattklein123
# alts transport socket extension
-/*/extensions/transport_sockets/alts @adisuissa @yangminzhu
+/*/extensions/transport_sockets/alts @adisuissa @matthewstevenson88
# tcp_stats transport socket extension
/*/extensions/transport_sockets/tcp_stats @ggreenway @mattklein123
# tls transport socket extension
@@ -54,9 +54,9 @@ extensions/filters/common/original_src @klarose @mattklein123
# sni_dynamic_forward_proxy extension
/*/extensions/filters/network/sni_dynamic_forward_proxy @rshriram @lizan
# tracers.datadog extension
-/*/extensions/tracers/datadog @cgilmour @palazzem @mattklein123
+/*/extensions/tracers/datadog @cgilmour @dgoffredo @dmehala @mattklein123
# tracers.xray extension
-/*/extensions/tracers/xray @abaptiste @suniltheta @mattklein123
+/*/extensions/tracers/xray @suniltheta @mattklein123
# tracers.skywalking extension
/*/extensions/tracers/skywalking @wbpcode @lizan @Shikugawa
# tracers.opentelemetry extension
@@ -84,8 +84,8 @@ extensions/filters/common/original_src @klarose @mattklein123
/*/extensions/filters/http/cache @toddmgreer @jmarantz @penguingao @mpwarres @capoferro
/*/extensions/http/cache/simple_http_cache @toddmgreer @jmarantz @penguingao @mpwarres @capoferro
# aws_iam grpc credentials
-/*/extensions/grpc_credentials/aws_iam @lavignes @mattklein123 @tonya11en
-/*/extensions/common/aws @lavignes @mattklein123 @tonya11en
+/*/extensions/grpc_credentials/aws_iam @suniltheta @lavignes @mattklein123
+/*/extensions/common/aws @suniltheta @lavignes @mattklein123
# adaptive concurrency limit extension.
/*/extensions/filters/http/adaptive_concurrency @tonya11en @mattklein123
# admission control extension.
@@ -112,12 +112,12 @@ extensions/filters/common/original_src @klarose @mattklein123
/*/extensions/filters/http/grpc_http1_bridge @jose @mattklein123
/*/extensions/filters/http/fault @rshriram @alyssawilk
/*/extensions/filters/common/fault @rshriram @alyssawilk
-/*/extensions/filters/http/grpc_json_transcoder @qiwzhang @lizan
+/*/extensions/filters/http/grpc_json_transcoder @nareddyt @lizan
/*/extensions/filters/http/router @alyssawilk @mattklein123
/*/extensions/filters/common/rbac/matchers @conqerAtapple @ggreenway @alyssawilk
/*/extensions/filters/http/grpc_web @fengli79 @lizan
/*/extensions/filters/http/grpc_stats @kyessenov @lizan
-/*/extensions/filters/http/connect_grpc_bridge @UNOWNED @UNOWNED
+/*/extensions/filters/http/connect_grpc_bridge @jchadwick-buf @mattklein123
/*/extensions/filters/common/original_src @klarose @mattklein123
/*/extensions/filters/listener/tls_inspector @ggreenway @KBaichoo
/*/extensions/grpc_credentials/example @wozz @htuch
@@ -140,15 +140,15 @@ extensions/filters/common/original_src @klarose @mattklein123
/*/extensions/filters/network/http_connection_manager @alyssawilk @mattklein123
/*/extensions/filters/network/tcp_proxy @alyssawilk @zuercher @ggreenway
/*/extensions/filters/network/echo @htuch @alyssawilk
-/*/extensions/filters/udp/dns_filter @abaptiste @mattklein123 @yanjunxiang-google
+/*/extensions/filters/udp/dns_filter @mattklein123 @yanjunxiang-google
/*/extensions/filters/network/direct_response @kyessenov @zuercher
/*/extensions/filters/udp/udp_proxy @mattklein123 @danzh2010
/*/extensions/clusters/aggregate @yxue @mattklein123
# support for on-demand VHDS requests
/*/extensions/filters/http/on_demand @dmitri-d @htuch @kyessenov
/*/extensions/filters/network/connection_limit @mattklein123 @alyssawilk @delong-coder
-/*/extensions/filters/http/aws_request_signing @derekargueta @mattklein123 @marcomagdy @tonya11en
-/*/extensions/filters/http/aws_lambda @mattklein123 @marcomagdy @lavignes @tonya11en
+/*/extensions/filters/http/aws_request_signing @derekargueta @suniltheta @mattklein123 @marcomagdy
+/*/extensions/filters/http/aws_lambda @suniltheta @mattklein123 @marcomagdy @lavignes
/*/extensions/filters/http/buffer @alyssawilk @mattklein123
/*/extensions/transport_sockets/raw_buffer @alyssawilk @mattklein123
# Watchdog Extensions
@@ -192,9 +192,15 @@ extensions/filters/http/oauth2 @derekargueta @mattklein123
/*/extensions/filters/http/rate_limit_quota @tyxia @yanavlasov
# HTTP Bandwidth Limit
/*/extensions/filters/http/bandwidth_limit @nitgoy @mattklein123 @yanavlasov @tonya11en
+# HTTP Basic Auth
+/*/extensions/filters/http/basic_auth @zhaohuabing @wbpcode
# Original IP detection
/*/extensions/http/original_ip_detection/custom_header @alyssawilk @mattklein123
/*/extensions/http/original_ip_detection/xff @alyssawilk @mattklein123
+# set_filter_state extension
+/*/extensions/filters/common/set_filter_state @kyessenov @wbpcode
+/*/extensions/filters/http/set_filter_state @kyessenov @wbpcode
+/*/extensions/filters/network/set_filter_state @kyessenov @wbpcode
# set_metadata extension
/*/extensions/filters/http/set_metadata @aguinet @mattklein123
# Formatters
@@ -258,7 +264,7 @@ extensions/filters/http/oauth2 @derekargueta @mattklein123
/*/extensions/http/stateful_session/header @ramaraochavali @wbpcode @cpakulski
/*/extensions/filters/http/stateful_session @wbpcode @cpakulski
# tracers
-/*/extensions/tracers/zipkin @wbpcode @Shikugawa @suniltheta @basvanbeek
+/*/extensions/tracers/zipkin @wbpcode @Shikugawa @basvanbeek
/*/extensions/tracers/dynamic_ot @wbpcode @Shikugawa @basvanbeek
/*/extensions/tracers/opencensus @wbpcode @Shikugawa @basvanbeek
/*/extensions/tracers/common @wbpcode @Shikugawa @basvanbeek
@@ -299,10 +305,10 @@ extensions/filters/http/oauth2 @derekargueta @mattklein123
# Dubbo codec
/*/extensions/common/dubbo @wbpcode @lizan
# upstream load balancing policies
-/*/extensions/load_balancing_policies/common @wbpcode @UNOWNED
-/*/extensions/load_balancing_policies/least_request @wbpcode @UNOWNED
-/*/extensions/load_balancing_policies/random @wbpcode @UNOWNED
-/*/extensions/load_balancing_policies/round_robin @wbpcode @UNOWNED
+/*/extensions/load_balancing_policies/common @wbpcode @tonya11en
+/*/extensions/load_balancing_policies/least_request @wbpcode @tonya11en
+/*/extensions/load_balancing_policies/random @wbpcode @tonya11en
+/*/extensions/load_balancing_policies/round_robin @wbpcode @tonya11en
/*/extensions/load_balancing_policies/ring_hash @wbpcode @UNOWNED
/*/extensions/load_balancing_policies/maglev @wbpcode @UNOWNED
/*/extensions/load_balancing_policies/subset @wbpcode @zuercher
@@ -321,9 +327,15 @@ extensions/filters/http/oauth2 @derekargueta @mattklein123
/*/extensions/health_check/event_sinks/file @botengyao @yanavlasov
# IP Geolocation
/*/extensions/filters/http/geoip @nezdolik @ravenblackx
+/*/extensions/geoip_providers/common @nezdolik @ravenblackx
+# Maxmind geolocation provider
+/*/extensions/geoip_providers/maxmind @nezdolik @ravenblackx
/*/extensions/health_checkers/common @zuercher @botengyao
+# Lua cluster specifier
+/*/extensions/router/cluster_specifiers/lua @StarryVae @wbpcode
+
# Intentionally exempt (treated as core code)
/*/extensions/filters/common @UNOWNED @UNOWNED
/*/extensions/filters/http/common @UNOWNED @UNOWNED
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6ff4a8d508cc..a1f77ded5e73 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -237,18 +237,19 @@ Please note that if adding a runtime guarded feature, your [release notes](chang
* Typically we try to turn around reviews within one business day.
* See [OWNERS.md](OWNERS.md) for the current list of maintainers.
* It is generally expected that a senior maintainer should review every PR to
- core code. Test-only or extension-only changes need only be reviewed by a
- maintainer, or senior extension maintainer.
+ core code. Changes which only touch tests, extensions, tools, docs or comments
+ need only be reviewed by a maintainer, or senior extension maintainer.
* It is also generally expected that a "domain expert" for the code the PR touches should review the
PR. This person does not necessarily need to have commit access.
-* The previous two points generally mean that every PR should have two approvals. (Exceptions can
- be made by the senior maintainers).
-* The above rules may be waived for PRs which only update docs or comments, or trivial changes to
- tests and tools (where trivial is decided by the maintainer in question).
-* In general, we should also attempt to make sure that at least one of the approvals is *from an
+* For new extensions (contrib or otherwise) and features, at least one of the approvals should be *from an
organization different from the PR author.* E.g., if Lyft authors a PR, at least one approver
should be from an organization other than Lyft. This helps us make sure that we aren't putting
organization specific shortcuts into the code.
+ new HTTP/3 features are largely exempt from cross-company approvals as all of the
+ area experts work at a single company, but HTTP/3 changes which impact general
+ functionality still merit a cross-company check.
+* contrib extensions do not need senior maintainer or maintainer review only contrib owner review and
+ a maintainer stamp to merge.
* If there is a question on who should review a PR please discuss in Slack.
* Anyone is welcome to review any PR that they want, whether they are a maintainer or not.
* Please make sure that the PR title, commit message, and description are updated if the PR changes
diff --git a/OWNERS.md b/OWNERS.md
index bf0a1a65fb05..51a50bab403d 100644
--- a/OWNERS.md
+++ b/OWNERS.md
@@ -29,6 +29,8 @@ routing PRs, questions, etc. to the right place.
* Docs, tooling, CI, containers and sandbox examples
* Ryan Hamilton ([RyanTheOptimist](https://github.com/ryantheoptimist)) (rch@google.com)
* HTTP/3, upstream connection management, Envoy Mobile.
+* Baiping Wang ([wbpcode](https://github.com/wbpcode)) (wbphub@live.com)
+ * Upstream, LB, tracing, logging, performance, and generic/dubbo proxy.
# Maintainers
@@ -38,8 +40,6 @@ routing PRs, questions, etc. to the right place.
* xDS APIs, configuration, control plane, fuzzing.
* Kevin Baichoo ([KBaichoo](https://github.com/KBaichoo)) (kbaichoo@google.com)
* Data plane, overload management, flow control.
-* Baiping Wang ([wbpcode](https://github.com/wbpcode)) (wbphub@live.com)
- * Upstream, LB, tracing, logging, performance, and generic/dubbo proxy.
* Keith Smiley ([keith](https://github.com/keith)) (keithbsmiley@gmail.com)
* Bazel, CI, compilers, linkers, general build issues, etc.
* Kuat Yessenov ([kyessenov](https://github.com/kyessenov)) (kuat@google.com)
@@ -48,6 +48,8 @@ routing PRs, questions, etc. to the right place.
* Caches, file filters, and file I/O.
* Alex Xu ([soulxu](https://github.com/soulxu)) (hejie.xu@intel.com)
* Listeners, iouring, data plane.
+* Kateryna Nezdolii ([nezdolik](https://github.com/nezdolik)) (kateryna.nezdolii@gmail.com)
+ * Load balancing, GeoIP, overload manager, security.
# Envoy mobile maintainers
diff --git a/README.md b/README.md
index b3325ef8bdb1..5d292c80d5dd 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,7 @@ involved and how Envoy plays a role, read the CNCF
[announcement](https://www.cncf.io/blog/2017/09/13/cncf-hosts-envoy/).
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1266/badge)](https://bestpractices.coreinfrastructure.org/projects/1266)
+[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/envoyproxy/envoy/badge)](https://api.securityscorecards.dev/projects/github.com/envoyproxy/envoy)
[![Azure Pipelines](https://dev.azure.com/cncf/envoy/_apis/build/status/11?branchName=main)](https://dev.azure.com/cncf/envoy/_build/latest?definitionId=11&branchName=main)
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/envoy.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:envoy)
[![Jenkins](https://powerci.osuosl.org/buildStatus/icon?job=build-envoy-static-master&subject=ppc64le%20build)](https://powerci.osuosl.org/job/build-envoy-static-master/)
diff --git a/RELEASES.md b/RELEASES.md
index bdd6ca20bdd9..564a0bfb1d79 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -20,13 +20,6 @@ Major releases happen quartely and follow the schedule below. Security fixes typ
quarterly as well, but this depends on the number and severity of security bugs. Other releases
are ad-hoc and best-effort.
-### Hand-off
-
-Hand-off to the maintainers of stable releases happens after Envoy maintainers release a new
-version from the `main` branch by creating a `vX.Y.0` tag and a corresponding `release/vX.Y`
-branch, with merge permissions given to the release manager of stable releases, and CI configured
-to execute tests on it.
-
### Security releases
Critical security fixes are owned by the Envoy security team, which provides fixes for the
@@ -97,7 +90,8 @@ deadline of 3 weeks.
| 1.25.0 | 2023/01/15 | 2023/01/18 | +3 days | 2024/01/18 |
| 1.26.0 | 2023/04/15 | 2023/04/18 | +3 days | 2024/04/18 |
| 1.27.0 | 2023/07/14 | 2023/07/27 | +13 days | 2024/07/27 |
-| 1.28.0 | 2023/10/16 | | | |
+| 1.28.0 | 2023/10/16 | 2023/10/19 | +3 days | 2024/10/19 |
+| 1.29.0 | 2024/01/16 | | | |
### Cutting a major release
@@ -121,15 +115,7 @@ deadline of 3 weeks.
* Get a review and merge.
* Create a pull request with the commit created by the project tool and **wait for tests to
pass**.
-* Once the tests have passed, and the PR has landed, CI will automatically create the tagged release.
-* From the envoy [landing page](https://github.com/envoyproxy/envoy) use the branch drop-down to create a branch
- using the minor version from the tagged release, e.g. `1.6.0` -> `release/v1.6`. It will be used for the
- [stable releases](RELEASES.md#stable-releases).
-* Tagging will kick off another run of [AZP postsubmit](https://dev.azure.com/cncf/envoy/_build?definitionId=11). Monitor that
- tag build to make sure that the final docker images get pushed along with
- the final docs and [release assets](https://github.com/envoyproxy/envoy/releases). The final documentation will end up in the
- [envoy-website repository](https://github.com/envoyproxy/envoy-website/tree/main/docs/envoy).
-* Update the website ([example PR](https://github.com/envoyproxy/envoy-website/pull/148)) with the new release version.
+* Once the tests have passed, and the PR has landed, CI will automatically create the tagged release and corresponding release branch.
* Craft a witty/uplifting email and send it to all the email aliases: envoy-announce@ envoy-users@ envoy-dev@ envoy-maintainers
* Make sure we tweet the new release: either have Matt do it or email social@cncf.io and ask them to do an Envoy account
post.
diff --git a/SECURITY.md b/SECURITY.md
index dceab5e0a447..a472a952f661 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -465,11 +465,11 @@ and security team to ensure they still qualify for inclusion on the list.
| Organization | End User | Last Review |
|:-------------:|:--------:|:-----------:|
-| Aspen Mesh | No | 06/21 |
| AWS | No | 06/21 |
| Cilium | No | 06/21 |
| Cloud Foundry | No | 06/21 |
| Datawire | No | 06/21 |
+| F5 | No | 06/21 |
| Google | No | 06/21 |
| IBM | No | 06/21 |
| Istio | No | 06/21 |
diff --git a/STYLE.md b/STYLE.md
index 69de7b6e5cb3..42d255be31a1 100644
--- a/STYLE.md
+++ b/STYLE.md
@@ -18,7 +18,7 @@
# Documentation
-* If you are modifying the data plane structually, please keep the [Life of a
+* If you are modifying the data plane structurally, please keep the [Life of a
Request](https://www.envoyproxy.io/docs/envoy/latest/intro/life_of_a_request) documentation up-to-date.
# Deviations from Google C++ style guidelines
diff --git a/VERSION.txt b/VERSION.txt
index 364d77fabb84..ac3f6e1415bf 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-1.28.0-dev
+1.29.0-dev
diff --git a/api/API_VERSIONING.md b/api/API_VERSIONING.md
index 8add2227291a..726d1d036632 100644
--- a/api/API_VERSIONING.md
+++ b/api/API_VERSIONING.md
@@ -87,7 +87,7 @@ no field will ever be removed nor will Envoy ever remove the implementation for
field.
**NOTE**: Client implementations are free to output additional warnings about field usage beyond
-deprecation, if for example, the use of the continued use of the field is deemed a substantial
+deprecation, if for example, the continued use of the field is deemed a substantial
security risk. Individual client versions are also free to stop supporting fields if they want to,
though Envoy Proxy (as an xDS client) commits to never doing so.
diff --git a/api/BUILD b/api/BUILD
index 37d46fa349dd..16a0037cf8e8 100644
--- a/api/BUILD
+++ b/api/BUILD
@@ -72,6 +72,7 @@ proto_library(
name = "v3_protos",
visibility = ["//visibility:public"],
deps = [
+ "//contrib/envoy/extensions/compression/qatzip/compressor/v3alpha:pkg",
"//contrib/envoy/extensions/filters/http/checksum/v3alpha:pkg",
"//contrib/envoy/extensions/filters/http/dynamo/v3:pkg",
"//contrib/envoy/extensions/filters/http/golang/v3alpha:pkg",
@@ -81,6 +82,7 @@ proto_library(
"//contrib/envoy/extensions/filters/network/client_ssl_auth/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/action/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3:pkg",
+ "//contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/router/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/v3:pkg",
@@ -156,12 +158,14 @@ proto_library(
"//envoy/extensions/filters/common/dependency/v3:pkg",
"//envoy/extensions/filters/common/fault/v3:pkg",
"//envoy/extensions/filters/common/matcher/action/v3:pkg",
+ "//envoy/extensions/filters/common/set_filter_state/v3:pkg",
"//envoy/extensions/filters/http/adaptive_concurrency/v3:pkg",
"//envoy/extensions/filters/http/admission_control/v3:pkg",
"//envoy/extensions/filters/http/alternate_protocols_cache/v3:pkg",
"//envoy/extensions/filters/http/aws_lambda/v3:pkg",
"//envoy/extensions/filters/http/aws_request_signing/v3:pkg",
"//envoy/extensions/filters/http/bandwidth_limit/v3:pkg",
+ "//envoy/extensions/filters/http/basic_auth/v3:pkg",
"//envoy/extensions/filters/http/buffer/v3:pkg",
"//envoy/extensions/filters/http/cache/v3:pkg",
"//envoy/extensions/filters/http/cdn_loop/v3:pkg",
@@ -169,6 +173,7 @@ proto_library(
"//envoy/extensions/filters/http/compressor/v3:pkg",
"//envoy/extensions/filters/http/connect_grpc_bridge/v3:pkg",
"//envoy/extensions/filters/http/cors/v3:pkg",
+ "//envoy/extensions/filters/http/credential_injector/v3:pkg",
"//envoy/extensions/filters/http/csrf/v3:pkg",
"//envoy/extensions/filters/http/custom_response/v3:pkg",
"//envoy/extensions/filters/http/decompressor/v3:pkg",
@@ -202,6 +207,7 @@ proto_library(
"//envoy/extensions/filters/http/ratelimit/v3:pkg",
"//envoy/extensions/filters/http/rbac/v3:pkg",
"//envoy/extensions/filters/http/router/v3:pkg",
+ "//envoy/extensions/filters/http/set_filter_state/v3:pkg",
"//envoy/extensions/filters/http/set_metadata/v3:pkg",
"//envoy/extensions/filters/http/stateful_session/v3:pkg",
"//envoy/extensions/filters/http/tap/v3:pkg",
@@ -225,6 +231,7 @@ proto_library(
"//envoy/extensions/filters/network/ratelimit/v3:pkg",
"//envoy/extensions/filters/network/rbac/v3:pkg",
"//envoy/extensions/filters/network/redis_proxy/v3:pkg",
+ "//envoy/extensions/filters/network/set_filter_state/v3:pkg",
"//envoy/extensions/filters/network/sni_cluster/v3:pkg",
"//envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3:pkg",
"//envoy/extensions/filters/network/tcp_proxy/v3:pkg",
@@ -236,10 +243,14 @@ proto_library(
"//envoy/extensions/filters/network/wasm/v3:pkg",
"//envoy/extensions/filters/network/zookeeper_proxy/v3:pkg",
"//envoy/extensions/filters/udp/dns_filter/v3:pkg",
+ "//envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3:pkg",
+ "//envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3:pkg",
"//envoy/extensions/filters/udp/udp_proxy/v3:pkg",
"//envoy/extensions/formatter/cel/v3:pkg",
"//envoy/extensions/formatter/metadata/v3:pkg",
"//envoy/extensions/formatter/req_without_query/v3:pkg",
+ "//envoy/extensions/geoip_providers/common/v3:pkg",
+ "//envoy/extensions/geoip_providers/maxmind/v3:pkg",
"//envoy/extensions/health_check/event_sinks/file/v3:pkg",
"//envoy/extensions/health_checkers/redis/v3:pkg",
"//envoy/extensions/health_checkers/thrift/v3:pkg",
@@ -254,6 +265,8 @@ proto_library(
"//envoy/extensions/http/original_ip_detection/xff/v3:pkg",
"//envoy/extensions/http/stateful_session/cookie/v3:pkg",
"//envoy/extensions/http/stateful_session/header/v3:pkg",
+ "//envoy/extensions/injected_credentials/generic/v3:pkg",
+ "//envoy/extensions/injected_credentials/oauth2/v3:pkg",
"//envoy/extensions/internal_redirect/allow_listed_routes/v3:pkg",
"//envoy/extensions/internal_redirect/previous_routes/v3:pkg",
"//envoy/extensions/internal_redirect/safe_cross_scheme/v3:pkg",
@@ -296,9 +309,12 @@ proto_library(
"//envoy/extensions/retry/host/omit_host_metadata/v3:pkg",
"//envoy/extensions/retry/host/previous_hosts/v3:pkg",
"//envoy/extensions/retry/priority/previous_priorities/v3:pkg",
+ "//envoy/extensions/router/cluster_specifiers/lua/v3:pkg",
"//envoy/extensions/stat_sinks/graphite_statsd/v3:pkg",
"//envoy/extensions/stat_sinks/open_telemetry/v3:pkg",
"//envoy/extensions/stat_sinks/wasm/v3:pkg",
+ "//envoy/extensions/tracers/opentelemetry/resource_detectors/v3:pkg",
+ "//envoy/extensions/tracers/opentelemetry/samplers/v3:pkg",
"//envoy/extensions/transport_sockets/alts/v3:pkg",
"//envoy/extensions/transport_sockets/http_11_proxy/v3:pkg",
"//envoy/extensions/transport_sockets/internal_upstream/v3:pkg",
@@ -353,9 +369,9 @@ proto_library(
name = "xds_protos",
visibility = ["//visibility:public"],
deps = [
- "@com_github_cncf_udpa//xds/core/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//xds/type/v3:pkg",
+ "@com_github_cncf_xds//xds/core/v3:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//xds/type/v3:pkg",
],
)
diff --git a/api/CONTRIBUTING.md b/api/CONTRIBUTING.md
index a1e61a7072c4..0ff244623984 100644
--- a/api/CONTRIBUTING.md
+++ b/api/CONTRIBUTING.md
@@ -23,19 +23,19 @@ documentation.
The documentation can be built locally in the root of https://github.com/envoyproxy/envoy via:
```
-docs/build.sh
+ci/do_ci.sh docs
```
To skip configuration examples validation:
```
-SPHINX_SKIP_CONFIG_VALIDATION=true docs/build.sh
+SPHINX_SKIP_CONFIG_VALIDATION=true ci/do_ci.sh docs
```
Or to use a hermetic Docker container:
```
-./ci/run_envoy_docker.sh './ci/do_ci.sh docs'
+./ci/run_envoy_docker.sh 'ci/do_ci.sh docs'
```
This process builds RST documentation directly from the proto files, merges it with the static RST
diff --git a/api/STYLE.md b/api/STYLE.md
index b0821c927be2..8d042e0e2224 100644
--- a/api/STYLE.md
+++ b/api/STYLE.md
@@ -60,13 +60,14 @@ In addition, the following conventions should be followed:
* Always use upper camel case names for message types and enum types without embedded
acronyms, such as `HttpRequest`.
-* Prefer `oneof` selections to boolean overloads of fields, for example, prefer:
+* Prefer multiple fields with defined precedence over boolean overloads of fields or
+ `oneof`. For example, prefer:
```proto
- oneof path_specifier {
- string simple_path = 1;
- string regex_path = 2;
- }
+ // Simple path matcher. If regex_path is set, this field is not used.
+ string simple_path = 1;
+ // Regex path matcher. If set, takes precedence over simple_path.
+ string regex_path = 2;
```
to
@@ -76,7 +77,17 @@ In addition, the following conventions should be followed:
bool path_is_regex = 2;
```
- This is more efficient, extendable and self-describing.
+ or
+
+ ```
+ oneof path_specifier {
+ string simple_path = 1;
+ string regex_path = 2;
+ }
+ ```
+
+ This is more efficient on the wire. It also allows new alternatives to be
+ added later in a way that allows control planes to be backward-compatible.
* The API includes two types for representing [percents](envoy/type/percent.proto). `Percent` is
effectively a double value in the range 0.0-100.0. `FractionalPercent` is an integral fraction
@@ -126,7 +137,7 @@ To add an extension config to the API, the steps below should be followed:
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
```
1. If this is still WiP and subject to breaking changes, please tag it
@@ -162,7 +173,7 @@ To add an extension config to the API, the steps below should be followed:
[source/extensions/extensions_build_config.bzl](../source/extensions/extensions_build_config.bzl) or [contrib/contrib_build_config.bzl](../contrib/contrib_build_config.bzl)
to include the new extension.
1. If the extension is not hidden, find or create a docs file with a toctree
- and to reference your proto to make sure users can navigate to it from the API docs
+ and reference your proto to make sure users can navigate to it from the API docs
(and to not break the docs build), like [docs/root/api-v3/admin/admin.rst](../docs/root/api-v3/admin/admin.rst).
1. Run `./tools/proto_format/proto_format.sh fix`. **Before running the script**, you will need to **commit your local changes**. By adding the commit, the tool will recognize the change, and will regenerate the `BUILD` file and reformat `foobar.proto` as needed. If you have not followed any of the above steps correctly `proto_format.sh` may remove some of the files that you added. If that is the case you can revert to the committed state, and try again once any issues are resolved.
1. See the [key-value-store PR](https://github.com/envoyproxy/envoy/pull/17745/files) for an example of adding a new extension point to common.
@@ -180,8 +191,6 @@ metadata. We describe these annotations below by category.
been disallowed by default as per the [breaking change policy](../CONTRIBUTING.md#breaking-change-policy).
* `[(udpa.annotations.field_migrate).rename = ""]` to denote that
the field will be renamed to a given name in the next API major version.
-* `[(udpa.annotations.field_migrate).oneof_promotion = ""]` to denote that
- the field will be promoted to a given `oneof` in the next API major version.
* `[(udpa.annotations.sensitive) = true]` to denote sensitive fields that
should be redacted in output such as logging or configuration dumps.
* [PGV annotations](https://github.com/bufbuild/protoc-gen-validate) to denote field
@@ -258,8 +267,7 @@ xDS APIs:
breaking changes where there is no substantial gain in functionality,
performance, security or implementation simplification. We will tolerate
technical debt in the API itself, e.g. in the form of vestigial deprecated
- fields or reduced ergonomics (such as not using `oneof` when we would prefer
- to), in order to meet this principle.
+ fields or reduced ergonomics in order to meet this principle.
* Namespaces for extensions, metadata, etc. use a reverse DNS naming scheme,
e.g. `com.google.widget`, `com.lyft.widget`. Client built-ins may be prefixed
diff --git a/api/bazel/BUILD b/api/bazel/BUILD
index 63651c1e5a48..c4116598f74c 100644
--- a/api/bazel/BUILD
+++ b/api/bazel/BUILD
@@ -1,5 +1,5 @@
+load("@envoy_toolshed//:macros.bzl", "json_data")
load("@io_bazel_rules_go//proto:compiler.bzl", "go_proto_compiler")
-load(":utils.bzl", "json_data")
load(":repository_locations.bzl", "REPOSITORY_LOCATIONS_SPEC")
load(":repository_locations_utils.bzl", "load_repository_locations_spec")
load(
@@ -7,7 +7,6 @@ load(
"EXTERNAL_PROTO_CC_BAZEL_DEP_MAP",
"EXTERNAL_PROTO_GO_BAZEL_DEP_MAP",
"EXTERNAL_PROTO_IMPORT_BAZEL_DEP_MAP",
- "EXTERNAL_PROTO_PY_BAZEL_DEP_MAP",
)
licenses(["notice"]) # Apache 2
@@ -38,6 +37,5 @@ json_data(
cc = EXTERNAL_PROTO_CC_BAZEL_DEP_MAP,
go = EXTERNAL_PROTO_GO_BAZEL_DEP_MAP,
imports = EXTERNAL_PROTO_IMPORT_BAZEL_DEP_MAP,
- py = EXTERNAL_PROTO_PY_BAZEL_DEP_MAP,
),
)
diff --git a/api/bazel/api_build_system.bzl b/api/bazel/api_build_system.bzl
index 0266f4d03f2d..1f24149b9f92 100644
--- a/api/bazel/api_build_system.bzl
+++ b/api/bazel/api_build_system.bzl
@@ -1,6 +1,6 @@
load("@com_envoyproxy_protoc_gen_validate//bazel:pgv_proto_library.bzl", "pgv_cc_proto_library")
load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library")
-load("@com_google_protobuf//:protobuf.bzl", _py_proto_library = "py_proto_library")
+load("@com_github_grpc_grpc//bazel:python_rules.bzl", _py_proto_library = "py_proto_library")
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
load("@io_bazel_rules_go//go:def.bzl", "go_test")
load("@rules_proto//proto:defs.bzl", "proto_library")
@@ -8,10 +8,9 @@ load(
"//bazel:external_proto_deps.bzl",
"EXTERNAL_PROTO_CC_BAZEL_DEP_MAP",
"EXTERNAL_PROTO_GO_BAZEL_DEP_MAP",
- "EXTERNAL_PROTO_PY_BAZEL_DEP_MAP",
)
load(
- "@envoy//bazel/cc_proto_descriptor_library:builddefs.bzl",
+ "//bazel/cc_proto_descriptor_library:builddefs.bzl",
"cc_proto_descriptor_library",
)
@@ -52,63 +51,6 @@ def _go_proto_mapping(dep):
def _cc_proto_mapping(dep):
return _proto_mapping(dep, EXTERNAL_PROTO_CC_BAZEL_DEP_MAP, _CC_PROTO_SUFFIX)
-def _py_proto_mapping(dep):
- return _proto_mapping(dep, EXTERNAL_PROTO_PY_BAZEL_DEP_MAP, _PY_PROTO_SUFFIX)
-
-# TODO(htuch): Convert this to native py_proto_library once
-# https://github.com/bazelbuild/bazel/issues/3935 and/or
-# https://github.com/bazelbuild/bazel/issues/2626 are resolved.
-def _api_py_proto_library(name, srcs = [], deps = []):
- mapped_deps = [_py_proto_mapping(dep) for dep in deps]
- mapped_unique_deps = {k: True for k in mapped_deps}.keys()
- _py_proto_library(
- name = name + _PY_PROTO_SUFFIX,
- srcs = srcs,
- default_runtime = "@com_google_protobuf//:protobuf_python",
- protoc = "@com_google_protobuf//:protoc",
- deps = mapped_unique_deps + [
- "@com_envoyproxy_protoc_gen_validate//validate:validate_py",
- "@com_google_googleapis//google/rpc:status_py_proto",
- "@com_google_googleapis//google/api:annotations_py_proto",
- "@com_google_googleapis//google/api:http_py_proto",
- "@com_google_googleapis//google/api:httpbody_py_proto",
- ],
- visibility = ["//visibility:public"],
- )
-
-# This defines googleapis py_proto_library. The repository does not provide its definition and requires
-# overriding it in the consuming project (see https://github.com/grpc/grpc/issues/19255 for more details).
-def py_proto_library(name, deps = [], plugin = None):
- srcs = [dep[:-6] + ".proto" if dep.endswith("_proto") else dep for dep in deps]
- proto_deps = []
-
- # py_proto_library in googleapis specifies *_proto rules in dependencies.
- # By rewriting *_proto to *.proto above, the dependencies in *_proto rules are not preserved.
- # As a workaround, manually specify the proto dependencies for the imported python rules.
- if name == "annotations_py_proto":
- proto_deps = proto_deps + [":http_py_proto"]
-
- # checked.proto depends on syntax.proto, we have to add this dependency manually as well.
- if name == "checked_py_proto":
- proto_deps = proto_deps + [":syntax_py_proto"]
-
- # Special handling for expr_proto target
- if srcs[0] == ":expr_moved.proto":
- srcs = ["checked.proto", "eval.proto", "explain.proto", "syntax.proto", "value.proto"]
- proto_deps = proto_deps + ["@com_google_googleapis//google/rpc:status_py_proto"]
-
- # py_proto_library does not support plugin as an argument yet at gRPC v1.25.0:
- # https://github.com/grpc/grpc/blob/v1.25.0/bazel/python_rules.bzl#L72.
- # plugin should also be passed in here when gRPC version is greater than v1.25.x.
- _py_proto_library(
- name = name,
- srcs = srcs,
- default_runtime = "@com_google_protobuf//:protobuf_python",
- protoc = "@com_google_protobuf//:protoc",
- deps = proto_deps + ["@com_google_protobuf//:protobuf_python"],
- visibility = ["//visibility:public"],
- )
-
def _api_cc_grpc_library(name, proto, deps = []):
cc_grpc_library(
name = name,
@@ -157,7 +99,15 @@ def api_cc_py_proto_library(
deps = [relative_name],
visibility = ["//visibility:public"],
)
- _api_py_proto_library(name, srcs, deps)
+
+ # Uses gRPC implementation of py_proto_library.
+ # https://github.com/grpc/grpc/blob/v1.59.1/bazel/python_rules.bzl#L160
+ _py_proto_library(
+ name = name + _PY_PROTO_SUFFIX,
+ # Actual dependencies are resolved automatically from the proto_library dep tree.
+ deps = [relative_name],
+ visibility = ["//visibility:public"],
+ )
# Optionally define gRPC services
if has_services:
diff --git a/bazel/cc_proto_descriptor_library/BUILD b/api/bazel/cc_proto_descriptor_library/BUILD
similarity index 100%
rename from bazel/cc_proto_descriptor_library/BUILD
rename to api/bazel/cc_proto_descriptor_library/BUILD
diff --git a/bazel/cc_proto_descriptor_library/builddefs.bzl b/api/bazel/cc_proto_descriptor_library/builddefs.bzl
similarity index 99%
rename from bazel/cc_proto_descriptor_library/builddefs.bzl
rename to api/bazel/cc_proto_descriptor_library/builddefs.bzl
index 53e312002646..2da95d00a063 100644
--- a/bazel/cc_proto_descriptor_library/builddefs.bzl
+++ b/api/bazel/cc_proto_descriptor_library/builddefs.bzl
@@ -332,7 +332,6 @@ cc_proto_descriptor_library_aspect = aspect(
attr_aspects = ["deps"],
fragments = ["cpp"],
toolchains = use_cpp_toolchain(),
- incompatible_use_toolchain_transition = True,
)
cc_proto_descriptor_library = rule(
diff --git a/bazel/cc_proto_descriptor_library/create_dynamic_message.cc b/api/bazel/cc_proto_descriptor_library/create_dynamic_message.cc
similarity index 100%
rename from bazel/cc_proto_descriptor_library/create_dynamic_message.cc
rename to api/bazel/cc_proto_descriptor_library/create_dynamic_message.cc
diff --git a/bazel/cc_proto_descriptor_library/create_dynamic_message.h b/api/bazel/cc_proto_descriptor_library/create_dynamic_message.h
similarity index 100%
rename from bazel/cc_proto_descriptor_library/create_dynamic_message.h
rename to api/bazel/cc_proto_descriptor_library/create_dynamic_message.h
diff --git a/bazel/cc_proto_descriptor_library/file_descriptor_generator.cc b/api/bazel/cc_proto_descriptor_library/file_descriptor_generator.cc
similarity index 100%
rename from bazel/cc_proto_descriptor_library/file_descriptor_generator.cc
rename to api/bazel/cc_proto_descriptor_library/file_descriptor_generator.cc
diff --git a/bazel/cc_proto_descriptor_library/file_descriptor_generator.h b/api/bazel/cc_proto_descriptor_library/file_descriptor_generator.h
similarity index 100%
rename from bazel/cc_proto_descriptor_library/file_descriptor_generator.h
rename to api/bazel/cc_proto_descriptor_library/file_descriptor_generator.h
diff --git a/bazel/cc_proto_descriptor_library/file_descriptor_generator_main.cc b/api/bazel/cc_proto_descriptor_library/file_descriptor_generator_main.cc
similarity index 100%
rename from bazel/cc_proto_descriptor_library/file_descriptor_generator_main.cc
rename to api/bazel/cc_proto_descriptor_library/file_descriptor_generator_main.cc
diff --git a/bazel/cc_proto_descriptor_library/file_descriptor_info.cc b/api/bazel/cc_proto_descriptor_library/file_descriptor_info.cc
similarity index 100%
rename from bazel/cc_proto_descriptor_library/file_descriptor_info.cc
rename to api/bazel/cc_proto_descriptor_library/file_descriptor_info.cc
diff --git a/bazel/cc_proto_descriptor_library/file_descriptor_info.h b/api/bazel/cc_proto_descriptor_library/file_descriptor_info.h
similarity index 100%
rename from bazel/cc_proto_descriptor_library/file_descriptor_info.h
rename to api/bazel/cc_proto_descriptor_library/file_descriptor_info.h
diff --git a/bazel/cc_proto_descriptor_library/testdata/BUILD b/api/bazel/cc_proto_descriptor_library/testdata/BUILD
similarity index 100%
rename from bazel/cc_proto_descriptor_library/testdata/BUILD
rename to api/bazel/cc_proto_descriptor_library/testdata/BUILD
diff --git a/bazel/cc_proto_descriptor_library/testdata/create_dynamic_message_test.cc b/api/bazel/cc_proto_descriptor_library/testdata/create_dynamic_message_test.cc
similarity index 100%
rename from bazel/cc_proto_descriptor_library/testdata/create_dynamic_message_test.cc
rename to api/bazel/cc_proto_descriptor_library/testdata/create_dynamic_message_test.cc
diff --git a/bazel/cc_proto_descriptor_library/testdata/global_fallback_test.cc b/api/bazel/cc_proto_descriptor_library/testdata/global_fallback_test.cc
similarity index 100%
rename from bazel/cc_proto_descriptor_library/testdata/global_fallback_test.cc
rename to api/bazel/cc_proto_descriptor_library/testdata/global_fallback_test.cc
diff --git a/bazel/cc_proto_descriptor_library/testdata/test-extension.proto b/api/bazel/cc_proto_descriptor_library/testdata/test-extension.proto
similarity index 100%
rename from bazel/cc_proto_descriptor_library/testdata/test-extension.proto
rename to api/bazel/cc_proto_descriptor_library/testdata/test-extension.proto
diff --git a/bazel/cc_proto_descriptor_library/testdata/test.proto b/api/bazel/cc_proto_descriptor_library/testdata/test.proto
similarity index 100%
rename from bazel/cc_proto_descriptor_library/testdata/test.proto
rename to api/bazel/cc_proto_descriptor_library/testdata/test.proto
diff --git a/bazel/cc_proto_descriptor_library/testdata/test1.proto b/api/bazel/cc_proto_descriptor_library/testdata/test1.proto
similarity index 66%
rename from bazel/cc_proto_descriptor_library/testdata/test1.proto
rename to api/bazel/cc_proto_descriptor_library/testdata/test1.proto
index d8fcdd5155a9..bb0ad106c317 100644
--- a/bazel/cc_proto_descriptor_library/testdata/test1.proto
+++ b/api/bazel/cc_proto_descriptor_library/testdata/test1.proto
@@ -2,8 +2,6 @@ syntax = "proto2";
package testdata.dynamic_descriptors;
-import "bazel/cc_proto_descriptor_library/testdata/test.proto";
-
message FooCopy {
optional string bar = 1;
diff --git a/bazel/cc_proto_descriptor_library/testdata/text_format_transcoder_test.cc b/api/bazel/cc_proto_descriptor_library/testdata/text_format_transcoder_test.cc
similarity index 100%
rename from bazel/cc_proto_descriptor_library/testdata/text_format_transcoder_test.cc
rename to api/bazel/cc_proto_descriptor_library/testdata/text_format_transcoder_test.cc
diff --git a/bazel/cc_proto_descriptor_library/text_format_transcoder.cc b/api/bazel/cc_proto_descriptor_library/text_format_transcoder.cc
similarity index 98%
rename from bazel/cc_proto_descriptor_library/text_format_transcoder.cc
rename to api/bazel/cc_proto_descriptor_library/text_format_transcoder.cc
index 059ab94935c2..70b116d33b14 100644
--- a/bazel/cc_proto_descriptor_library/text_format_transcoder.cc
+++ b/api/bazel/cc_proto_descriptor_library/text_format_transcoder.cc
@@ -93,7 +93,7 @@ std::unique_ptr TextFormatTranscoder::createEmptyDyna
absl::string_view type_name, google::protobuf::io::ErrorCollector* error_collector) const {
const google::protobuf::Descriptor* descriptor =
internals_->descriptor_pool.FindMessageTypeByName(std::string(type_name));
- // If you're built with the full runtime then embeddng the descriptors and
+ // If you're built with the full runtime then embedding the descriptors and
// loading them would be information duplicated by the global descriptor
// pool which hurts builds like superroot that are near all the blaze/forge
// size limits. Teams that care about not silently falling into this fallback
diff --git a/bazel/cc_proto_descriptor_library/text_format_transcoder.h b/api/bazel/cc_proto_descriptor_library/text_format_transcoder.h
similarity index 100%
rename from bazel/cc_proto_descriptor_library/text_format_transcoder.h
rename to api/bazel/cc_proto_descriptor_library/text_format_transcoder.h
diff --git a/api/bazel/envoy_http_archive.bzl b/api/bazel/envoy_http_archive.bzl
index 15fd65b2af27..849e2500678f 100644
--- a/api/bazel/envoy_http_archive.bzl
+++ b/api/bazel/envoy_http_archive.bzl
@@ -1,6 +1,6 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-def envoy_http_archive(name, locations, **kwargs):
+def envoy_http_archive(name, locations, location_name = None, **kwargs):
# `existing_rule_keys` contains the names of repositories that have already
# been defined in the Bazel workspace. By skipping repos with existing keys,
# users can override dependency versions by using standard Bazel repository
@@ -10,7 +10,7 @@ def envoy_http_archive(name, locations, **kwargs):
# This repository has already been defined, probably because the user
# wants to override the version. Do nothing.
return
- location = locations[name]
+ location = locations[location_name or name]
# HTTP tarball at a given URL. Add a BUILD file if requested.
http_archive(
diff --git a/api/bazel/external_proto_deps.bzl b/api/bazel/external_proto_deps.bzl
index bea4868dc580..331934132ab6 100644
--- a/api/bazel/external_proto_deps.bzl
+++ b/api/bazel/external_proto_deps.bzl
@@ -22,7 +22,7 @@ EXTERNAL_PROTO_GO_BAZEL_DEP_MAP = {
# Note @com_google_googleapis are point to @go_googleapis.
#
# It is aligned to xDS dependency to suppress the conflicting package heights error between
- # @com_github_cncf_udpa//xds/type/matcher/v3:pkg_go_proto
+ # @com_github_cncf_xds//xds/type/matcher/v3:pkg_go_proto
# @envoy_api//envoy/config/rbac/v3:pkg_go_proto
#
# TODO(https://github.com/bazelbuild/rules_go/issues/1986): update to
@@ -49,15 +49,3 @@ EXTERNAL_PROTO_CC_BAZEL_DEP_MAP = {
"@opentelemetry_proto//:metrics": "@opentelemetry_proto//:metrics_cc_proto",
"@opentelemetry_proto//:common": "@opentelemetry_proto//:common_cc_proto",
}
-
-# This maps from the Bazel proto_library target to the Python language binding target for external dependencies.
-EXTERNAL_PROTO_PY_BAZEL_DEP_MAP = {
- "@com_google_googleapis//google/api/expr/v1alpha1:checked_proto": "@com_google_googleapis//google/api/expr/v1alpha1:expr_py_proto",
- "@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto": "@com_google_googleapis//google/api/expr/v1alpha1:expr_py_proto",
- "@opencensus_proto//opencensus/proto/trace/v1:trace_proto": "@opencensus_proto//opencensus/proto/trace/v1:trace_proto_py",
- "@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto": "@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto_py",
- "@opentelemetry_proto//:trace": "@opentelemetry_proto//:trace_py_proto",
- "@opentelemetry_proto//:logs": "@opentelemetry_proto//:logs_py_proto",
- "@opentelemetry_proto//:metrics": "@opentelemetry_proto//:metrics_py_proto",
- "@opentelemetry_proto//:common": "@opentelemetry_proto//:common_py_proto",
-}
diff --git a/api/bazel/repositories.bzl b/api/bazel/repositories.bzl
index e789fe67fd2b..33aaa220fb6d 100644
--- a/api/bazel/repositories.bzl
+++ b/api/bazel/repositories.bzl
@@ -25,8 +25,15 @@ def api_dependencies():
name = "com_google_googleapis",
)
+ external_http_archive(
+ name = "com_github_cncf_xds",
+ )
+
+ # Needed until @com_github_grpc_grpc renames @com_github_cncf_udpa
+ # to @com_github_cncf_xds as well.
external_http_archive(
name = "com_github_cncf_udpa",
+ location_name = "com_github_cncf_xds",
)
external_http_archive(
@@ -56,6 +63,10 @@ def api_dependencies():
name = "com_github_chrusty_protoc_gen_jsonschema",
)
+ external_http_archive(
+ name = "envoy_toolshed",
+ )
+
PROMETHEUSMETRICS_BUILD_CONTENT = """
load("@envoy_api//bazel:api_build_system.bzl", "api_cc_py_proto_library")
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
diff --git a/api/bazel/repository_locations.bzl b/api/bazel/repository_locations.bzl
index c1f59e7a77d4..202a5f8fb07b 100644
--- a/api/bazel/repository_locations.bzl
+++ b/api/bazel/repository_locations.bzl
@@ -4,9 +4,9 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "bazel-skylib",
project_desc = "Common useful functions and rules for Bazel",
project_url = "https://github.com/bazelbuild/bazel-skylib",
- version = "1.4.2",
- sha256 = "66ffd9315665bfaafc96b52278f57c7e2dd09f5ede279ea6d39b2be471e7e3aa",
- release_date = "2023-05-31",
+ version = "1.5.0",
+ sha256 = "cd55a062e763b9349921f0f5db8c3933288dc8ba4f76dd9416aac68acee3cb94",
+ release_date = "2023-11-06",
urls = ["https://github.com/bazelbuild/bazel-skylib/releases/download/{version}/bazel-skylib-{version}.tar.gz"],
use_category = ["api"],
license = "Apache-2.0",
@@ -34,14 +34,14 @@ REPOSITORY_LOCATIONS_SPEC = dict(
license = "Apache-2.0",
license_url = "https://github.com/bufbuild/protoc-gen-validate/blob/v{version}/LICENSE",
),
- com_github_cncf_udpa = dict(
+ com_github_cncf_xds = dict(
project_name = "xDS API",
project_desc = "xDS API Working Group (xDS-WG)",
project_url = "https://github.com/cncf/xds",
# During the UDPA -> xDS migration, we aren't working with releases.
- version = "e9ce68804cb4e64cab5a52e3c8baf840d4ff87b7",
- sha256 = "0d33b83f8c6368954e72e7785539f0d272a8aba2f6e2e336ed15fd1514bc9899",
- release_date = "2023-06-07",
+ version = "3a472e524827f72d1ad621c4983dd5af54c46776",
+ sha256 = "dc305e20c9fa80822322271b50aa2ffa917bf4fd3973bcec52bfc28dc32c5927",
+ release_date = "2023-11-16",
strip_prefix = "xds-{version}",
urls = ["https://github.com/cncf/xds/archive/{version}.tar.gz"],
use_category = ["api"],
@@ -92,9 +92,9 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Prometheus client model",
project_desc = "Data model artifacts for Prometheus",
project_url = "https://github.com/prometheus/client_model",
- version = "0.4.0",
- sha256 = "82fc41d9481476a778b120d4553e9e4edf06cc4efd52ee09ba000933d3a2a53d",
- release_date = "2023-05-03",
+ version = "0.5.0",
+ sha256 = "170873e0b91cab5da6634af1498b88876842ff3e01212e2dabf6b4e6512c948d",
+ release_date = "2023-10-03",
strip_prefix = "client_model-{version}",
urls = ["https://github.com/prometheus/client_model/archive/v{version}.tar.gz"],
use_category = ["api"],
@@ -131,11 +131,11 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "buf",
project_desc = "A new way of working with Protocol Buffers.", # Used for breaking change detection in API protobufs
project_url = "https://buf.build",
- version = "1.26.1",
- sha256 = "7286b1c6c84392f327991fd4c7b2e7f1bcff141cd1249e797a93d094c2f662ba",
+ version = "1.28.1",
+ sha256 = "870cf492d381a967d36636fdee9da44b524ea62aad163659b8dbf16a7da56987",
strip_prefix = "buf",
urls = ["https://github.com/bufbuild/buf/releases/download/v{version}/buf-Linux-x86_64.tar.gz"],
- release_date = "2023-08-09",
+ release_date = "2023-11-15",
use_category = ["api"],
license = "Apache-2.0",
license_url = "https://github.com/bufbuild/buf/blob/v{version}/LICENSE",
@@ -151,4 +151,18 @@ REPOSITORY_LOCATIONS_SPEC = dict(
use_category = ["build"],
release_date = "2023-05-30",
),
+ envoy_toolshed = dict(
+ project_name = "envoy_toolshed",
+ project_desc = "Tooling, libraries, runners and checkers for Envoy proxy's CI",
+ project_url = "https://github.com/envoyproxy/toolshed",
+ version = "0.1.1",
+ sha256 = "ee759b57270a2747f3f2a3d6ecaad63b834dd9887505a9f1c919d72429dbeffd",
+ strip_prefix = "toolshed-bazel-v{version}/bazel",
+ urls = ["https://github.com/envoyproxy/toolshed/archive/bazel-v{version}.tar.gz"],
+ use_category = ["build"],
+ release_date = "2023-10-21",
+ cpe = "N/A",
+ license = "Apache-2.0",
+ license_url = "https://github.com/envoyproxy/envoy/blob/bazel-v{version}/LICENSE",
+ ),
)
diff --git a/api/bazel/utils.bzl b/api/bazel/utils.bzl
deleted file mode 100644
index 0961f00eb446..000000000000
--- a/api/bazel/utils.bzl
+++ /dev/null
@@ -1,18 +0,0 @@
-load("@bazel_skylib//rules:write_file.bzl", "write_file")
-
-def json_data(
- name,
- data,
- visibility = ["//visibility:public"],
- **kwargs):
- """Write a bazel object to a file
-
- The provided `data` object should be json serializable.
- """
- write_file(
- name = name,
- out = "%s.json" % name,
- content = json.encode(data).split("\n"),
- visibility = visibility,
- **kwargs
- )
diff --git a/api/contrib/envoy/extensions/compression/qatzip/compressor/v3alpha/BUILD b/api/contrib/envoy/extensions/compression/qatzip/compressor/v3alpha/BUILD
new file mode 100644
index 000000000000..29ebf0741406
--- /dev/null
+++ b/api/contrib/envoy/extensions/compression/qatzip/compressor/v3alpha/BUILD
@@ -0,0 +1,9 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
+)
diff --git a/api/contrib/envoy/extensions/compression/qatzip/compressor/v3alpha/qatzip.proto b/api/contrib/envoy/extensions/compression/qatzip/compressor/v3alpha/qatzip.proto
new file mode 100644
index 000000000000..5c8a3df2ab3d
--- /dev/null
+++ b/api/contrib/envoy/extensions/compression/qatzip/compressor/v3alpha/qatzip.proto
@@ -0,0 +1,52 @@
+syntax = "proto3";
+
+package envoy.extensions.compression.qatzip.compressor.v3alpha;
+
+import "google/protobuf/wrappers.proto";
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.compression.qatzip.compressor.v3alpha";
+option java_outer_classname = "QatzipProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/compression/qatzip/compressor/v3alpha";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Qatzip Compressor]
+// Qatzip :ref:`configuration overview `.
+// [#extension: envoy.compression.qatzip.compressor]
+
+// [#next-free-field: 6]
+message Qatzip {
+ enum HardwareBufferSize {
+ DEFAULT = 0;
+ SZ_4K = 1;
+ SZ_8K = 2;
+ SZ_32K = 3;
+ SZ_64K = 4;
+ SZ_128K = 5;
+ SZ_512K = 6;
+ }
+
+ // Value from 1 to 9 that controls the main compression speed-density lever.
+ // The higher quality, the slower compression. The default value is 1.
+ google.protobuf.UInt32Value compression_level = 1 [(validate.rules).uint32 = {lte: 9 gte: 1}];
+
+ // A size of qat hardware buffer. This field will be set to "DEFAULT" if not specified.
+ HardwareBufferSize hardware_buffer_size = 2 [(validate.rules).enum = {defined_only: true}];
+
+ // Threshold of compression service’s input size for software failover.
+ // If the size of input request less than the threshold, qatzip will route the request to software
+ // compressor. The default value is 1024. The maximum value is 512*1024.
+ google.protobuf.UInt32Value input_size_threshold = 3
+ [(validate.rules).uint32 = {lte: 524288 gte: 128}];
+
+ // A size of stream buffer. The default value is 128 * 1024. The maximum value is 2*1024*1024 -
+ // 5*1024
+ google.protobuf.UInt32Value stream_buffer_size = 4
+ [(validate.rules).uint32 = {lte: 2092032 gte: 1024}];
+
+ // Value for compressor's next output buffer. If not set, defaults to 4096.
+ google.protobuf.UInt32Value chunk_size = 5 [(validate.rules).uint32 = {lte: 65536 gte: 4096}];
+}
diff --git a/api/contrib/envoy/extensions/config/v3alpha/BUILD b/api/contrib/envoy/extensions/config/v3alpha/BUILD
index cfd406e0852a..edd8d2b1f4a8 100644
--- a/api/contrib/envoy/extensions/config/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/config/v3alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/common/key_value/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/config/v3alpha/kv_store_xds_delegate_config.proto b/api/contrib/envoy/extensions/config/v3alpha/kv_store_xds_delegate_config.proto
index 639264240d76..bc982743eaec 100644
--- a/api/contrib/envoy/extensions/config/v3alpha/kv_store_xds_delegate_config.proto
+++ b/api/contrib/envoy/extensions/config/v3alpha/kv_store_xds_delegate_config.proto
@@ -9,7 +9,7 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.extensions.config.v3alpha";
option java_outer_classname = "KvStoreXdsDelegateConfigProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/config/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/config/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#extension: envoy.xds_delegates.kv_store]
diff --git a/api/contrib/envoy/extensions/filters/http/checksum/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/http/checksum/v3alpha/BUILD
index 081219249cbd..b1f16574954e 100644
--- a/api/contrib/envoy/extensions/filters/http/checksum/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/http/checksum/v3alpha/BUILD
@@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/http/checksum/v3alpha/checksum.proto b/api/contrib/envoy/extensions/filters/http/checksum/v3alpha/checksum.proto
index ba4c2fe75795..4255437ec520 100644
--- a/api/contrib/envoy/extensions/filters/http/checksum/v3alpha/checksum.proto
+++ b/api/contrib/envoy/extensions/filters/http/checksum/v3alpha/checksum.proto
@@ -12,7 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.http.checksum.v3alpha";
option java_outer_classname = "ChecksumProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/checksum/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/http/checksum/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
diff --git a/api/contrib/envoy/extensions/filters/http/dynamo/v3/BUILD b/api/contrib/envoy/extensions/filters/http/dynamo/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/filters/http/dynamo/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/http/dynamo/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/filters/http/dynamo/v3/dynamo.proto b/api/contrib/envoy/extensions/filters/http/dynamo/v3/dynamo.proto
index 9d6feb4ec9b4..d0d4c8c13fa7 100644
--- a/api/contrib/envoy/extensions/filters/http/dynamo/v3/dynamo.proto
+++ b/api/contrib/envoy/extensions/filters/http/dynamo/v3/dynamo.proto
@@ -8,7 +8,7 @@ import "udpa/annotations/versioning.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.http.dynamo.v3";
option java_outer_classname = "DynamoProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/dynamo/v3;dynamov3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/http/dynamo/v3;dynamov3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Dynamo]
diff --git a/api/contrib/envoy/extensions/filters/http/golang/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/http/golang/v3alpha/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/contrib/envoy/extensions/filters/http/golang/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/http/golang/v3alpha/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/http/golang/v3alpha/golang.proto b/api/contrib/envoy/extensions/filters/http/golang/v3alpha/golang.proto
index ee1268a25683..2d05509b51f8 100644
--- a/api/contrib/envoy/extensions/filters/http/golang/v3alpha/golang.proto
+++ b/api/contrib/envoy/extensions/filters/http/golang/v3alpha/golang.proto
@@ -12,7 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.http.golang.v3alpha";
option java_outer_classname = "GolangProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/golang/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/http/golang/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
diff --git a/api/contrib/envoy/extensions/filters/http/language/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/http/language/v3alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/filters/http/language/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/http/language/v3alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/filters/http/language/v3alpha/language.proto b/api/contrib/envoy/extensions/filters/http/language/v3alpha/language.proto
index 47f296707b21..74d32828fd09 100644
--- a/api/contrib/envoy/extensions/filters/http/language/v3alpha/language.proto
+++ b/api/contrib/envoy/extensions/filters/http/language/v3alpha/language.proto
@@ -8,7 +8,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.http.language.v3alpha";
option java_outer_classname = "LanguageProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/language/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/http/language/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Language]
diff --git a/api/contrib/envoy/extensions/filters/http/squash/v3/BUILD b/api/contrib/envoy/extensions/filters/http/squash/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/filters/http/squash/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/http/squash/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/filters/http/squash/v3/squash.proto b/api/contrib/envoy/extensions/filters/http/squash/v3/squash.proto
index 6f178e1a9f8d..d78263cf83e8 100644
--- a/api/contrib/envoy/extensions/filters/http/squash/v3/squash.proto
+++ b/api/contrib/envoy/extensions/filters/http/squash/v3/squash.proto
@@ -12,7 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.http.squash.v3";
option java_outer_classname = "SquashProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/squash/v3;squashv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/http/squash/v3;squashv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Squash]
diff --git a/api/contrib/envoy/extensions/filters/http/sxg/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/http/sxg/v3alpha/BUILD
index 3ca8242f7780..63fb3642c4b5 100644
--- a/api/contrib/envoy/extensions/filters/http/sxg/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/http/sxg/v3alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/transport_sockets/tls/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/http/sxg/v3alpha/sxg.proto b/api/contrib/envoy/extensions/filters/http/sxg/v3alpha/sxg.proto
index 5d1deb4eb9ff..7f8dd1434edf 100644
--- a/api/contrib/envoy/extensions/filters/http/sxg/v3alpha/sxg.proto
+++ b/api/contrib/envoy/extensions/filters/http/sxg/v3alpha/sxg.proto
@@ -12,7 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.http.sxg.v3alpha";
option java_outer_classname = "SxgProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/sxg/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/http/sxg/v3alpha";
option (udpa.annotations.file_status).work_in_progress = true;
option (udpa.annotations.file_status).package_version_status = ACTIVE;
diff --git a/api/contrib/envoy/extensions/filters/network/client_ssl_auth/v3/BUILD b/api/contrib/envoy/extensions/filters/network/client_ssl_auth/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/contrib/envoy/extensions/filters/network/client_ssl_auth/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/client_ssl_auth/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/client_ssl_auth/v3/client_ssl_auth.proto b/api/contrib/envoy/extensions/filters/network/client_ssl_auth/v3/client_ssl_auth.proto
index 6b45a59e530e..80fd093755f7 100644
--- a/api/contrib/envoy/extensions/filters/network/client_ssl_auth/v3/client_ssl_auth.proto
+++ b/api/contrib/envoy/extensions/filters/network/client_ssl_auth/v3/client_ssl_auth.proto
@@ -14,7 +14,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.client_ssl_auth.v3";
option java_outer_classname = "ClientSslAuthProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/client_ssl_auth/v3;client_ssl_authv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/client_ssl_auth/v3;client_ssl_authv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Client TLS authentication]
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/action/v3/BUILD b/api/contrib/envoy/extensions/filters/network/generic_proxy/action/v3/BUILD
index d0a7c688bf76..b6c098a23b3a 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/action/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/action/v3/BUILD
@@ -8,7 +8,7 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/config/route/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/action/v3/action.proto b/api/contrib/envoy/extensions/filters/network/generic_proxy/action/v3/action.proto
index 119b8e7f85ef..d60a6f760bc4 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/action/v3/action.proto
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/action/v3/action.proto
@@ -15,7 +15,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.generic_proxy.action.v3";
option java_outer_classname = "ActionProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/generic_proxy/action/v3;actionv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/action/v3;actionv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3/BUILD b/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3/dubbo.proto b/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3/dubbo.proto
index d5b6782e6662..47a2af159394 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3/dubbo.proto
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3/dubbo.proto
@@ -9,7 +9,7 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.generic_proxy.codecs.dubbo.v3";
option java_outer_classname = "DubboProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3;dubbov3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3;dubbov3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3/BUILD b/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3/BUILD
new file mode 100644
index 000000000000..d49202b74ab4
--- /dev/null
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3/BUILD
@@ -0,0 +1,12 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ ],
+)
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3/kafka.proto b/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3/kafka.proto
new file mode 100644
index 000000000000..0e6998f8ec3d
--- /dev/null
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3/kafka.proto
@@ -0,0 +1,35 @@
+syntax = "proto3";
+
+package envoy.extensions.filters.network.generic_proxy.codecs.kafka.v3;
+
+import "xds/annotations/v3/status.proto";
+
+import "udpa/annotations/status.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.filters.network.generic_proxy.codecs.kafka.v3";
+option java_outer_classname = "KafkaProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3;kafkav3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+option (xds.annotations.v3.file_status).work_in_progress = true;
+
+// [#protodoc-title: Kafka codec configuration for Generic Proxy]
+// [#extension: envoy.generic_proxy.codecs.kafka]
+
+// Configuration for Kafka codec. This codec gives the generic proxy the ability to proxy
+// Kafka traffic. But note any route configuration for Kafka traffic is not supported yet.
+// The generic proxy can only used to generate logs or metrics for Kafka traffic but cannot
+// do matching or routing.
+//
+// .. note::
+// The codec can currently only be used in the sidecar mode. And to ensure the codec works
+// properly, please make sure the following conditions are met:
+//
+// 1. The generic proxy must be configured with a wildcard route that matches all traffic.
+// 2. The target cluster must be configured as a original destination cluster.
+// 3. The :ref:`bind_upstream_connection
+// `
+// of generic proxy router must be set to true to ensure same upstream connection is used
+// for all traffic from same downstream connection.
+message KafkaCodecConfig {
+}
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3/BUILD b/api/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3/BUILD
index 081219249cbd..b1f16574954e 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3/BUILD
@@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3/matcher.proto b/api/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3/matcher.proto
index 13990866e0fd..2490a0b9bffd 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3/matcher.proto
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3/matcher.proto
@@ -12,7 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.generic_proxy.matcher.v3";
option java_outer_classname = "MatcherProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/generic_proxy/matcher/v3;matcherv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3;matcherv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/router/v3/BUILD b/api/contrib/envoy/extensions/filters/network/generic_proxy/router/v3/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/router/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/router/v3/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/router/v3/router.proto b/api/contrib/envoy/extensions/filters/network/generic_proxy/router/v3/router.proto
index 308943dc123f..a7064152354e 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/router/v3/router.proto
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/router/v3/router.proto
@@ -9,7 +9,7 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.generic_proxy.router.v3";
option java_outer_classname = "RouterProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/generic_proxy/router/v3;routerv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/router/v3;routerv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
@@ -17,4 +17,27 @@ option (xds.annotations.v3.file_status).work_in_progress = true;
// [#extension: envoy.filters.generic.router]
message Router {
+ // Set to true if the upstream connection should be bound to the downstream connection, false
+ // otherwise.
+ //
+ // By default, one random upstream connection will be selected from the upstream connection pool
+ // and used for every request. And after the request is finished, the upstream connection will be
+ // released back to the upstream connection pool.
+ //
+ // If this option is true, the upstream connection will be bound to the downstream connection and
+ // have same lifetime as the downstream connection. The same upstream connection will be used for
+ // all requests from the same downstream connection.
+ //
+ // And if this options is true, one of the following requirements must be met:
+ //
+ // 1. The request must be handled one by one. That is, the next request can not be sent to the
+ // upstream until the previous request is finished.
+ // 2. Unique request id must be provided for each request and response. The request id must be
+ // unique for each request and response pair in same connection pair. And the request id must
+ // be the same for the corresponding request and response.
+ //
+ // This could be useful for some protocols that require the same upstream connection to be used
+ // for all requests from the same downstream connection. For example, the protocol using stateful
+ // connection.
+ bool bind_upstream_connection = 1;
}
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/BUILD b/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/BUILD
index 71c5730a78f0..75f8163e3f2c 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/BUILD
@@ -9,8 +9,8 @@ api_proto_package(
"//envoy/config/accesslog/v3:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/extensions/filters/network/http_connection_manager/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/generic_proxy.proto b/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/generic_proxy.proto
index 84a34265f736..7e35eabdb54c 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/generic_proxy.proto
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/generic_proxy.proto
@@ -16,7 +16,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.generic_proxy.v3";
option java_outer_classname = "GenericProxyProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/generic_proxy/v3;generic_proxyv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/v3;generic_proxyv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
diff --git a/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/route.proto b/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/route.proto
index 01442fa85d6d..2ac8b0f93377 100644
--- a/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/route.proto
+++ b/api/contrib/envoy/extensions/filters/network/generic_proxy/v3/route.proto
@@ -11,7 +11,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.generic_proxy.v3";
option java_outer_classname = "RouteProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/generic_proxy/v3;generic_proxyv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/generic_proxy/v3;generic_proxyv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
@@ -43,7 +43,7 @@ message VirtualHost {
xds.type.matcher.v3.Matcher routes = 3 [(validate.rules).message = {required: true}];
}
-// The generic proxy makes use of the `xds matching API` for routing configurations.
+// The generic proxy makes use of the xDS matching API for routing configurations.
//
// In the below example, we combine a top level tree matcher with a linear matcher to match
// the incoming requests, and send the matching requests to v1 of the upstream service.
diff --git a/api/contrib/envoy/extensions/filters/network/golang/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/network/golang/v3alpha/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/contrib/envoy/extensions/filters/network/golang/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/golang/v3alpha/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/golang/v3alpha/golang.proto b/api/contrib/envoy/extensions/filters/network/golang/v3alpha/golang.proto
index f1051bc1aff3..e4ef538b3439 100644
--- a/api/contrib/envoy/extensions/filters/network/golang/v3alpha/golang.proto
+++ b/api/contrib/envoy/extensions/filters/network/golang/v3alpha/golang.proto
@@ -12,7 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.golang.v3alpha";
option java_outer_classname = "GolangProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/golang/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/golang/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
diff --git a/api/contrib/envoy/extensions/filters/network/kafka_broker/v3/BUILD b/api/contrib/envoy/extensions/filters/network/kafka_broker/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/filters/network/kafka_broker/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/kafka_broker/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/filters/network/kafka_broker/v3/kafka_broker.proto b/api/contrib/envoy/extensions/filters/network/kafka_broker/v3/kafka_broker.proto
index 83fdd27b378c..b8ab1d7e86b8 100644
--- a/api/contrib/envoy/extensions/filters/network/kafka_broker/v3/kafka_broker.proto
+++ b/api/contrib/envoy/extensions/filters/network/kafka_broker/v3/kafka_broker.proto
@@ -9,7 +9,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.kafka_broker.v3";
option java_outer_classname = "KafkaBrokerProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/kafka_broker/v3;kafka_brokerv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/kafka_broker/v3;kafka_brokerv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Kafka Broker]
@@ -22,4 +22,42 @@ message KafkaBroker {
// The prefix to use when emitting :ref:`statistics `.
string stat_prefix = 1 [(validate.rules).string = {min_len: 1}];
+
+ // Set to true if broker filter should attempt to serialize the received responses from the
+ // upstream broker instead of passing received bytes as is.
+ // Disabled by default.
+ bool force_response_rewrite = 2;
+
+ // Optional broker address rewrite specification.
+ // Allows the broker filter to rewrite Kafka responses so that all connections established by
+ // the Kafka clients point to Envoy.
+ // This allows Kafka cluster not to configure its 'advertised.listeners' property
+ // (as the necessary re-pointing will be done by this filter).
+ // This collection of rules should cover all brokers in the cluster that is being proxied,
+ // otherwise some nodes' addresses might leak to the downstream clients.
+ oneof broker_address_rewrite_spec {
+ // Broker address rewrite rules that match by broker ID.
+ IdBasedBrokerRewriteSpec id_based_broker_address_rewrite_spec = 3;
+ }
+}
+
+// Collection of rules matching by broker ID.
+message IdBasedBrokerRewriteSpec {
+ repeated IdBasedBrokerRewriteRule rules = 1;
+}
+
+// Defines a rule to rewrite broker address data.
+message IdBasedBrokerRewriteRule {
+ // Broker ID to match.
+ uint32 id = 1 [(validate.rules).uint32 = {gte: 0}];
+
+ // The host value to use (resembling the host part of Kafka's advertised.listeners).
+ // The value should point to the Envoy (not Kafka) listener, so that all client traffic goes
+ // through Envoy.
+ string host = 2 [(validate.rules).string = {min_len: 1}];
+
+ // The port value to use (resembling the port part of Kafka's advertised.listeners).
+ // The value should point to the Envoy (not Kafka) listener, so that all client traffic goes
+ // through Envoy.
+ uint32 port = 3 [(validate.rules).uint32 = {lte: 65535}];
}
diff --git a/api/contrib/envoy/extensions/filters/network/kafka_mesh/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/network/kafka_mesh/v3alpha/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/contrib/envoy/extensions/filters/network/kafka_mesh/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/kafka_mesh/v3alpha/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/kafka_mesh/v3alpha/kafka_mesh.proto b/api/contrib/envoy/extensions/filters/network/kafka_mesh/v3alpha/kafka_mesh.proto
index 68c71f296ee3..26336dc575f2 100644
--- a/api/contrib/envoy/extensions/filters/network/kafka_mesh/v3alpha/kafka_mesh.proto
+++ b/api/contrib/envoy/extensions/filters/network/kafka_mesh/v3alpha/kafka_mesh.proto
@@ -10,7 +10,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.kafka_mesh.v3alpha";
option java_outer_classname = "KafkaMeshProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/kafka_mesh/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/kafka_mesh/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
diff --git a/api/contrib/envoy/extensions/filters/network/mysql_proxy/v3/BUILD b/api/contrib/envoy/extensions/filters/network/mysql_proxy/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/filters/network/mysql_proxy/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/mysql_proxy/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/filters/network/mysql_proxy/v3/mysql_proxy.proto b/api/contrib/envoy/extensions/filters/network/mysql_proxy/v3/mysql_proxy.proto
index b1bce3bc931c..f3f2cefdc372 100644
--- a/api/contrib/envoy/extensions/filters/network/mysql_proxy/v3/mysql_proxy.proto
+++ b/api/contrib/envoy/extensions/filters/network/mysql_proxy/v3/mysql_proxy.proto
@@ -9,7 +9,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.mysql_proxy.v3";
option java_outer_classname = "MysqlProxyProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/mysql_proxy/v3;mysql_proxyv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/mysql_proxy/v3;mysql_proxyv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: MySQL proxy]
diff --git a/api/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha/postgres_proxy.proto b/api/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha/postgres_proxy.proto
index afded237e8da..21a3049a1cce 100644
--- a/api/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha/postgres_proxy.proto
+++ b/api/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha/postgres_proxy.proto
@@ -10,7 +10,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.postgres_proxy.v3alpha";
option java_outer_classname = "PostgresProxyProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/postgres_proxy/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/postgres_proxy/v3alpha";
option (udpa.annotations.file_status).work_in_progress = true;
option (udpa.annotations.file_status).package_version_status = ACTIVE;
diff --git a/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/BUILD b/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/BUILD
index 2f90ace882d9..fd0f6d5f15c4 100644
--- a/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/config/core/v3:pkg",
"//envoy/config/route/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/rocketmq_proxy.proto b/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/rocketmq_proxy.proto
index dc8de3aaeec7..cca6abbd7e4d 100644
--- a/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/rocketmq_proxy.proto
+++ b/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/rocketmq_proxy.proto
@@ -12,7 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.rocketmq_proxy.v3";
option java_outer_classname = "RocketmqProxyProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/rocketmq_proxy/v3;rocketmq_proxyv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3;rocketmq_proxyv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: RocketMQ Proxy]
diff --git a/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/route.proto b/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/route.proto
index ff76d9d344d6..2810aaba7b1b 100644
--- a/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/route.proto
+++ b/api/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3/route.proto
@@ -12,7 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.rocketmq_proxy.v3";
option java_outer_classname = "RouteProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/rocketmq_proxy/v3;rocketmq_proxyv3";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/rocketmq_proxy/v3;rocketmq_proxyv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Rocketmq Proxy Route Configuration]
diff --git a/api/contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha/router.proto b/api/contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha/router.proto
index 15a3137499a8..b4bb27938331 100644
--- a/api/contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha/router.proto
+++ b/api/contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha/router.proto
@@ -7,7 +7,7 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.sip_proxy.router.v3alpha";
option java_outer_classname = "RouterProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sip_proxy/router/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/sip_proxy/router/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Router]
diff --git a/api/contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha/BUILD
index 7753cfeb3d6e..79668d20fb02 100644
--- a/api/contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha/tra.proto b/api/contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha/tra.proto
index 8599a3817942..daeff268d51c 100644
--- a/api/contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha/tra.proto
+++ b/api/contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha/tra.proto
@@ -13,7 +13,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.sip_proxy.tra.v3alpha";
option java_outer_classname = "TraProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sip_proxy/tra/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: TRA]
diff --git a/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/BUILD b/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/BUILD
index 808cd297266e..4b04e5d2092d 100644
--- a/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//contrib/envoy/extensions/filters/network/sip_proxy/tra/v3alpha:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/route.proto b/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/route.proto
index 5f906b531335..614f1c510516 100644
--- a/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/route.proto
+++ b/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/route.proto
@@ -8,7 +8,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.sip_proxy.v3alpha";
option java_outer_classname = "RouteProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sip_proxy/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Sip Proxy Route Configuration]
diff --git a/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/sip_proxy.proto b/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/sip_proxy.proto
index 6843f7d3b8a8..99396f3665f6 100644
--- a/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/sip_proxy.proto
+++ b/api/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha/sip_proxy.proto
@@ -14,7 +14,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.network.sip_proxy.v3alpha";
option java_outer_classname = "SipProxyProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/sip_proxy/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/filters/network/sip_proxy/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Sip Proxy]
diff --git a/api/contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha/BUILD b/api/contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha/hyperscan.proto b/api/contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha/hyperscan.proto
index 96fc8d7cec69..8336fdf717a7 100644
--- a/api/contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha/hyperscan.proto
+++ b/api/contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha/hyperscan.proto
@@ -8,10 +8,11 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.matching.input_matchers.hyperscan.v3alpha";
option java_outer_classname = "HyperscanProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/matching/input_matchers/hyperscan/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/matching/input_matchers/hyperscan/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Hyperscan matcher]
+// Hyperscan :ref:`configuration overview `.
// [#extension: envoy.matching.input_matchers.hyperscan]
// `Hyperscan `_ regex matcher. The matcher uses the Hyperscan
diff --git a/api/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/BUILD b/api/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/dlb.proto b/api/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/dlb.proto
index 57eac9b6a7b2..234a9f9a3975 100644
--- a/api/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/dlb.proto
+++ b/api/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha/dlb.proto
@@ -7,7 +7,7 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.extensions.network.connection_balance.dlb.v3alpha";
option java_outer_classname = "DlbProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/network/connection_balance/dlb/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/network/connection_balance/dlb/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Dlb connection balancer configuration]
diff --git a/api/contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha/BUILD b/api/contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha/cryptomb.proto b/api/contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha/cryptomb.proto
index d3407beab3ee..20290d8882c0 100644
--- a/api/contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha/cryptomb.proto
+++ b/api/contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha/cryptomb.proto
@@ -13,7 +13,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.private_key_providers.cryptomb.v3alpha";
option java_outer_classname = "CryptombProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/private_key_providers/cryptomb/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/private_key_providers/cryptomb/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: CryptoMb private key provider]
diff --git a/api/contrib/envoy/extensions/private_key_providers/qat/v3alpha/BUILD b/api/contrib/envoy/extensions/private_key_providers/qat/v3alpha/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/contrib/envoy/extensions/private_key_providers/qat/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/private_key_providers/qat/v3alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/private_key_providers/qat/v3alpha/qat.proto b/api/contrib/envoy/extensions/private_key_providers/qat/v3alpha/qat.proto
index e5c58e11f78a..d90bb7e330c7 100644
--- a/api/contrib/envoy/extensions/private_key_providers/qat/v3alpha/qat.proto
+++ b/api/contrib/envoy/extensions/private_key_providers/qat/v3alpha/qat.proto
@@ -13,7 +13,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.private_key_providers.qat.v3alpha";
option java_outer_classname = "QatProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/private_key_providers/qat/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/private_key_providers/qat/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: `QAT` private key provider]
diff --git a/api/contrib/envoy/extensions/regex_engines/hyperscan/v3alpha/BUILD b/api/contrib/envoy/extensions/regex_engines/hyperscan/v3alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/regex_engines/hyperscan/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/regex_engines/hyperscan/v3alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/regex_engines/hyperscan/v3alpha/hyperscan.proto b/api/contrib/envoy/extensions/regex_engines/hyperscan/v3alpha/hyperscan.proto
index 242694934307..7353e2f27299 100644
--- a/api/contrib/envoy/extensions/regex_engines/hyperscan/v3alpha/hyperscan.proto
+++ b/api/contrib/envoy/extensions/regex_engines/hyperscan/v3alpha/hyperscan.proto
@@ -7,10 +7,11 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.extensions.regex_engines.hyperscan.v3alpha";
option java_outer_classname = "HyperscanProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/regex_engines/hyperscan/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/regex_engines/hyperscan/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Hyperscan]
+// Hyperscan :ref:`configuration overview `.
// [#extension: envoy.regex_engines.hyperscan]
// `Hyperscan `_ regex engine. The engine uses hybrid automata
diff --git a/api/contrib/envoy/extensions/router/cluster_specifier/golang/v3alpha/BUILD b/api/contrib/envoy/extensions/router/cluster_specifier/golang/v3alpha/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/contrib/envoy/extensions/router/cluster_specifier/golang/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/router/cluster_specifier/golang/v3alpha/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/contrib/envoy/extensions/router/cluster_specifier/golang/v3alpha/golang.proto b/api/contrib/envoy/extensions/router/cluster_specifier/golang/v3alpha/golang.proto
index f22685aff563..884f88e29d81 100644
--- a/api/contrib/envoy/extensions/router/cluster_specifier/golang/v3alpha/golang.proto
+++ b/api/contrib/envoy/extensions/router/cluster_specifier/golang/v3alpha/golang.proto
@@ -12,7 +12,7 @@ import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.router.cluster_specifier.golang.v3alpha";
option java_outer_classname = "GolangProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/router/cluster_specifier/golang/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/router/cluster_specifier/golang/v3alpha";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
diff --git a/api/contrib/envoy/extensions/vcl/v3alpha/BUILD b/api/contrib/envoy/extensions/vcl/v3alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/contrib/envoy/extensions/vcl/v3alpha/BUILD
+++ b/api/contrib/envoy/extensions/vcl/v3alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/contrib/envoy/extensions/vcl/v3alpha/vcl_socket_interface.proto b/api/contrib/envoy/extensions/vcl/v3alpha/vcl_socket_interface.proto
index fc9d2b88535a..48155ecf9c1a 100644
--- a/api/contrib/envoy/extensions/vcl/v3alpha/vcl_socket_interface.proto
+++ b/api/contrib/envoy/extensions/vcl/v3alpha/vcl_socket_interface.proto
@@ -7,7 +7,7 @@ import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.extensions.vcl.v3alpha";
option java_outer_classname = "VclSocketInterfaceProto";
option java_multiple_files = true;
-option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/vcl/v3alpha";
+option go_package = "github.com/envoyproxy/go-control-plane/contrib/envoy/extensions/vcl/v3alpha";
option (udpa.annotations.file_status).work_in_progress = true;
option (udpa.annotations.file_status).package_version_status = ACTIVE;
diff --git a/api/envoy/admin/v2alpha/BUILD b/api/envoy/admin/v2alpha/BUILD
index 6fe8cb995d34..0d0be4ad7d9f 100644
--- a/api/envoy/admin/v2alpha/BUILD
+++ b/api/envoy/admin/v2alpha/BUILD
@@ -11,6 +11,6 @@ api_proto_package(
"//envoy/config/bootstrap/v2:pkg",
"//envoy/service/tap/v2alpha:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/admin/v3/BUILD b/api/envoy/admin/v3/BUILD
index 507cffde4ade..d33f4e0b06cf 100644
--- a/api/envoy/admin/v3/BUILD
+++ b/api/envoy/admin/v3/BUILD
@@ -11,6 +11,6 @@ api_proto_package(
"//envoy/config/core/v3:pkg",
"//envoy/config/tap/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/api/v2/BUILD b/api/envoy/api/v2/BUILD
index 0aded6e51b71..b90e220bc8d6 100644
--- a/api/envoy/api/v2/BUILD
+++ b/api/envoy/api/v2/BUILD
@@ -17,6 +17,6 @@ api_proto_package(
"//envoy/config/filter/accesslog/v2:pkg",
"//envoy/config/listener/v2:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/api/v2/auth/BUILD b/api/envoy/api/v2/auth/BUILD
index aaab1df15547..ce0d681bc294 100644
--- a/api/envoy/api/v2/auth/BUILD
+++ b/api/envoy/api/v2/auth/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/api/v2/cluster/BUILD b/api/envoy/api/v2/cluster/BUILD
index 2ffbc958786b..4810773b6086 100644
--- a/api/envoy/api/v2/cluster/BUILD
+++ b/api/envoy/api/v2/cluster/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/api/v2/core/BUILD b/api/envoy/api/v2/core/BUILD
index 8475a4ba8376..fb33c9b2d291 100644
--- a/api/envoy/api/v2/core/BUILD
+++ b/api/envoy/api/v2/core/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/annotations:pkg",
"//envoy/type:pkg",
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/api/v2/endpoint/BUILD b/api/envoy/api/v2/endpoint/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/api/v2/endpoint/BUILD
+++ b/api/envoy/api/v2/endpoint/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/api/v2/listener/BUILD b/api/envoy/api/v2/listener/BUILD
index ea23dff77c22..220a49100a6c 100644
--- a/api/envoy/api/v2/listener/BUILD
+++ b/api/envoy/api/v2/listener/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/api/v2/auth:pkg",
"//envoy/api/v2/core:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/api/v2/ratelimit/BUILD b/api/envoy/api/v2/ratelimit/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/api/v2/ratelimit/BUILD
+++ b/api/envoy/api/v2/ratelimit/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/api/v2/route/BUILD b/api/envoy/api/v2/route/BUILD
index 3d4e6acfeac1..a8df3ab5a31a 100644
--- a/api/envoy/api/v2/route/BUILD
+++ b/api/envoy/api/v2/route/BUILD
@@ -11,6 +11,6 @@ api_proto_package(
"//envoy/type:pkg",
"//envoy/type/matcher:pkg",
"//envoy/type/tracing/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/accesslog/v2/BUILD b/api/envoy/config/accesslog/v2/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/accesslog/v2/BUILD
+++ b/api/envoy/config/accesslog/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/accesslog/v3/BUILD b/api/envoy/config/accesslog/v3/BUILD
index e657889317c5..17fdbdc97dfd 100644
--- a/api/envoy/config/accesslog/v3/BUILD
+++ b/api/envoy/config/accesslog/v3/BUILD
@@ -11,6 +11,6 @@ api_proto_package(
"//envoy/data/accesslog/v3:pkg",
"//envoy/type/matcher/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/accesslog/v3/accesslog.proto b/api/envoy/config/accesslog/v3/accesslog.proto
index 0904b5d055a7..fe3ba2bc97ca 100644
--- a/api/envoy/config/accesslog/v3/accesslog.proto
+++ b/api/envoy/config/accesslog/v3/accesslog.proto
@@ -254,6 +254,8 @@ message ResponseFlagFilter {
in: "UPE"
in: "NC"
in: "OM"
+ in: "DF"
+ in: "DO"
}
}
}];
diff --git a/api/envoy/config/bootstrap/v2/BUILD b/api/envoy/config/bootstrap/v2/BUILD
index 0c656d1a9c5a..f5623b97232f 100644
--- a/api/envoy/config/bootstrap/v2/BUILD
+++ b/api/envoy/config/bootstrap/v2/BUILD
@@ -13,6 +13,6 @@ api_proto_package(
"//envoy/config/metrics/v2:pkg",
"//envoy/config/overload/v2alpha:pkg",
"//envoy/config/trace/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/bootstrap/v3/BUILD b/api/envoy/config/bootstrap/v3/BUILD
index 23067e57ca46..b402807628e0 100644
--- a/api/envoy/config/bootstrap/v3/BUILD
+++ b/api/envoy/config/bootstrap/v3/BUILD
@@ -16,6 +16,6 @@ api_proto_package(
"//envoy/config/trace/v3:pkg",
"//envoy/extensions/transport_sockets/tls/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/bootstrap/v3/bootstrap.proto b/api/envoy/config/bootstrap/v3/bootstrap.proto
index f12f9819dcf8..b5f36f273bcc 100644
--- a/api/envoy/config/bootstrap/v3/bootstrap.proto
+++ b/api/envoy/config/bootstrap/v3/bootstrap.proto
@@ -41,7 +41,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// ` for more detail.
// Bootstrap :ref:`configuration overview `.
-// [#next-free-field: 40]
+// [#next-free-field: 41]
message Bootstrap {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.bootstrap.v2.Bootstrap";
@@ -136,6 +136,13 @@ message Bootstrap {
bool enable_deferred_creation_stats = 1;
}
+ message GrpcAsyncClientManagerConfig {
+ // Optional field to set the expiration time for the cached gRPC client object.
+ // The minimal value is 5s and the default is 50s.
+ google.protobuf.Duration max_cached_entry_idle_duration = 1
+ [(validate.rules).duration = {gte {seconds: 5}}];
+ }
+
reserved 10, 11;
reserved "runtime";
@@ -401,6 +408,9 @@ message Bootstrap {
// Optional application log configuration.
ApplicationLogConfig application_log_config = 38;
+
+ // Optional gRPC async manager config.
+ GrpcAsyncClientManagerConfig grpc_async_client_manager_config = 40;
}
// Administration interface :ref:`operations documentation
diff --git a/api/envoy/config/cluster/aggregate/v2alpha/BUILD b/api/envoy/config/cluster/aggregate/v2alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/cluster/aggregate/v2alpha/BUILD
+++ b/api/envoy/config/cluster/aggregate/v2alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/BUILD b/api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/BUILD
index 25c228fd5609..4f912f7ac49c 100644
--- a/api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/BUILD
+++ b/api/envoy/config/cluster/dynamic_forward_proxy/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/common/dynamic_forward_proxy/v2alpha:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/cluster/redis/BUILD b/api/envoy/config/cluster/redis/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/cluster/redis/BUILD
+++ b/api/envoy/config/cluster/redis/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/cluster/v3/BUILD b/api/envoy/config/cluster/v3/BUILD
index a98acddff0e4..80d74b61cd6a 100644
--- a/api/envoy/config/cluster/v3/BUILD
+++ b/api/envoy/config/cluster/v3/BUILD
@@ -11,7 +11,7 @@ api_proto_package(
"//envoy/config/endpoint/v3:pkg",
"//envoy/type/metadata/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/core/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/core/v3:pkg",
],
)
diff --git a/api/envoy/config/cluster/v3/cluster.proto b/api/envoy/config/cluster/v3/cluster.proto
index 91535b9ee1aa..9b847a33126b 100644
--- a/api/envoy/config/cluster/v3/cluster.proto
+++ b/api/envoy/config/cluster/v3/cluster.proto
@@ -1257,4 +1257,19 @@ message TrackClusterStats {
// ` tracking header and body sizes
// of requests and responses will be published.
bool request_response_sizes = 2;
+
+ // If true, some stats will be emitted per-endpoint, similar to the stats in admin ``/clusters``
+ // output.
+ //
+ // This does not currently output correct stats during a hot-restart.
+ //
+ // This is not currently implemented by all stat sinks.
+ //
+ // These stats do not honor filtering or tag extraction rules in :ref:`StatsConfig
+ // ` (but fixed-value tags are supported). Admin
+ // endpoint filtering is supported.
+ //
+ // This may not be used at the same time as
+ // :ref:`load_stats_config `.
+ bool per_endpoint_stats = 3;
}
diff --git a/api/envoy/config/cluster/v3/filter.proto b/api/envoy/config/cluster/v3/filter.proto
index 304179976198..54611edbf167 100644
--- a/api/envoy/config/cluster/v3/filter.proto
+++ b/api/envoy/config/cluster/v3/filter.proto
@@ -16,8 +16,8 @@ option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
-// [#protodoc-title: Upstream filters]
-// Upstream filters apply to the connections to the upstream cluster hosts.
+// [#protodoc-title: Upstream network filters]
+// Upstream network filters apply to the connections to the upstream cluster hosts.
message Filter {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.cluster.Filter";
@@ -28,7 +28,7 @@ message Filter {
// Filter specific configuration which depends on the filter being
// instantiated. See the supported filters for further documentation.
// Note that Envoy's :ref:`downstream network
- // filters ` are not valid upstream filters.
+ // filters ` are not valid upstream network filters.
// Only one of typed_config or config_discovery can be used.
google.protobuf.Any typed_config = 2;
diff --git a/api/envoy/config/common/dynamic_forward_proxy/v2alpha/BUILD b/api/envoy/config/common/dynamic_forward_proxy/v2alpha/BUILD
index 631cd93a3964..37595060971d 100644
--- a/api/envoy/config/common/dynamic_forward_proxy/v2alpha/BUILD
+++ b/api/envoy/config/common/dynamic_forward_proxy/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/common/key_value/v3/BUILD b/api/envoy/config/common/key_value/v3/BUILD
index e9b556d681cf..628f71321fba 100644
--- a/api/envoy/config/common/key_value/v3/BUILD
+++ b/api/envoy/config/common/key_value/v3/BUILD
@@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/config/common/matcher/v3/BUILD b/api/envoy/config/common/matcher/v3/BUILD
index 221350b756d4..fd0f6d5f15c4 100644
--- a/api/envoy/config/common/matcher/v3/BUILD
+++ b/api/envoy/config/common/matcher/v3/BUILD
@@ -9,7 +9,6 @@ api_proto_package(
"//envoy/config/core/v3:pkg",
"//envoy/config/route/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/common/matcher/v3/matcher.proto b/api/envoy/config/common/matcher/v3/matcher.proto
index 5b9da519687a..49a146d73bd1 100644
--- a/api/envoy/config/common/matcher/v3/matcher.proto
+++ b/api/envoy/config/common/matcher/v3/matcher.proto
@@ -6,8 +6,6 @@ import "envoy/config/core/v3/extension.proto";
import "envoy/config/route/v3/route_components.proto";
import "envoy/type/matcher/v3/string.proto";
-import "xds/annotations/v3/status.proto";
-
import "udpa/annotations/status.proto";
import "validate/validate.proto";
@@ -24,9 +22,10 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// is found the action specified by the most specific on_no_match will be evaluated.
// As an on_no_match might result in another matching tree being evaluated, this process
// might repeat several times until the final OnMatch (or no match) is decided.
+//
+// .. note::
+// Please use the syntactically equivalent :ref:`matching API `
message Matcher {
- option (xds.annotations.v3.message_status).work_in_progress = true;
-
// What to do if a match is successful.
message OnMatch {
oneof on_match {
diff --git a/api/envoy/config/common/mutation_rules/v3/BUILD b/api/envoy/config/common/mutation_rules/v3/BUILD
index 3f3a5395d2aa..e3bfc4e175f4 100644
--- a/api/envoy/config/common/mutation_rules/v3/BUILD
+++ b/api/envoy/config/common/mutation_rules/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/common/tap/v2alpha/BUILD b/api/envoy/config/common/tap/v2alpha/BUILD
index 3aed5a34a400..88cd9b521ebb 100644
--- a/api/envoy/config/common/tap/v2alpha/BUILD
+++ b/api/envoy/config/common/tap/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/service/tap/v2alpha:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/core/v3/BUILD b/api/envoy/config/core/v3/BUILD
index 812e942fc3b0..15185f766497 100644
--- a/api/envoy/config/core/v3/BUILD
+++ b/api/envoy/config/core/v3/BUILD
@@ -9,8 +9,8 @@ api_proto_package(
"//envoy/annotations:pkg",
"//envoy/type/matcher/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/core/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//xds/core/v3:pkg",
],
)
diff --git a/api/envoy/config/core/v3/address.proto b/api/envoy/config/core/v3/address.proto
index 3bd9b4cd3dc1..d8d47882655b 100644
--- a/api/envoy/config/core/v3/address.proto
+++ b/api/envoy/config/core/v3/address.proto
@@ -151,7 +151,7 @@ message BindConfig {
// precompiled binaries.
repeated SocketOption socket_options = 3;
- // Extra source addresses appended to the address specified in the `source_address`
+ // Extra source addresses appended to the address specified in the ``source_address``
// field. This enables to specify multiple source addresses.
// The source address selection is determined by :ref:`local_address_selector
// `.
diff --git a/api/envoy/config/core/v3/http_service.proto b/api/envoy/config/core/v3/http_service.proto
new file mode 100644
index 000000000000..426994c033ca
--- /dev/null
+++ b/api/envoy/config/core/v3/http_service.proto
@@ -0,0 +1,35 @@
+syntax = "proto3";
+
+package envoy.config.core.v3;
+
+import "envoy/config/core/v3/base.proto";
+import "envoy/config/core/v3/http_uri.proto";
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.config.core.v3";
+option java_outer_classname = "HttpServiceProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: HTTP services]
+
+// HTTP service configuration.
+message HttpService {
+ // The service's HTTP URI. For example:
+ //
+ // .. code-block:: yaml
+ //
+ // http_uri:
+ // uri: https://www.myserviceapi.com/v1/data
+ // cluster: www.myserviceapi.com|443
+ //
+ HttpUri http_uri = 1;
+
+ // Specifies a list of HTTP headers that should be added to each request
+ // handled by this virtual host.
+ repeated HeaderValueOption request_headers_to_add = 2
+ [(validate.rules).repeated = {max_items: 1000}];
+}
diff --git a/api/envoy/config/core/v3/http_uri.proto b/api/envoy/config/core/v3/http_uri.proto
index 93b63093e377..bac37c0d5839 100644
--- a/api/envoy/config/core/v3/http_uri.proto
+++ b/api/envoy/config/core/v3/http_uri.proto
@@ -52,6 +52,7 @@ message HttpUri {
// Sets the maximum duration in milliseconds that a response can take to arrive upon request.
google.protobuf.Duration timeout = 3 [(validate.rules).duration = {
required: true
+ lt {seconds: 4294967296}
gte {}
}];
}
diff --git a/api/envoy/config/core/v3/protocol.proto b/api/envoy/config/core/v3/protocol.proto
index 71b12f7247e0..d128dc6d93d7 100644
--- a/api/envoy/config/core/v3/protocol.proto
+++ b/api/envoy/config/core/v3/protocol.proto
@@ -85,7 +85,7 @@ message QuicProtocolOptions {
[(validate.rules).uint32 = {lte: 25165824 gte: 1}];
// The number of timeouts that can occur before port migration is triggered for QUIC clients.
- // This defaults to 1. If set to 0, port migration will not occur on path degrading.
+ // This defaults to 4. If set to 0, port migration will not occur on path degrading.
// Timeout here refers to QUIC internal path degrading timeout mechanism, such as PTO.
// This has no effect on server sessions.
google.protobuf.UInt32Value num_timeouts_to_trigger_port_migration = 4
@@ -96,11 +96,11 @@ message QuicProtocolOptions {
QuicKeepAliveSettings connection_keepalive = 5;
// A comma-separated list of strings representing QUIC connection options defined in
- // `QUICHE ` and to be sent by upstream connections.
+ // `QUICHE `_ and to be sent by upstream connections.
string connection_options = 6;
// A comma-separated list of strings representing QUIC client connection options defined in
- // `QUICHE ` and to be sent by upstream connections.
+ // `QUICHE `_ and to be sent by upstream connections.
string client_connection_options = 7;
}
diff --git a/api/envoy/config/endpoint/v3/BUILD b/api/envoy/config/endpoint/v3/BUILD
index ad2fc9a9a84f..eeae27ad54b4 100644
--- a/api/envoy/config/endpoint/v3/BUILD
+++ b/api/envoy/config/endpoint/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/endpoint/v3/endpoint.proto b/api/envoy/config/endpoint/v3/endpoint.proto
index 6cdc179d8931..20939526eb5f 100644
--- a/api/envoy/config/endpoint/v3/endpoint.proto
+++ b/api/envoy/config/endpoint/v3/endpoint.proto
@@ -40,7 +40,6 @@ message ClusterLoadAssignment {
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.ClusterLoadAssignment.Policy";
- // [#not-implemented-hide:]
message DropOverload {
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.ClusterLoadAssignment.Policy.DropOverload";
@@ -75,7 +74,9 @@ message ClusterLoadAssignment {
// "throttle"_drop = 60%
// "lb"_drop = 20% // 50% of the remaining 'actual' load, which is 40%.
// actual_outgoing_load = 20% // remaining after applying all categories.
- // [#not-implemented-hide:]
+ //
+ // Envoy supports only one element and will NACK if more than one element is present.
+ // Other xDS-capable data planes will not necessarily have this limitation.
repeated DropOverload drop_overloads = 2;
// Priority levels and localities are considered overprovisioned with this
diff --git a/api/envoy/config/endpoint/v3/endpoint_components.proto b/api/envoy/config/endpoint/v3/endpoint_components.proto
index c9572fd8a11d..ebd2bb4c3324 100644
--- a/api/envoy/config/endpoint/v3/endpoint_components.proto
+++ b/api/envoy/config/endpoint/v3/endpoint_components.proto
@@ -88,8 +88,8 @@ message Endpoint {
// :ref:`auto_host_rewrite `.
string hostname = 3;
- // An ordered list of addresses that together with `address` comprise the
- // list of addresses for an endpoint. The address given in the `address` is
+ // An ordered list of addresses that together with ``address`` comprise the
+ // list of addresses for an endpoint. The address given in the ``address`` is
// prepended to this list. It is assumed that the list must already be
// sorted by preference order of the addresses. This will only be supported
// for STATIC and EDS clusters.
diff --git a/api/envoy/config/filter/accesslog/v2/BUILD b/api/envoy/config/filter/accesslog/v2/BUILD
index f7c626ac0e5a..8b7956534cbe 100644
--- a/api/envoy/config/filter/accesslog/v2/BUILD
+++ b/api/envoy/config/filter/accesslog/v2/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/api/v2/core:pkg",
"//envoy/api/v2/route:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/dubbo/router/v2alpha1/BUILD b/api/envoy/config/filter/dubbo/router/v2alpha1/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/dubbo/router/v2alpha1/BUILD
+++ b/api/envoy/config/filter/dubbo/router/v2alpha1/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/fault/v2/BUILD b/api/envoy/config/filter/fault/v2/BUILD
index 29613b4c3487..ad7d3cbadf20 100644
--- a/api/envoy/config/filter/fault/v2/BUILD
+++ b/api/envoy/config/filter/fault/v2/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/adaptive_concurrency/v2alpha/BUILD b/api/envoy/config/filter/http/adaptive_concurrency/v2alpha/BUILD
index 2ffbc958786b..4810773b6086 100644
--- a/api/envoy/config/filter/http/adaptive_concurrency/v2alpha/BUILD
+++ b/api/envoy/config/filter/http/adaptive_concurrency/v2alpha/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/aws_lambda/v2alpha/BUILD b/api/envoy/config/filter/http/aws_lambda/v2alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/aws_lambda/v2alpha/BUILD
+++ b/api/envoy/config/filter/http/aws_lambda/v2alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/aws_request_signing/v2alpha/BUILD b/api/envoy/config/filter/http/aws_request_signing/v2alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/aws_request_signing/v2alpha/BUILD
+++ b/api/envoy/config/filter/http/aws_request_signing/v2alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/buffer/v2/BUILD b/api/envoy/config/filter/http/buffer/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/buffer/v2/BUILD
+++ b/api/envoy/config/filter/http/buffer/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/cache/v2alpha/BUILD b/api/envoy/config/filter/http/cache/v2alpha/BUILD
index 5cbf4e821fc8..a4882c58634e 100644
--- a/api/envoy/config/filter/http/cache/v2alpha/BUILD
+++ b/api/envoy/config/filter/http/cache/v2alpha/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/route:pkg",
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/compressor/v2/BUILD b/api/envoy/config/filter/http/compressor/v2/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/filter/http/compressor/v2/BUILD
+++ b/api/envoy/config/filter/http/compressor/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/cors/v2/BUILD b/api/envoy/config/filter/http/cors/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/cors/v2/BUILD
+++ b/api/envoy/config/filter/http/cors/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/csrf/v2/BUILD b/api/envoy/config/filter/http/csrf/v2/BUILD
index aaab1df15547..ce0d681bc294 100644
--- a/api/envoy/config/filter/http/csrf/v2/BUILD
+++ b/api/envoy/config/filter/http/csrf/v2/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/dynamic_forward_proxy/v2alpha/BUILD b/api/envoy/config/filter/http/dynamic_forward_proxy/v2alpha/BUILD
index 25c228fd5609..4f912f7ac49c 100644
--- a/api/envoy/config/filter/http/dynamic_forward_proxy/v2alpha/BUILD
+++ b/api/envoy/config/filter/http/dynamic_forward_proxy/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/common/dynamic_forward_proxy/v2alpha:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/dynamo/v2/BUILD b/api/envoy/config/filter/http/dynamo/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/dynamo/v2/BUILD
+++ b/api/envoy/config/filter/http/dynamo/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/ext_authz/v2/BUILD b/api/envoy/config/filter/http/ext_authz/v2/BUILD
index 74e703c963cb..5dc4abc38cb8 100644
--- a/api/envoy/config/filter/http/ext_authz/v2/BUILD
+++ b/api/envoy/config/filter/http/ext_authz/v2/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/api/v2/core:pkg",
"//envoy/type:pkg",
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/fault/v2/BUILD b/api/envoy/config/filter/http/fault/v2/BUILD
index df4feab714ff..568e1dad4019 100644
--- a/api/envoy/config/filter/http/fault/v2/BUILD
+++ b/api/envoy/config/filter/http/fault/v2/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/api/v2/route:pkg",
"//envoy/config/filter/fault/v2:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/grpc_http1_bridge/v2/BUILD b/api/envoy/config/filter/http/grpc_http1_bridge/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/grpc_http1_bridge/v2/BUILD
+++ b/api/envoy/config/filter/http/grpc_http1_bridge/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/grpc_http1_reverse_bridge/v2alpha1/BUILD b/api/envoy/config/filter/http/grpc_http1_reverse_bridge/v2alpha1/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/grpc_http1_reverse_bridge/v2alpha1/BUILD
+++ b/api/envoy/config/filter/http/grpc_http1_reverse_bridge/v2alpha1/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/grpc_stats/v2alpha/BUILD b/api/envoy/config/filter/http/grpc_stats/v2alpha/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/filter/http/grpc_stats/v2alpha/BUILD
+++ b/api/envoy/config/filter/http/grpc_stats/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/grpc_web/v2/BUILD b/api/envoy/config/filter/http/grpc_web/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/grpc_web/v2/BUILD
+++ b/api/envoy/config/filter/http/grpc_web/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/gzip/v2/BUILD b/api/envoy/config/filter/http/gzip/v2/BUILD
index 9cb0d1293421..4089809e5f7b 100644
--- a/api/envoy/config/filter/http/gzip/v2/BUILD
+++ b/api/envoy/config/filter/http/gzip/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/filter/http/compressor/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/header_to_metadata/v2/BUILD b/api/envoy/config/filter/http/header_to_metadata/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/header_to_metadata/v2/BUILD
+++ b/api/envoy/config/filter/http/header_to_metadata/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/health_check/v2/BUILD b/api/envoy/config/filter/http/health_check/v2/BUILD
index 22fc8fd458e6..5cc84b4af88d 100644
--- a/api/envoy/config/filter/http/health_check/v2/BUILD
+++ b/api/envoy/config/filter/http/health_check/v2/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/route:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/ip_tagging/v2/BUILD b/api/envoy/config/filter/http/ip_tagging/v2/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/filter/http/ip_tagging/v2/BUILD
+++ b/api/envoy/config/filter/http/ip_tagging/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/jwt_authn/v2alpha/BUILD b/api/envoy/config/filter/http/jwt_authn/v2alpha/BUILD
index 1e485f4e158a..ef28c91bc4be 100644
--- a/api/envoy/config/filter/http/jwt_authn/v2alpha/BUILD
+++ b/api/envoy/config/filter/http/jwt_authn/v2alpha/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/api/v2/route:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/lua/v2/BUILD b/api/envoy/config/filter/http/lua/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/lua/v2/BUILD
+++ b/api/envoy/config/filter/http/lua/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/on_demand/v2/BUILD b/api/envoy/config/filter/http/on_demand/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/on_demand/v2/BUILD
+++ b/api/envoy/config/filter/http/on_demand/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/original_src/v2alpha1/BUILD b/api/envoy/config/filter/http/original_src/v2alpha1/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/original_src/v2alpha1/BUILD
+++ b/api/envoy/config/filter/http/original_src/v2alpha1/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/rate_limit/v2/BUILD b/api/envoy/config/filter/http/rate_limit/v2/BUILD
index 5b66057a82cd..e5e3cac0561b 100644
--- a/api/envoy/config/filter/http/rate_limit/v2/BUILD
+++ b/api/envoy/config/filter/http/rate_limit/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/ratelimit/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/rbac/v2/BUILD b/api/envoy/config/filter/http/rbac/v2/BUILD
index 90082d083a3f..a7b74db08b49 100644
--- a/api/envoy/config/filter/http/rbac/v2/BUILD
+++ b/api/envoy/config/filter/http/rbac/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/rbac/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/router/v2/BUILD b/api/envoy/config/filter/http/router/v2/BUILD
index 4b7ccc42a6ca..3e6564b8fdd4 100644
--- a/api/envoy/config/filter/http/router/v2/BUILD
+++ b/api/envoy/config/filter/http/router/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/filter/accesslog/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/squash/v2/BUILD b/api/envoy/config/filter/http/squash/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/squash/v2/BUILD
+++ b/api/envoy/config/filter/http/squash/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/http/tap/v2alpha/BUILD b/api/envoy/config/filter/http/tap/v2alpha/BUILD
index cf02fc6c0b1f..2e7c51a2a621 100644
--- a/api/envoy/config/filter/http/tap/v2alpha/BUILD
+++ b/api/envoy/config/filter/http/tap/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/common/tap/v2alpha:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/http/transcoder/v2/BUILD b/api/envoy/config/filter/http/transcoder/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/http/transcoder/v2/BUILD
+++ b/api/envoy/config/filter/http/transcoder/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/listener/http_inspector/v2/BUILD b/api/envoy/config/filter/listener/http_inspector/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/listener/http_inspector/v2/BUILD
+++ b/api/envoy/config/filter/listener/http_inspector/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/listener/original_dst/v2/BUILD b/api/envoy/config/filter/listener/original_dst/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/listener/original_dst/v2/BUILD
+++ b/api/envoy/config/filter/listener/original_dst/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/listener/original_src/v2alpha1/BUILD b/api/envoy/config/filter/listener/original_src/v2alpha1/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/listener/original_src/v2alpha1/BUILD
+++ b/api/envoy/config/filter/listener/original_src/v2alpha1/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/listener/proxy_protocol/v2/BUILD b/api/envoy/config/filter/listener/proxy_protocol/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/listener/proxy_protocol/v2/BUILD
+++ b/api/envoy/config/filter/listener/proxy_protocol/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/listener/tls_inspector/v2/BUILD b/api/envoy/config/filter/listener/tls_inspector/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/listener/tls_inspector/v2/BUILD
+++ b/api/envoy/config/filter/listener/tls_inspector/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/network/client_ssl_auth/v2/BUILD b/api/envoy/config/filter/network/client_ssl_auth/v2/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/filter/network/client_ssl_auth/v2/BUILD
+++ b/api/envoy/config/filter/network/client_ssl_auth/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/direct_response/v2/BUILD b/api/envoy/config/filter/network/direct_response/v2/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/filter/network/direct_response/v2/BUILD
+++ b/api/envoy/config/filter/network/direct_response/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/dubbo_proxy/v2alpha1/BUILD b/api/envoy/config/filter/network/dubbo_proxy/v2alpha1/BUILD
index 5fe475a5dcf8..90d0f23bdb20 100644
--- a/api/envoy/config/filter/network/dubbo_proxy/v2alpha1/BUILD
+++ b/api/envoy/config/filter/network/dubbo_proxy/v2alpha1/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/api/v2/route:pkg",
"//envoy/type:pkg",
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/echo/v2/BUILD b/api/envoy/config/filter/network/echo/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/network/echo/v2/BUILD
+++ b/api/envoy/config/filter/network/echo/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/network/ext_authz/v2/BUILD b/api/envoy/config/filter/network/ext_authz/v2/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/filter/network/ext_authz/v2/BUILD
+++ b/api/envoy/config/filter/network/ext_authz/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/http_connection_manager/v2/BUILD b/api/envoy/config/filter/network/http_connection_manager/v2/BUILD
index b03bcd437c3d..d88a165dc606 100644
--- a/api/envoy/config/filter/network/http_connection_manager/v2/BUILD
+++ b/api/envoy/config/filter/network/http_connection_manager/v2/BUILD
@@ -13,6 +13,6 @@ api_proto_package(
"//envoy/config/trace/v2:pkg",
"//envoy/type:pkg",
"//envoy/type/tracing/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/kafka_broker/v2alpha1/BUILD b/api/envoy/config/filter/network/kafka_broker/v2alpha1/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/network/kafka_broker/v2alpha1/BUILD
+++ b/api/envoy/config/filter/network/kafka_broker/v2alpha1/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/network/kafka_broker/v2alpha1/kafka_broker.proto b/api/envoy/config/filter/network/kafka_broker/v2alpha1/kafka_broker.proto
index 3611c1d6759f..829726a49892 100644
--- a/api/envoy/config/filter/network/kafka_broker/v2alpha1/kafka_broker.proto
+++ b/api/envoy/config/filter/network/kafka_broker/v2alpha1/kafka_broker.proto
@@ -21,4 +21,42 @@ option (udpa.annotations.file_status).package_version_status = FROZEN;
message KafkaBroker {
// The prefix to use when emitting :ref:`statistics `.
string stat_prefix = 1 [(validate.rules).string = {min_bytes: 1}];
+
+ // Set to true if broker filter should attempt to serialize the received responses from the
+ // upstream broker instead of passing received bytes as is.
+ // Disabled by default.
+ bool force_response_rewrite = 2;
+
+ // Optional broker address rewrite specification.
+ // Allows the broker filter to rewrite Kafka responses so that all connections established by
+ // the Kafka clients point to Envoy.
+ // This allows Kafka cluster not to configure its 'advertised.listeners' property
+ // (as the necessary re-pointing will be done by this filter).
+ // This collection of rules should cover all brokers in the cluster that is being proxied,
+ // otherwise some nodes' addresses might leak to the downstream clients.
+ oneof broker_address_rewrite_spec {
+ // Broker address rewrite rules that match by broker ID.
+ IdBasedBrokerRewriteSpec id_based_broker_address_rewrite_spec = 3;
+ }
+}
+
+// Collection of rules matching by broker ID.
+message IdBasedBrokerRewriteSpec {
+ repeated IdBasedBrokerRewriteRule rules = 1;
+}
+
+// Defines a rule to rewrite broker address data.
+message IdBasedBrokerRewriteRule {
+ // Broker ID to match.
+ uint32 id = 1 [(validate.rules).uint32 = {gte: 0}];
+
+ // The host value to use (resembling the host part of Kafka's advertised.listeners).
+ // The value should point to the Envoy (not Kafka) listener, so that all client traffic goes
+ // through Envoy.
+ string host = 2 [(validate.rules).string = {min_len: 1}];
+
+ // The port value to use (resembling the port part of Kafka's advertised.listeners).
+ // The value should point to the Envoy (not Kafka) listener, so that all client traffic goes
+ // through Envoy.
+ uint32 port = 3 [(validate.rules).uint32 = {lte: 65535}];
}
diff --git a/api/envoy/config/filter/network/local_rate_limit/v2alpha/BUILD b/api/envoy/config/filter/network/local_rate_limit/v2alpha/BUILD
index 2ffbc958786b..4810773b6086 100644
--- a/api/envoy/config/filter/network/local_rate_limit/v2alpha/BUILD
+++ b/api/envoy/config/filter/network/local_rate_limit/v2alpha/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/mongo_proxy/v2/BUILD b/api/envoy/config/filter/network/mongo_proxy/v2/BUILD
index b4f275ad5f87..d301445b93b5 100644
--- a/api/envoy/config/filter/network/mongo_proxy/v2/BUILD
+++ b/api/envoy/config/filter/network/mongo_proxy/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/filter/fault/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/mysql_proxy/v1alpha1/BUILD b/api/envoy/config/filter/network/mysql_proxy/v1alpha1/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/network/mysql_proxy/v1alpha1/BUILD
+++ b/api/envoy/config/filter/network/mysql_proxy/v1alpha1/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/network/rate_limit/v2/BUILD b/api/envoy/config/filter/network/rate_limit/v2/BUILD
index 6d29e84c421c..1bf86ec50318 100644
--- a/api/envoy/config/filter/network/rate_limit/v2/BUILD
+++ b/api/envoy/config/filter/network/rate_limit/v2/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/ratelimit:pkg",
"//envoy/config/ratelimit/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/rbac/v2/BUILD b/api/envoy/config/filter/network/rbac/v2/BUILD
index 90082d083a3f..a7b74db08b49 100644
--- a/api/envoy/config/filter/network/rbac/v2/BUILD
+++ b/api/envoy/config/filter/network/rbac/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/rbac/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/redis_proxy/v2/BUILD b/api/envoy/config/filter/network/redis_proxy/v2/BUILD
index f91701518907..d9a6fd81b488 100644
--- a/api/envoy/config/filter/network/redis_proxy/v2/BUILD
+++ b/api/envoy/config/filter/network/redis_proxy/v2/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/sni_cluster/v2/BUILD b/api/envoy/config/filter/network/sni_cluster/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/network/sni_cluster/v2/BUILD
+++ b/api/envoy/config/filter/network/sni_cluster/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/network/tcp_proxy/v2/BUILD b/api/envoy/config/filter/network/tcp_proxy/v2/BUILD
index c02167a174de..59e433512707 100644
--- a/api/envoy/config/filter/network/tcp_proxy/v2/BUILD
+++ b/api/envoy/config/filter/network/tcp_proxy/v2/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/api/v2/core:pkg",
"//envoy/config/filter/accesslog/v2:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/thrift_proxy/v2alpha1/BUILD b/api/envoy/config/filter/network/thrift_proxy/v2alpha1/BUILD
index 1e485f4e158a..ef28c91bc4be 100644
--- a/api/envoy/config/filter/network/thrift_proxy/v2alpha1/BUILD
+++ b/api/envoy/config/filter/network/thrift_proxy/v2alpha1/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/api/v2/route:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/network/zookeeper_proxy/v1alpha1/BUILD b/api/envoy/config/filter/network/zookeeper_proxy/v1alpha1/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/network/zookeeper_proxy/v1alpha1/BUILD
+++ b/api/envoy/config/filter/network/zookeeper_proxy/v1alpha1/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/thrift/rate_limit/v2alpha1/BUILD b/api/envoy/config/filter/thrift/rate_limit/v2alpha1/BUILD
index 5b66057a82cd..e5e3cac0561b 100644
--- a/api/envoy/config/filter/thrift/rate_limit/v2alpha1/BUILD
+++ b/api/envoy/config/filter/thrift/rate_limit/v2alpha1/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/ratelimit/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/filter/thrift/router/v2alpha1/BUILD b/api/envoy/config/filter/thrift/router/v2alpha1/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/thrift/router/v2alpha1/BUILD
+++ b/api/envoy/config/filter/thrift/router/v2alpha1/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/filter/udp/udp_proxy/v2alpha/BUILD b/api/envoy/config/filter/udp/udp_proxy/v2alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/filter/udp/udp_proxy/v2alpha/BUILD
+++ b/api/envoy/config/filter/udp/udp_proxy/v2alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/grpc_credential/v2alpha/BUILD b/api/envoy/config/grpc_credential/v2alpha/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/grpc_credential/v2alpha/BUILD
+++ b/api/envoy/config/grpc_credential/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/grpc_credential/v3/BUILD b/api/envoy/config/grpc_credential/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/config/grpc_credential/v3/BUILD
+++ b/api/envoy/config/grpc_credential/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/health_checker/redis/v2/BUILD b/api/envoy/config/health_checker/redis/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/health_checker/redis/v2/BUILD
+++ b/api/envoy/config/health_checker/redis/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/listener/v2/BUILD b/api/envoy/config/listener/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/listener/v2/BUILD
+++ b/api/envoy/config/listener/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/listener/v3/BUILD b/api/envoy/config/listener/v3/BUILD
index f4f900c4db89..712a0d83856e 100644
--- a/api/envoy/config/listener/v3/BUILD
+++ b/api/envoy/config/listener/v3/BUILD
@@ -10,9 +10,9 @@ api_proto_package(
"//envoy/config/accesslog/v3:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/core/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//xds/core/v3:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
diff --git a/api/envoy/config/listener/v3/listener.proto b/api/envoy/config/listener/v3/listener.proto
index 084b6f3e4e37..a1a3d82c1c86 100644
--- a/api/envoy/config/listener/v3/listener.proto
+++ b/api/envoy/config/listener/v3/listener.proto
@@ -249,7 +249,7 @@ message Listener {
// Additional socket options that may not be present in Envoy source code or
// precompiled binaries. The socket options can be updated for a listener when
// :ref:`enable_reuse_port `
- // is `true`. Otherwise, if socket options change during a listener update the update will be rejected
+ // is ``true``. Otherwise, if socket options change during a listener update the update will be rejected
// to make it clear that the options were not updated.
repeated core.v3.SocketOption socket_options = 13;
diff --git a/api/envoy/config/metrics/v2/BUILD b/api/envoy/config/metrics/v2/BUILD
index aaab1df15547..ce0d681bc294 100644
--- a/api/envoy/config/metrics/v2/BUILD
+++ b/api/envoy/config/metrics/v2/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/metrics/v3/BUILD b/api/envoy/config/metrics/v3/BUILD
index 3f3a5395d2aa..e3bfc4e175f4 100644
--- a/api/envoy/config/metrics/v3/BUILD
+++ b/api/envoy/config/metrics/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/metrics/v3/stats.proto b/api/envoy/config/metrics/v3/stats.proto
index fb73e91f8f99..e7d7f80d648a 100644
--- a/api/envoy/config/metrics/v3/stats.proto
+++ b/api/envoy/config/metrics/v3/stats.proto
@@ -121,8 +121,8 @@ message StatsMatcher {
// limited by either an exclusion or an inclusion list of :ref:`StringMatcher
// ` protos:
//
- // * If ``reject_all`` is set to `true`, no stats will be instantiated. If ``reject_all`` is set to
- // `false`, all stats will be instantiated.
+ // * If ``reject_all`` is set to ``true``, no stats will be instantiated. If ``reject_all`` is set to
+ // ``false``, all stats will be instantiated.
//
// * If an exclusion list is supplied, any stat name matching *any* of the StringMatchers in the
// list will not instantiate.
diff --git a/api/envoy/config/overload/v2alpha/BUILD b/api/envoy/config/overload/v2alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/overload/v2alpha/BUILD
+++ b/api/envoy/config/overload/v2alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/overload/v3/BUILD b/api/envoy/config/overload/v3/BUILD
index 9a76b7e148e0..ef19132f9180 100644
--- a/api/envoy/config/overload/v3/BUILD
+++ b/api/envoy/config/overload/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/ratelimit/v2/BUILD b/api/envoy/config/ratelimit/v2/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/ratelimit/v2/BUILD
+++ b/api/envoy/config/ratelimit/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/ratelimit/v3/BUILD b/api/envoy/config/ratelimit/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/config/ratelimit/v3/BUILD
+++ b/api/envoy/config/ratelimit/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/rbac/v2/BUILD b/api/envoy/config/rbac/v2/BUILD
index 4bce7466dddf..58b321a9a5b4 100644
--- a/api/envoy/config/rbac/v2/BUILD
+++ b/api/envoy/config/rbac/v2/BUILD
@@ -9,7 +9,7 @@ api_proto_package(
"//envoy/api/v2/core:pkg",
"//envoy/api/v2/route:pkg",
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto",
],
)
diff --git a/api/envoy/config/rbac/v3/BUILD b/api/envoy/config/rbac/v3/BUILD
index c289def1f11d..a8efea386273 100644
--- a/api/envoy/config/rbac/v3/BUILD
+++ b/api/envoy/config/rbac/v3/BUILD
@@ -11,7 +11,7 @@ api_proto_package(
"//envoy/config/route/v3:pkg",
"//envoy/type/matcher/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@com_google_googleapis//google/api/expr/v1alpha1:checked_proto",
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto",
],
diff --git a/api/envoy/config/resource_monitor/fixed_heap/v2alpha/BUILD b/api/envoy/config/resource_monitor/fixed_heap/v2alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/resource_monitor/fixed_heap/v2alpha/BUILD
+++ b/api/envoy/config/resource_monitor/fixed_heap/v2alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/resource_monitor/injected_resource/v2alpha/BUILD b/api/envoy/config/resource_monitor/injected_resource/v2alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/resource_monitor/injected_resource/v2alpha/BUILD
+++ b/api/envoy/config/resource_monitor/injected_resource/v2alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/retry/omit_canary_hosts/v2/BUILD b/api/envoy/config/retry/omit_canary_hosts/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/retry/omit_canary_hosts/v2/BUILD
+++ b/api/envoy/config/retry/omit_canary_hosts/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/retry/omit_host_metadata/v2/BUILD b/api/envoy/config/retry/omit_host_metadata/v2/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/retry/omit_host_metadata/v2/BUILD
+++ b/api/envoy/config/retry/omit_host_metadata/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/retry/previous_hosts/v2/BUILD b/api/envoy/config/retry/previous_hosts/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/retry/previous_hosts/v2/BUILD
+++ b/api/envoy/config/retry/previous_hosts/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/retry/previous_priorities/BUILD b/api/envoy/config/retry/previous_priorities/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/retry/previous_priorities/BUILD
+++ b/api/envoy/config/retry/previous_priorities/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/route/v3/BUILD b/api/envoy/config/route/v3/BUILD
index 385c2c8c40e0..8c0e78d334ed 100644
--- a/api/envoy/config/route/v3/BUILD
+++ b/api/envoy/config/route/v3/BUILD
@@ -12,8 +12,8 @@ api_proto_package(
"//envoy/type/metadata/v3:pkg",
"//envoy/type/tracing/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
diff --git a/api/envoy/config/route/v3/route.proto b/api/envoy/config/route/v3/route.proto
index 237bddebdef6..0d5867d00714 100644
--- a/api/envoy/config/route/v3/route.proto
+++ b/api/envoy/config/route/v3/route.proto
@@ -23,7 +23,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// * Routing :ref:`architecture overview `
// * HTTP :ref:`router filter `
-// [#next-free-field: 17]
+// [#next-free-field: 18]
message RouteConfiguration {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.RouteConfiguration";
@@ -151,6 +151,13 @@ message RouteConfiguration {
// :ref:`FilterConfig`
// message to specify additional options.]
map typed_per_filter_config = 16;
+
+ // The metadata field can be used to provide additional information
+ // about the route configuration. It can be used for configuration, stats, and logging.
+ // The metadata should go under the filter namespace that will need it.
+ // For instance, if the metadata is intended for the Router filter,
+ // the filter name should be specified as ``envoy.filters.http.router``.
+ core.v3.Metadata metadata = 17;
}
message Vhds {
diff --git a/api/envoy/config/route/v3/route_components.proto b/api/envoy/config/route/v3/route_components.proto
index 1800ee91b5bf..1e2b486d288b 100644
--- a/api/envoy/config/route/v3/route_components.proto
+++ b/api/envoy/config/route/v3/route_components.proto
@@ -41,7 +41,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// host header. This allows a single listener to service multiple top level domain path trees. Once
// a virtual host is selected based on the domain, the routes are processed in order to see which
// upstream cluster to route to or whether to perform a redirect.
-// [#next-free-field: 24]
+// [#next-free-field: 25]
message VirtualHost {
option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.route.VirtualHost";
@@ -215,6 +215,13 @@ message VirtualHost {
// It takes precedence over the route config mirror policy entirely.
// That is, policies are not merged, the most specific non-empty one becomes the mirror policies.
repeated RouteAction.RequestMirrorPolicy request_mirror_policies = 22;
+
+ // The metadata field can be used to provide additional information
+ // about the virtual host. It can be used for configuration, stats, and logging.
+ // The metadata should go under the filter namespace that will need it.
+ // For instance, if the metadata is intended for the Router filter,
+ // the filter name should be specified as ``envoy.filters.http.router``.
+ core.v3.Metadata metadata = 24;
}
// A filter-defined action type.
@@ -524,10 +531,20 @@ message RouteMatch {
// If specified, the route will match against whether or not a certificate is validated.
// If not specified, certificate validation status (true or false) will not be considered when route matching.
+ //
+ // .. warning::
+ //
+ // Client certificate validation is not currently performed upon TLS session resumption. For
+ // a resumed TLS session the route will match only when ``validated`` is false, regardless of
+ // whether the client TLS certificate is valid.
+ //
+ // The only known workaround for this issue is to disable TLS session resumption entirely, by
+ // setting both :ref:`disable_stateless_session_resumption `
+ // and :ref:`disable_stateful_session_resumption ` on the DownstreamTlsContext.
google.protobuf.BoolValue validated = 2;
}
- // An extensible message for matching CONNECT requests.
+ // An extensible message for matching CONNECT or CONNECT-UDP requests.
message ConnectMatcher {
}
@@ -560,11 +577,10 @@ message RouteMatch {
// stripping. This needs more thought.]
type.matcher.v3.RegexMatcher safe_regex = 10 [(validate.rules).message = {required: true}];
- // If this is used as the matcher, the matcher will only match CONNECT requests.
- // Note that this will not match HTTP/2 upgrade-style CONNECT requests
- // (WebSocket and the like) as they are normalized in Envoy as HTTP/1.1 style
- // upgrades.
- // This is the only way to match CONNECT requests for HTTP/1.1. For HTTP/2,
+ // If this is used as the matcher, the matcher will only match CONNECT or CONNECT-UDP requests.
+ // Note that this will not match other Extended CONNECT requests (WebSocket and the like) as
+ // they are normalized in Envoy as HTTP/1.1 style upgrades.
+ // This is the only way to match CONNECT requests for HTTP/1.1. For HTTP/2 and HTTP/3,
// where Extended CONNECT requests may have a path, the path matchers will work if
// there is a path present.
// Note that CONNECT support is currently considered alpha in Envoy.
@@ -619,7 +635,8 @@ message RouteMatch {
// match. The router will check the query string from the ``path`` header
// against all the specified query parameters. If the number of specified
// query parameters is nonzero, they all must match the ``path`` header's
- // query string for a match to occur.
+ // query string for a match to occur. In the event query parameters are
+ // repeated, only the first value for each key will be considered.
//
// .. note::
//
@@ -882,7 +899,8 @@ message RouteAction {
// The name of the URL query parameter that will be used to obtain the hash
// key. If the parameter is not present, no hash will be produced. Query
- // parameter names are case-sensitive.
+ // parameter names are case-sensitive. If query parameters are repeated, only
+ // the first value will be considered.
string name = 1 [(validate.rules).string = {min_len: 1}];
}
@@ -1137,7 +1155,9 @@ message RouteAction {
// Indicates that during forwarding, the host header will be swapped with
// the hostname of the upstream host chosen by the cluster manager. This
// option is applicable only when the destination cluster for a route is of
- // type ``strict_dns`` or ``logical_dns``. Setting this to true with other cluster types
+ // type ``strict_dns`` or ``logical_dns``,
+ // or when :ref:`hostname `
+ // field is not empty. Setting this to true with other cluster types
// has no effect. Using this option will append the
// :ref:`config_http_conn_man_headers_x-forwarded-host` header if
// :ref:`append_x_forwarded_host `
@@ -1191,7 +1211,7 @@ message RouteAction {
// :ref:`host_rewrite_path_regex `)
// causes the original value of the host header, if any, to be appended to the
// :ref:`config_http_conn_man_headers_x-forwarded-host` HTTP header if it is different to the last value appended.
- // This can be disabled by setting the runtime guard `envoy_reloadable_features_append_xfh_idempotent` to false.
+ // This can be disabled by setting the runtime guard ``envoy_reloadable_features_append_xfh_idempotent`` to false.
bool append_x_forwarded_host = 38;
// Specifies the upstream timeout for the route. If not specified, the default is 15s. This
@@ -2345,6 +2365,7 @@ message QueryParameterMatcher {
}
// HTTP Internal Redirect :ref:`architecture overview `.
+// [#next-free-field: 6]
message InternalRedirectPolicy {
// An internal redirect is not handled, unless the number of previous internal redirects that a
// downstream request has encountered is lower than this value.
@@ -2370,6 +2391,14 @@ message InternalRedirectPolicy {
// Allow internal redirect to follow a target URI with a different scheme than the value of
// x-forwarded-proto. The default is false.
bool allow_cross_scheme_redirect = 4;
+
+ // Specifies a list of headers, by name, to copy from the internal redirect into the subsequent
+ // request. If a header is specified here but not present in the redirect, it will be cleared in
+ // the subsequent request.
+ repeated string response_headers_to_copy = 5 [(validate.rules).repeated = {
+ unique: true
+ items {string {well_known_regex: HTTP_HEADER_NAME strict: false}}
+ }];
}
// A simple wrapper for an HTTP filter config. This is intended to be used as a wrapper for the
@@ -2388,6 +2417,8 @@ message FilterConfig {
bool is_optional = 2;
// If true, the filter is disabled in the route or virtual host and the ``config`` field is ignored.
+ // See :ref:`route based filter chain `
+ // for more details.
//
// .. note::
//
diff --git a/api/envoy/config/tap/v3/BUILD b/api/envoy/config/tap/v3/BUILD
index a457820fce67..ccd4d1a08aea 100644
--- a/api/envoy/config/tap/v3/BUILD
+++ b/api/envoy/config/tap/v3/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/config/common/matcher/v3:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/config/route/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/trace/v2/BUILD b/api/envoy/config/trace/v2/BUILD
index e6505e4f15d0..a207a53c6c19 100644
--- a/api/envoy/config/trace/v2/BUILD
+++ b/api/envoy/config/trace/v2/BUILD
@@ -8,7 +8,7 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto",
],
)
diff --git a/api/envoy/config/trace/v2alpha/BUILD b/api/envoy/config/trace/v2alpha/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/config/trace/v2alpha/BUILD
+++ b/api/envoy/config/trace/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/trace/v3/BUILD b/api/envoy/config/trace/v3/BUILD
index 94596540dfc4..4d265c471e1c 100644
--- a/api/envoy/config/trace/v3/BUILD
+++ b/api/envoy/config/trace/v3/BUILD
@@ -8,7 +8,7 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@opencensus_proto//opencensus/proto/trace/v1:trace_config_proto",
],
)
diff --git a/api/envoy/config/trace/v3/opentelemetry.proto b/api/envoy/config/trace/v3/opentelemetry.proto
index e9c7430dcfdd..59028326f220 100644
--- a/api/envoy/config/trace/v3/opentelemetry.proto
+++ b/api/envoy/config/trace/v3/opentelemetry.proto
@@ -2,8 +2,11 @@ syntax = "proto3";
package envoy.config.trace.v3;
+import "envoy/config/core/v3/extension.proto";
import "envoy/config/core/v3/grpc_service.proto";
+import "envoy/config/core/v3/http_service.proto";
+import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
option java_package = "io.envoyproxy.envoy.config.trace.v3";
@@ -16,13 +19,42 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// Configuration for the OpenTelemetry tracer.
// [#extension: envoy.tracers.opentelemetry]
+// [#next-free-field: 6]
message OpenTelemetryConfig {
// The upstream gRPC cluster that will receive OTLP traces.
// Note that the tracer drops traces if the server does not read data fast enough.
- // This field can be left empty to disable reporting traces to the collector.
- core.v3.GrpcService grpc_service = 1;
+ // This field can be left empty to disable reporting traces to the gRPC service.
+ // Only one of ``grpc_service``, ``http_service`` may be used.
+ core.v3.GrpcService grpc_service = 1
+ [(udpa.annotations.field_migrate).oneof_promotion = "otlp_exporter"];
+
+ // The upstream HTTP cluster that will receive OTLP traces.
+ // This field can be left empty to disable reporting traces to the HTTP service.
+ // Only one of ``grpc_service``, ``http_service`` may be used.
+ //
+ // .. note::
+ //
+ // Note: The ``request_headers_to_add`` property in the OTLP HTTP exporter service
+ // does not support the :ref:`format specifier ` as used for
+ // :ref:`HTTP access logging `.
+ // The values configured are added as HTTP headers on the OTLP export request
+ // without any formatting applied.
+ core.v3.HttpService http_service = 3
+ [(udpa.annotations.field_migrate).oneof_promotion = "otlp_exporter"];
// The name for the service. This will be populated in the ResourceSpan Resource attributes.
// If it is not provided, it will default to "unknown_service:envoy".
string service_name = 2;
+
+ // An ordered list of resource detectors
+ // [#extension-category: envoy.tracers.opentelemetry.resource_detectors]
+ repeated core.v3.TypedExtensionConfig resource_detectors = 4;
+
+ // Specifies the sampler to be used by the OpenTelemetry tracer.
+ // The configured sampler implements the Sampler interface defined by the OpenTelemetry specification.
+ // This field can be left empty. In this case, the default Envoy sampling decision is used.
+ //
+ // See: `OpenTelemetry sampler specification `_
+ // [#extension-category: envoy.tracers.opentelemetry.samplers]
+ core.v3.TypedExtensionConfig sampler = 5;
}
diff --git a/api/envoy/config/trace/v3/skywalking.proto b/api/envoy/config/trace/v3/skywalking.proto
index 327defe9ba69..57872a0fdb9d 100644
--- a/api/envoy/config/trace/v3/skywalking.proto
+++ b/api/envoy/config/trace/v3/skywalking.proto
@@ -22,9 +22,9 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: SkyWalking tracer]
// Configuration for the SkyWalking tracer. Please note that if SkyWalking tracer is used as the
-// provider of http tracer, then
-// :ref:`start_child_span `
-// in the router must be set to true to get the correct topology and tracing data. Moreover, SkyWalking
+// provider of tracing, then
+// :ref:`spawn_upstream_span `
+// in the tracing config must be set to true to get the correct topology and tracing data. Moreover, SkyWalking
// Tracer does not support SkyWalking extension header (``sw8-x``) temporarily.
// [#extension: envoy.tracers.skywalking]
message SkyWalkingConfig {
diff --git a/api/envoy/config/trace/v3/zipkin.proto b/api/envoy/config/trace/v3/zipkin.proto
index 96556c7b29b1..a9aefef0c6df 100644
--- a/api/envoy/config/trace/v3/zipkin.proto
+++ b/api/envoy/config/trace/v3/zipkin.proto
@@ -75,7 +75,7 @@ message ZipkinConfig {
//
// * The Envoy Proxy is used as gateway or ingress.
// * The Envoy Proxy is used as sidecar but inbound traffic capturing or outbound traffic capturing is disabled.
- // * Any case that the `start_child_span of router ` is set to true.
+ // * Any case that the :ref:`start_child_span of router ` is set to true.
//
// .. attention::
//
diff --git a/api/envoy/config/transport_socket/alts/v2alpha/BUILD b/api/envoy/config/transport_socket/alts/v2alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/transport_socket/alts/v2alpha/BUILD
+++ b/api/envoy/config/transport_socket/alts/v2alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/transport_socket/raw_buffer/v2/BUILD b/api/envoy/config/transport_socket/raw_buffer/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/transport_socket/raw_buffer/v2/BUILD
+++ b/api/envoy/config/transport_socket/raw_buffer/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/transport_socket/tap/v2alpha/BUILD b/api/envoy/config/transport_socket/tap/v2alpha/BUILD
index 52ca9859536e..34f67e3be13b 100644
--- a/api/envoy/config/transport_socket/tap/v2alpha/BUILD
+++ b/api/envoy/config/transport_socket/tap/v2alpha/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/config/common/tap/v2alpha:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/config/upstream/local_address_selector/v3/BUILD b/api/envoy/config/upstream/local_address_selector/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/config/upstream/local_address_selector/v3/BUILD
+++ b/api/envoy/config/upstream/local_address_selector/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/config/upstream/local_address_selector/v3/default_local_address_selector.proto b/api/envoy/config/upstream/local_address_selector/v3/default_local_address_selector.proto
index 4ecd27d1fe09..852689dd859b 100644
--- a/api/envoy/config/upstream/local_address_selector/v3/default_local_address_selector.proto
+++ b/api/envoy/config/upstream/local_address_selector/v3/default_local_address_selector.proto
@@ -23,9 +23,9 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// is appended to the address specified in the
// :ref:`source_address `
// field. The extra address should have a different IP version than the address in the
-// `source_address` field. The address which has the same IP
+// ``source_address`` field. The address which has the same IP
// version with the target host's address IP version will be used as bind address.
-// If there is no same IP version address found, the address in the `source_address` field will
+// If there is no same IP version address found, the address in the ``source_address`` field will
// be returned.
message DefaultLocalAddressSelector {
}
diff --git a/api/envoy/data/accesslog/v2/BUILD b/api/envoy/data/accesslog/v2/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/data/accesslog/v2/BUILD
+++ b/api/envoy/data/accesslog/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/data/accesslog/v3/BUILD b/api/envoy/data/accesslog/v3/BUILD
index a1775bbe6f51..e74acc660850 100644
--- a/api/envoy/data/accesslog/v3/BUILD
+++ b/api/envoy/data/accesslog/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/data/accesslog/v3/accesslog.proto b/api/envoy/data/accesslog/v3/accesslog.proto
index 56d9e7b8c4ca..25e7a80bb2f4 100644
--- a/api/envoy/data/accesslog/v3/accesslog.proto
+++ b/api/envoy/data/accesslog/v3/accesslog.proto
@@ -44,6 +44,9 @@ enum AccessLogType {
UpstreamPeriodic = 8;
UpstreamEnd = 9;
DownstreamTunnelSuccessfullyEstablished = 10;
+ UdpTunnelUpstreamConnected = 11;
+ UdpPeriodic = 12;
+ UdpSessionEnd = 13;
}
message TCPAccessLogEntry {
diff --git a/api/envoy/data/cluster/v2alpha/BUILD b/api/envoy/data/cluster/v2alpha/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/data/cluster/v2alpha/BUILD
+++ b/api/envoy/data/cluster/v2alpha/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/data/cluster/v3/BUILD b/api/envoy/data/cluster/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/data/cluster/v3/BUILD
+++ b/api/envoy/data/cluster/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/data/core/v2alpha/BUILD b/api/envoy/data/core/v2alpha/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/data/core/v2alpha/BUILD
+++ b/api/envoy/data/core/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/data/core/v3/BUILD b/api/envoy/data/core/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/data/core/v3/BUILD
+++ b/api/envoy/data/core/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/data/dns/v2alpha/BUILD b/api/envoy/data/dns/v2alpha/BUILD
index e305003238a5..22b193151178 100644
--- a/api/envoy/data/dns/v2alpha/BUILD
+++ b/api/envoy/data/dns/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/data/dns/v3/BUILD b/api/envoy/data/dns/v3/BUILD
index 516369f09675..30302a7baf53 100644
--- a/api/envoy/data/dns/v3/BUILD
+++ b/api/envoy/data/dns/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/data/tap/v2alpha/BUILD b/api/envoy/data/tap/v2alpha/BUILD
index 83bc0ab960e7..10580ab4a7aa 100644
--- a/api/envoy/data/tap/v2alpha/BUILD
+++ b/api/envoy/data/tap/v2alpha/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/data/tap/v3/BUILD b/api/envoy/data/tap/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/data/tap/v3/BUILD
+++ b/api/envoy/data/tap/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/data/tap/v3/common.proto b/api/envoy/data/tap/v3/common.proto
index 741f7d73d1ae..7be656aee046 100644
--- a/api/envoy/data/tap/v3/common.proto
+++ b/api/envoy/data/tap/v3/common.proto
@@ -2,6 +2,8 @@ syntax = "proto3";
package envoy.data.tap.v3;
+import "envoy/config/core/v3/address.proto";
+
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
@@ -36,3 +38,14 @@ message Body {
// ` settings.
bool truncated = 3;
}
+
+// Connection properties.
+message Connection {
+ option (udpa.annotations.versioning).previous_message_type = "envoy.data.tap.v2alpha.Connection";
+
+ // Local address.
+ config.core.v3.Address local_address = 1;
+
+ // Remote address.
+ config.core.v3.Address remote_address = 2;
+}
diff --git a/api/envoy/data/tap/v3/http.proto b/api/envoy/data/tap/v3/http.proto
index aa991dd53b22..2e5c566e59ed 100644
--- a/api/envoy/data/tap/v3/http.proto
+++ b/api/envoy/data/tap/v3/http.proto
@@ -46,6 +46,9 @@ message HttpBufferedTrace {
// Response message.
Message response = 2;
+
+ // downstream connection
+ Connection downstream_connection = 3;
}
// A streamed HTTP trace segment. Multiple segments make up a full trace.
diff --git a/api/envoy/data/tap/v3/transport.proto b/api/envoy/data/tap/v3/transport.proto
index efd2d4168e73..9338165058a2 100644
--- a/api/envoy/data/tap/v3/transport.proto
+++ b/api/envoy/data/tap/v3/transport.proto
@@ -2,7 +2,6 @@ syntax = "proto3";
package envoy.data.tap.v3;
-import "envoy/config/core/v3/address.proto";
import "envoy/data/tap/v3/common.proto";
import "google/protobuf/timestamp.proto";
@@ -20,17 +19,6 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// Trace format for the tap transport socket extension. This dumps plain text read/write
// sequences on a socket.
-// Connection properties.
-message Connection {
- option (udpa.annotations.versioning).previous_message_type = "envoy.data.tap.v2alpha.Connection";
-
- // Local address.
- config.core.v3.Address local_address = 2;
-
- // Remote address.
- config.core.v3.Address remote_address = 3;
-}
-
// Event in a socket trace.
message SocketEvent {
option (udpa.annotations.versioning).previous_message_type = "envoy.data.tap.v2alpha.SocketEvent";
diff --git a/api/envoy/extensions/access_loggers/file/v3/BUILD b/api/envoy/extensions/access_loggers/file/v3/BUILD
index a1775bbe6f51..e74acc660850 100644
--- a/api/envoy/extensions/access_loggers/file/v3/BUILD
+++ b/api/envoy/extensions/access_loggers/file/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/access_loggers/filters/cel/v3/BUILD b/api/envoy/extensions/access_loggers/filters/cel/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/access_loggers/filters/cel/v3/BUILD
+++ b/api/envoy/extensions/access_loggers/filters/cel/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/access_loggers/filters/cel/v3/cel.proto b/api/envoy/extensions/access_loggers/filters/cel/v3/cel.proto
index d8ef21a1cdf1..750ffd30d251 100644
--- a/api/envoy/extensions/access_loggers/filters/cel/v3/cel.proto
+++ b/api/envoy/extensions/access_loggers/filters/cel/v3/cel.proto
@@ -21,7 +21,8 @@ message ExpressionFilter {
// Expressions are based on the set of Envoy :ref:`attributes `.
// The provided expression must evaluate to true for logging (expression errors are considered false).
// Examples:
- // - ``response.code >= 400``
- // - ``(connection.mtls && request.headers['x-log-mtls'] == 'true') || request.url_path.contains('v1beta3')``
+ //
+ // * ``response.code >= 400``
+ // * ``(connection.mtls && request.headers['x-log-mtls'] == 'true') || request.url_path.contains('v1beta3')``
string expression = 1;
}
diff --git a/api/envoy/extensions/access_loggers/grpc/v3/BUILD b/api/envoy/extensions/access_loggers/grpc/v3/BUILD
index bde8902a86c8..ee825af0503a 100644
--- a/api/envoy/extensions/access_loggers/grpc/v3/BUILD
+++ b/api/envoy/extensions/access_loggers/grpc/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/tracing/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/access_loggers/open_telemetry/v3/BUILD b/api/envoy/extensions/access_loggers/open_telemetry/v3/BUILD
index 37737510d8ea..95eff6986b7f 100644
--- a/api/envoy/extensions/access_loggers/open_telemetry/v3/BUILD
+++ b/api/envoy/extensions/access_loggers/open_telemetry/v3/BUILD
@@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/access_loggers/grpc/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@opentelemetry_proto//:common",
],
)
diff --git a/api/envoy/extensions/access_loggers/stream/v3/BUILD b/api/envoy/extensions/access_loggers/stream/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/access_loggers/stream/v3/BUILD
+++ b/api/envoy/extensions/access_loggers/stream/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/access_loggers/wasm/v3/BUILD b/api/envoy/extensions/access_loggers/wasm/v3/BUILD
index c37174bdefc4..ed3c664aedd7 100644
--- a/api/envoy/extensions/access_loggers/wasm/v3/BUILD
+++ b/api/envoy/extensions/access_loggers/wasm/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/wasm/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/bootstrap/internal_listener/v3/BUILD b/api/envoy/extensions/bootstrap/internal_listener/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/bootstrap/internal_listener/v3/BUILD
+++ b/api/envoy/extensions/bootstrap/internal_listener/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/clusters/aggregate/v3/BUILD b/api/envoy/extensions/clusters/aggregate/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/clusters/aggregate/v3/BUILD
+++ b/api/envoy/extensions/clusters/aggregate/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/clusters/dynamic_forward_proxy/v3/BUILD b/api/envoy/extensions/clusters/dynamic_forward_proxy/v3/BUILD
index 00ebd40c5d65..ef2bec727fa1 100644
--- a/api/envoy/extensions/clusters/dynamic_forward_proxy/v3/BUILD
+++ b/api/envoy/extensions/clusters/dynamic_forward_proxy/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/config/cluster/v3:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/extensions/common/dynamic_forward_proxy/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/clusters/dynamic_forward_proxy/v3/cluster.proto b/api/envoy/extensions/clusters/dynamic_forward_proxy/v3/cluster.proto
index 8cb7183fc4d9..6ad6b9eb0ba3 100644
--- a/api/envoy/extensions/clusters/dynamic_forward_proxy/v3/cluster.proto
+++ b/api/envoy/extensions/clusters/dynamic_forward_proxy/v3/cluster.proto
@@ -60,7 +60,7 @@ message ClusterConfig {
// resolved address for the new connection matches the peer address of the connection and
// the TLS certificate is also valid for the new hostname. For example, if a connection
// has previously been established to foo.example.com at IP 1.2.3.4 with a certificate
- // that is valid for `*.example.com`, then this connection could be used for requests to
+ // that is valid for ``*.example.com``, then this connection could be used for requests to
// bar.example.com if that also resolved to 1.2.3.4.
//
// .. note::
diff --git a/api/envoy/extensions/clusters/redis/v3/BUILD b/api/envoy/extensions/clusters/redis/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/clusters/redis/v3/BUILD
+++ b/api/envoy/extensions/clusters/redis/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/common/async_files/v3/BUILD b/api/envoy/extensions/common/async_files/v3/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/envoy/extensions/common/async_files/v3/BUILD
+++ b/api/envoy/extensions/common/async_files/v3/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/common/dynamic_forward_proxy/v3/BUILD b/api/envoy/extensions/common/dynamic_forward_proxy/v3/BUILD
index b9cc22c7ee67..a220c748ba7f 100644
--- a/api/envoy/extensions/common/dynamic_forward_proxy/v3/BUILD
+++ b/api/envoy/extensions/common/dynamic_forward_proxy/v3/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/config/cluster/v3:pkg",
"//envoy/config/common/key_value/v3:pkg",
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/common/matching/v3/BUILD b/api/envoy/extensions/common/matching/v3/BUILD
index de9e120297ac..2afc0bdde334 100644
--- a/api/envoy/extensions/common/matching/v3/BUILD
+++ b/api/envoy/extensions/common/matching/v3/BUILD
@@ -9,8 +9,7 @@ api_proto_package(
"//envoy/annotations:pkg",
"//envoy/config/common/matcher/v3:pkg",
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
diff --git a/api/envoy/extensions/common/matching/v3/extension_matcher.proto b/api/envoy/extensions/common/matching/v3/extension_matcher.proto
index bef7c712eb2e..817cd27a37a2 100644
--- a/api/envoy/extensions/common/matching/v3/extension_matcher.proto
+++ b/api/envoy/extensions/common/matching/v3/extension_matcher.proto
@@ -5,7 +5,6 @@ package envoy.extensions.common.matching.v3;
import "envoy/config/common/matcher/v3/matcher.proto";
import "envoy/config/core/v3/extension.proto";
-import "xds/annotations/v3/status.proto";
import "xds/type/matcher/v3/matcher.proto";
import "envoy/annotations/deprecation.proto";
@@ -24,8 +23,6 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// decorating an existing extension with a matcher, which can be used to match against
// relevant protocol data.
message ExtensionWithMatcher {
- option (xds.annotations.v3.message_status).work_in_progress = true;
-
// The associated matcher. This is deprecated in favor of xds_matcher.
config.common.matcher.v3.Matcher matcher = 1
[deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
diff --git a/api/envoy/extensions/common/ratelimit/v3/BUILD b/api/envoy/extensions/common/ratelimit/v3/BUILD
index 9a76b7e148e0..ef19132f9180 100644
--- a/api/envoy/extensions/common/ratelimit/v3/BUILD
+++ b/api/envoy/extensions/common/ratelimit/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/common/tap/v3/BUILD b/api/envoy/extensions/common/tap/v3/BUILD
index a99fa811f859..9e898366c9bb 100644
--- a/api/envoy/extensions/common/tap/v3/BUILD
+++ b/api/envoy/extensions/common/tap/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/tap/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/compression/brotli/compressor/v3/BUILD b/api/envoy/extensions/compression/brotli/compressor/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/compression/brotli/compressor/v3/BUILD
+++ b/api/envoy/extensions/compression/brotli/compressor/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/compression/brotli/decompressor/v3/BUILD b/api/envoy/extensions/compression/brotli/decompressor/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/compression/brotli/decompressor/v3/BUILD
+++ b/api/envoy/extensions/compression/brotli/decompressor/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/compression/gzip/compressor/v3/BUILD b/api/envoy/extensions/compression/gzip/compressor/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/compression/gzip/compressor/v3/BUILD
+++ b/api/envoy/extensions/compression/gzip/compressor/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/compression/gzip/decompressor/v3/BUILD b/api/envoy/extensions/compression/gzip/decompressor/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/compression/gzip/decompressor/v3/BUILD
+++ b/api/envoy/extensions/compression/gzip/decompressor/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/compression/zstd/compressor/v3/BUILD b/api/envoy/extensions/compression/zstd/compressor/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/compression/zstd/compressor/v3/BUILD
+++ b/api/envoy/extensions/compression/zstd/compressor/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/compression/zstd/decompressor/v3/BUILD b/api/envoy/extensions/compression/zstd/decompressor/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/compression/zstd/decompressor/v3/BUILD
+++ b/api/envoy/extensions/compression/zstd/decompressor/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/config/validators/minimum_clusters/v3/BUILD b/api/envoy/extensions/config/validators/minimum_clusters/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/config/validators/minimum_clusters/v3/BUILD
+++ b/api/envoy/extensions/config/validators/minimum_clusters/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/early_data/v3/BUILD b/api/envoy/extensions/early_data/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/early_data/v3/BUILD
+++ b/api/envoy/extensions/early_data/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/common/dependency/v3/BUILD b/api/envoy/extensions/filters/common/dependency/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/common/dependency/v3/BUILD
+++ b/api/envoy/extensions/filters/common/dependency/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/common/fault/v3/BUILD b/api/envoy/extensions/filters/common/fault/v3/BUILD
index 9a76b7e148e0..ef19132f9180 100644
--- a/api/envoy/extensions/filters/common/fault/v3/BUILD
+++ b/api/envoy/extensions/filters/common/fault/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/common/matcher/action/v3/BUILD b/api/envoy/extensions/filters/common/matcher/action/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/common/matcher/action/v3/BUILD
+++ b/api/envoy/extensions/filters/common/matcher/action/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/common/set_filter_state/v3/BUILD b/api/envoy/extensions/filters/common/set_filter_state/v3/BUILD
new file mode 100644
index 000000000000..09a37ad16b83
--- /dev/null
+++ b/api/envoy/extensions/filters/common/set_filter_state/v3/BUILD
@@ -0,0 +1,12 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/config/core/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/filters/common/set_filter_state/v3/value.proto b/api/envoy/extensions/filters/common/set_filter_state/v3/value.proto
new file mode 100644
index 000000000000..81d501033226
--- /dev/null
+++ b/api/envoy/extensions/filters/common/set_filter_state/v3/value.proto
@@ -0,0 +1,60 @@
+syntax = "proto3";
+
+package envoy.extensions.filters.common.set_filter_state.v3;
+
+import "envoy/config/core/v3/substitution_format_string.proto";
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.filters.common.set_filter_state.v3";
+option java_outer_classname = "ValueProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/common/set_filter_state/v3;set_filter_statev3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Set-Filter-State filter state value]
+
+// A filter state key and value pair.
+// [#next-free-field: 6]
+message FilterStateValue {
+ enum SharedWithUpstream {
+ // Object is not shared with the upstream internal connections.
+ NONE = 0;
+
+ // Object is shared with the upstream internal connection.
+ ONCE = 1;
+
+ // Object is shared with the upstream internal connection and any internal connection upstream from it.
+ TRANSITIVE = 2;
+ }
+
+ oneof key {
+ option (validate.required) = true;
+
+ // Filter state object key. The key is expected to be registered via an object factory, see
+ // :ref:`the well-known filter state keys `.
+ string object_key = 1 [(validate.rules).string = {min_len: 1}];
+ }
+
+ oneof value {
+ option (validate.required) = true;
+
+ // Uses the :ref:`format string ` to
+ // instantiate the filter state object value.
+ config.core.v3.SubstitutionFormatString format_string = 2;
+ }
+
+ // If marked as read-only, the filter state key value is locked, and cannot
+ // be overridden by any filter, including this filter.
+ bool read_only = 3;
+
+ // Configures the object to be shared with the upstream internal connections. See :ref:`internal upstream
+ // transport ` for more details on the filter state sharing with
+ // the internal connections.
+ SharedWithUpstream shared_with_upstream = 4;
+
+ // Skip the update if the value evaluates to an empty string.
+ // This option can be used to supply multiple alternatives for the same filter state object key.
+ bool skip_if_empty = 5;
+}
diff --git a/api/envoy/extensions/filters/http/adaptive_concurrency/v3/BUILD b/api/envoy/extensions/filters/http/adaptive_concurrency/v3/BUILD
index ad2fc9a9a84f..eeae27ad54b4 100644
--- a/api/envoy/extensions/filters/http/adaptive_concurrency/v3/BUILD
+++ b/api/envoy/extensions/filters/http/adaptive_concurrency/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/admission_control/v3/BUILD b/api/envoy/extensions/filters/http/admission_control/v3/BUILD
index ad2fc9a9a84f..eeae27ad54b4 100644
--- a/api/envoy/extensions/filters/http/admission_control/v3/BUILD
+++ b/api/envoy/extensions/filters/http/admission_control/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/alternate_protocols_cache/v3/BUILD b/api/envoy/extensions/filters/http/alternate_protocols_cache/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/alternate_protocols_cache/v3/BUILD
+++ b/api/envoy/extensions/filters/http/alternate_protocols_cache/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/aws_lambda/v3/BUILD b/api/envoy/extensions/filters/http/aws_lambda/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/aws_lambda/v3/BUILD
+++ b/api/envoy/extensions/filters/http/aws_lambda/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/aws_request_signing/v3/BUILD b/api/envoy/extensions/filters/http/aws_request_signing/v3/BUILD
index 693f0b92ff34..bfc486330911 100644
--- a/api/envoy/extensions/filters/http/aws_request_signing/v3/BUILD
+++ b/api/envoy/extensions/filters/http/aws_request_signing/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/bandwidth_limit/v3/BUILD b/api/envoy/extensions/filters/http/bandwidth_limit/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/bandwidth_limit/v3/BUILD
+++ b/api/envoy/extensions/filters/http/bandwidth_limit/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/basic_auth/v3/BUILD b/api/envoy/extensions/filters/http/basic_auth/v3/BUILD
new file mode 100644
index 000000000000..09a37ad16b83
--- /dev/null
+++ b/api/envoy/extensions/filters/http/basic_auth/v3/BUILD
@@ -0,0 +1,12 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/config/core/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/filters/http/basic_auth/v3/basic_auth.proto b/api/envoy/extensions/filters/http/basic_auth/v3/basic_auth.proto
new file mode 100644
index 000000000000..df23868a4260
--- /dev/null
+++ b/api/envoy/extensions/filters/http/basic_auth/v3/basic_auth.proto
@@ -0,0 +1,36 @@
+syntax = "proto3";
+
+package envoy.extensions.filters.http.basic_auth.v3;
+
+import "envoy/config/core/v3/base.proto";
+
+import "udpa/annotations/sensitive.proto";
+import "udpa/annotations/status.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.filters.http.basic_auth.v3";
+option java_outer_classname = "BasicAuthProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/basic_auth/v3;basic_authv3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Basic Auth]
+// Basic Auth :ref:`configuration overview `.
+// [#extension: envoy.filters.http.basic_auth]
+
+// Basic HTTP authentication.
+//
+// Example:
+//
+// .. code-block:: yaml
+//
+// users:
+// inline_string: |-
+// user1:{SHA}hashed_user1_password
+// user2:{SHA}hashed_user2_password
+//
+message BasicAuth {
+ // Username-password pairs used to verify user credentials in the "Authorization" header.
+ // The value needs to be the htpasswd format.
+ // Reference to https://httpd.apache.org/docs/2.4/programs/htpasswd.html
+ config.core.v3.DataSource users = 1 [(udpa.annotations.sensitive) = true];
+}
diff --git a/api/envoy/extensions/filters/http/buffer/v3/BUILD b/api/envoy/extensions/filters/http/buffer/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/buffer/v3/BUILD
+++ b/api/envoy/extensions/filters/http/buffer/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/cache/v3/BUILD b/api/envoy/extensions/filters/http/cache/v3/BUILD
index c0ffdf28daaf..eb0224e4187c 100644
--- a/api/envoy/extensions/filters/http/cache/v3/BUILD
+++ b/api/envoy/extensions/filters/http/cache/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/route/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/cdn_loop/v3/BUILD b/api/envoy/extensions/filters/http/cdn_loop/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/cdn_loop/v3/BUILD
+++ b/api/envoy/extensions/filters/http/cdn_loop/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/composite/v3/BUILD b/api/envoy/extensions/filters/http/composite/v3/BUILD
index e9b556d681cf..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/composite/v3/BUILD
+++ b/api/envoy/extensions/filters/http/composite/v3/BUILD
@@ -7,7 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/composite/v3/composite.proto b/api/envoy/extensions/filters/http/composite/v3/composite.proto
index 08a72e411b9f..a6132b7043dd 100644
--- a/api/envoy/extensions/filters/http/composite/v3/composite.proto
+++ b/api/envoy/extensions/filters/http/composite/v3/composite.proto
@@ -2,11 +2,12 @@ syntax = "proto3";
package envoy.extensions.filters.http.composite.v3;
+import "envoy/config/core/v3/config_source.proto";
import "envoy/config/core/v3/extension.proto";
-import "xds/annotations/v3/status.proto";
-
+import "udpa/annotations/migrate.proto";
import "udpa/annotations/status.proto";
+import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.filters.http.composite.v3";
option java_outer_classname = "CompositeProto";
@@ -29,11 +30,32 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// :ref:`ExecuteFilterAction `)
// which filter configuration to create and delegate to.
message Composite {
- option (xds.annotations.v3.message_status).work_in_progress = true;
+}
+
+// Configuration for an extension configuration discovery service with name.
+message DynamicConfig {
+ // The name of the extension configuration. It also serves as a resource name in ExtensionConfigDS.
+ string name = 1 [(validate.rules).string = {min_len: 1}];
+
+ // Configuration source specifier for an extension configuration discovery
+ // service. In case of a failure and without the default configuration,
+ // 500(Internal Server Error) will be returned.
+ config.core.v3.ExtensionConfigSource config_discovery = 2;
}
// Composite match action (see :ref:`matching docs ` for more info on match actions).
// This specifies the filter configuration of the filter that the composite filter should delegate filter interactions to.
message ExecuteFilterAction {
- config.core.v3.TypedExtensionConfig typed_config = 1;
+ // Filter specific configuration which depends on the filter being
+ // instantiated. See the supported filters for further documentation.
+ // Only one of ``typed_config`` or ``dynamic_config`` can be set.
+ // [#extension-category: envoy.filters.http]
+ config.core.v3.TypedExtensionConfig typed_config = 1
+ [(udpa.annotations.field_migrate).oneof_promotion = "config_type"];
+
+ // Dynamic configuration of filter obtained via extension configuration discovery
+ // service.
+ // Only one of ``typed_config`` or ``dynamic_config`` can be set.
+ DynamicConfig dynamic_config = 2
+ [(udpa.annotations.field_migrate).oneof_promotion = "config_type"];
}
diff --git a/api/envoy/extensions/filters/http/compressor/v3/BUILD b/api/envoy/extensions/filters/http/compressor/v3/BUILD
index a1775bbe6f51..e74acc660850 100644
--- a/api/envoy/extensions/filters/http/compressor/v3/BUILD
+++ b/api/envoy/extensions/filters/http/compressor/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/compressor/v3/compressor.proto b/api/envoy/extensions/filters/http/compressor/v3/compressor.proto
index a106f8ee5c60..6fe4b137da6e 100644
--- a/api/envoy/extensions/filters/http/compressor/v3/compressor.proto
+++ b/api/envoy/extensions/filters/http/compressor/v3/compressor.proto
@@ -126,18 +126,21 @@ message Compressor {
// ``.compressor...*``.
ResponseDirectionConfig response_direction_config = 8;
- // If true, chooses this compressor first to do compression when the q-values in `Accept-Encoding` are same.
+ // If true, chooses this compressor first to do compression when the q-values in ``Accept-Encoding`` are same.
// The last compressor which enables choose_first will be chosen if multiple compressor filters in the chain have choose_first as true.
bool choose_first = 9;
}
-// Per-route overrides of `ResponseDirectionConfig`. Anything added here should be optional,
-// to allow overriding arbitrary subsets of configuration. Omitted fields must have no affect.
+// Per-route overrides of ``ResponseDirectionConfig``. Anything added here should be optional,
+// to allow overriding arbitrary subsets of configuration. Omitted fields must have no effect.
message ResponseDirectionOverrides {
+ // If set, overrides the filter-level
+ // :ref:`remove_accept_encoding_header`.
+ google.protobuf.BoolValue remove_accept_encoding_header = 1;
}
// Per-route overrides. As per-route overrides are needed, they should be
-// added here, mirroring the structure of `Compressor`. All fields should be
+// added here, mirroring the structure of ``Compressor``. All fields should be
// optional, to allow overriding arbitrary subsets of configuration.
message CompressorOverrides {
// If present, response compression is enabled.
@@ -152,7 +155,7 @@ message CompressorPerRoute {
// Overrides Compressor.runtime_enabled and CommonDirectionConfig.enabled.
bool disabled = 1 [(validate.rules).bool = {const: true}];
- // Per-route overrides. Fields set here will override corresponding fields in `Compressor`.
+ // Per-route overrides. Fields set here will override corresponding fields in ``Compressor``.
CompressorOverrides overrides = 2;
}
}
diff --git a/api/envoy/extensions/filters/http/connect_grpc_bridge/v3/BUILD b/api/envoy/extensions/filters/http/connect_grpc_bridge/v3/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/envoy/extensions/filters/http/connect_grpc_bridge/v3/BUILD
+++ b/api/envoy/extensions/filters/http/connect_grpc_bridge/v3/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/connect_grpc_bridge/v3/config.proto b/api/envoy/extensions/filters/http/connect_grpc_bridge/v3/config.proto
index 9b98d057aa9b..7fc956260353 100644
--- a/api/envoy/extensions/filters/http/connect_grpc_bridge/v3/config.proto
+++ b/api/envoy/extensions/filters/http/connect_grpc_bridge/v3/config.proto
@@ -13,10 +13,10 @@ option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/fil
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
-// [#protodoc-title: Buf Connect to gRPC] Buf Connect to gRPC bridge
+// [#protodoc-title: Connect RPC to gRPC] Connect RPC to gRPC bridge
// :ref:`configuration overview `.
// [#extension: envoy.filters.http.connect_grpc_bridge]
-// Buf Connect gRPC bridge filter configuration
+// Connect RPC to gRPC bridge filter configuration
message FilterConfig {
}
diff --git a/api/envoy/extensions/filters/http/cors/v3/BUILD b/api/envoy/extensions/filters/http/cors/v3/BUILD
index 3f3a5395d2aa..e3bfc4e175f4 100644
--- a/api/envoy/extensions/filters/http/cors/v3/BUILD
+++ b/api/envoy/extensions/filters/http/cors/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/credential_injector/v3/BUILD b/api/envoy/extensions/filters/http/credential_injector/v3/BUILD
new file mode 100644
index 000000000000..628f71321fba
--- /dev/null
+++ b/api/envoy/extensions/filters/http/credential_injector/v3/BUILD
@@ -0,0 +1,13 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/config/core/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/filters/http/credential_injector/v3/credential_injector.proto b/api/envoy/extensions/filters/http/credential_injector/v3/credential_injector.proto
new file mode 100644
index 000000000000..efa16d3aca9a
--- /dev/null
+++ b/api/envoy/extensions/filters/http/credential_injector/v3/credential_injector.proto
@@ -0,0 +1,85 @@
+syntax = "proto3";
+
+package envoy.extensions.filters.http.credential_injector.v3;
+
+import "envoy/config/core/v3/extension.proto";
+
+import "xds/annotations/v3/status.proto";
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.filters.http.credential_injector.v3";
+option java_outer_classname = "CredentialInjectorProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/credential_injector/v3;credential_injectorv3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+option (xds.annotations.v3.file_status).work_in_progress = true;
+
+// [#protodoc-title: Credential Injector]
+// [#not-implemented-hide:]
+// Credential Injector :ref:`configuration overview `.
+// [#extension: envoy.filters.http.credential_injector]
+
+// Credential Injector injects credentials into outgoing HTTP requests. The filter configuration is used to retrieve the credentials, or
+// they can be requested through the OAuth2 client credential grant. The credentials obtained are then injected into the Authorization header
+// of the proxied HTTP requests, utilizing either the Basic or Bearer scheme.
+//
+// If the credential is not present, the request will fail with 401 Unauthorized if fail_if_not_present is set to true.
+//
+// Notice: This filter is intended to be used for workload authentication, which means that the identity associated with the inserted credential
+// is considered as the identity of the workload behind the envoy proxy(in this case, envoy is typically deployed as a sidecar alongside that
+// workload). Please note that this filter does not handle end user authentication. Its purpose is solely to authenticate the workload itself.
+//
+// Here is an example of CredentialInjector configuration with Generic credential, which injects an HTTP Basic Auth credential into the proxied requests.
+//
+// .. code-block:: yaml
+//
+// overwrite: true
+// fail_if_not_present: true
+// credential:
+// name: generic_credential
+// typed_config:
+// "@type": type.googleapis.com/envoy.extensions.injected_credentials.generic.v3.Generic
+// credential:
+// name: credential
+// sds_config:
+// path_config_source:
+// path: credential.yaml
+// header: Authorization
+//
+// credential.yaml for Basic Auth:
+// .. code-block:: yaml
+//
+// resources:
+// - "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret"
+// name: credential
+// generic_secret:
+// secret:
+// inline_string: "Basic base64EncodedUsernamePassword"
+//
+// It can also be configured to inject a Bearer token into the proxied requests.
+// credential.yaml for Bearer Token:
+// .. code-block:: yaml
+//
+// resources:
+// - "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret"
+// name: credential
+// generic_secret:
+// secret:
+// inline_string: "Bearer myToken"
+//
+message CredentialInjector {
+ // Whether to overwrite the value or not if the injected headers already exist.
+ // Value defaults to false.
+ bool overwrite = 1;
+
+ // Whether to fail the request if the credential is not present.
+ // Value defaults to false.
+ // If set to true, the request will fail with 401 Unauthorized if the credential is not present.
+ bool fail_if_not_present = 2;
+
+ // The credential to inject into the proxied requests
+ // TODO add extension-category
+ config.core.v3.TypedExtensionConfig credential = 3 [(validate.rules).message = {required: true}];
+}
diff --git a/api/envoy/extensions/filters/http/csrf/v3/BUILD b/api/envoy/extensions/filters/http/csrf/v3/BUILD
index 3f3a5395d2aa..e3bfc4e175f4 100644
--- a/api/envoy/extensions/filters/http/csrf/v3/BUILD
+++ b/api/envoy/extensions/filters/http/csrf/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/custom_response/v3/BUILD b/api/envoy/extensions/filters/http/custom_response/v3/BUILD
index 4e7598f926bd..720cd87d94c8 100644
--- a/api/envoy/extensions/filters/http/custom_response/v3/BUILD
+++ b/api/envoy/extensions/filters/http/custom_response/v3/BUILD
@@ -6,8 +6,8 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/decompressor/v3/BUILD b/api/envoy/extensions/filters/http/decompressor/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/decompressor/v3/BUILD
+++ b/api/envoy/extensions/filters/http/decompressor/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/dynamic_forward_proxy/v3/BUILD b/api/envoy/extensions/filters/http/dynamic_forward_proxy/v3/BUILD
index 05f25a2fe5d9..73e98d4d40b2 100644
--- a/api/envoy/extensions/filters/http/dynamic_forward_proxy/v3/BUILD
+++ b/api/envoy/extensions/filters/http/dynamic_forward_proxy/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/common/dynamic_forward_proxy/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/ext_authz/v3/BUILD b/api/envoy/extensions/filters/http/ext_authz/v3/BUILD
index d1ae5c00f93a..cabe849e71d1 100644
--- a/api/envoy/extensions/filters/http/ext_authz/v3/BUILD
+++ b/api/envoy/extensions/filters/http/ext_authz/v3/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/config/core/v3:pkg",
"//envoy/type/matcher/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/ext_authz/v3/ext_authz.proto b/api/envoy/extensions/filters/http/ext_authz/v3/ext_authz.proto
index cd2d1f6f4e21..ea40112a980e 100644
--- a/api/envoy/extensions/filters/http/ext_authz/v3/ext_authz.proto
+++ b/api/envoy/extensions/filters/http/ext_authz/v3/ext_authz.proto
@@ -10,6 +10,8 @@ import "envoy/type/matcher/v3/metadata.proto";
import "envoy/type/matcher/v3/string.proto";
import "envoy/type/v3/http_status.proto";
+import "google/protobuf/wrappers.proto";
+
import "envoy/annotations/deprecation.proto";
import "udpa/annotations/sensitive.proto";
import "udpa/annotations/status.proto";
@@ -26,7 +28,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// External Authorization :ref:`configuration overview `.
// [#extension: envoy.filters.http.ext_authz]
-// [#next-free-field: 19]
+// [#next-free-field: 23]
message ExtAuthz {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.http.ext_authz.v2.ExtAuthz";
@@ -63,6 +65,12 @@ message ExtAuthz {
// `.
bool failure_mode_allow = 2;
+ // When ``failure_mode_allow`` and ``failure_mode_allow_header_add`` are both set to true,
+ // ``x-envoy-auth-failure-mode-allowed: true`` will be added to request headers if the communication
+ // with the authorization service has failed, or if the authorization service has returned a
+ // HTTP 5xx error.
+ bool failure_mode_allow_header_add = 19;
+
// Enables filter to buffer the client request body and send it within the authorization request.
// A ``x-envoy-auth-partial-body: false|true`` metadata header will be added to the authorization
// request message indicating if the body data is partial.
@@ -85,7 +93,10 @@ message ExtAuthz {
type.v3.HttpStatus status_on_error = 7;
// Specifies a list of metadata namespaces whose values, if present, will be passed to the
- // ext_authz service. :ref:`filter_metadata ` is passed as an opaque ``protobuf::Struct``.
+ // ext_authz service. The :ref:`filter_metadata `
+ // is passed as an opaque ``protobuf::Struct``.
+ //
+ // Please note that this field exclusively applies to the gRPC ext_authz service and has no effect on the HTTP service.
//
// For example, if the ``jwt_authn`` filter is used and :ref:`payload_in_metadata
// ` is set,
@@ -99,13 +110,28 @@ message ExtAuthz {
repeated string metadata_context_namespaces = 8;
// Specifies a list of metadata namespaces whose values, if present, will be passed to the
- // ext_authz service. :ref:`typed_filter_metadata ` is passed as an ``protobuf::Any``.
+ // ext_authz service. :ref:`typed_filter_metadata `
+ // is passed as a ``protobuf::Any``.
//
- // It works in a way similar to ``metadata_context_namespaces`` but allows envoy and external authz server to share the protobuf message definition
- // in order to do a safe parsing.
+ // Please note that this field exclusively applies to the gRPC ext_authz service and has no effect on the HTTP service.
+ //
+ // It works in a way similar to ``metadata_context_namespaces`` but allows Envoy and ext_authz server to share
+ // the protobuf message definition in order to do a safe parsing.
//
repeated string typed_metadata_context_namespaces = 16;
+ // Specifies a list of route metadata namespaces whose values, if present, will be passed to the
+ // ext_authz service at :ref:`route_metadata_context ` in
+ // :ref:`CheckRequest `.
+ // :ref:`filter_metadata ` is passed as an opaque ``protobuf::Struct``.
+ repeated string route_metadata_context_namespaces = 21;
+
+ // Specifies a list of route metadata namespaces whose values, if present, will be passed to the
+ // ext_authz service at :ref:`route_metadata_context ` in
+ // :ref:`CheckRequest `.
+ // :ref:`typed_filter_metadata ` is passed as an ``protobuf::Any``.
+ repeated string route_typed_metadata_context_namespaces = 22;
+
// Specifies if the filter is enabled.
//
// If :ref:`runtime_key ` is specified,
@@ -185,6 +211,10 @@ message ExtAuthz {
// When this field is true, Envoy will include the SNI name used for TLSClientHello, if available, in the
// :ref:`tls_session`.
bool include_tls_session = 18;
+
+ // Whether to increment cluster statistics (e.g. cluster..upstream_rq_*) on authorization failure.
+ // Defaults to true.
+ google.protobuf.BoolValue charge_cluster_response_stats = 20;
}
// Configuration for buffering the request data.
@@ -304,8 +334,8 @@ message AuthorizationResponse {
type.matcher.v3.ListStringMatcher allowed_upstream_headers = 1;
// When this :ref:`list ` is set, authorization
- // response headers that have a correspondent match will be added to the client's response. Note
- // that coexistent headers will be appended.
+ // response headers that have a correspondent match will be added to the original client request.
+ // Note that coexistent headers will be appended.
type.matcher.v3.ListStringMatcher allowed_upstream_headers_to_append = 3;
// When this :ref:`list ` is set, authorization
@@ -371,6 +401,19 @@ message CheckSettings {
map context_extensions = 1 [(udpa.annotations.sensitive) = true];
// When set to true, disable the configured :ref:`with_request_body
- // ` for a route.
+ // ` for a specific route.
+ //
+ // Please note that only one of *disable_request_body_buffering* or
+ // :ref:`with_request_body `
+ // may be specified.
bool disable_request_body_buffering = 2;
+
+ // Enable or override request body buffering, which is configured using the
+ // :ref:`with_request_body `
+ // option for a specific route.
+ //
+ // Please note that only only one of *with_request_body* or
+ // :ref:`disable_request_body_buffering `
+ // may be specified.
+ BufferSettings with_request_body = 3;
}
diff --git a/api/envoy/extensions/filters/http/ext_proc/v3/BUILD b/api/envoy/extensions/filters/http/ext_proc/v3/BUILD
index 18cc12771da3..8322f99fa7df 100644
--- a/api/envoy/extensions/filters/http/ext_proc/v3/BUILD
+++ b/api/envoy/extensions/filters/http/ext_proc/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/config/common/mutation_rules/v3:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto b/api/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto
index eafdb1eabc65..66c04acc6426 100644
--- a/api/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto
+++ b/api/envoy/extensions/filters/http/ext_proc/v3/processing_mode.proto
@@ -35,6 +35,22 @@ message ProcessingMode {
}
// Control how the request and response bodies are handled
+ // When body mutation by external processor is enabled, ext_proc filter will always remove
+ // the content length header in three cases below because content length can not be guaranteed
+ // to be set correctly:
+ // 1) STREAMED BodySendMode: header processing completes before body mutation comes back.
+ // 2) BUFFERED_PARTIAL BodySendMode: body is buffered and could be injected in different phases.
+ // 3) BUFFERED BodySendMode + SKIP HeaderSendMode: header processing (e.g., update content-length) is skipped.
+ //
+ // In Envoy's http1 codec implementation, removing content length will enable chunked transfer
+ // encoding whenever feasible. The recipient (either client or server) must be able
+ // to parse and decode the chunked transfer coding.
+ // (see `details in RFC9112 `_).
+ //
+ // In BUFFERED BodySendMode + SEND HeaderSendMode, content length header is allowed but it is
+ // external processor's responsibility to set the content length correctly matched to the length
+ // of mutated body. If they don't match, the corresponding body mutation will be rejected and
+ // local reply will be sent with an error message.
enum BodySendMode {
// Do not send the body at all. This is the default.
NONE = 0;
diff --git a/api/envoy/extensions/filters/http/fault/v3/BUILD b/api/envoy/extensions/filters/http/fault/v3/BUILD
index 53db91cad82c..1bbe0b04c3d6 100644
--- a/api/envoy/extensions/filters/http/fault/v3/BUILD
+++ b/api/envoy/extensions/filters/http/fault/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/config/route/v3:pkg",
"//envoy/extensions/filters/common/fault/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/file_system_buffer/v3/BUILD b/api/envoy/extensions/filters/http/file_system_buffer/v3/BUILD
index 26baeccd9941..5b108dcfee6c 100644
--- a/api/envoy/extensions/filters/http/file_system_buffer/v3/BUILD
+++ b/api/envoy/extensions/filters/http/file_system_buffer/v3/BUILD
@@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/common/async_files/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/gcp_authn/v3/BUILD b/api/envoy/extensions/filters/http/gcp_authn/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/gcp_authn/v3/BUILD
+++ b/api/envoy/extensions/filters/http/gcp_authn/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/geoip/v3/BUILD b/api/envoy/extensions/filters/http/geoip/v3/BUILD
index e9b556d681cf..628f71321fba 100644
--- a/api/envoy/extensions/filters/http/geoip/v3/BUILD
+++ b/api/envoy/extensions/filters/http/geoip/v3/BUILD
@@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/geoip/v3/geoip.proto b/api/envoy/extensions/filters/http/geoip/v3/geoip.proto
index a01356333524..4ef26a8245e2 100644
--- a/api/envoy/extensions/filters/http/geoip/v3/geoip.proto
+++ b/api/envoy/extensions/filters/http/geoip/v3/geoip.proto
@@ -21,52 +21,6 @@ option (xds.annotations.v3.file_status).work_in_progress = true;
// [#extension: envoy.filters.http.geoip]
message Geoip {
- // The set of geolocation headers to add to request. If any of the configured headers is present
- // in the incoming request, it will be overridden by Geoip filter.
- // [#next-free-field: 10]
- message GeolocationHeadersToAdd {
- // If set, the header will be used to populate the country ISO code associated with the IP address.
- string country = 1
- [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
-
- // If set, the header will be used to populate the city associated with the IP address.
- string city = 2
- [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
-
- // If set, the header will be used to populate the region ISO code associated with the IP address.
- string region = 3
- [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
-
- // If set, the header will be used to populate the ASN associated with the IP address.
- string asn = 4
- [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
-
- // If set, the IP address will be checked if it belongs to any type of anonymization network (e.g. VPN, public proxy etc)
- // and header will be populated with the check result. Header value will be set to either "true" or "false" depending on the check result.
- string is_anon = 5
- [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
-
- // If set, the IP address will be checked if it belongs to a VPN and header will be populated with the check result.
- // Header value will be set to either "true" or "false" depending on the check result.
- string anon_vpn = 6
- [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
-
- // If set, the IP address will be checked if it belongs to a hosting provider and header will be populated with the check result.
- // Header value will be set to either "true" or "false" depending on the check result.
- string anon_hosting = 7
- [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
-
- // If set, the IP address will be checked if it belongs to a TOR exit node and header will be populated with the check result.
- // Header value will be set to either "true" or "false" depending on the check result.
- string anon_tor = 8
- [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
-
- // If set, the IP address will be checked if it belongs to a public proxy and header will be populated with the check result.
- // Header value will be set to either "true" or "false" depending on the check result.
- string anon_proxy = 9
- [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
- }
-
message XffConfig {
// The number of additional ingress proxy hops from the right side of the
// :ref:`config_http_conn_man_headers_x-forwarded-for` HTTP header to trust when
@@ -77,14 +31,15 @@ message Geoip {
}
// If set, the :ref:`xff_num_trusted_hops ` field will be used to determine
- // trusted client address from `x-forwarded-for` header.
+ // trusted client address from ``x-forwarded-for`` header.
// Otherwise, the immediate downstream connection source address will be used.
// [#next-free-field: 2]
XffConfig xff_config = 1;
- // Configuration for geolocation headers to add to request.
- GeolocationHeadersToAdd geo_headers_to_add = 2 [(validate.rules).message = {required: true}];
-
- // Geolocation provider specific configuration.
+ // Geoip driver specific configuration which depends on the driver being instantiated.
+ // See the geoip drivers for examples:
+ //
+ // - :ref:`MaxMindConfig `
+ // [#extension-category: envoy.geoip_providers]
config.core.v3.TypedExtensionConfig provider = 3 [(validate.rules).message = {required: true}];
}
diff --git a/api/envoy/extensions/filters/http/grpc_field_extraction/v3/BUILD b/api/envoy/extensions/filters/http/grpc_field_extraction/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/grpc_field_extraction/v3/BUILD
+++ b/api/envoy/extensions/filters/http/grpc_field_extraction/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/grpc_field_extraction/v3/config.proto b/api/envoy/extensions/filters/http/grpc_field_extraction/v3/config.proto
index dbd6ce43f165..3684f994d65f 100644
--- a/api/envoy/extensions/filters/http/grpc_field_extraction/v3/config.proto
+++ b/api/envoy/extensions/filters/http/grpc_field_extraction/v3/config.proto
@@ -140,14 +140,14 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
message GrpcFieldExtractionConfig {
// The proto descriptor set binary for the gRPC services.
//
- // It could be passed by a local file through `Datasource.filename` or embedded in the
- // `Datasource.inline_bytes`.
+ // It could be passed by a local file through ``Datasource.filename`` or embedded in the
+ // ``Datasource.inline_bytes``.
config.core.v3.DataSource descriptor_set = 1 [(validate.rules).message = {required: true}];
// Specify the extraction info.
// The key is the fully qualified gRPC method name.
- // `${package}.${Service}.${Method}`, like
- // `endpoints.examples.bookstore.BookStore.GetShelf`
+ // ``${package}.${Service}.${Method}``, like
+ // ``endpoints.examples.bookstore.BookStore.GetShelf``
//
// The value is the field extractions for individual gRPC method.
map extractions_by_method = 2;
@@ -158,8 +158,8 @@ message GrpcFieldExtractionConfig {
message FieldExtractions {
// The field extractions for requests.
// The key is the field path within the grpc request.
- // For example, we can define `foo.bar.name` if we want to extract
- // Request.foo.bar.name.
+ // For example, we can define ``foo.bar.name`` if we want to extract
+ // ``Request.foo.bar.name``.
//
// .. code-block:: proto
//
diff --git a/api/envoy/extensions/filters/http/grpc_http1_bridge/v3/BUILD b/api/envoy/extensions/filters/http/grpc_http1_bridge/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/grpc_http1_bridge/v3/BUILD
+++ b/api/envoy/extensions/filters/http/grpc_http1_bridge/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/grpc_http1_bridge/v3/config.proto b/api/envoy/extensions/filters/http/grpc_http1_bridge/v3/config.proto
index e66ad4031023..1ca5b05ea9bc 100644
--- a/api/envoy/extensions/filters/http/grpc_http1_bridge/v3/config.proto
+++ b/api/envoy/extensions/filters/http/grpc_http1_bridge/v3/config.proto
@@ -26,4 +26,7 @@ message Config {
// For the requests that went through this upgrade the filter will also strip the frame before forwarding the
// response to the client.
bool upgrade_protobuf_to_grpc = 1;
+
+ // If true then query parameters in request's URL path will be removed.
+ bool ignore_query_parameters = 2;
}
diff --git a/api/envoy/extensions/filters/http/grpc_http1_reverse_bridge/v3/BUILD b/api/envoy/extensions/filters/http/grpc_http1_reverse_bridge/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/grpc_http1_reverse_bridge/v3/BUILD
+++ b/api/envoy/extensions/filters/http/grpc_http1_reverse_bridge/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/grpc_json_transcoder/v3/BUILD b/api/envoy/extensions/filters/http/grpc_json_transcoder/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/grpc_json_transcoder/v3/BUILD
+++ b/api/envoy/extensions/filters/http/grpc_json_transcoder/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/grpc_stats/v3/BUILD b/api/envoy/extensions/filters/http/grpc_stats/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/grpc_stats/v3/BUILD
+++ b/api/envoy/extensions/filters/http/grpc_stats/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/grpc_web/v3/BUILD b/api/envoy/extensions/filters/http/grpc_web/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/grpc_web/v3/BUILD
+++ b/api/envoy/extensions/filters/http/grpc_web/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/gzip/v3/BUILD b/api/envoy/extensions/filters/http/gzip/v3/BUILD
index bfe5d198e612..dbd9ebc365d2 100644
--- a/api/envoy/extensions/filters/http/gzip/v3/BUILD
+++ b/api/envoy/extensions/filters/http/gzip/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/filters/http/compressor/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/header_mutation/v3/BUILD b/api/envoy/extensions/filters/http/header_mutation/v3/BUILD
index 7af7ae042311..876a007c83cf 100644
--- a/api/envoy/extensions/filters/http/header_mutation/v3/BUILD
+++ b/api/envoy/extensions/filters/http/header_mutation/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/common/mutation_rules/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/header_to_metadata/v3/BUILD b/api/envoy/extensions/filters/http/header_to_metadata/v3/BUILD
index 693f0b92ff34..bfc486330911 100644
--- a/api/envoy/extensions/filters/http/header_to_metadata/v3/BUILD
+++ b/api/envoy/extensions/filters/http/header_to_metadata/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/health_check/v3/BUILD b/api/envoy/extensions/filters/http/health_check/v3/BUILD
index c6ef74063aab..c5d802c5d29f 100644
--- a/api/envoy/extensions/filters/http/health_check/v3/BUILD
+++ b/api/envoy/extensions/filters/http/health_check/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/route/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/ip_tagging/v3/BUILD b/api/envoy/extensions/filters/http/ip_tagging/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/ip_tagging/v3/BUILD
+++ b/api/envoy/extensions/filters/http/ip_tagging/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/json_to_metadata/v3/BUILD b/api/envoy/extensions/filters/http/json_to_metadata/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/json_to_metadata/v3/BUILD
+++ b/api/envoy/extensions/filters/http/json_to_metadata/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/json_to_metadata/v3/json_to_metadata.proto b/api/envoy/extensions/filters/http/json_to_metadata/v3/json_to_metadata.proto
index 3dfb87f97a7d..8d7b53d1c841 100644
--- a/api/envoy/extensions/filters/http/json_to_metadata/v3/json_to_metadata.proto
+++ b/api/envoy/extensions/filters/http/json_to_metadata/v3/json_to_metadata.proto
@@ -62,7 +62,6 @@ message JsonToMetadata {
}
message Selector {
- // TODO(kuochunghsu): Explore matchers for array handling.
oneof selector {
// key to match
string key = 1 [(validate.rules).string = {min_len: 1}];
@@ -99,9 +98,9 @@ message JsonToMetadata {
repeated Rule rules = 1 [(validate.rules).repeated = {min_items: 1}];
// Allowed content-type for json to metadata transformation.
- // Default to {"application/json"}.
+ // Default to ``{"application/json"}``.
//
- // Set `allow_empty_content_type` if empty/missing content-type header
+ // Set ``allow_empty_content_type`` if empty/missing content-type header
// is allowed.
repeated string allow_content_types = 2
[(validate.rules).repeated = {items {string {min_len: 1}}}];
@@ -111,6 +110,10 @@ message JsonToMetadata {
bool allow_empty_content_type = 3;
}
- // Rules to match json body of requests
- MatchRules request_rules = 1 [(validate.rules).message = {required: true}];
+ // At least one of request_rules and response_rules must be provided.
+ // Rules to match json body of requests.
+ MatchRules request_rules = 1;
+
+ // Rules to match json body of responses.
+ MatchRules response_rules = 2;
}
diff --git a/api/envoy/extensions/filters/http/jwt_authn/v3/BUILD b/api/envoy/extensions/filters/http/jwt_authn/v3/BUILD
index 6eb33fe8151a..cea648f6d0ec 100644
--- a/api/envoy/extensions/filters/http/jwt_authn/v3/BUILD
+++ b/api/envoy/extensions/filters/http/jwt_authn/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/config/route/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/jwt_authn/v3/config.proto b/api/envoy/extensions/filters/http/jwt_authn/v3/config.proto
index bf88896e7030..7d5ae25a027a 100644
--- a/api/envoy/extensions/filters/http/jwt_authn/v3/config.proto
+++ b/api/envoy/extensions/filters/http/jwt_authn/v3/config.proto
@@ -53,11 +53,23 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// cache_duration:
// seconds: 300
//
-// [#next-free-field: 17]
+// [#next-free-field: 19]
message JwtProvider {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.http.jwt_authn.v2alpha.JwtProvider";
+ // Alters the payload representation in the request dynamic metadata to facilitate its use in matching.
+ message NormalizePayload {
+ // Each claim in this list will be interpreted as a space-delimited string
+ // and converted to a list of strings based on the delimited values.
+ // Example: a token with a claim ``scopes: "email profile"`` is translated
+ // to dynamic metadata ``scopes: ["email", "profile"]`` if this field is
+ // set value ``["scopes"]``. This special handling of ``scopes`` is
+ // recommended by `RFC8693
+ // `_.
+ repeated string space_delimited_claims = 1;
+ }
+
// Specify the `principal `_ that issued
// the JWT, usually a URL or an email address.
//
@@ -230,6 +242,9 @@ message JwtProvider {
//
string payload_in_metadata = 9;
+ // Normalizes the payload representation in the request metadata.
+ NormalizePayload normalize_payload_in_metadata = 18;
+
// If not empty, similar to :ref:`payload_in_metadata `,
// a successfully verified JWT header will be written to :ref:`Dynamic State `
// as an entry (``protobuf::Struct``) in ``envoy.filters.http.jwt_authn`` ``namespace`` with the
@@ -270,8 +285,8 @@ message JwtProvider {
//
string header_in_metadata = 14;
- // If non empty, the failure status `::google::jwt_verify::Status` for a non verified JWT will be written to StreamInfo DynamicMetadata
- // in the format as: ``namespace`` is the jwt_authn filter name as ````envoy.filters.http.jwt_authn````
+ // If non empty, the failure status ``::google::jwt_verify::Status`` for a non verified JWT will be written to StreamInfo DynamicMetadata
+ // in the format as: ``namespace`` is the jwt_authn filter name as ``envoy.filters.http.jwt_authn``
// The value is the ``protobuf::Struct``. The values of this field will be ``code`` and ``message``
// and they will contain the JWT authentication failure status code and a message describing the failure.
//
@@ -302,8 +317,18 @@ message JwtProvider {
// - name: x-jwt-claim-nested-claim
// claim: claim.nested.key
//
- // This header is only reserved for jwt claim; any other value will be overwrite.
+ // This header is only reserved for jwt claim; any other value will be overwritten.
repeated JwtClaimToHeader claim_to_headers = 15;
+
+ // Clears route cache in order to allow JWT token to correctly affect
+ // routing decisions. Filter clears all cached routes when:
+ //
+ // 1. The field is set to ``true``.
+ //
+ // 2. At least one ``claim_to_headers`` header is added to the request OR
+ // if ``payload_in_metadata`` is set.
+ //
+ bool clear_route_cache = 17;
}
// This message specifies JWT Cache configuration.
diff --git a/api/envoy/extensions/filters/http/kill_request/v3/BUILD b/api/envoy/extensions/filters/http/kill_request/v3/BUILD
index 9a76b7e148e0..ef19132f9180 100644
--- a/api/envoy/extensions/filters/http/kill_request/v3/BUILD
+++ b/api/envoy/extensions/filters/http/kill_request/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/local_ratelimit/v3/BUILD b/api/envoy/extensions/filters/http/local_ratelimit/v3/BUILD
index 6c58a43e4ff6..1ef2f0c9bf47 100644
--- a/api/envoy/extensions/filters/http/local_ratelimit/v3/BUILD
+++ b/api/envoy/extensions/filters/http/local_ratelimit/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/config/core/v3:pkg",
"//envoy/extensions/common/ratelimit/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/local_ratelimit/v3/local_rate_limit.proto b/api/envoy/extensions/filters/http/local_ratelimit/v3/local_rate_limit.proto
index 1adc75ec0b75..c253d049731c 100644
--- a/api/envoy/extensions/filters/http/local_ratelimit/v3/local_rate_limit.proto
+++ b/api/envoy/extensions/filters/http/local_ratelimit/v3/local_rate_limit.proto
@@ -7,6 +7,8 @@ import "envoy/extensions/common/ratelimit/v3/ratelimit.proto";
import "envoy/type/v3/http_status.proto";
import "envoy/type/v3/token_bucket.proto";
+import "google/protobuf/wrappers.proto";
+
import "udpa/annotations/status.proto";
import "validate/validate.proto";
@@ -20,7 +22,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// Local Rate limit :ref:`configuration overview `.
// [#extension: envoy.filters.http.local_ratelimit]
-// [#next-free-field: 14]
+// [#next-free-field: 16]
message LocalRateLimit {
// The human readable prefix to use when emitting stats.
string stat_prefix = 1 [(validate.rules).string = {min_len: 1}];
@@ -117,4 +119,15 @@ message LocalRateLimit {
// Specifies if the local rate limit filter should include the virtual host rate limits.
common.ratelimit.v3.VhRateLimitsOptions vh_rate_limits = 13
[(validate.rules).enum = {defined_only: true}];
+
+ // Specifies if default token bucket should be always consumed.
+ // If set to false, default token bucket will only be consumed when there is
+ // no matching descriptor. If set to true, default token bucket will always
+ // be consumed. Default is true.
+ google.protobuf.BoolValue always_consume_default_token_bucket = 14;
+
+ // Specifies whether a ``RESOURCE_EXHAUSTED`` gRPC code must be returned instead
+ // of the default ``UNAVAILABLE`` gRPC code for a rate limited gRPC call. The
+ // HTTP code will be 200 for a gRPC response.
+ bool rate_limited_as_resource_exhausted = 15;
}
diff --git a/api/envoy/extensions/filters/http/lua/v3/BUILD b/api/envoy/extensions/filters/http/lua/v3/BUILD
index a1775bbe6f51..e74acc660850 100644
--- a/api/envoy/extensions/filters/http/lua/v3/BUILD
+++ b/api/envoy/extensions/filters/http/lua/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/oauth2/v3/BUILD b/api/envoy/extensions/filters/http/oauth2/v3/BUILD
index 75d36b709935..19dc4b83616f 100644
--- a/api/envoy/extensions/filters/http/oauth2/v3/BUILD
+++ b/api/envoy/extensions/filters/http/oauth2/v3/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/config/route/v3:pkg",
"//envoy/extensions/transport_sockets/tls/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/oauth2/v3/oauth.proto b/api/envoy/extensions/filters/http/oauth2/v3/oauth.proto
index 7c933d8726fa..8e0574afe4b1 100644
--- a/api/envoy/extensions/filters/http/oauth2/v3/oauth.proto
+++ b/api/envoy/extensions/filters/http/oauth2/v3/oauth.proto
@@ -7,6 +7,8 @@ import "envoy/config/route/v3/route_components.proto";
import "envoy/extensions/transport_sockets/tls/v3/secret.proto";
import "envoy/type/matcher/v3/path.proto";
+import "google/protobuf/wrappers.proto";
+
import "udpa/annotations/status.proto";
import "validate/validate.proto";
@@ -71,7 +73,7 @@ message OAuth2Credentials {
// OAuth config
//
-// [#next-free-field: 12]
+// [#next-free-field: 13]
message OAuth2Config {
enum AuthType {
// The ``client_id`` and ``client_secret`` will be sent in the URL encoded request body.
@@ -123,6 +125,11 @@ message OAuth2Config {
// Defines how ``client_id`` and ``client_secret`` are sent in OAuth client to OAuth server requests.
// RFC https://datatracker.ietf.org/doc/html/rfc6749#section-2.3.1
AuthType auth_type = 11 [(validate.rules).enum = {defined_only: true}];
+
+ // If set to true, allows automatic access token refresh using the associated refresh token (see
+ // `RFC 6749 section 6 `_), provided that the OAuth server supports that.
+ // Default value is false.
+ google.protobuf.BoolValue use_refresh_token = 12;
}
// Filter config.
diff --git a/api/envoy/extensions/filters/http/on_demand/v3/BUILD b/api/envoy/extensions/filters/http/on_demand/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/on_demand/v3/BUILD
+++ b/api/envoy/extensions/filters/http/on_demand/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/original_src/v3/BUILD b/api/envoy/extensions/filters/http/original_src/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/original_src/v3/BUILD
+++ b/api/envoy/extensions/filters/http/original_src/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/rate_limit_quota/v3/BUILD b/api/envoy/extensions/filters/http/rate_limit_quota/v3/BUILD
index 39b7d6bb45d1..5a6a4b7e9fcd 100644
--- a/api/envoy/extensions/filters/http/rate_limit_quota/v3/BUILD
+++ b/api/envoy/extensions/filters/http/rate_limit_quota/v3/BUILD
@@ -8,8 +8,8 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/rate_limit_quota/v3/rate_limit_quota.proto b/api/envoy/extensions/filters/http/rate_limit_quota/v3/rate_limit_quota.proto
index 93dded4345b8..57b8bdecd782 100644
--- a/api/envoy/extensions/filters/http/rate_limit_quota/v3/rate_limit_quota.proto
+++ b/api/envoy/extensions/filters/http/rate_limit_quota/v3/rate_limit_quota.proto
@@ -202,8 +202,7 @@ message RateLimitQuotaBucketSettings {
// `
// message.
//
- // If the field is not set, the ``ExpiredAssignmentBehavior`` time is **not limited**:
- // it applies to the bucket until replaced by an ``active`` assignment.
+ // If not set, defaults to zero, and the bucket is abandoned immediately.
google.protobuf.Duration expired_assignment_behavior_timeout = 1
[(validate.rules).duration = {gt {}}];
@@ -389,6 +388,12 @@ message RateLimitQuotaBucketSettings {
//
// After sending the initial report, the data plane is to continue reporting the bucket usage with
// the internal specified in this field.
+ //
+ // If for any reason RLQS client doesn't receive the initial assignment for the reported bucket,
+ // the data plane will eventually consider the bucket abandoned and stop sending the usage
+ // reports. This is explained in more details at :ref:`Rate Limit Quota Service (RLQS)
+ // `.
+ //
// [#comment: 100000000 nanoseconds = 0.1 seconds]
google.protobuf.Duration reporting_interval = 2 [(validate.rules).duration = {
required: true
diff --git a/api/envoy/extensions/filters/http/ratelimit/v3/BUILD b/api/envoy/extensions/filters/http/ratelimit/v3/BUILD
index 77ed9cc64947..90cebe0b0b07 100644
--- a/api/envoy/extensions/filters/http/ratelimit/v3/BUILD
+++ b/api/envoy/extensions/filters/http/ratelimit/v3/BUILD
@@ -11,6 +11,6 @@ api_proto_package(
"//envoy/config/route/v3:pkg",
"//envoy/type/metadata/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/ratelimit/v3/rate_limit.proto b/api/envoy/extensions/filters/http/ratelimit/v3/rate_limit.proto
index f9510db579d2..3e33536b228a 100644
--- a/api/envoy/extensions/filters/http/ratelimit/v3/rate_limit.proto
+++ b/api/envoy/extensions/filters/http/ratelimit/v3/rate_limit.proto
@@ -25,7 +25,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// Rate limit :ref:`configuration overview `.
// [#extension: envoy.filters.http.ratelimit]
-// [#next-free-field: 12]
+// [#next-free-field: 14]
message RateLimit {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.http.rate_limit.v2.RateLimit";
@@ -126,6 +126,14 @@ message RateLimit {
// have been rate limited.
repeated config.core.v3.HeaderValueOption response_headers_to_add = 11
[(validate.rules).repeated = {max_items: 10}];
+
+ // Sets the HTTP status that is returned to the client when the ratelimit server returns an error
+ // or cannot be reached. The default status is 500.
+ type.v3.HttpStatus status_on_error = 12;
+
+ // Optional additional prefix to use when emitting statistics. This allows to distinguish
+ // emitted statistics between configured ``ratelimit`` filters in an HTTP filter chain.
+ string stat_prefix = 13;
}
// Global rate limiting :ref:`architecture overview `.
diff --git a/api/envoy/extensions/filters/http/rbac/v3/BUILD b/api/envoy/extensions/filters/http/rbac/v3/BUILD
index 49cb2ccac4f7..f4f91ded2a89 100644
--- a/api/envoy/extensions/filters/http/rbac/v3/BUILD
+++ b/api/envoy/extensions/filters/http/rbac/v3/BUILD
@@ -7,8 +7,8 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/rbac/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/router/v3/BUILD b/api/envoy/extensions/filters/http/router/v3/BUILD
index 3e49a416a43f..76b034d46fa1 100644
--- a/api/envoy/extensions/filters/http/router/v3/BUILD
+++ b/api/envoy/extensions/filters/http/router/v3/BUILD
@@ -6,8 +6,9 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
+ "//envoy/annotations:pkg",
"//envoy/config/accesslog/v3:pkg",
"//envoy/extensions/filters/network/http_connection_manager/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/router/v3/router.proto b/api/envoy/extensions/filters/http/router/v3/router.proto
index a1ede3ffe351..75bca960da1f 100644
--- a/api/envoy/extensions/filters/http/router/v3/router.proto
+++ b/api/envoy/extensions/filters/http/router/v3/router.proto
@@ -8,6 +8,7 @@ import "envoy/extensions/filters/network/http_connection_manager/v3/http_connect
import "google/protobuf/duration.proto";
import "google/protobuf/wrappers.proto";
+import "envoy/annotations/deprecation.proto";
import "udpa/annotations/status.proto";
import "udpa/annotations/versioning.proto";
import "validate/validate.proto";
@@ -52,7 +53,13 @@ message Router {
// useful in scenarios where other filters (auth, ratelimit, etc.) make
// outbound calls and have child spans rooted at the same ingress
// parent. Defaults to false.
- bool start_child_span = 2;
+ //
+ // .. attention::
+ // This field is deprecated by the
+ // :ref:`spawn_upstream_span `.
+ // Please use that ``spawn_upstream_span`` field to control the span creation.
+ bool start_child_span = 2
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
// Configuration for HTTP upstream logs emitted by the router. Upstream logs
// are configured in the same way as access logs, but each log entry represents
@@ -115,16 +122,16 @@ message Router {
// .. note::
// Upstream HTTP filters are currently in alpha.
//
- // Optional HTTP filters for the upstream filter chain.
+ // Optional HTTP filters for the upstream HTTP filter chain.
//
// These filters will be applied for all requests that pass through the router.
// They will also be applied to shadowed requests.
- // Upstream filters cannot change route or cluster.
- // Upstream filters specified on the cluster will override these filters.
+ // Upstream HTTP filters cannot change route or cluster.
+ // Upstream HTTP filters specified on the cluster will override these filters.
//
- // If using upstream filters, please be aware that local errors sent by
- // upstream filters will not trigger retries, and local errors sent by
- // upstream filters will count as a final response if hedging is configured.
+ // If using upstream HTTP filters, please be aware that local errors sent by
+ // upstream HTTP filters will not trigger retries, and local errors sent by
+ // upstream HTTP filters will count as a final response if hedging is configured.
// [#extension-category: envoy.filters.http.upstream]
repeated network.http_connection_manager.v3.HttpFilter upstream_http_filters = 8;
}
diff --git a/api/envoy/extensions/filters/http/set_filter_state/v3/BUILD b/api/envoy/extensions/filters/http/set_filter_state/v3/BUILD
new file mode 100644
index 000000000000..7d18ef132da3
--- /dev/null
+++ b/api/envoy/extensions/filters/http/set_filter_state/v3/BUILD
@@ -0,0 +1,12 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/extensions/filters/common/set_filter_state/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/filters/http/set_filter_state/v3/set_filter_state.proto b/api/envoy/extensions/filters/http/set_filter_state/v3/set_filter_state.proto
new file mode 100644
index 000000000000..54f1f4c334f2
--- /dev/null
+++ b/api/envoy/extensions/filters/http/set_filter_state/v3/set_filter_state.proto
@@ -0,0 +1,27 @@
+syntax = "proto3";
+
+package envoy.extensions.filters.http.set_filter_state.v3;
+
+import "envoy/extensions/filters/common/set_filter_state/v3/value.proto";
+
+import "udpa/annotations/status.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.filters.http.set_filter_state.v3";
+option java_outer_classname = "SetFilterStateProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/set_filter_state/v3;set_filter_statev3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Set-Filter-State Filter]
+//
+// This filter sets or updates the dynamic filter state. See :ref:`the filter
+// documentation ` for more information on
+// how this filter should be used.
+//
+// [#extension: envoy.filters.http.set_filter_state]
+
+message Config {
+ // A sequence of the filter state values to apply in the specified order
+ // when a new request is received.
+ repeated common.set_filter_state.v3.FilterStateValue on_request_headers = 1;
+}
diff --git a/api/envoy/extensions/filters/http/set_metadata/v3/BUILD b/api/envoy/extensions/filters/http/set_metadata/v3/BUILD
index ee92fb652582..cd8fcbbc5e0d 100644
--- a/api/envoy/extensions/filters/http/set_metadata/v3/BUILD
+++ b/api/envoy/extensions/filters/http/set_metadata/v3/BUILD
@@ -5,5 +5,8 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = [
+ "//envoy/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ ],
)
diff --git a/api/envoy/extensions/filters/http/set_metadata/v3/set_metadata.proto b/api/envoy/extensions/filters/http/set_metadata/v3/set_metadata.proto
index a50a1d4fad95..e3dc67392752 100644
--- a/api/envoy/extensions/filters/http/set_metadata/v3/set_metadata.proto
+++ b/api/envoy/extensions/filters/http/set_metadata/v3/set_metadata.proto
@@ -2,8 +2,10 @@ syntax = "proto3";
package envoy.extensions.filters.http.set_metadata.v3;
+import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
+import "envoy/annotations/deprecation.proto";
import "udpa/annotations/status.proto";
import "validate/validate.proto";
@@ -19,13 +21,41 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
//
// [#extension: envoy.filters.http.set_metadata]
-message Config {
+message Metadata {
// The metadata namespace.
string metadata_namespace = 1 [(validate.rules).string = {min_len: 1}];
- // The value to update the namespace with. See
+ // Allow the filter to overwrite or merge with an existing value in the namespace.
+ bool allow_overwrite = 2;
+
+ // The value to place at the namespace. If ``allow_overwrite``, this will
+ // overwrite or merge with any existing values in that namespace. See
+ // :ref:`the filter documentation ` for
+ // more information on how this value is merged with potentially existing
+ // ones if ``allow_overwrite`` is configured. Only one of ``value`` and
+ // ``typed_value`` may be set.
+ google.protobuf.Struct value = 3;
+
+ // The value to place at the namespace. If ``allow_overwrite``, this will
+ // overwrite any existing values in that namespace. Only one of ``value`` and
+ // ``typed_value`` may be set.
+ google.protobuf.Any typed_value = 4;
+}
+
+message Config {
+ // The metadata namespace.
+ // This field is deprecated; please use ``metadata`` as replacement.
+ string metadata_namespace = 1
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
+
+ // The untyped value to update the dynamic metadata namespace with. See
// :ref:`the filter documentation ` for
// more information on how this value is merged with potentially existing
// ones.
- google.protobuf.Struct value = 2;
+ // This field is deprecated; please use ``metadata`` as replacement.
+ google.protobuf.Struct value = 2
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
+
+ // Defines changes to be made to dynamic metadata.
+ repeated Metadata metadata = 3;
}
diff --git a/api/envoy/extensions/filters/http/stateful_session/v3/BUILD b/api/envoy/extensions/filters/http/stateful_session/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/http/stateful_session/v3/BUILD
+++ b/api/envoy/extensions/filters/http/stateful_session/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/stateful_session/v3/stateful_session.proto b/api/envoy/extensions/filters/http/stateful_session/v3/stateful_session.proto
index e3c612edaacf..aa07083f81a4 100644
--- a/api/envoy/extensions/filters/http/stateful_session/v3/stateful_session.proto
+++ b/api/envoy/extensions/filters/http/stateful_session/v3/stateful_session.proto
@@ -23,6 +23,10 @@ message StatefulSession {
//
// [#extension-category: envoy.http.stateful_session]
config.core.v3.TypedExtensionConfig session_state = 1;
+
+ // If set to True, the HTTP request must be routed to the requested destination.
+ // If the requested destination is not available, Envoy returns 503. Defaults to False.
+ bool strict = 2;
}
message StatefulSessionPerRoute {
diff --git a/api/envoy/extensions/filters/http/tap/v3/BUILD b/api/envoy/extensions/filters/http/tap/v3/BUILD
index 6b2b1215048c..31d61dcfa206 100644
--- a/api/envoy/extensions/filters/http/tap/v3/BUILD
+++ b/api/envoy/extensions/filters/http/tap/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/common/tap/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/http/tap/v3/tap.proto b/api/envoy/extensions/filters/http/tap/v3/tap.proto
index b82735b2f13f..0ed35de97095 100644
--- a/api/envoy/extensions/filters/http/tap/v3/tap.proto
+++ b/api/envoy/extensions/filters/http/tap/v3/tap.proto
@@ -31,4 +31,7 @@ message Tap {
// Request headers time stamp is stored after receiving request headers.
// Response headers time stamp is stored after receiving response headers.
bool record_headers_received_time = 2;
+
+ // Indicates whether report downstream connection info
+ bool record_downstream_connection = 3;
}
diff --git a/api/envoy/extensions/filters/http/upstream_codec/v3/BUILD b/api/envoy/extensions/filters/http/upstream_codec/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/http/upstream_codec/v3/BUILD
+++ b/api/envoy/extensions/filters/http/upstream_codec/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/http/wasm/v3/BUILD b/api/envoy/extensions/filters/http/wasm/v3/BUILD
index c37174bdefc4..ed3c664aedd7 100644
--- a/api/envoy/extensions/filters/http/wasm/v3/BUILD
+++ b/api/envoy/extensions/filters/http/wasm/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/wasm/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/listener/http_inspector/v3/BUILD b/api/envoy/extensions/filters/listener/http_inspector/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/listener/http_inspector/v3/BUILD
+++ b/api/envoy/extensions/filters/listener/http_inspector/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/listener/local_ratelimit/v3/BUILD b/api/envoy/extensions/filters/listener/local_ratelimit/v3/BUILD
index ad2fc9a9a84f..eeae27ad54b4 100644
--- a/api/envoy/extensions/filters/listener/local_ratelimit/v3/BUILD
+++ b/api/envoy/extensions/filters/listener/local_ratelimit/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/listener/original_dst/v3/BUILD b/api/envoy/extensions/filters/listener/original_dst/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/listener/original_dst/v3/BUILD
+++ b/api/envoy/extensions/filters/listener/original_dst/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/listener/original_src/v3/BUILD b/api/envoy/extensions/filters/listener/original_src/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/listener/original_src/v3/BUILD
+++ b/api/envoy/extensions/filters/listener/original_src/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/listener/proxy_protocol/v3/BUILD b/api/envoy/extensions/filters/listener/proxy_protocol/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/listener/proxy_protocol/v3/BUILD
+++ b/api/envoy/extensions/filters/listener/proxy_protocol/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/listener/tls_inspector/v3/BUILD b/api/envoy/extensions/filters/listener/tls_inspector/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/listener/tls_inspector/v3/BUILD
+++ b/api/envoy/extensions/filters/listener/tls_inspector/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/network/connection_limit/v3/BUILD b/api/envoy/extensions/filters/network/connection_limit/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/network/connection_limit/v3/BUILD
+++ b/api/envoy/extensions/filters/network/connection_limit/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/direct_response/v3/BUILD b/api/envoy/extensions/filters/network/direct_response/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/filters/network/direct_response/v3/BUILD
+++ b/api/envoy/extensions/filters/network/direct_response/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/dubbo_proxy/router/v3/BUILD b/api/envoy/extensions/filters/network/dubbo_proxy/router/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/network/dubbo_proxy/router/v3/BUILD
+++ b/api/envoy/extensions/filters/network/dubbo_proxy/router/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/network/dubbo_proxy/v3/BUILD b/api/envoy/extensions/filters/network/dubbo_proxy/v3/BUILD
index c690bfe279cb..824cb7cd0ce5 100644
--- a/api/envoy/extensions/filters/network/dubbo_proxy/v3/BUILD
+++ b/api/envoy/extensions/filters/network/dubbo_proxy/v3/BUILD
@@ -11,6 +11,6 @@ api_proto_package(
"//envoy/config/route/v3:pkg",
"//envoy/type/matcher/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/echo/v3/BUILD b/api/envoy/extensions/filters/network/echo/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/network/echo/v3/BUILD
+++ b/api/envoy/extensions/filters/network/echo/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/network/ext_authz/v3/BUILD b/api/envoy/extensions/filters/network/ext_authz/v3/BUILD
index 3f3a5395d2aa..e3bfc4e175f4 100644
--- a/api/envoy/extensions/filters/network/ext_authz/v3/BUILD
+++ b/api/envoy/extensions/filters/network/ext_authz/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/http_connection_manager/v3/BUILD b/api/envoy/extensions/filters/network/http_connection_manager/v3/BUILD
index b1f4b3ba5b51..39bbb5c3d280 100644
--- a/api/envoy/extensions/filters/network/http_connection_manager/v3/BUILD
+++ b/api/envoy/extensions/filters/network/http_connection_manager/v3/BUILD
@@ -14,6 +14,6 @@ api_proto_package(
"//envoy/type/http/v3:pkg",
"//envoy/type/tracing/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto b/api/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto
index f86be41f0493..7a92259eb43b 100644
--- a/api/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto
+++ b/api/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto
@@ -130,7 +130,7 @@ message HttpConnectionManager {
UNESCAPE_AND_FORWARD = 4;
}
- // [#next-free-field: 10]
+ // [#next-free-field: 11]
message Tracing {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager.Tracing";
@@ -195,6 +195,27 @@ message HttpConnectionManager {
// Such a constraint is inherent to OpenCensus itself. It cannot be overcome without changes
// on OpenCensus side.
config.trace.v3.Tracing.Http provider = 9;
+
+ // Create separate tracing span for each upstream request if true. And if this flag is set to true,
+ // the tracing provider will assume that Envoy will be independent hop in the trace chain and may
+ // set span type to client or server based on this flag.
+ // This will deprecate the
+ // :ref:`start_child_span `
+ // in the router.
+ //
+ // Users should set appropriate value based on their tracing provider and actual scenario:
+ //
+ // * If Envoy is used as sidecar and users want to make the sidecar and its application as only one
+ // hop in the trace chain, this flag should be set to false. And please also make sure the
+ // :ref:`start_child_span `
+ // in the router is not set to true.
+ // * If Envoy is used as gateway or independent proxy, or users want to make the sidecar and its
+ // application as different hops in the trace chain, this flag should be set to true.
+ // * If tracing provider that has explicit requirements on span creation (like SkyWalking),
+ // this flag should be set to true.
+ //
+ // The default value is false for now for backward compatibility.
+ google.protobuf.BoolValue spawn_upstream_span = 10;
}
message InternalAddressConfig {
@@ -361,7 +382,7 @@ message HttpConnectionManager {
// on stream close, when the HTTP request is complete. If this field is set, the HCM will flush access
// logs periodically at the specified interval. This is especially useful in the case of long-lived
// requests, such as CONNECT and Websockets. Final access logs can be detected via the
- // `requestComplete()` method of `StreamInfo` in access log filters, or thru the `%DURATION%` substitution
+ // ``requestComplete()`` method of ``StreamInfo`` in access log filters, or through the ``%DURATION%`` substitution
// string.
// The interval must be at least 1 millisecond.
google.protobuf.Duration access_log_flush_interval = 1
@@ -862,12 +883,12 @@ message HttpConnectionManager {
// [#extension-category: envoy.http.header_validators]
config.core.v3.TypedExtensionConfig typed_header_validation_config = 50;
- // Append the `x-forwarded-port` header with the port value client used to connect to Envoy. It
- // will be ignored if the `x-forwarded-port` header has been set by any trusted proxy in front of Envoy.
+ // Append the ``x-forwarded-port`` header with the port value client used to connect to Envoy. It
+ // will be ignored if the ``x-forwarded-port`` header has been set by any trusted proxy in front of Envoy.
bool append_x_forwarded_port = 51;
- // Whether the HCM will add ProxyProtocolFilterState to the Connection lifetime filter state. Defaults to `true`.
- // This should be set to `false` in cases where Envoy's view of the downstream address may not correspond to the
+ // Whether the HCM will add ProxyProtocolFilterState to the Connection lifetime filter state. Defaults to ``true``.
+ // This should be set to ``false`` in cases where Envoy's view of the downstream address may not correspond to the
// actual client address, for example, if there's another proxy in front of the Envoy.
google.protobuf.BoolValue add_proxy_protocol_connection_state = 53;
}
@@ -1033,7 +1054,9 @@ message ScopedRoutes {
// .. note::
//
// If the header appears multiple times only the first value is used.
- string name = 1 [(validate.rules).string = {min_len: 1}];
+ string name = 1 [
+ (validate.rules).string = {min_len: 1 well_known_regex: HTTP_HEADER_NAME strict: false}
+ ];
// The element separator (e.g., ';' separates 'a;b;c;d').
// Default: empty string. This causes the entirety of the header field to be extracted.
@@ -1109,7 +1132,7 @@ message ScopedRds {
string srds_resources_locator = 2;
}
-// [#next-free-field: 7]
+// [#next-free-field: 8]
message HttpFilter {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.http_connection_manager.v2.HttpFilter";
@@ -1146,6 +1169,14 @@ message HttpFilter {
// filter but otherwise accept the config.
// Otherwise, clients that do not support this filter must reject the config.
bool is_optional = 6;
+
+ // If true, the filter is disabled by default and must be explicitly enabled by setting
+ // per filter configuration in the route configuration.
+ // See :ref:`route based filter chain `
+ // for more details.
+ //
+ // Terminal filters (e.g. ``envoy.filters.http.router``) cannot be marked as disabled.
+ bool disabled = 7;
}
message RequestIDExtension {
diff --git a/api/envoy/extensions/filters/network/local_ratelimit/v3/BUILD b/api/envoy/extensions/filters/network/local_ratelimit/v3/BUILD
index ad2fc9a9a84f..eeae27ad54b4 100644
--- a/api/envoy/extensions/filters/network/local_ratelimit/v3/BUILD
+++ b/api/envoy/extensions/filters/network/local_ratelimit/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/mongo_proxy/v3/BUILD b/api/envoy/extensions/filters/network/mongo_proxy/v3/BUILD
index d399b876a7f4..01b06eb3efe9 100644
--- a/api/envoy/extensions/filters/network/mongo_proxy/v3/BUILD
+++ b/api/envoy/extensions/filters/network/mongo_proxy/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/filters/common/fault/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/ratelimit/v3/BUILD b/api/envoy/extensions/filters/network/ratelimit/v3/BUILD
index 9276f5ab3d2d..6bc991f8e8c8 100644
--- a/api/envoy/extensions/filters/network/ratelimit/v3/BUILD
+++ b/api/envoy/extensions/filters/network/ratelimit/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/ratelimit/v3:pkg",
"//envoy/extensions/common/ratelimit/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/rbac/v3/BUILD b/api/envoy/extensions/filters/network/rbac/v3/BUILD
index 49cb2ccac4f7..f4f91ded2a89 100644
--- a/api/envoy/extensions/filters/network/rbac/v3/BUILD
+++ b/api/envoy/extensions/filters/network/rbac/v3/BUILD
@@ -7,8 +7,8 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/rbac/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/redis_proxy/v3/BUILD b/api/envoy/extensions/filters/network/redis_proxy/v3/BUILD
index 3a6953663d6c..f4f1453d8809 100644
--- a/api/envoy/extensions/filters/network/redis_proxy/v3/BUILD
+++ b/api/envoy/extensions/filters/network/redis_proxy/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/extensions/common/dynamic_forward_proxy/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/redis_proxy/v3/redis_proxy.proto b/api/envoy/extensions/filters/network/redis_proxy/v3/redis_proxy.proto
index fba1c786f7c3..28e351fb0412 100644
--- a/api/envoy/extensions/filters/network/redis_proxy/v3/redis_proxy.proto
+++ b/api/envoy/extensions/filters/network/redis_proxy/v3/redis_proxy.proto
@@ -138,7 +138,7 @@ message RedisProxy {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.redis_proxy.v2.RedisProxy.PrefixRoutes";
- // [#next-free-field: 6]
+ // [#next-free-field: 7]
message Route {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.redis_proxy.v2.RedisProxy.PrefixRoutes.Route";
@@ -168,6 +168,11 @@ message RedisProxy {
bool exclude_read_commands = 3;
}
+ // ReadCommandPolicy specifies that Envoy should route read commands to another cluster.
+ message ReadCommandPolicy {
+ string cluster = 1 [(validate.rules).string = {min_len: 1}];
+ }
+
// String prefix that must match the beginning of the keys. Envoy will always favor the
// longest match.
string prefix = 1 [(validate.rules).string = {max_bytes: 1000}];
@@ -184,6 +189,9 @@ message RedisProxy {
// Indicates how redis key should be formatted. To substitute redis key into the formatting
// expression, use %KEY% as a string replacement command.
string key_formatter = 5;
+
+ // Indicates that the route has a read command policy
+ ReadCommandPolicy read_command_policy = 6;
}
reserved 3;
diff --git a/api/envoy/extensions/filters/network/set_filter_state/v3/BUILD b/api/envoy/extensions/filters/network/set_filter_state/v3/BUILD
new file mode 100644
index 000000000000..7d18ef132da3
--- /dev/null
+++ b/api/envoy/extensions/filters/network/set_filter_state/v3/BUILD
@@ -0,0 +1,12 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/extensions/filters/common/set_filter_state/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/filters/network/set_filter_state/v3/set_filter_state.proto b/api/envoy/extensions/filters/network/set_filter_state/v3/set_filter_state.proto
new file mode 100644
index 000000000000..084f516e72fe
--- /dev/null
+++ b/api/envoy/extensions/filters/network/set_filter_state/v3/set_filter_state.proto
@@ -0,0 +1,27 @@
+syntax = "proto3";
+
+package envoy.extensions.filters.network.set_filter_state.v3;
+
+import "envoy/extensions/filters/common/set_filter_state/v3/value.proto";
+
+import "udpa/annotations/status.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.filters.network.set_filter_state.v3";
+option java_outer_classname = "SetFilterStateProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/network/set_filter_state/v3;set_filter_statev3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Set-Filter-State Filter]
+//
+// This filter sets or updates the dynamic filter state. See :ref:`the filter
+// documentation ` for more
+// information on how this filter should be used.
+//
+// [#extension: envoy.filters.network.set_filter_state]
+
+message Config {
+ // A sequence of the filter state values to apply in the specified order
+ // when a new connection is received.
+ repeated common.set_filter_state.v3.FilterStateValue on_new_connection = 1;
+}
diff --git a/api/envoy/extensions/filters/network/sni_cluster/v3/BUILD b/api/envoy/extensions/filters/network/sni_cluster/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/network/sni_cluster/v3/BUILD
+++ b/api/envoy/extensions/filters/network/sni_cluster/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3/BUILD b/api/envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3/BUILD
index 05f25a2fe5d9..73e98d4d40b2 100644
--- a/api/envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3/BUILD
+++ b/api/envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/common/dynamic_forward_proxy/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/tcp_proxy/v3/BUILD b/api/envoy/extensions/filters/network/tcp_proxy/v3/BUILD
index 495e9c79112c..c9c87b7395d5 100644
--- a/api/envoy/extensions/filters/network/tcp_proxy/v3/BUILD
+++ b/api/envoy/extensions/filters/network/tcp_proxy/v3/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/config/accesslog/v3:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/thrift_proxy/filters/header_to_metadata/v3/BUILD b/api/envoy/extensions/filters/network/thrift_proxy/filters/header_to_metadata/v3/BUILD
index 693f0b92ff34..bfc486330911 100644
--- a/api/envoy/extensions/filters/network/thrift_proxy/filters/header_to_metadata/v3/BUILD
+++ b/api/envoy/extensions/filters/network/thrift_proxy/filters/header_to_metadata/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/thrift_proxy/filters/payload_to_metadata/v3/BUILD b/api/envoy/extensions/filters/network/thrift_proxy/filters/payload_to_metadata/v3/BUILD
index 693f0b92ff34..bfc486330911 100644
--- a/api/envoy/extensions/filters/network/thrift_proxy/filters/payload_to_metadata/v3/BUILD
+++ b/api/envoy/extensions/filters/network/thrift_proxy/filters/payload_to_metadata/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/thrift_proxy/filters/ratelimit/v3/BUILD b/api/envoy/extensions/filters/network/thrift_proxy/filters/ratelimit/v3/BUILD
index 0bad14913d21..928d9a6b885a 100644
--- a/api/envoy/extensions/filters/network/thrift_proxy/filters/ratelimit/v3/BUILD
+++ b/api/envoy/extensions/filters/network/thrift_proxy/filters/ratelimit/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/ratelimit/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/thrift_proxy/router/v3/BUILD b/api/envoy/extensions/filters/network/thrift_proxy/router/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/network/thrift_proxy/router/v3/BUILD
+++ b/api/envoy/extensions/filters/network/thrift_proxy/router/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/network/thrift_proxy/v3/BUILD b/api/envoy/extensions/filters/network/thrift_proxy/v3/BUILD
index eee482f0a8fd..8cc8bfccf7bd 100644
--- a/api/envoy/extensions/filters/network/thrift_proxy/v3/BUILD
+++ b/api/envoy/extensions/filters/network/thrift_proxy/v3/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/config/accesslog/v3:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/config/route/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/wasm/v3/BUILD b/api/envoy/extensions/filters/network/wasm/v3/BUILD
index c37174bdefc4..ed3c664aedd7 100644
--- a/api/envoy/extensions/filters/network/wasm/v3/BUILD
+++ b/api/envoy/extensions/filters/network/wasm/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/wasm/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/network/zookeeper_proxy/v3/BUILD b/api/envoy/extensions/filters/network/zookeeper_proxy/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/filters/network/zookeeper_proxy/v3/BUILD
+++ b/api/envoy/extensions/filters/network/zookeeper_proxy/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/filters/network/zookeeper_proxy/v3/zookeeper_proxy.proto b/api/envoy/extensions/filters/network/zookeeper_proxy/v3/zookeeper_proxy.proto
index 9fdcaaf9db2f..a3825f10c9ff 100644
--- a/api/envoy/extensions/filters/network/zookeeper_proxy/v3/zookeeper_proxy.proto
+++ b/api/envoy/extensions/filters/network/zookeeper_proxy/v3/zookeeper_proxy.proto
@@ -19,7 +19,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// ZooKeeper Proxy :ref:`configuration overview `.
// [#extension: envoy.filters.network.zookeeper_proxy]
-// [#next-free-field: 7]
+// [#next-free-field: 10]
message ZooKeeperProxy {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.network.zookeeper_proxy.v1alpha1.ZooKeeperProxy";
@@ -42,8 +42,8 @@ message ZooKeeperProxy {
// if that is set. If it isn't, ZooKeeper's default is also 1Mb.
google.protobuf.UInt32Value max_packet_bytes = 3;
- // Whether to emit latency threshold metrics. If not set, defaults to false.
- // If false, setting `default_latency_threshold` and `latency_threshold_overrides` will not have effect.
+ // Whether to emit latency threshold metrics. If not set, it defaults to false.
+ // If false, setting ``default_latency_threshold`` and ``latency_threshold_overrides`` will not have effect.
bool enable_latency_threshold_metrics = 4;
// The default latency threshold to decide the fast/slow responses and emit metrics (used for error budget calculation).
@@ -59,6 +59,15 @@ message ZooKeeperProxy {
// threshold.
// Specifying latency threshold overrides multiple times for one opcode is not allowed.
repeated LatencyThresholdOverride latency_threshold_overrides = 6;
+
+ // Whether to emit per opcode request bytes metrics. If not set, it defaults to false.
+ bool enable_per_opcode_request_bytes_metrics = 7;
+
+ // Whether to emit per opcode response bytes metrics. If not set, it defaults to false.
+ bool enable_per_opcode_response_bytes_metrics = 8;
+
+ // [#not-implemented-hide:] Whether to emit per opcode decoder error metrics. If not set, it defaults to false.
+ bool enable_per_opcode_decoder_error_metrics = 9;
}
message LatencyThresholdOverride {
diff --git a/api/envoy/extensions/filters/udp/dns_filter/v3/BUILD b/api/envoy/extensions/filters/udp/dns_filter/v3/BUILD
index 1f8dbc5af561..c95410c79d19 100644
--- a/api/envoy/extensions/filters/udp/dns_filter/v3/BUILD
+++ b/api/envoy/extensions/filters/udp/dns_filter/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/data/dns/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3/BUILD b/api/envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3/BUILD
new file mode 100644
index 000000000000..73e98d4d40b2
--- /dev/null
+++ b/api/envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3/BUILD
@@ -0,0 +1,12 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/extensions/common/dynamic_forward_proxy/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3/dynamic_forward_proxy.proto b/api/envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3/dynamic_forward_proxy.proto
new file mode 100644
index 000000000000..a264f4e3c56f
--- /dev/null
+++ b/api/envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3/dynamic_forward_proxy.proto
@@ -0,0 +1,56 @@
+syntax = "proto3";
+
+package envoy.extensions.filters.udp.udp_proxy.session.dynamic_forward_proxy.v3;
+
+import "envoy/extensions/common/dynamic_forward_proxy/v3/dns_cache.proto";
+
+import "google/protobuf/wrappers.proto";
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.filters.udp.udp_proxy.session.dynamic_forward_proxy.v3";
+option java_outer_classname = "DynamicForwardProxyProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3;dynamic_forward_proxyv3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Filter state dynamic forward proxy]
+
+// Configuration for the filter state based dynamic forward proxy filter. See the
+// :ref:`architecture overview ` for
+// more information. Note this filter must be used in conjunction to another filter that
+// sets the 'envoy.upstream.dynamic_host' and the 'envoy.upstream.dynamic_port' filter
+// state keys for the required upstream UDP session.
+// [#extension: envoy.filters.udp.session.dynamic_forward_proxy]
+message FilterConfig {
+ // Configuration for UDP datagrams buffering.
+ message BufferOptions {
+ // If set, the filter will only buffer datagrams up to the requested limit, and will drop
+ // new UDP datagrams if the buffer contains the max_buffered_datagrams value at the time
+ // of a new datagram arrival. If not set, the default value is 1024 datagrams.
+ google.protobuf.UInt32Value max_buffered_datagrams = 1;
+
+ // If set, the filter will only buffer datagrams up to the requested total buffered bytes limit,
+ // and will drop new UDP datagrams if the buffer contains the max_buffered_datagrams value
+ // at the time of a new datagram arrival. If not set, the default value is 16,384 (16KB).
+ google.protobuf.UInt64Value max_buffered_bytes = 2;
+ }
+
+ // The prefix to use when emitting :ref:`statistics `.
+ string stat_prefix = 1 [(validate.rules).string = {min_len: 1}];
+
+ oneof implementation_specifier {
+ // The DNS cache configuration that the filter will attach to. Note this
+ // configuration must match that of associated :ref:`dynamic forward proxy cluster configuration
+ // `.
+ common.dynamic_forward_proxy.v3.DnsCacheConfig dns_cache_config = 2
+ [(validate.rules).message = {required: true}];
+ }
+
+ // If configured, the filter will buffer datagrams in case that it is waiting for a DNS response.
+ // If this field is not configured, there will be no buffering and downstream datagrams that arrive
+ // while the DNS resolution is in progress will be dropped. In case this field is set but the options
+ // are not configured, the default values will be applied as described in the ``BufferOptions``.
+ BufferOptions buffer_options = 3;
+}
diff --git a/api/envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3/BUILD b/api/envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3/BUILD
new file mode 100644
index 000000000000..29ebf0741406
--- /dev/null
+++ b/api/envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3/BUILD
@@ -0,0 +1,9 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
+)
diff --git a/api/envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3/http_capsule.proto b/api/envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3/http_capsule.proto
new file mode 100644
index 000000000000..e3455462b67f
--- /dev/null
+++ b/api/envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3/http_capsule.proto
@@ -0,0 +1,18 @@
+syntax = "proto3";
+
+package envoy.extensions.filters.udp.udp_proxy.session.http_capsule.v3;
+
+import "udpa/annotations/status.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.filters.udp.udp_proxy.session.http_capsule.v3";
+option java_outer_classname = "HttpCapsuleProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3;http_capsulev3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: UDP HTTP Capsule filter]
+// UDP to HTTP capsules :ref:`overview `.
+// [#extension: envoy.filters.udp.session.http_capsule]
+
+message FilterConfig {
+}
diff --git a/api/envoy/extensions/filters/udp/udp_proxy/v3/BUILD b/api/envoy/extensions/filters/udp/udp_proxy/v3/BUILD
index 375c78d299a2..501298f89985 100644
--- a/api/envoy/extensions/filters/udp/udp_proxy/v3/BUILD
+++ b/api/envoy/extensions/filters/udp/udp_proxy/v3/BUILD
@@ -9,8 +9,8 @@ api_proto_package(
"//envoy/annotations:pkg",
"//envoy/config/accesslog/v3:pkg",
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
- "@com_github_cncf_udpa//xds/type/matcher/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
],
)
diff --git a/api/envoy/extensions/filters/udp/udp_proxy/v3/udp_proxy.proto b/api/envoy/extensions/filters/udp/udp_proxy/v3/udp_proxy.proto
index 25560b5c8c08..1d07668acb77 100644
--- a/api/envoy/extensions/filters/udp/udp_proxy/v3/udp_proxy.proto
+++ b/api/envoy/extensions/filters/udp/udp_proxy/v3/udp_proxy.proto
@@ -3,10 +3,12 @@ syntax = "proto3";
package envoy.extensions.filters.udp.udp_proxy.v3;
import "envoy/config/accesslog/v3/accesslog.proto";
+import "envoy/config/core/v3/base.proto";
import "envoy/config/core/v3/udp_socket_config.proto";
import "google/protobuf/any.proto";
import "google/protobuf/duration.proto";
+import "google/protobuf/wrappers.proto";
import "xds/annotations/v3/status.proto";
import "xds/type/matcher/v3/matcher.proto";
@@ -27,7 +29,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#extension: envoy.filters.udp_listener.udp_proxy]
// Configuration for the UDP proxy filter.
-// [#next-free-field: 12]
+// [#next-free-field: 14]
message UdpProxyConfig {
option (udpa.annotations.versioning).previous_message_type =
"envoy.config.filter.udp.udp_proxy.v2alpha.UdpProxyConfig";
@@ -62,6 +64,126 @@ message UdpProxyConfig {
}
}
+ // Configuration for tunneling UDP over other transports or application layers.
+ // Tunneling is currently supported over HTTP/2.
+ // [#next-free-field: 12]
+ message UdpTunnelingConfig {
+ // Configuration for UDP datagrams buffering.
+ message BufferOptions {
+ // If set, the filter will only buffer datagrams up to the requested limit, and will drop
+ // new UDP datagrams if the buffer contains the max_buffered_datagrams value at the time
+ // of a new datagram arrival. If not set, the default value is 1024 datagrams.
+ google.protobuf.UInt32Value max_buffered_datagrams = 1;
+
+ // If set, the filter will only buffer datagrams up to the requested total buffered bytes limit,
+ // and will drop new UDP datagrams if the buffer contains the max_buffered_datagrams value
+ // at the time of a new datagram arrival. If not set, the default value is 16,384 (16KB).
+ google.protobuf.UInt64Value max_buffered_bytes = 2;
+ }
+
+ message RetryOptions {
+ // The maximum number of unsuccessful connection attempts that will be made before giving up.
+ // If the parameter is not specified, 1 connection attempt will be made.
+ google.protobuf.UInt32Value max_connect_attempts = 1;
+ }
+
+ // The hostname to send in the synthesized CONNECT headers to the upstream proxy.
+ // This field evaluates command operators if set, otherwise returns hostname as is.
+ //
+ // Example: dynamically set hostname using filter state
+ //
+ // .. code-block:: yaml
+ //
+ // tunneling_config:
+ // proxy_host: "%FILTER_STATE(proxy.host.key:PLAIN)%"
+ //
+ string proxy_host = 1 [(validate.rules).string = {min_len: 1}];
+
+ // Optional port value to add to the HTTP request URI.
+ // This value can be overridden per-session by setting the required port value for
+ // the filter state key ``udp.connect.proxy_port``.
+ google.protobuf.UInt32Value proxy_port = 2;
+
+ // The target host to send in the synthesized CONNECT headers to the upstream proxy.
+ // This field evaluates command operators if set, otherwise returns hostname as is.
+ //
+ // Example: dynamically set target host using filter state
+ //
+ // .. code-block:: yaml
+ //
+ // tunneling_config:
+ // target_host: "%FILTER_STATE(target.host.key:PLAIN)%"
+ //
+ string target_host = 3 [(validate.rules).string = {min_len: 1}];
+
+ // The default target port to send in the CONNECT headers to the upstream proxy.
+ // This value can be overridden per-session by setting the required port value for
+ // the filter state key ``udp.connect.target_port``.
+ uint32 default_target_port = 4 [(validate.rules).uint32 = {lte: 65535 gt: 0}];
+
+ // Use POST method instead of CONNECT method to tunnel the UDP stream.
+ //
+ // .. note::
+ // If use_post is set, the upstream stream does not comply with the connect-udp RFC, and
+ // instead it will be a POST request. the path used in the headers will be set from the
+ // post_path field, and the headers will not contain the target host and target port, as
+ // required by the connect-udp protocol. This flag should be used carefully.
+ //
+ bool use_post = 5;
+
+ // The path used with POST method. Default path is ``/``. If post path is specified and
+ // use_post field isn't true, it will be rejected.
+ string post_path = 6;
+
+ // Optional retry options, in case connecting to the upstream failed.
+ RetryOptions retry_options = 7;
+
+ // Additional request headers to upstream proxy. Neither ``:-prefixed`` pseudo-headers
+ // nor the Host: header can be overridden. Values of the added headers evaluates command
+ // operators if they are set in the value template.
+ //
+ // Example: dynamically set a header with the local port
+ //
+ // .. code-block:: yaml
+ //
+ // headers_to_add:
+ // - header:
+ // key: original_dst_port
+ // value: "%DOWNSTREAM_LOCAL_PORT%"
+ //
+ repeated config.core.v3.HeaderValueOption headers_to_add = 8
+ [(validate.rules).repeated = {max_items: 1000}];
+
+ // If configured, the filter will buffer datagrams in case that it is waiting for the upstream to be
+ // ready, whether if it is during the connection process or due to upstream buffer watermarks.
+ // If this field is not configured, there will be no buffering and downstream datagrams that arrive
+ // while the upstream is not ready will be dropped. In case this field is set but the options
+ // are not configured, the default values will be applied as described in the ``BufferOptions``.
+ BufferOptions buffer_options = 9;
+
+ // Save the response headers to the downstream info filter state for consumption
+ // by the session filters. The filter state key is ``envoy.udp_proxy.propagate_response_headers``.
+ bool propagate_response_headers = 10;
+
+ // Save the response trailers to the downstream info filter state for consumption
+ // by the session filters. The filter state key is ``envoy.udp_proxy.propagate_response_trailers``.
+ bool propagate_response_trailers = 11;
+ }
+
+ message UdpAccessLogOptions {
+ // The interval to flush access log. The UDP proxy will flush only one access log when the session
+ // is ended by default. If this field is set, the UDP proxy will flush access log periodically with
+ // the specified interval.
+ // This field does not require on-tunnel-connected access logging enabled, and the other way around.
+ // The interval must be at least 1ms.
+ google.protobuf.Duration access_log_flush_interval = 1
+ [(validate.rules).duration = {gte {nanos: 1000000}}];
+
+ // If set to true and UDP tunneling is configured, access log will be flushed when the UDP proxy has successfully
+ // established a connection tunnel with the upstream. If the connection failed, the access log will not be flushed.
+ bool flush_access_log_on_tunnel_connected = 2;
+ }
+
// The stat prefix used when emitting UDP proxy filter stats.
string stat_prefix = 1 [(validate.rules).string = {min_len: 1}];
@@ -127,5 +249,13 @@ message UdpProxyConfig {
// Optional session filters that will run for each UDP session.
// Only one of use_per_packet_load_balancing or session_filters can be used.
+ // [#extension-category: envoy.filters.udp.session]
repeated SessionFilter session_filters = 11;
+
+ // If set, this configures UDP tunneling. See `Proxying UDP in HTTP `_.
+ // More information can be found in the UDP Proxy and HTTP upgrade documentation.
+ UdpTunnelingConfig tunneling_config = 12;
+
+ // Additional access log options for UDP Proxy.
+ UdpAccessLogOptions access_log_options = 13;
}
diff --git a/api/envoy/extensions/formatter/cel/v3/BUILD b/api/envoy/extensions/formatter/cel/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/formatter/cel/v3/BUILD
+++ b/api/envoy/extensions/formatter/cel/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/formatter/cel/v3/cel.proto b/api/envoy/extensions/formatter/cel/v3/cel.proto
index ca9d01dedb4d..4e19fa5db954 100644
--- a/api/envoy/extensions/formatter/cel/v3/cel.proto
+++ b/api/envoy/extensions/formatter/cel/v3/cel.proto
@@ -24,10 +24,11 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// truncation up to Z characters long.
//
// Examples:
-// - ``%CEL(response.code)%``
-// - ``%CEL(connection.mtls)%``
-// - ``%CEL(request.headers['x-envoy-original-path']):10%``
-// - ``%CEL(request.headers['x-log-mtls'] || request.url_path.contains('v1beta3'))%``
+//
+// * ``%CEL(response.code)%``
+// * ``%CEL(connection.mtls)%``
+// * ``%CEL(request.headers['x-envoy-original-path']):10%``
+// * ``%CEL(request.headers['x-log-mtls'] || request.url_path.contains('v1beta3'))%``
// Configuration for the CEL formatter.
message Cel {
diff --git a/api/envoy/extensions/formatter/metadata/v3/BUILD b/api/envoy/extensions/formatter/metadata/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/formatter/metadata/v3/BUILD
+++ b/api/envoy/extensions/formatter/metadata/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/formatter/metadata/v3/metadata.proto b/api/envoy/extensions/formatter/metadata/v3/metadata.proto
index 90f6094b3c27..bf79f76741b5 100644
--- a/api/envoy/extensions/formatter/metadata/v3/metadata.proto
+++ b/api/envoy/extensions/formatter/metadata/v3/metadata.proto
@@ -21,6 +21,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// * CLUSTER
// * ROUTE
// * UPSTREAM_HOST
+// * LISTENER
//
// See :ref:`here ` for more information on access log configuration.
diff --git a/api/envoy/extensions/formatter/req_without_query/v3/BUILD b/api/envoy/extensions/formatter/req_without_query/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/formatter/req_without_query/v3/BUILD
+++ b/api/envoy/extensions/formatter/req_without_query/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/geoip_providers/common/v3/BUILD b/api/envoy/extensions/geoip_providers/common/v3/BUILD
new file mode 100644
index 000000000000..29ebf0741406
--- /dev/null
+++ b/api/envoy/extensions/geoip_providers/common/v3/BUILD
@@ -0,0 +1,9 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
+)
diff --git a/api/envoy/extensions/geoip_providers/common/v3/common.proto b/api/envoy/extensions/geoip_providers/common/v3/common.proto
new file mode 100644
index 000000000000..91a9126cfef8
--- /dev/null
+++ b/api/envoy/extensions/geoip_providers/common/v3/common.proto
@@ -0,0 +1,68 @@
+syntax = "proto3";
+
+package envoy.extensions.geoip_providers.common.v3;
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.geoip_providers.common.v3";
+option java_outer_classname = "CommonProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/geoip_providers/common/v3;commonv3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Common Geolocation Provider Configuration]
+// Common geolocation provider :ref:`configuration overview `.
+// Common configuration shared across geolocation providers.
+
+message CommonGeoipProviderConfig {
+ // The set of geolocation headers to add to request. If any of the configured headers is present
+ // in the incoming request, it will be overridden by the :ref:`Geoip filter `.
+ // [#next-free-field: 10]
+ message GeolocationHeadersToAdd {
+ // If set, the header will be used to populate the country ISO code associated with the IP address.
+ string country = 1
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+
+ // If set, the header will be used to populate the city associated with the IP address.
+ string city = 2
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+
+ // If set, the header will be used to populate the region ISO code associated with the IP address.
+ // The least specific subdivision will be selected as region value.
+ string region = 3
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+
+ // If set, the header will be used to populate the ASN associated with the IP address.
+ string asn = 4
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+
+ // If set, the IP address will be checked if it belongs to any type of anonymization network (e.g. VPN, public proxy etc)
+ // and header will be populated with the check result. Header value will be set to either "true" or "false" depending on the check result.
+ string is_anon = 5
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+
+ // If set, the IP address will be checked if it belongs to a VPN and header will be populated with the check result.
+ // Header value will be set to either "true" or "false" depending on the check result.
+ string anon_vpn = 6
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+
+ // If set, the IP address will be checked if it belongs to a hosting provider and header will be populated with the check result.
+ // Header value will be set to either "true" or "false" depending on the check result.
+ string anon_hosting = 7
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+
+ // If set, the IP address will be checked if it belongs to a TOR exit node and header will be populated with the check result.
+ // Header value will be set to either "true" or "false" depending on the check result.
+ string anon_tor = 8
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+
+ // If set, the IP address will be checked if it belongs to a public proxy and header will be populated with the check result.
+ // Header value will be set to either "true" or "false" depending on the check result.
+ string anon_proxy = 9
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+ }
+
+ // Configuration for geolocation headers to add to request.
+ GeolocationHeadersToAdd geo_headers_to_add = 1 [(validate.rules).message = {required: true}];
+}
diff --git a/api/envoy/extensions/geoip_providers/maxmind/v3/BUILD b/api/envoy/extensions/geoip_providers/maxmind/v3/BUILD
new file mode 100644
index 000000000000..06e26d5c8079
--- /dev/null
+++ b/api/envoy/extensions/geoip_providers/maxmind/v3/BUILD
@@ -0,0 +1,13 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/extensions/geoip_providers/common/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/geoip_providers/maxmind/v3/maxmind.proto b/api/envoy/extensions/geoip_providers/maxmind/v3/maxmind.proto
new file mode 100644
index 000000000000..3fc7f7c16082
--- /dev/null
+++ b/api/envoy/extensions/geoip_providers/maxmind/v3/maxmind.proto
@@ -0,0 +1,42 @@
+syntax = "proto3";
+
+package envoy.extensions.geoip_providers.maxmind.v3;
+
+import "envoy/extensions/geoip_providers/common/v3/common.proto";
+
+import "xds/annotations/v3/status.proto";
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.geoip_providers.maxmind.v3";
+option java_outer_classname = "MaxmindProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/geoip_providers/maxmind/v3;maxmindv3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+option (xds.annotations.v3.file_status).work_in_progress = true;
+
+// [#protodoc-title: MaxMind Geolocation Provider]
+// MaxMind geolocation provider :ref:`configuration overview `.
+// At least one geolocation database path :ref:`city_db_path `,
+// :ref:`isp_db_path ` or
+// :ref:`anon_db_path ` must be configured.
+// [#extension: envoy.geoip_providers.maxmind]
+
+message MaxMindConfig {
+ // Full file path to the Maxmind city database, e.g. /etc/GeoLite2-City.mmdb.
+ // Database file is expected to have .mmdb extension.
+ string city_db_path = 1 [(validate.rules).string = {pattern: "^$|^.*\\.mmdb$"}];
+
+ // Full file path to the Maxmind ASN database, e.g. /etc/GeoLite2-ASN.mmdb.
+ // Database file is expected to have .mmdb extension.
+ string isp_db_path = 2 [(validate.rules).string = {pattern: "^$|^.*\\.mmdb$"}];
+
+ // Full file path to the Maxmind anonymous IP database, e.g. /etc/GeoIP2-Anonymous-IP.mmdb.
+ // Database file is expected to have .mmdb extension.
+ string anon_db_path = 3 [(validate.rules).string = {pattern: "^$|^.*\\.mmdb$"}];
+
+ // Common provider configuration that specifies which geolocation headers will be populated with geolocation data.
+ common.v3.CommonGeoipProviderConfig common_provider_config = 4
+ [(validate.rules).message = {required: true}];
+}
diff --git a/api/envoy/extensions/health_check/event_sinks/file/v3/BUILD b/api/envoy/extensions/health_check/event_sinks/file/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/health_check/event_sinks/file/v3/BUILD
+++ b/api/envoy/extensions/health_check/event_sinks/file/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/health_checkers/redis/v3/BUILD b/api/envoy/extensions/health_checkers/redis/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/health_checkers/redis/v3/BUILD
+++ b/api/envoy/extensions/health_checkers/redis/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/health_checkers/thrift/v3/BUILD b/api/envoy/extensions/health_checkers/thrift/v3/BUILD
index 8e325386105a..993cf11f30e9 100644
--- a/api/envoy/extensions/health_checkers/thrift/v3/BUILD
+++ b/api/envoy/extensions/health_checkers/thrift/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/filters/network/thrift_proxy/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/http/cache/file_system_http_cache/v3/BUILD b/api/envoy/extensions/http/cache/file_system_http_cache/v3/BUILD
index 26baeccd9941..5b108dcfee6c 100644
--- a/api/envoy/extensions/http/cache/file_system_http_cache/v3/BUILD
+++ b/api/envoy/extensions/http/cache/file_system_http_cache/v3/BUILD
@@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/common/async_files/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/http/cache/simple_http_cache/v3/BUILD b/api/envoy/extensions/http/cache/simple_http_cache/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/http/cache/simple_http_cache/v3/BUILD
+++ b/api/envoy/extensions/http/cache/simple_http_cache/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/http/custom_response/local_response_policy/v3/BUILD b/api/envoy/extensions/http/custom_response/local_response_policy/v3/BUILD
index e9b556d681cf..628f71321fba 100644
--- a/api/envoy/extensions/http/custom_response/local_response_policy/v3/BUILD
+++ b/api/envoy/extensions/http/custom_response/local_response_policy/v3/BUILD
@@ -7,7 +7,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/http/custom_response/local_response_policy/v3/local_response_policy.proto b/api/envoy/extensions/http/custom_response/local_response_policy/v3/local_response_policy.proto
index deb13b0b0221..b40800c01ae5 100644
--- a/api/envoy/extensions/http/custom_response/local_response_policy/v3/local_response_policy.proto
+++ b/api/envoy/extensions/http/custom_response/local_response_policy/v3/local_response_policy.proto
@@ -26,11 +26,11 @@ option (xds.annotations.v3.file_status).work_in_progress = true;
// downstream.
message LocalResponsePolicy {
// Optional new local reply body text. It will be used
- // in the `%LOCAL_REPLY_BODY%` command operator in the `body_format`.
+ // in the ``%LOCAL_REPLY_BODY%`` command operator in the ``body_format``.
config.core.v3.DataSource body = 1;
- // Optional body format to be used for this response. If `body_format` is not
- // provided, and `body` is, the contents of `body` will be used to populate
+ // Optional body format to be used for this response. If ``body_format`` is not
+ // provided, and ``body`` is, the contents of ``body`` will be used to populate
// the body of the local reply without formatting.
config.core.v3.SubstitutionFormatString body_format = 2;
diff --git a/api/envoy/extensions/http/custom_response/redirect_policy/v3/BUILD b/api/envoy/extensions/http/custom_response/redirect_policy/v3/BUILD
index d0a7c688bf76..b6c098a23b3a 100644
--- a/api/envoy/extensions/http/custom_response/redirect_policy/v3/BUILD
+++ b/api/envoy/extensions/http/custom_response/redirect_policy/v3/BUILD
@@ -8,7 +8,7 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/config/route/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/http/custom_response/redirect_policy/v3/redirect_policy.proto b/api/envoy/extensions/http/custom_response/redirect_policy/v3/redirect_policy.proto
index 73cf7ed7a864..ef8d050e2aa8 100644
--- a/api/envoy/extensions/http/custom_response/redirect_policy/v3/redirect_policy.proto
+++ b/api/envoy/extensions/http/custom_response/redirect_policy/v3/redirect_policy.proto
@@ -43,12 +43,12 @@ message RedirectPolicy {
string uri = 1 [(validate.rules).string = {min_len: 1}];
// Specify elements of the redirect url individually.
- // Note: Do not specify the `response_code` field in `redirect_action`, use
- // `status_code` instead.
- // The following fields in `redirect_action` are currently not supported,
+ // Note: Do not specify the ``response_code`` field in ``redirect_action``, use
+ // ``status_code`` instead.
+ // The following fields in ``redirect_action`` are currently not supported,
// and specifying them will cause the config to be rejected:
- // - `prefix_rewrite`
- // - `regex_rewrite`
+ // - ``prefix_rewrite``
+ // - ``regex_rewrite``
config.route.v3.RedirectAction redirect_action = 2;
}
diff --git a/api/envoy/extensions/http/early_header_mutation/header_mutation/v3/BUILD b/api/envoy/extensions/http/early_header_mutation/header_mutation/v3/BUILD
index 7af7ae042311..876a007c83cf 100644
--- a/api/envoy/extensions/http/early_header_mutation/header_mutation/v3/BUILD
+++ b/api/envoy/extensions/http/early_header_mutation/header_mutation/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/common/mutation_rules/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/http/header_formatters/preserve_case/v3/BUILD b/api/envoy/extensions/http/header_formatters/preserve_case/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/http/header_formatters/preserve_case/v3/BUILD
+++ b/api/envoy/extensions/http/header_formatters/preserve_case/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/http/header_validators/envoy_default/v3/BUILD b/api/envoy/extensions/http/header_validators/envoy_default/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/http/header_validators/envoy_default/v3/BUILD
+++ b/api/envoy/extensions/http/header_validators/envoy_default/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/http/original_ip_detection/custom_header/v3/BUILD b/api/envoy/extensions/http/original_ip_detection/custom_header/v3/BUILD
index 9a76b7e148e0..ef19132f9180 100644
--- a/api/envoy/extensions/http/original_ip_detection/custom_header/v3/BUILD
+++ b/api/envoy/extensions/http/original_ip_detection/custom_header/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/http/original_ip_detection/xff/v3/BUILD b/api/envoy/extensions/http/original_ip_detection/xff/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/http/original_ip_detection/xff/v3/BUILD
+++ b/api/envoy/extensions/http/original_ip_detection/xff/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/http/stateful_session/cookie/v3/BUILD b/api/envoy/extensions/http/stateful_session/cookie/v3/BUILD
index 7a3fc432b2f2..b6f8d3424c11 100644
--- a/api/envoy/extensions/http/stateful_session/cookie/v3/BUILD
+++ b/api/envoy/extensions/http/stateful_session/cookie/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/http/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/http/stateful_session/header/v3/BUILD b/api/envoy/extensions/http/stateful_session/header/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/http/stateful_session/header/v3/BUILD
+++ b/api/envoy/extensions/http/stateful_session/header/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/http/stateful_session/header/v3/header.proto b/api/envoy/extensions/http/stateful_session/header/v3/header.proto
index 01b9381bd923..c5e7de1c3170 100644
--- a/api/envoy/extensions/http/stateful_session/header/v3/header.proto
+++ b/api/envoy/extensions/http/stateful_session/header/v3/header.proto
@@ -23,7 +23,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// upstream host, this upstream host will be selected first. See :ref:`stateful session filter
// `.
//
-// For example, if the header name is set to ``session-header``, envoy will prefer ``1.2.3.4:80``
+// For example, if the header name is set to ``session-header``, Envoy will prefer ``1.2.3.4:80``
// as the upstream host when the request contains the following header:
//
// .. code-block:: none
diff --git a/api/envoy/extensions/injected_credentials/generic/v3/BUILD b/api/envoy/extensions/injected_credentials/generic/v3/BUILD
new file mode 100644
index 000000000000..78e0ff699aae
--- /dev/null
+++ b/api/envoy/extensions/injected_credentials/generic/v3/BUILD
@@ -0,0 +1,13 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/extensions/transport_sockets/tls/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/injected_credentials/generic/v3/generic.proto b/api/envoy/extensions/injected_credentials/generic/v3/generic.proto
new file mode 100644
index 000000000000..5519ec10f0db
--- /dev/null
+++ b/api/envoy/extensions/injected_credentials/generic/v3/generic.proto
@@ -0,0 +1,76 @@
+syntax = "proto3";
+
+package envoy.extensions.injected_credentials.generic.v3;
+
+import "envoy/extensions/transport_sockets/tls/v3/secret.proto";
+
+import "xds/annotations/v3/status.proto";
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.injected_credentials.generic.v3";
+option java_outer_classname = "GenericProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/injected_credentials/generic/v3;genericv3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+option (xds.annotations.v3.file_status).work_in_progress = true;
+
+// [#protodoc-title: Generic Credential]
+// [#not-implemented-hide:]
+// [#extension: envoy.injected_credentials.generic]
+
+// Generic extension can be used to inject HTTP Basic Auth, Bearer Token, or any arbitrary credential
+// into the proxied requests.
+// The credential will be injected into the specified HTTP request header.
+// Example:
+//
+// .. code-block:: yaml
+//
+// credential:
+// name: generic_credential
+// typed_config:
+// "@type": type.googleapis.com/envoy.extensions.injected_credentials.generic.v3.Generic
+// credential:
+// name: credential
+// sds_config:
+// path_config_source:
+// path: credential.yaml
+// header: Authorization
+//
+// credential.yaml for Basic Auth:
+//
+// .. code-block:: yaml
+//
+// resources:
+// - "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret"
+// name: credential
+// generic_secret:
+// secret:
+// inline_string: "Basic base64EncodedUsernamePassword"
+//
+// Refer to [RFC 7617: The 'Basic' HTTP Authentication Scheme](https://www.rfc-editor.org/rfc/rfc7617) for details.
+//
+// credential.yaml for Bearer Token:
+//
+// .. code-block:: yaml
+// resources:
+// - "@type": "type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.Secret"
+// name: credential
+// generic_secret:
+// secret:
+// inline_string: "Bearer myToken"
+//
+// Refer to [RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://www.rfc-editor.org/rfc/rfc6750) for details.
+//
+message Generic {
+ // The SDS configuration for the credential that will be injected to the specified HTTP request header.
+ // It must be a generic secret.
+ transport_sockets.tls.v3.SdsSecretConfig credential = 1
+ [(validate.rules).message = {required: true}];
+
+ // The header that will be injected to the HTTP request with the provided credential.
+ // If not set, filter will default to: ``Authorization``
+ string header = 2
+ [(validate.rules).string = {well_known_regex: HTTP_HEADER_NAME ignore_empty: true}];
+}
diff --git a/api/envoy/extensions/injected_credentials/oauth2/v3/BUILD b/api/envoy/extensions/injected_credentials/oauth2/v3/BUILD
new file mode 100644
index 000000000000..8cf427582df6
--- /dev/null
+++ b/api/envoy/extensions/injected_credentials/oauth2/v3/BUILD
@@ -0,0 +1,14 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/config/core/v3:pkg",
+ "//envoy/extensions/transport_sockets/tls/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/injected_credentials/oauth2/v3/oauth2.proto b/api/envoy/extensions/injected_credentials/oauth2/v3/oauth2.proto
new file mode 100644
index 000000000000..bf89893361dd
--- /dev/null
+++ b/api/envoy/extensions/injected_credentials/oauth2/v3/oauth2.proto
@@ -0,0 +1,70 @@
+syntax = "proto3";
+
+package envoy.extensions.injected_credentials.oauth2.v3;
+
+import "envoy/config/core/v3/http_uri.proto";
+import "envoy/extensions/transport_sockets/tls/v3/secret.proto";
+
+import "xds/annotations/v3/status.proto";
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.injected_credentials.oauth2.v3";
+option java_outer_classname = "Oauth2Proto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/injected_credentials/oauth2/v3;oauth2v3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+option (xds.annotations.v3.file_status).work_in_progress = true;
+
+// [#protodoc-title: OAuth2 Credential]
+// [#not-implemented-hide:]
+// [#extension: envoy.injected_credentials.oauth2]
+
+// OAuth2 extension can be used to retrieve an OAuth2 access token from an authorization server and inject it into the
+// proxied requests.
+// Currently, only the Client Credentials Grant flow is supported.
+// The access token will be injected into the request headers using the ``Authorization`` header as a bearer token.
+message OAuth2 {
+ enum AuthType {
+ // The ``client_id`` and ``client_secret`` will be sent using HTTP Basic authentication scheme.
+ BASIC_AUTH = 0;
+
+ // The ``client_id`` and ``client_secret`` will be sent in the URL encoded request body.
+ // This type should only be used when Auth server does not support Basic authentication.
+ URL_ENCODED_BODY = 1;
+ }
+
+ // Credentials to authenticate client to the authorization server.
+ // Refer to [RFC 6749: The OAuth 2.0 Authorization Framework](https://www.rfc-editor.org/rfc/rfc6749#section-2.3) for details.
+ message ClientCredentials {
+ // Client ID.
+ // Refer to [RFC 6749: The OAuth 2.0 Authorization Framework](https://www.rfc-editor.org/rfc/rfc6749#section-2.3.1) for details.
+ string client_id = 1 [(validate.rules).string = {min_len: 1}];
+
+ // Client secret.
+ // Refer to [RFC 6749: The OAuth 2.0 Authorization Framework](https://www.rfc-editor.org/rfc/rfc6749#section-2.3.1) for details.
+ transport_sockets.tls.v3.SdsSecretConfig client_secret = 2
+ [(validate.rules).message = {required: true}];
+
+ // The method to use when sending credentials to the authorization server.
+ // Refer to [RFC 6749: The OAuth 2.0 Authorization Framework](https://www.rfc-editor.org/rfc/rfc6749#section-2.3.1) for details.
+ AuthType auth_type = 3;
+ }
+
+ // Endpoint on the authorization server to retrieve the access token from.
+ // Refer to [RFC 6749: The OAuth 2.0 Authorization Framework](https://www.rfc-editor.org/rfc/rfc6749#section-3.2) for details.
+ config.core.v3.HttpUri token_endpoint = 1 [(validate.rules).message = {required: true}];
+
+ // Optional list of OAuth scopes to be claimed in the authorization request.
+ // Refer to [RFC 6749: The OAuth 2.0 Authorization Framework](https://www.rfc-editor.org/rfc/rfc6749#section-4.4.2) for details.
+ repeated string scopes = 2;
+
+ oneof flow_type {
+ option (validate.required) = true;
+
+ // Client Credentials Grant.
+ // Refer to [RFC 6749: The OAuth 2.0 Authorization Framework](https://www.rfc-editor.org/rfc/rfc6749#section-4.4) for details.
+ ClientCredentials client_credentials = 3;
+ }
+}
diff --git a/api/envoy/extensions/internal_redirect/allow_listed_routes/v3/BUILD b/api/envoy/extensions/internal_redirect/allow_listed_routes/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/internal_redirect/allow_listed_routes/v3/BUILD
+++ b/api/envoy/extensions/internal_redirect/allow_listed_routes/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/internal_redirect/previous_routes/v3/BUILD b/api/envoy/extensions/internal_redirect/previous_routes/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/internal_redirect/previous_routes/v3/BUILD
+++ b/api/envoy/extensions/internal_redirect/previous_routes/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/internal_redirect/safe_cross_scheme/v3/BUILD b/api/envoy/extensions/internal_redirect/safe_cross_scheme/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/internal_redirect/safe_cross_scheme/v3/BUILD
+++ b/api/envoy/extensions/internal_redirect/safe_cross_scheme/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/key_value/file_based/v3/BUILD b/api/envoy/extensions/key_value/file_based/v3/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/envoy/extensions/key_value/file_based/v3/BUILD
+++ b/api/envoy/extensions/key_value/file_based/v3/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/BUILD b/api/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/load_balancing_policies/cluster_provided/v3/BUILD b/api/envoy/extensions/load_balancing_policies/cluster_provided/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/load_balancing_policies/cluster_provided/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/cluster_provided/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/load_balancing_policies/common/v3/BUILD b/api/envoy/extensions/load_balancing_policies/common/v3/BUILD
index ad2fc9a9a84f..eeae27ad54b4 100644
--- a/api/envoy/extensions/load_balancing_policies/common/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/common/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/load_balancing_policies/least_request/v3/BUILD b/api/envoy/extensions/load_balancing_policies/least_request/v3/BUILD
index 366a3c324b35..b45c78410e7d 100644
--- a/api/envoy/extensions/load_balancing_policies/least_request/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/least_request/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/extensions/load_balancing_policies/common/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/load_balancing_policies/least_request/v3/least_request.proto b/api/envoy/extensions/load_balancing_policies/least_request/v3/least_request.proto
index 87a379c66912..ebef61852e21 100644
--- a/api/envoy/extensions/load_balancing_policies/least_request/v3/least_request.proto
+++ b/api/envoy/extensions/load_balancing_policies/least_request/v3/least_request.proto
@@ -22,6 +22,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// This configuration allows the built-in LEAST_REQUEST LB policy to be configured via the LB policy
// extension point. See the :ref:`load balancing architecture overview
// ` for more information.
+// [#next-free-field: 6]
message LeastRequest {
// The number of random healthy hosts from which the host with the fewest active requests will
// be chosen. Defaults to 2 so that we perform two-choice selection if the field is not set.
@@ -30,18 +31,18 @@ message LeastRequest {
// The following formula is used to calculate the dynamic weights when hosts have different load
// balancing weights:
//
- // `weight = load_balancing_weight / (active_requests + 1)^active_request_bias`
+ // ``weight = load_balancing_weight / (active_requests + 1)^active_request_bias``
//
// The larger the active request bias is, the more aggressively active requests will lower the
// effective weight when all host weights are not equal.
//
- // `active_request_bias` must be greater than or equal to 0.0.
+ // ``active_request_bias`` must be greater than or equal to 0.0.
//
- // When `active_request_bias == 0.0` the Least Request Load Balancer doesn't consider the number
+ // When ``active_request_bias == 0.0`` the Least Request Load Balancer doesn't consider the number
// of active requests at the time it picks a host and behaves like the Round Robin Load
// Balancer.
//
- // When `active_request_bias > 0.0` the Least Request Load Balancer scales the load balancing
+ // When ``active_request_bias > 0.0`` the Least Request Load Balancer scales the load balancing
// weight by the number of active requests at the time it does a pick.
//
// The value is cached for performance reasons and refreshed whenever one of the Load Balancer's
@@ -58,4 +59,10 @@ message LeastRequest {
// Configuration for local zone aware load balancing or locality weighted load balancing.
common.v3.LocalityLbConfig locality_lb_config = 4;
+
+ // [#not-implemented-hide:]
+ // Configuration for performing full scan on the list of hosts.
+ // If this configuration is set, when selecting the host a full scan on the list hosts will be
+ // used to select the one with least requests instead of using random choices.
+ google.protobuf.BoolValue enable_full_scan = 5;
}
diff --git a/api/envoy/extensions/load_balancing_policies/maglev/v3/BUILD b/api/envoy/extensions/load_balancing_policies/maglev/v3/BUILD
index 6a0be4c9bf97..3ff3820af87e 100644
--- a/api/envoy/extensions/load_balancing_policies/maglev/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/maglev/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/load_balancing_policies/common/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/load_balancing_policies/pick_first/v3/BUILD b/api/envoy/extensions/load_balancing_policies/pick_first/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/load_balancing_policies/pick_first/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/pick_first/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/load_balancing_policies/random/v3/BUILD b/api/envoy/extensions/load_balancing_policies/random/v3/BUILD
index 6a0be4c9bf97..3ff3820af87e 100644
--- a/api/envoy/extensions/load_balancing_policies/random/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/random/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/load_balancing_policies/common/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/load_balancing_policies/ring_hash/v3/BUILD b/api/envoy/extensions/load_balancing_policies/ring_hash/v3/BUILD
index 9ec681aa9756..0698cc5b6360 100644
--- a/api/envoy/extensions/load_balancing_policies/ring_hash/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/ring_hash/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/extensions/load_balancing_policies/common/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.proto b/api/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.proto
index c121bb05796d..b6583cc3a5ce 100644
--- a/api/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.proto
+++ b/api/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.proto
@@ -53,7 +53,7 @@ message RingHash {
// :ref:`minimum_ring_size`.
google.protobuf.UInt64Value maximum_ring_size = 3 [(validate.rules).uint64 = {lte: 8388608}];
- // If set to `true`, the cluster will use hostname instead of the resolved
+ // If set to ``true``, the cluster will use hostname instead of the resolved
// address as the key to consistently hash to an upstream host. Only valid for StrictDNS clusters with hostnames which resolve to a single IP address.
//
// .. note::
@@ -68,7 +68,7 @@ message RingHash {
// Minimum is 100.
//
// This is implemented based on the method described in the paper https://arxiv.org/abs/1608.01350. For the specified
- // `hash_balance_factor`, requests to any upstream host are capped at `hash_balance_factor/100` times the average number of requests
+ // ``hash_balance_factor``, requests to any upstream host are capped at ``hash_balance_factor/100`` times the average number of requests
// across the cluster. When a request arrives for an upstream host that is currently serving at its max capacity, linear probing
// is used to identify an eligible host. Further, the linear probe is implemented using a random jump in hosts ring/table to identify
// the eligible host (this technique is as described in the paper https://arxiv.org/abs/1908.08762 - the random jump avoids the
@@ -76,7 +76,7 @@ message RingHash {
//
// If weights are specified on the hosts, they are respected.
//
- // This is an O(N) algorithm, unlike other load balancers. Using a lower `hash_balance_factor` results in more hosts
+ // This is an O(N) algorithm, unlike other load balancers. Using a lower ``hash_balance_factor`` results in more hosts
// being probed, so use a higher value if you require better performance.
//
// .. note::
diff --git a/api/envoy/extensions/load_balancing_policies/round_robin/v3/BUILD b/api/envoy/extensions/load_balancing_policies/round_robin/v3/BUILD
index 6a0be4c9bf97..3ff3820af87e 100644
--- a/api/envoy/extensions/load_balancing_policies/round_robin/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/round_robin/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/load_balancing_policies/common/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/load_balancing_policies/subset/v3/BUILD b/api/envoy/extensions/load_balancing_policies/subset/v3/BUILD
index b49ae9078cfc..9d41e8bdabcf 100644
--- a/api/envoy/extensions/load_balancing_policies/subset/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/subset/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/cluster/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/load_balancing_policies/wrr_locality/v3/BUILD b/api/envoy/extensions/load_balancing_policies/wrr_locality/v3/BUILD
index b49ae9078cfc..9d41e8bdabcf 100644
--- a/api/envoy/extensions/load_balancing_policies/wrr_locality/v3/BUILD
+++ b/api/envoy/extensions/load_balancing_policies/wrr_locality/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/cluster/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/matching/common_inputs/environment_variable/v3/BUILD b/api/envoy/extensions/matching/common_inputs/environment_variable/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/matching/common_inputs/environment_variable/v3/BUILD
+++ b/api/envoy/extensions/matching/common_inputs/environment_variable/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/matching/common_inputs/network/v3/BUILD b/api/envoy/extensions/matching/common_inputs/network/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/matching/common_inputs/network/v3/BUILD
+++ b/api/envoy/extensions/matching/common_inputs/network/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/matching/common_inputs/ssl/v3/BUILD b/api/envoy/extensions/matching/common_inputs/ssl/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/matching/common_inputs/ssl/v3/BUILD
+++ b/api/envoy/extensions/matching/common_inputs/ssl/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/matching/input_matchers/consistent_hashing/v3/BUILD b/api/envoy/extensions/matching/input_matchers/consistent_hashing/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/matching/input_matchers/consistent_hashing/v3/BUILD
+++ b/api/envoy/extensions/matching/input_matchers/consistent_hashing/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/matching/input_matchers/ip/v3/BUILD b/api/envoy/extensions/matching/input_matchers/ip/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/matching/input_matchers/ip/v3/BUILD
+++ b/api/envoy/extensions/matching/input_matchers/ip/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/matching/input_matchers/runtime_fraction/v3/BUILD b/api/envoy/extensions/matching/input_matchers/runtime_fraction/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/matching/input_matchers/runtime_fraction/v3/BUILD
+++ b/api/envoy/extensions/matching/input_matchers/runtime_fraction/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/network/dns_resolver/apple/v3/BUILD b/api/envoy/extensions/network/dns_resolver/apple/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/network/dns_resolver/apple/v3/BUILD
+++ b/api/envoy/extensions/network/dns_resolver/apple/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/network/dns_resolver/cares/v3/BUILD b/api/envoy/extensions/network/dns_resolver/cares/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/network/dns_resolver/cares/v3/BUILD
+++ b/api/envoy/extensions/network/dns_resolver/cares/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/network/dns_resolver/getaddrinfo/v3/BUILD b/api/envoy/extensions/network/dns_resolver/getaddrinfo/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/network/dns_resolver/getaddrinfo/v3/BUILD
+++ b/api/envoy/extensions/network/dns_resolver/getaddrinfo/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/network/socket_interface/v3/BUILD b/api/envoy/extensions/network/socket_interface/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/network/socket_interface/v3/BUILD
+++ b/api/envoy/extensions/network/socket_interface/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/path/match/uri_template/v3/BUILD b/api/envoy/extensions/path/match/uri_template/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/path/match/uri_template/v3/BUILD
+++ b/api/envoy/extensions/path/match/uri_template/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/path/rewrite/uri_template/v3/BUILD b/api/envoy/extensions/path/rewrite/uri_template/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/path/rewrite/uri_template/v3/BUILD
+++ b/api/envoy/extensions/path/rewrite/uri_template/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/quic/connection_id_generator/v3/BUILD b/api/envoy/extensions/quic/connection_id_generator/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/quic/connection_id_generator/v3/BUILD
+++ b/api/envoy/extensions/quic/connection_id_generator/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/quic/crypto_stream/v3/BUILD b/api/envoy/extensions/quic/crypto_stream/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/quic/crypto_stream/v3/BUILD
+++ b/api/envoy/extensions/quic/crypto_stream/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/quic/proof_source/v3/BUILD b/api/envoy/extensions/quic/proof_source/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/quic/proof_source/v3/BUILD
+++ b/api/envoy/extensions/quic/proof_source/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/quic/server_preferred_address/v3/BUILD b/api/envoy/extensions/quic/server_preferred_address/v3/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/envoy/extensions/quic/server_preferred_address/v3/BUILD
+++ b/api/envoy/extensions/quic/server_preferred_address/v3/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/rate_limit_descriptors/expr/v3/BUILD b/api/envoy/extensions/rate_limit_descriptors/expr/v3/BUILD
index facd82ce6de2..81b55729566c 100644
--- a/api/envoy/extensions/rate_limit_descriptors/expr/v3/BUILD
+++ b/api/envoy/extensions/rate_limit_descriptors/expr/v3/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@com_google_googleapis//google/api/expr/v1alpha1:syntax_proto",
],
)
diff --git a/api/envoy/extensions/rbac/audit_loggers/stream/v3/BUILD b/api/envoy/extensions/rbac/audit_loggers/stream/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/rbac/audit_loggers/stream/v3/BUILD
+++ b/api/envoy/extensions/rbac/audit_loggers/stream/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/rbac/matchers/upstream_ip_port/v3/BUILD b/api/envoy/extensions/rbac/matchers/upstream_ip_port/v3/BUILD
index ad2fc9a9a84f..eeae27ad54b4 100644
--- a/api/envoy/extensions/rbac/matchers/upstream_ip_port/v3/BUILD
+++ b/api/envoy/extensions/rbac/matchers/upstream_ip_port/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/regex_engines/v3/BUILD b/api/envoy/extensions/regex_engines/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/regex_engines/v3/BUILD
+++ b/api/envoy/extensions/regex_engines/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/request_id/uuid/v3/BUILD b/api/envoy/extensions/request_id/uuid/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/request_id/uuid/v3/BUILD
+++ b/api/envoy/extensions/request_id/uuid/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/resource_monitors/downstream_connections/v3/BUILD b/api/envoy/extensions/resource_monitors/downstream_connections/v3/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/envoy/extensions/resource_monitors/downstream_connections/v3/BUILD
+++ b/api/envoy/extensions/resource_monitors/downstream_connections/v3/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/extensions/resource_monitors/fixed_heap/v3/BUILD b/api/envoy/extensions/resource_monitors/fixed_heap/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/resource_monitors/fixed_heap/v3/BUILD
+++ b/api/envoy/extensions/resource_monitors/fixed_heap/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/resource_monitors/injected_resource/v3/BUILD b/api/envoy/extensions/resource_monitors/injected_resource/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/resource_monitors/injected_resource/v3/BUILD
+++ b/api/envoy/extensions/resource_monitors/injected_resource/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/retry/host/omit_canary_hosts/v3/BUILD b/api/envoy/extensions/retry/host/omit_canary_hosts/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/retry/host/omit_canary_hosts/v3/BUILD
+++ b/api/envoy/extensions/retry/host/omit_canary_hosts/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/retry/host/omit_host_metadata/v3/BUILD b/api/envoy/extensions/retry/host/omit_host_metadata/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/retry/host/omit_host_metadata/v3/BUILD
+++ b/api/envoy/extensions/retry/host/omit_host_metadata/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/retry/host/previous_hosts/v3/BUILD b/api/envoy/extensions/retry/host/previous_hosts/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/retry/host/previous_hosts/v3/BUILD
+++ b/api/envoy/extensions/retry/host/previous_hosts/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/retry/priority/previous_priorities/v3/BUILD b/api/envoy/extensions/retry/priority/previous_priorities/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/retry/priority/previous_priorities/v3/BUILD
+++ b/api/envoy/extensions/retry/priority/previous_priorities/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/router/cluster_specifiers/lua/v3/BUILD b/api/envoy/extensions/router/cluster_specifiers/lua/v3/BUILD
new file mode 100644
index 000000000000..09a37ad16b83
--- /dev/null
+++ b/api/envoy/extensions/router/cluster_specifiers/lua/v3/BUILD
@@ -0,0 +1,12 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = [
+ "//envoy/config/core/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ ],
+)
diff --git a/api/envoy/extensions/router/cluster_specifiers/lua/v3/lua.proto b/api/envoy/extensions/router/cluster_specifiers/lua/v3/lua.proto
new file mode 100644
index 000000000000..b8ea10a02df7
--- /dev/null
+++ b/api/envoy/extensions/router/cluster_specifiers/lua/v3/lua.proto
@@ -0,0 +1,27 @@
+syntax = "proto3";
+
+package envoy.extensions.router.cluster_specifiers.lua.v3;
+
+import "envoy/config/core/v3/base.proto";
+
+import "udpa/annotations/status.proto";
+import "validate/validate.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.router.cluster_specifiers.lua.v3";
+option java_outer_classname = "LuaProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/router/cluster_specifiers/lua/v3;luav3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Lua]
+//
+// Lua cluster specifier :ref:`configuration reference documentation `.
+// [#extension: envoy.router.cluster_specifier_plugin.lua]
+
+message LuaConfig {
+ // The lua code that Envoy will execute to select cluster.
+ config.core.v3.DataSource source_code = 1 [(validate.rules).message = {required: true}];
+
+ // Default cluster. It will be used when the lua code execute failure.
+ string default_cluster = 2;
+}
diff --git a/api/envoy/extensions/stat_sinks/graphite_statsd/v3/BUILD b/api/envoy/extensions/stat_sinks/graphite_statsd/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/stat_sinks/graphite_statsd/v3/BUILD
+++ b/api/envoy/extensions/stat_sinks/graphite_statsd/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/stat_sinks/open_telemetry/v3/BUILD b/api/envoy/extensions/stat_sinks/open_telemetry/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/stat_sinks/open_telemetry/v3/BUILD
+++ b/api/envoy/extensions/stat_sinks/open_telemetry/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/stat_sinks/wasm/v3/BUILD b/api/envoy/extensions/stat_sinks/wasm/v3/BUILD
index c37174bdefc4..ed3c664aedd7 100644
--- a/api/envoy/extensions/stat_sinks/wasm/v3/BUILD
+++ b/api/envoy/extensions/stat_sinks/wasm/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/wasm/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/tracers/opentelemetry/resource_detectors/v3/BUILD b/api/envoy/extensions/tracers/opentelemetry/resource_detectors/v3/BUILD
new file mode 100644
index 000000000000..29ebf0741406
--- /dev/null
+++ b/api/envoy/extensions/tracers/opentelemetry/resource_detectors/v3/BUILD
@@ -0,0 +1,9 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
+)
diff --git a/api/envoy/extensions/tracers/opentelemetry/resource_detectors/v3/dynatrace_resource_detector.proto b/api/envoy/extensions/tracers/opentelemetry/resource_detectors/v3/dynatrace_resource_detector.proto
new file mode 100644
index 000000000000..adb072f75990
--- /dev/null
+++ b/api/envoy/extensions/tracers/opentelemetry/resource_detectors/v3/dynatrace_resource_detector.proto
@@ -0,0 +1,25 @@
+syntax = "proto3";
+
+package envoy.extensions.tracers.opentelemetry.resource_detectors.v3;
+
+import "udpa/annotations/status.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.tracers.opentelemetry.resource_detectors.v3";
+option java_outer_classname = "DynatraceResourceDetectorProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/tracers/opentelemetry/resource_detectors/v3;resource_detectorsv3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Dynatrace Resource Detector config]
+
+// Configuration for the Dynatrace Resource Detector extension.
+// The resource detector reads from the Dynatrace enrichment files
+// and adds host/process related attributes to the OpenTelemetry resource.
+//
+// See:
+//
+// `Enrich ingested data with Dynatrace-specific dimensions `_
+//
+// [#extension: envoy.tracers.opentelemetry.resource_detectors.dynatrace]
+message DynatraceResourceDetectorConfig {
+}
diff --git a/api/envoy/extensions/tracers/opentelemetry/resource_detectors/v3/environment_resource_detector.proto b/api/envoy/extensions/tracers/opentelemetry/resource_detectors/v3/environment_resource_detector.proto
new file mode 100644
index 000000000000..df62fc2d9e42
--- /dev/null
+++ b/api/envoy/extensions/tracers/opentelemetry/resource_detectors/v3/environment_resource_detector.proto
@@ -0,0 +1,25 @@
+syntax = "proto3";
+
+package envoy.extensions.tracers.opentelemetry.resource_detectors.v3;
+
+import "udpa/annotations/status.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.tracers.opentelemetry.resource_detectors.v3";
+option java_outer_classname = "EnvironmentResourceDetectorProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/tracers/opentelemetry/resource_detectors/v3;resource_detectorsv3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Environment Resource Detector config]
+
+// Configuration for the Environment Resource detector extension.
+// The resource detector reads from the ``OTEL_RESOURCE_ATTRIBUTES``
+// environment variable, as per the OpenTelemetry specification.
+//
+// See:
+//
+// `OpenTelemetry specification `_
+//
+// [#extension: envoy.tracers.opentelemetry.resource_detectors.environment]
+message EnvironmentResourceDetectorConfig {
+}
diff --git a/api/envoy/extensions/tracers/opentelemetry/samplers/v3/BUILD b/api/envoy/extensions/tracers/opentelemetry/samplers/v3/BUILD
new file mode 100644
index 000000000000..29ebf0741406
--- /dev/null
+++ b/api/envoy/extensions/tracers/opentelemetry/samplers/v3/BUILD
@@ -0,0 +1,9 @@
+# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
+
+load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
+
+licenses(["notice"]) # Apache 2
+
+api_proto_package(
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
+)
diff --git a/api/envoy/extensions/tracers/opentelemetry/samplers/v3/always_on_sampler.proto b/api/envoy/extensions/tracers/opentelemetry/samplers/v3/always_on_sampler.proto
new file mode 100644
index 000000000000..241dc06eb1fc
--- /dev/null
+++ b/api/envoy/extensions/tracers/opentelemetry/samplers/v3/always_on_sampler.proto
@@ -0,0 +1,23 @@
+syntax = "proto3";
+
+package envoy.extensions.tracers.opentelemetry.samplers.v3;
+
+import "udpa/annotations/status.proto";
+
+option java_package = "io.envoyproxy.envoy.extensions.tracers.opentelemetry.samplers.v3";
+option java_outer_classname = "AlwaysOnSamplerProto";
+option java_multiple_files = true;
+option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/tracers/opentelemetry/samplers/v3;samplersv3";
+option (udpa.annotations.file_status).package_version_status = ACTIVE;
+
+// [#protodoc-title: Always On Sampler config]
+// Configuration for the "AlwaysOn" Sampler extension.
+// The sampler follows the "AlwaysOn" implementation from the OpenTelemetry
+// SDK specification.
+//
+// See:
+// `AlwaysOn sampler specification `_
+// [#extension: envoy.tracers.opentelemetry.samplers.always_on]
+
+message AlwaysOnSamplerConfig {
+}
diff --git a/api/envoy/extensions/transport_sockets/alts/v3/BUILD b/api/envoy/extensions/transport_sockets/alts/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/transport_sockets/alts/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/alts/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/transport_sockets/http_11_proxy/v3/BUILD b/api/envoy/extensions/transport_sockets/http_11_proxy/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/transport_sockets/http_11_proxy/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/http_11_proxy/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/transport_sockets/internal_upstream/v3/BUILD b/api/envoy/extensions/transport_sockets/internal_upstream/v3/BUILD
index 1bbba241ba61..450e5434d631 100644
--- a/api/envoy/extensions/transport_sockets/internal_upstream/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/internal_upstream/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/type/metadata/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/transport_sockets/proxy_protocol/v3/BUILD b/api/envoy/extensions/transport_sockets/proxy_protocol/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/transport_sockets/proxy_protocol/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/proxy_protocol/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/transport_sockets/quic/v3/BUILD b/api/envoy/extensions/transport_sockets/quic/v3/BUILD
index 3ca8242f7780..63fb3642c4b5 100644
--- a/api/envoy/extensions/transport_sockets/quic/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/quic/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/transport_sockets/tls/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/transport_sockets/raw_buffer/v3/BUILD b/api/envoy/extensions/transport_sockets/raw_buffer/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/transport_sockets/raw_buffer/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/raw_buffer/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/transport_sockets/s2a/v3/BUILD b/api/envoy/extensions/transport_sockets/s2a/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/transport_sockets/s2a/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/s2a/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/transport_sockets/starttls/v3/BUILD b/api/envoy/extensions/transport_sockets/starttls/v3/BUILD
index 7ae3c01a9947..2addd072fbf8 100644
--- a/api/envoy/extensions/transport_sockets/starttls/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/starttls/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/extensions/transport_sockets/raw_buffer/v3:pkg",
"//envoy/extensions/transport_sockets/tls/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/transport_sockets/tap/v3/BUILD b/api/envoy/extensions/transport_sockets/tap/v3/BUILD
index b97db3d63736..6f8c1c8f74ec 100644
--- a/api/envoy/extensions/transport_sockets/tap/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/tap/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/extensions/common/tap/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/transport_sockets/tcp_stats/v3/BUILD b/api/envoy/extensions/transport_sockets/tcp_stats/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/transport_sockets/tcp_stats/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/tcp_stats/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/transport_sockets/tls/v3/BUILD b/api/envoy/extensions/transport_sockets/tls/v3/BUILD
index 75026a89c29b..8a81977d7bc3 100644
--- a/api/envoy/extensions/transport_sockets/tls/v3/BUILD
+++ b/api/envoy/extensions/transport_sockets/tls/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/transport_sockets/tls/v3/common.proto b/api/envoy/extensions/transport_sockets/tls/v3/common.proto
index 0d653050f5a3..d244adcdf549 100644
--- a/api/envoy/extensions/transport_sockets/tls/v3/common.proto
+++ b/api/envoy/extensions/transport_sockets/tls/v3/common.proto
@@ -180,8 +180,8 @@ message PrivateKeyProvider {
}
// If the private key provider isn't available (eg. the required hardware capability doesn't existed),
- // Envoy will fallback to the BoringSSL default implementation when the `fallback` is true.
- // The default value is `false`.
+ // Envoy will fallback to the BoringSSL default implementation when the ``fallback`` is true.
+ // The default value is ``false``.
bool fallback = 4;
}
@@ -536,12 +536,10 @@ message CertificateValidationContext {
bool only_verify_leaf_cert_crl = 14;
// Defines maximum depth of a certificate chain accepted in verification, the default limit is 100, though this can be system-dependent.
- // This number does not include the leaf, so a depth of 1 allows the leaf and one CA certificate. If a trusted issuer appears in the chain,
- // but in a depth larger than configured, the certificate validation will fail.
- // See `BoringSSL SSL_CTX_set_verify_depth `
- // If you use OpenSSL, its behavior is different from BoringSSL, this will define a limit on the number of certificates between the end-entity and trust-anchor certificates.
- // Neither the end-entity nor the trust-anchor certificates count against depth.
- // See `OpenSSL SSL set_verify_depth `_.
+ // This number does not include the leaf but includes the trust anchor, so a depth of 1 allows the leaf and one CA certificate. If a trusted issuer
+ // appears in the chain, but in a depth larger than configured, the certificate validation will fail.
+ // This matches the semantics of ``SSL_CTX_set_verify_depth`` in OpenSSL 1.0.x and older versions of BoringSSL. It differs from ``SSL_CTX_set_verify_depth``
+ // in OpenSSL 1.1.x and newer versions of BoringSSL in that the trust anchor is included.
// Trusted issues are specified by setting :ref:`trusted_ca `
google.protobuf.UInt32Value max_verify_depth = 16 [(validate.rules).uint32 = {lte: 100}];
}
diff --git a/api/envoy/extensions/transport_sockets/tls/v3/tls.proto b/api/envoy/extensions/transport_sockets/tls/v3/tls.proto
index ac3641ebd6f5..f94889cfad04 100644
--- a/api/envoy/extensions/transport_sockets/tls/v3/tls.proto
+++ b/api/envoy/extensions/transport_sockets/tls/v3/tls.proto
@@ -63,7 +63,7 @@ message UpstreamTlsContext {
google.protobuf.BoolValue enforce_rsa_key_usage = 5;
}
-// [#next-free-field: 10]
+// [#next-free-field: 11]
message DownstreamTlsContext {
option (udpa.annotations.versioning).previous_message_type =
"envoy.api.v2.auth.DownstreamTlsContext";
@@ -119,6 +119,10 @@ message DownstreamTlsContext {
bool disable_stateless_session_resumption = 7;
}
+ // If set to true, the TLS server will not maintain a session cache of TLS sessions. (This is
+ // relevant only for TLSv1.2 and earlier.)
+ bool disable_stateful_session_resumption = 10;
+
// If specified, ``session_timeout`` will change the maximum lifetime (in seconds) of the TLS session.
// Currently this value is used as a hint for the `TLS session ticket lifetime (for TLSv1.2) `_.
// Only seconds can be specified (fractional seconds are ignored).
diff --git a/api/envoy/extensions/udp_packet_writer/v3/BUILD b/api/envoy/extensions/udp_packet_writer/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/udp_packet_writer/v3/BUILD
+++ b/api/envoy/extensions/udp_packet_writer/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/upstreams/http/generic/v3/BUILD b/api/envoy/extensions/upstreams/http/generic/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/upstreams/http/generic/v3/BUILD
+++ b/api/envoy/extensions/upstreams/http/generic/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/upstreams/http/generic/v3/generic_connection_pool.proto b/api/envoy/extensions/upstreams/http/generic/v3/generic_connection_pool.proto
index e76dde8573e9..cb578db10cd0 100644
--- a/api/envoy/extensions/upstreams/http/generic/v3/generic_connection_pool.proto
+++ b/api/envoy/extensions/upstreams/http/generic/v3/generic_connection_pool.proto
@@ -12,7 +12,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// [#protodoc-title: Generic Connection Pool]
-// A connection pool which forwards downstream HTTP as TCP or HTTP to upstream,
+// A connection pool which forwards downstream HTTP as TCP, UDP or HTTP to upstream,
// based on CONNECT configuration.
// [#extension: envoy.upstreams.http.generic]
message GenericConnectionPoolProto {
diff --git a/api/envoy/extensions/upstreams/http/http/v3/BUILD b/api/envoy/extensions/upstreams/http/http/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/upstreams/http/http/v3/BUILD
+++ b/api/envoy/extensions/upstreams/http/http/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/upstreams/http/tcp/v3/BUILD b/api/envoy/extensions/upstreams/http/tcp/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/upstreams/http/tcp/v3/BUILD
+++ b/api/envoy/extensions/upstreams/http/tcp/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/upstreams/http/udp/v3/BUILD b/api/envoy/extensions/upstreams/http/udp/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/upstreams/http/udp/v3/BUILD
+++ b/api/envoy/extensions/upstreams/http/udp/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/upstreams/http/v3/BUILD b/api/envoy/extensions/upstreams/http/v3/BUILD
index a3fe9fa9e747..e6a0401f0645 100644
--- a/api/envoy/extensions/upstreams/http/v3/BUILD
+++ b/api/envoy/extensions/upstreams/http/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/extensions/filters/network/http_connection_manager/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/upstreams/http/v3/http_protocol_options.proto b/api/envoy/extensions/upstreams/http/v3/http_protocol_options.proto
index 1663fa4aad7a..ca4cb81fe033 100644
--- a/api/envoy/extensions/upstreams/http/v3/http_protocol_options.proto
+++ b/api/envoy/extensions/upstreams/http/v3/http_protocol_options.proto
@@ -154,14 +154,14 @@ message HttpProtocolOptions {
// .. note::
// Upstream HTTP filters are currently in alpha.
//
- // Optional HTTP filters for the upstream filter chain.
+ // Optional HTTP filters for the upstream HTTP filter chain.
//
// These filters will be applied for all HTTP streams which flow through this
- // cluster. Unlike downstream filters, they will *not* be applied to terminated CONNECT requests.
+ // cluster. Unlike downstream HTTP filters, they will *not* be applied to terminated CONNECT requests.
//
- // If using upstream filters, please be aware that local errors sent by
- // upstream filters will not trigger retries, and local errors sent by
- // upstream filters will count as a final response if hedging is configured.
+ // If using upstream HTTP filters, please be aware that local errors sent by
+ // upstream HTTP filters will not trigger retries, and local errors sent by
+ // upstream HTTP filters will count as a final response if hedging is configured.
// [#extension-category: envoy.filters.http.upstream]
repeated filters.network.http_connection_manager.v3.HttpFilter http_filters = 6;
diff --git a/api/envoy/extensions/upstreams/tcp/generic/v3/BUILD b/api/envoy/extensions/upstreams/tcp/generic/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/upstreams/tcp/generic/v3/BUILD
+++ b/api/envoy/extensions/upstreams/tcp/generic/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/upstreams/tcp/v3/BUILD b/api/envoy/extensions/upstreams/tcp/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/upstreams/tcp/v3/BUILD
+++ b/api/envoy/extensions/upstreams/tcp/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/extensions/wasm/v3/BUILD b/api/envoy/extensions/wasm/v3/BUILD
index 1c1a6f6b4423..09a37ad16b83 100644
--- a/api/envoy/extensions/wasm/v3/BUILD
+++ b/api/envoy/extensions/wasm/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/extensions/watchdog/profile_action/v3/BUILD b/api/envoy/extensions/watchdog/profile_action/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/extensions/watchdog/profile_action/v3/BUILD
+++ b/api/envoy/extensions/watchdog/profile_action/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/service/accesslog/v2/BUILD b/api/envoy/service/accesslog/v2/BUILD
index 1253698c39d5..e05de7268986 100644
--- a/api/envoy/service/accesslog/v2/BUILD
+++ b/api/envoy/service/accesslog/v2/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/data/accesslog/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/accesslog/v3/BUILD b/api/envoy/service/accesslog/v3/BUILD
index c913d31f62fe..10edf724f3bb 100644
--- a/api/envoy/service/accesslog/v3/BUILD
+++ b/api/envoy/service/accesslog/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/data/accesslog/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/auth/v2/BUILD b/api/envoy/service/auth/v2/BUILD
index fa00ca5127de..0fc0d204ca71 100644
--- a/api/envoy/service/auth/v2/BUILD
+++ b/api/envoy/service/auth/v2/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/auth/v3/BUILD b/api/envoy/service/auth/v3/BUILD
index f39e4f85d88f..4f64fe2f9ee5 100644
--- a/api/envoy/service/auth/v3/BUILD
+++ b/api/envoy/service/auth/v3/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/auth/v3/attribute_context.proto b/api/envoy/service/auth/v3/attribute_context.proto
index 77af84436de9..152672685bcc 100644
--- a/api/envoy/service/auth/v3/attribute_context.proto
+++ b/api/envoy/service/auth/v3/attribute_context.proto
@@ -38,7 +38,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// - field mask to send
// - which return values from request_context are copied back
// - which return values are copied into request_headers]
-// [#next-free-field: 13]
+// [#next-free-field: 14]
message AttributeContext {
option (udpa.annotations.versioning).previous_message_type =
"envoy.service.auth.v2.AttributeContext";
@@ -183,6 +183,9 @@ message AttributeContext {
// Dynamic metadata associated with the request.
config.core.v3.Metadata metadata_context = 11;
+ // Metadata associated with the selected route.
+ config.core.v3.Metadata route_metadata_context = 13;
+
// TLS session details of the underlying connection.
// This is not populated by default and will be populated if ext_authz filter's
// :ref:`include_tls_session ` is set to true.
diff --git a/api/envoy/service/cluster/v3/BUILD b/api/envoy/service/cluster/v3/BUILD
index 9f2ae1e747c5..b0154480fed5 100644
--- a/api/envoy/service/cluster/v3/BUILD
+++ b/api/envoy/service/cluster/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/service/discovery/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/discovery/v2/BUILD b/api/envoy/service/discovery/v2/BUILD
index ec687f753436..dc79641fe85b 100644
--- a/api/envoy/service/discovery/v2/BUILD
+++ b/api/envoy/service/discovery/v2/BUILD
@@ -11,6 +11,6 @@ api_proto_package(
"//envoy/api/v2:pkg",
"//envoy/api/v2/core:pkg",
"//envoy/api/v2/endpoint:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/discovery/v3/BUILD b/api/envoy/service/discovery/v3/BUILD
index 7753cfeb3d6e..79668d20fb02 100644
--- a/api/envoy/service/discovery/v3/BUILD
+++ b/api/envoy/service/discovery/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/endpoint/v3/BUILD b/api/envoy/service/endpoint/v3/BUILD
index 9f2ae1e747c5..b0154480fed5 100644
--- a/api/envoy/service/endpoint/v3/BUILD
+++ b/api/envoy/service/endpoint/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/service/discovery/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/event_reporting/v2alpha/BUILD b/api/envoy/service/event_reporting/v2alpha/BUILD
index 4f58bd462f66..9b30e884abc7 100644
--- a/api/envoy/service/event_reporting/v2alpha/BUILD
+++ b/api/envoy/service/event_reporting/v2alpha/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/event_reporting/v3/BUILD b/api/envoy/service/event_reporting/v3/BUILD
index 7753cfeb3d6e..79668d20fb02 100644
--- a/api/envoy/service/event_reporting/v3/BUILD
+++ b/api/envoy/service/event_reporting/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/ext_proc/v3/BUILD b/api/envoy/service/ext_proc/v3/BUILD
index 62a33c34631b..0e337d5c3ed1 100644
--- a/api/envoy/service/ext_proc/v3/BUILD
+++ b/api/envoy/service/ext_proc/v3/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/config/core/v3:pkg",
"//envoy/extensions/filters/http/ext_proc/v3:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/ext_proc/v3/external_processor.proto b/api/envoy/service/ext_proc/v3/external_processor.proto
index 666e65296255..50fba503f846 100644
--- a/api/envoy/service/ext_proc/v3/external_processor.proto
+++ b/api/envoy/service/ext_proc/v3/external_processor.proto
@@ -167,7 +167,9 @@ message ProcessingResponse {
// for the duration of this particular request/response only. Servers
// may use this to intelligently control how requests are processed
// based on the headers and other metadata that they see.
- // This field is ignored by Envoy when the ext_proc filter config
+ // This field is only applicable when servers responding to the header requests.
+ // If it is set in the response to the body or trailer requests, it will be ignored by Envoy.
+ // It is also ignored by Envoy when the ext_proc filter config
// :ref:`allow_mode_override
// `
// is set to false.
diff --git a/api/envoy/service/extension/v3/BUILD b/api/envoy/service/extension/v3/BUILD
index 9f2ae1e747c5..b0154480fed5 100644
--- a/api/envoy/service/extension/v3/BUILD
+++ b/api/envoy/service/extension/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/service/discovery/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/health/v3/BUILD b/api/envoy/service/health/v3/BUILD
index b28383997467..786d0d75d165 100644
--- a/api/envoy/service/health/v3/BUILD
+++ b/api/envoy/service/health/v3/BUILD
@@ -11,6 +11,6 @@ api_proto_package(
"//envoy/config/cluster/v3:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/config/endpoint/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/listener/v3/BUILD b/api/envoy/service/listener/v3/BUILD
index 9f2ae1e747c5..b0154480fed5 100644
--- a/api/envoy/service/listener/v3/BUILD
+++ b/api/envoy/service/listener/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/service/discovery/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/load_stats/v2/BUILD b/api/envoy/service/load_stats/v2/BUILD
index 1263251505f6..55f6785dfcc9 100644
--- a/api/envoy/service/load_stats/v2/BUILD
+++ b/api/envoy/service/load_stats/v2/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/api/v2/endpoint:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/load_stats/v3/BUILD b/api/envoy/service/load_stats/v3/BUILD
index 1ee733dc7d82..f3dcebe111fd 100644
--- a/api/envoy/service/load_stats/v3/BUILD
+++ b/api/envoy/service/load_stats/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/config/endpoint/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/metrics/v2/BUILD b/api/envoy/service/metrics/v2/BUILD
index 79fc6928c032..434723c8306a 100644
--- a/api/envoy/service/metrics/v2/BUILD
+++ b/api/envoy/service/metrics/v2/BUILD
@@ -8,7 +8,7 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@prometheus_metrics_model//:client_model",
],
)
diff --git a/api/envoy/service/metrics/v3/BUILD b/api/envoy/service/metrics/v3/BUILD
index b9a1679e2cb8..ac56c2baa409 100644
--- a/api/envoy/service/metrics/v3/BUILD
+++ b/api/envoy/service/metrics/v3/BUILD
@@ -8,7 +8,7 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@prometheus_metrics_model//:client_model",
],
)
diff --git a/api/envoy/service/rate_limit_quota/v3/BUILD b/api/envoy/service/rate_limit_quota/v3/BUILD
index 1ed447c6f271..8e1364681b5a 100644
--- a/api/envoy/service/rate_limit_quota/v3/BUILD
+++ b/api/envoy/service/rate_limit_quota/v3/BUILD
@@ -8,7 +8,7 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/service/rate_limit_quota/v3/rlqs.proto b/api/envoy/service/rate_limit_quota/v3/rlqs.proto
index 84ba44976b98..b8fa2cd89820 100644
--- a/api/envoy/service/rate_limit_quota/v3/rlqs.proto
+++ b/api/envoy/service/rate_limit_quota/v3/rlqs.proto
@@ -43,6 +43,14 @@ option (xds.annotations.v3.file_status).work_in_progress = true;
// `
// it.
//
+// If for any reason the RLQS client doesn't receive the initial assignment for the reported bucket,
+// in order to prevent memory exhaustion, the data plane will limit the time such bucket
+// is retained. The exact time to wait for the initial assignment is chosen by the filter,
+// and may vary based on the implementation.
+// Once the duration ends, the data plane will stop reporting bucket usage, reject any enqueued
+// requests, and purge the bucket from the memory. Subsequent requests matched into the bucket
+// will re-initialize the bucket in the "no assignment" state, restarting the reports.
+//
// Refer to Rate Limit Quota :ref:`configuration overview `
// for further details.
diff --git a/api/envoy/service/ratelimit/v2/BUILD b/api/envoy/service/ratelimit/v2/BUILD
index eedc3e62b3b2..ff6dcdd6bfe1 100644
--- a/api/envoy/service/ratelimit/v2/BUILD
+++ b/api/envoy/service/ratelimit/v2/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/api/v2/core:pkg",
"//envoy/api/v2/ratelimit:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/ratelimit/v3/BUILD b/api/envoy/service/ratelimit/v3/BUILD
index 1cec1e02cde9..1e1a8863cfbd 100644
--- a/api/envoy/service/ratelimit/v3/BUILD
+++ b/api/envoy/service/ratelimit/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/extensions/common/ratelimit/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/route/v3/BUILD b/api/envoy/service/route/v3/BUILD
index 9f2ae1e747c5..b0154480fed5 100644
--- a/api/envoy/service/route/v3/BUILD
+++ b/api/envoy/service/route/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/service/discovery/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/runtime/v3/BUILD b/api/envoy/service/runtime/v3/BUILD
index 9f2ae1e747c5..b0154480fed5 100644
--- a/api/envoy/service/runtime/v3/BUILD
+++ b/api/envoy/service/runtime/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/service/discovery/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/secret/v3/BUILD b/api/envoy/service/secret/v3/BUILD
index 9f2ae1e747c5..b0154480fed5 100644
--- a/api/envoy/service/secret/v3/BUILD
+++ b/api/envoy/service/secret/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/service/discovery/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/status/v2/BUILD b/api/envoy/service/status/v2/BUILD
index 39c38eb10a7c..87bca3035cf9 100644
--- a/api/envoy/service/status/v2/BUILD
+++ b/api/envoy/service/status/v2/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/admin/v2alpha:pkg",
"//envoy/api/v2/core:pkg",
"//envoy/type/matcher:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/status/v3/BUILD b/api/envoy/service/status/v3/BUILD
index 45ec162b9093..f3b9672c29e6 100644
--- a/api/envoy/service/status/v3/BUILD
+++ b/api/envoy/service/status/v3/BUILD
@@ -11,6 +11,6 @@ api_proto_package(
"//envoy/annotations:pkg",
"//envoy/config/core/v3:pkg",
"//envoy/type/matcher/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/tap/v2alpha/BUILD b/api/envoy/service/tap/v2alpha/BUILD
index 8e0561a169c5..478272b81779 100644
--- a/api/envoy/service/tap/v2alpha/BUILD
+++ b/api/envoy/service/tap/v2alpha/BUILD
@@ -10,6 +10,6 @@ api_proto_package(
"//envoy/api/v2/core:pkg",
"//envoy/api/v2/route:pkg",
"//envoy/data/tap/v2alpha:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/tap/v3/BUILD b/api/envoy/service/tap/v3/BUILD
index 8948f580a51e..13564a427446 100644
--- a/api/envoy/service/tap/v3/BUILD
+++ b/api/envoy/service/tap/v3/BUILD
@@ -9,6 +9,6 @@ api_proto_package(
deps = [
"//envoy/config/core/v3:pkg",
"//envoy/data/tap/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/service/trace/v2/BUILD b/api/envoy/service/trace/v2/BUILD
index 7e6d2b11bf16..f3ef22c3da6d 100644
--- a/api/envoy/service/trace/v2/BUILD
+++ b/api/envoy/service/trace/v2/BUILD
@@ -8,7 +8,7 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/api/v2/core:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@opencensus_proto//opencensus/proto/trace/v1:trace_proto",
],
)
diff --git a/api/envoy/service/trace/v3/BUILD b/api/envoy/service/trace/v3/BUILD
index a00d454ff974..1e793010c62c 100644
--- a/api/envoy/service/trace/v3/BUILD
+++ b/api/envoy/service/trace/v3/BUILD
@@ -8,7 +8,7 @@ api_proto_package(
has_services = True,
deps = [
"//envoy/config/core/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
"@opencensus_proto//opencensus/proto/trace/v1:trace_proto",
],
)
diff --git a/api/envoy/type/BUILD b/api/envoy/type/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/type/BUILD
+++ b/api/envoy/type/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/type/http/v3/BUILD b/api/envoy/type/http/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/type/http/v3/BUILD
+++ b/api/envoy/type/http/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/type/matcher/BUILD b/api/envoy/type/matcher/BUILD
index 29613b4c3487..ad7d3cbadf20 100644
--- a/api/envoy/type/matcher/BUILD
+++ b/api/envoy/type/matcher/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/type:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/type/matcher/v3/BUILD b/api/envoy/type/matcher/v3/BUILD
index fb28aa0e973d..320b988b1a53 100644
--- a/api/envoy/type/matcher/v3/BUILD
+++ b/api/envoy/type/matcher/v3/BUILD
@@ -8,6 +8,6 @@ api_proto_package(
deps = [
"//envoy/annotations:pkg",
"//envoy/type/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/type/matcher/v3/value.proto b/api/envoy/type/matcher/v3/value.proto
index bd46acc0713c..d773c6057fcc 100644
--- a/api/envoy/type/matcher/v3/value.proto
+++ b/api/envoy/type/matcher/v3/value.proto
@@ -19,7 +19,7 @@ option (udpa.annotations.file_status).package_version_status = ACTIVE;
// Specifies the way to match a ProtobufWkt::Value. Primitive values and ListValue are supported.
// StructValue is not supported and is always not matched.
-// [#next-free-field: 7]
+// [#next-free-field: 8]
message ValueMatcher {
option (udpa.annotations.versioning).previous_message_type = "envoy.type.matcher.ValueMatcher";
@@ -56,6 +56,9 @@ message ValueMatcher {
// If specified, a match occurs if and only if the target value is a list value and
// is matched to this field.
ListMatcher list_match = 6;
+
+ // If specified, a match occurs if and only if any of the alternatives in the match accept the value.
+ OrMatcher or_match = 7;
}
}
@@ -70,3 +73,8 @@ message ListMatcher {
ValueMatcher one_of = 1;
}
}
+
+// Specifies a list of alternatives for the match.
+message OrMatcher {
+ repeated ValueMatcher value_matchers = 1 [(validate.rules).repeated = {min_items: 2}];
+}
diff --git a/api/envoy/type/metadata/v2/BUILD b/api/envoy/type/metadata/v2/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/type/metadata/v2/BUILD
+++ b/api/envoy/type/metadata/v2/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/type/metadata/v3/BUILD b/api/envoy/type/metadata/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/type/metadata/v3/BUILD
+++ b/api/envoy/type/metadata/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/envoy/type/tracing/v2/BUILD b/api/envoy/type/tracing/v2/BUILD
index aa64935f43d1..e0ccd69d66c1 100644
--- a/api/envoy/type/tracing/v2/BUILD
+++ b/api/envoy/type/tracing/v2/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/metadata/v2:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/type/tracing/v3/BUILD b/api/envoy/type/tracing/v3/BUILD
index c797ae66c28a..369c3541b913 100644
--- a/api/envoy/type/tracing/v3/BUILD
+++ b/api/envoy/type/tracing/v3/BUILD
@@ -7,6 +7,6 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/type/metadata/v3:pkg",
- "@com_github_cncf_udpa//udpa/annotations:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
],
)
diff --git a/api/envoy/type/v3/BUILD b/api/envoy/type/v3/BUILD
index ec1e778e06e5..d49202b74ab4 100644
--- a/api/envoy/type/v3/BUILD
+++ b/api/envoy/type/v3/BUILD
@@ -6,7 +6,7 @@ licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
- "@com_github_cncf_udpa//udpa/annotations:pkg",
- "@com_github_cncf_udpa//xds/annotations/v3:pkg",
+ "@com_github_cncf_xds//udpa/annotations:pkg",
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
],
)
diff --git a/api/envoy/watchdog/v3/BUILD b/api/envoy/watchdog/v3/BUILD
index ee92fb652582..29ebf0741406 100644
--- a/api/envoy/watchdog/v3/BUILD
+++ b/api/envoy/watchdog/v3/BUILD
@@ -5,5 +5,5 @@ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
- deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"],
+ deps = ["@com_github_cncf_xds//udpa/annotations:pkg"],
)
diff --git a/api/test/build/BUILD b/api/test/build/BUILD
index 16956e8d5720..612cf86713a6 100644
--- a/api/test/build/BUILD
+++ b/api/test/build/BUILD
@@ -13,7 +13,7 @@ api_cc_test(
"//envoy/service/discovery/v2:pkg_cc_proto",
"//envoy/service/metrics/v2:pkg_cc_proto",
"//envoy/service/ratelimit/v2:pkg_cc_proto",
- "@com_github_cncf_udpa//udpa/service/orca/v1:pkg_cc_proto",
+ "@com_github_cncf_xds//udpa/service/orca/v1:pkg_cc_proto",
],
)
diff --git a/api/versioning/BUILD b/api/versioning/BUILD
index 9b4dc169b54a..65ba4dc5c75f 100644
--- a/api/versioning/BUILD
+++ b/api/versioning/BUILD
@@ -9,6 +9,7 @@ proto_library(
name = "active_protos",
visibility = ["//visibility:public"],
deps = [
+ "//contrib/envoy/extensions/compression/qatzip/compressor/v3alpha:pkg",
"//contrib/envoy/extensions/config/v3alpha:pkg",
"//contrib/envoy/extensions/filters/http/checksum/v3alpha:pkg",
"//contrib/envoy/extensions/filters/http/dynamo/v3:pkg",
@@ -19,6 +20,7 @@ proto_library(
"//contrib/envoy/extensions/filters/network/client_ssl_auth/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/action/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/codecs/dubbo/v3:pkg",
+ "//contrib/envoy/extensions/filters/network/generic_proxy/codecs/kafka/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/matcher/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/router/v3:pkg",
"//contrib/envoy/extensions/filters/network/generic_proxy/v3:pkg",
@@ -94,12 +96,14 @@ proto_library(
"//envoy/extensions/filters/common/dependency/v3:pkg",
"//envoy/extensions/filters/common/fault/v3:pkg",
"//envoy/extensions/filters/common/matcher/action/v3:pkg",
+ "//envoy/extensions/filters/common/set_filter_state/v3:pkg",
"//envoy/extensions/filters/http/adaptive_concurrency/v3:pkg",
"//envoy/extensions/filters/http/admission_control/v3:pkg",
"//envoy/extensions/filters/http/alternate_protocols_cache/v3:pkg",
"//envoy/extensions/filters/http/aws_lambda/v3:pkg",
"//envoy/extensions/filters/http/aws_request_signing/v3:pkg",
"//envoy/extensions/filters/http/bandwidth_limit/v3:pkg",
+ "//envoy/extensions/filters/http/basic_auth/v3:pkg",
"//envoy/extensions/filters/http/buffer/v3:pkg",
"//envoy/extensions/filters/http/cache/v3:pkg",
"//envoy/extensions/filters/http/cdn_loop/v3:pkg",
@@ -107,6 +111,7 @@ proto_library(
"//envoy/extensions/filters/http/compressor/v3:pkg",
"//envoy/extensions/filters/http/connect_grpc_bridge/v3:pkg",
"//envoy/extensions/filters/http/cors/v3:pkg",
+ "//envoy/extensions/filters/http/credential_injector/v3:pkg",
"//envoy/extensions/filters/http/csrf/v3:pkg",
"//envoy/extensions/filters/http/custom_response/v3:pkg",
"//envoy/extensions/filters/http/decompressor/v3:pkg",
@@ -140,6 +145,7 @@ proto_library(
"//envoy/extensions/filters/http/ratelimit/v3:pkg",
"//envoy/extensions/filters/http/rbac/v3:pkg",
"//envoy/extensions/filters/http/router/v3:pkg",
+ "//envoy/extensions/filters/http/set_filter_state/v3:pkg",
"//envoy/extensions/filters/http/set_metadata/v3:pkg",
"//envoy/extensions/filters/http/stateful_session/v3:pkg",
"//envoy/extensions/filters/http/tap/v3:pkg",
@@ -163,6 +169,7 @@ proto_library(
"//envoy/extensions/filters/network/ratelimit/v3:pkg",
"//envoy/extensions/filters/network/rbac/v3:pkg",
"//envoy/extensions/filters/network/redis_proxy/v3:pkg",
+ "//envoy/extensions/filters/network/set_filter_state/v3:pkg",
"//envoy/extensions/filters/network/sni_cluster/v3:pkg",
"//envoy/extensions/filters/network/sni_dynamic_forward_proxy/v3:pkg",
"//envoy/extensions/filters/network/tcp_proxy/v3:pkg",
@@ -174,10 +181,14 @@ proto_library(
"//envoy/extensions/filters/network/wasm/v3:pkg",
"//envoy/extensions/filters/network/zookeeper_proxy/v3:pkg",
"//envoy/extensions/filters/udp/dns_filter/v3:pkg",
+ "//envoy/extensions/filters/udp/udp_proxy/session/dynamic_forward_proxy/v3:pkg",
+ "//envoy/extensions/filters/udp/udp_proxy/session/http_capsule/v3:pkg",
"//envoy/extensions/filters/udp/udp_proxy/v3:pkg",
"//envoy/extensions/formatter/cel/v3:pkg",
"//envoy/extensions/formatter/metadata/v3:pkg",
"//envoy/extensions/formatter/req_without_query/v3:pkg",
+ "//envoy/extensions/geoip_providers/common/v3:pkg",
+ "//envoy/extensions/geoip_providers/maxmind/v3:pkg",
"//envoy/extensions/health_check/event_sinks/file/v3:pkg",
"//envoy/extensions/health_checkers/redis/v3:pkg",
"//envoy/extensions/health_checkers/thrift/v3:pkg",
@@ -192,6 +203,8 @@ proto_library(
"//envoy/extensions/http/original_ip_detection/xff/v3:pkg",
"//envoy/extensions/http/stateful_session/cookie/v3:pkg",
"//envoy/extensions/http/stateful_session/header/v3:pkg",
+ "//envoy/extensions/injected_credentials/generic/v3:pkg",
+ "//envoy/extensions/injected_credentials/oauth2/v3:pkg",
"//envoy/extensions/internal_redirect/allow_listed_routes/v3:pkg",
"//envoy/extensions/internal_redirect/previous_routes/v3:pkg",
"//envoy/extensions/internal_redirect/safe_cross_scheme/v3:pkg",
@@ -235,9 +248,12 @@ proto_library(
"//envoy/extensions/retry/host/omit_host_metadata/v3:pkg",
"//envoy/extensions/retry/host/previous_hosts/v3:pkg",
"//envoy/extensions/retry/priority/previous_priorities/v3:pkg",
+ "//envoy/extensions/router/cluster_specifiers/lua/v3:pkg",
"//envoy/extensions/stat_sinks/graphite_statsd/v3:pkg",
"//envoy/extensions/stat_sinks/open_telemetry/v3:pkg",
"//envoy/extensions/stat_sinks/wasm/v3:pkg",
+ "//envoy/extensions/tracers/opentelemetry/resource_detectors/v3:pkg",
+ "//envoy/extensions/tracers/opentelemetry/samplers/v3:pkg",
"//envoy/extensions/transport_sockets/alts/v3:pkg",
"//envoy/extensions/transport_sockets/http_11_proxy/v3:pkg",
"//envoy/extensions/transport_sockets/internal_upstream/v3:pkg",
diff --git a/bazel/BUILD b/bazel/BUILD
index d081f142371f..37eafa57eda1 100644
--- a/bazel/BUILD
+++ b/bazel/BUILD
@@ -1,11 +1,12 @@
-load("//bazel:envoy_build_system.bzl", "envoy_package")
-load("//bazel:envoy_internal.bzl", "envoy_select_force_libcpp")
-load("@envoy_api//bazel:utils.bzl", "json_data")
load("@bazel_skylib//lib:selects.bzl", "selects")
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
-load(":repository_locations.bzl", "REPOSITORY_LOCATIONS_SPEC")
load("@envoy_api//bazel:repository_locations.bzl", API_REPOSITORY_LOCATIONS_SPEC = "REPOSITORY_LOCATIONS_SPEC")
load("@envoy_api//bazel:repository_locations_utils.bzl", "load_repository_locations_spec", "merge_dicts")
+load("@envoy_toolshed//:macros.bzl", "json_data")
+load("@envoy_toolshed//dependency:macros.bzl", "updater")
+load("//bazel:envoy_build_system.bzl", "envoy_package")
+load("//bazel:envoy_internal.bzl", "envoy_select_force_libcpp")
+load(":repository_locations.bzl", "REPOSITORY_LOCATIONS_SPEC")
licenses(["notice"]) # Apache 2
@@ -41,8 +42,8 @@ genrule(
outs = ["gnu_build_id.ldscript"],
cmd = """
echo --build-id=0x$$(
- grep BUILD_SCM_REVISION bazel-out/volatile-status.txt \\
- | sed 's/^BUILD_SCM_REVISION //') \\
+ grep -E "^BUILD_SCM_REVISION" bazel-out/volatile-status.txt \
+ | sed 's/^BUILD_SCM_REVISION //') \
> $@
""",
# Undocumented attr to depend on workspace status files.
@@ -55,8 +56,8 @@ genrule(
name = "raw_build_id",
outs = ["raw_build_id.ldscript"],
cmd = """
- grep BUILD_SCM_REVISION bazel-out/volatile-status.txt \\
- | sed 's/^BUILD_SCM_REVISION //' \\
+ grep -E "^BUILD_SCM_REVISION" bazel-out/volatile-status.txt \
+ | sed 's/^BUILD_SCM_REVISION //' \
| tr -d '\\n' \\
> $@
""",
@@ -361,13 +362,8 @@ config_setting(
)
config_setting(
- name = "disable_envoy_mobile_request_compression",
- values = {"define": "envoy_mobile_request_compression=disabled"},
-)
-
-config_setting(
- name = "disable_envoy_mobile_stats_reporting",
- values = {"define": "envoy_mobile_stats_reporting=disabled"},
+ name = "disable_envoy_mobile_xds",
+ values = {"define": "envoy_mobile_xds=disabled"},
)
config_setting(
@@ -394,7 +390,7 @@ config_setting(
config_setting(
name = "disable_http_datagrams",
- values = {"define": "enable_http_datagrams=disabled"},
+ values = {"define": "envoy_enable_http_datagrams=disabled"},
)
config_setting(
@@ -887,3 +883,28 @@ cc_library(
name = "python_headers",
visibility = ["//visibility:public"],
)
+
+# These can be run as follows:
+#
+# $ bazel run //bazel:update ENVOY_DEP NEW_VERSION
+# $ bazel run //bazel:api-update API_DEP NEW_VERSION
+updater(
+ name = "update",
+ data = ["//tools/dependency:check"],
+ dependencies = "//tools/dependency:filtered-dependencies",
+ post_script = ":version_update_post.sh",
+ pydict = True,
+ tags = ["skip_on_windows"],
+ version_file = ":repository_locations.bzl",
+)
+
+updater(
+ name = "api-update",
+ data = ["//tools/dependency:check"],
+ dependencies = "@envoy_api//bazel:repository_locations",
+ post_script = ":version_update_post.sh",
+ pydict = True,
+ tags = ["skip_on_windows"],
+ version_file = "@envoy_api//bazel:repository_locations.bzl",
+ version_path_replace = "external/envoy_api:api",
+)
diff --git a/bazel/README.md b/bazel/README.md
index 34b0a75239d2..03a8008bcf05 100644
--- a/bazel/README.md
+++ b/bazel/README.md
@@ -285,7 +285,7 @@ Envoy can also be built with the Docker image used for CI, by installing Docker
On Linux, run:
```
-./ci/run_envoy_docker.sh './ci/do_ci.sh bazel.dev'
+./ci/run_envoy_docker.sh './ci/do_ci.sh dev'
```
From a Windows host with Docker installed, the Windows containers feature enabled, and bash (installed via
diff --git a/bazel/api_binding.bzl b/bazel/api_binding.bzl
index 65ed382836fc..8d46d4c1827b 100644
--- a/bazel/api_binding.bzl
+++ b/bazel/api_binding.bzl
@@ -13,7 +13,6 @@ def _default_envoy_api_impl(ctx):
]
for d in api_dirs:
ctx.symlink(ctx.path(ctx.attr.envoy_root).dirname.get_child(ctx.attr.reldir).get_child(d), d)
- ctx.symlink(ctx.path(ctx.attr.envoy_root).dirname.get_child("api").get_child("bazel").get_child("utils.bzl"), "utils.bzl")
_default_envoy_api = repository_rule(
implementation = _default_envoy_api_impl,
diff --git a/bazel/aspect.patch b/bazel/aspect.patch
new file mode 100644
index 000000000000..b9047daa6df9
--- /dev/null
+++ b/bazel/aspect.patch
@@ -0,0 +1,20 @@
+diff --git a/lib/private/yq.bzl b/lib/private/yq.bzl
+index 29ca3d7..c8cd5eb 100644
+--- a/lib/private/yq.bzl
++++ b/lib/private/yq.bzl
+@@ -71,10 +71,13 @@ def _yq_impl(ctx):
+
+ # For split operations, yq outputs files in the same directory so we
+ # must cd to the correct output dir before executing it
+- bin_dir = "/".join([ctx.bin_dir.path, ctx.label.package]) if ctx.label.package else ctx.bin_dir.path
++ bin_dir = ctx.bin_dir.path
++ if ctx.label.workspace_name:
++ bin_dir = "%s/external/%s" % (bin_dir, ctx.label.workspace_name)
++ bin_dir = "/".join([bin_dir, ctx.label.package]) if ctx.label.package else bin_dir
+ escape_bin_dir = _escape_path(bin_dir)
+ cmd = "cd {bin_dir} && {yq} {args} {eval_cmd} {expression} {sources} {maybe_out}".format(
+- bin_dir = ctx.bin_dir.path + "/" + ctx.label.package,
++ bin_dir = bin_dir,
+ yq = escape_bin_dir + yq_bin.path,
+ eval_cmd = "eval" if len(inputs) <= 1 else "eval-all",
+ args = " ".join(args),
diff --git a/bazel/dependency_imports.bzl b/bazel/dependency_imports.bzl
index b743a1936d0d..2bd87a371771 100644
--- a/bazel/dependency_imports.bzl
+++ b/bazel/dependency_imports.bzl
@@ -18,9 +18,9 @@ load("@com_google_cel_cpp//bazel:deps.bzl", "parser_deps")
load("@com_github_chrusty_protoc_gen_jsonschema//:deps.bzl", protoc_gen_jsonschema_go_dependencies = "go_dependencies")
# go version for rules_go
-GO_VERSION = "1.18"
+GO_VERSION = "1.20"
-JQ_VERSION = "1.6"
+JQ_VERSION = "1.7"
YQ_VERSION = "4.24.4"
def envoy_dependency_imports(go_version = GO_VERSION, jq_version = JQ_VERSION, yq_version = YQ_VERSION):
@@ -125,7 +125,7 @@ def envoy_dependency_imports(go_version = GO_VERSION, jq_version = JQ_VERSION, y
# source = "https://github.com/bufbuild/protoc-gen-validate/blob/v0.6.1/dependencies.bzl#L60-L65"
)
go_repository(
- name = "com_github_lyft_protoc_gen_star",
+ name = "com_github_lyft_protoc_gen_star_v2",
importpath = "github.com/lyft/protoc-gen-star/v2",
sum = "h1:keaAo8hRuAT0O3DfJ/wM3rufbAjGeJ1lAtWZHDjKGB0=",
version = "v2.0.1",
diff --git a/bazel/engflow-bazel-credential-helper.sh b/bazel/engflow-bazel-credential-helper.sh
new file mode 100755
index 000000000000..c6c1bd339b62
--- /dev/null
+++ b/bazel/engflow-bazel-credential-helper.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+# Bazel expects the helper to read stdin.
+# See https://github.com/bazelbuild/bazel/pull/17666
+cat /dev/stdin > /dev/null
+
+# `GITHUB_TOKEN` is provided as a secret.
+echo "{\"headers\":{\"Authorization\":[\"Bearer ${GITHUB_TOKEN}\"]}}"
diff --git a/bazel/envoy_build_system.bzl b/bazel/envoy_build_system.bzl
index 9063c97b5b10..93910375b755 100644
--- a/bazel/envoy_build_system.bzl
+++ b/bazel/envoy_build_system.bzl
@@ -28,8 +28,7 @@ load(
_envoy_select_enable_http_datagrams = "envoy_select_enable_http_datagrams",
_envoy_select_enable_yaml = "envoy_select_enable_yaml",
_envoy_select_envoy_mobile_listener = "envoy_select_envoy_mobile_listener",
- _envoy_select_envoy_mobile_request_compression = "envoy_select_envoy_mobile_request_compression",
- _envoy_select_envoy_mobile_stats_reporting = "envoy_select_envoy_mobile_stats_reporting",
+ _envoy_select_envoy_mobile_xds = "envoy_select_envoy_mobile_xds",
_envoy_select_google_grpc = "envoy_select_google_grpc",
_envoy_select_hot_restart = "envoy_select_hot_restart",
_envoy_select_signal_trace = "envoy_select_signal_trace",
@@ -62,7 +61,6 @@ load(
"@envoy_build_config//:extensions_build_config.bzl",
"CONTRIB_EXTENSION_PACKAGE_VISIBILITY",
"EXTENSION_PACKAGE_VISIBILITY",
- "MOBILE_PACKAGE_VISIBILITY",
)
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
@@ -82,10 +80,8 @@ def envoy_extension_package(enabled_default = True, default_visibility = EXTENSI
flag_values = {":enabled": "True"},
)
-def envoy_mobile_package():
- # Mobile packages should only be visible to other mobile packages, not any other
- # parts of the Envoy codebase.
- envoy_extension_package(default_visibility = MOBILE_PACKAGE_VISIBILITY)
+def envoy_mobile_package(default_visibility = ["//visibility:public"]):
+ envoy_extension_package(default_visibility = default_visibility)
def envoy_contrib_package():
envoy_extension_package(default_visibility = CONTRIB_EXTENSION_PACKAGE_VISIBILITY)
@@ -237,9 +233,8 @@ envoy_select_admin_html = _envoy_select_admin_html
envoy_select_admin_no_html = _envoy_select_admin_no_html
envoy_select_admin_functionality = _envoy_select_admin_functionality
envoy_select_static_extension_registration = _envoy_select_static_extension_registration
-envoy_select_envoy_mobile_request_compression = _envoy_select_envoy_mobile_request_compression
-envoy_select_envoy_mobile_stats_reporting = _envoy_select_envoy_mobile_stats_reporting
envoy_select_envoy_mobile_listener = _envoy_select_envoy_mobile_listener
+envoy_select_envoy_mobile_xds = _envoy_select_envoy_mobile_xds
envoy_select_boringssl = _envoy_select_boringssl
envoy_select_disable_logging = _envoy_select_disable_logging
envoy_select_google_grpc = _envoy_select_google_grpc
diff --git a/bazel/envoy_mobile_defines.bzl b/bazel/envoy_mobile_defines.bzl
index 9c2ef5671719..07f5be337178 100644
--- a/bazel/envoy_mobile_defines.bzl
+++ b/bazel/envoy_mobile_defines.bzl
@@ -8,8 +8,7 @@ load(
"envoy_select_enable_http_datagrams",
"envoy_select_enable_yaml",
"envoy_select_envoy_mobile_listener",
- "envoy_select_envoy_mobile_request_compression",
- "envoy_select_envoy_mobile_stats_reporting",
+ "envoy_select_envoy_mobile_xds",
"envoy_select_google_grpc",
)
@@ -22,6 +21,5 @@ def envoy_mobile_defines(repository):
envoy_select_disable_exceptions(["ENVOY_DISABLE_EXCEPTIONS"], repository) + \
envoy_select_enable_http_datagrams(["ENVOY_ENABLE_HTTP_DATAGRAMS"], repository) + \
envoy_select_envoy_mobile_listener(["ENVOY_MOBILE_ENABLE_LISTENER"], repository) + \
- envoy_select_envoy_mobile_stats_reporting(["ENVOY_MOBILE_STATS_REPORTING"], repository) + \
- envoy_select_envoy_mobile_request_compression(["ENVOY_MOBILE_REQUEST_COMPRESSION"], repository) + \
+ envoy_select_envoy_mobile_xds(["ENVOY_MOBILE_XDS"], repository) + \
envoy_select_google_grpc(["ENVOY_GOOGLE_GRPC"], repository)
diff --git a/bazel/envoy_select.bzl b/bazel/envoy_select.bzl
index 6138ef9aa1dd..87d5c71eefa2 100644
--- a/bazel/envoy_select.bzl
+++ b/bazel/envoy_select.bzl
@@ -59,24 +59,17 @@ def envoy_select_static_extension_registration(xs, repository = ""):
"//conditions:default": xs,
})
-# Selects the given values if Envoy Mobile request compression is enabled in the current build.
-def envoy_select_envoy_mobile_request_compression(xs, repository = ""):
- return select({
- repository + "//bazel:disable_envoy_mobile_request_compression": [],
- "//conditions:default": xs,
- })
-
-# Selects the given values if Envoy Mobile stats reporting is enabled in the current build.
-def envoy_select_envoy_mobile_stats_reporting(xs, repository = ""):
+# Selects the given values if the Envoy Mobile listener is enabled in the current build.
+def envoy_select_envoy_mobile_listener(xs, repository = ""):
return select({
- repository + "//bazel:disable_envoy_mobile_stats_reporting": [],
+ repository + "//bazel:disable_envoy_mobile_listener": [],
"//conditions:default": xs,
})
-# Selects the given values if the Envoy Mobile listener is enabled in the current build.
-def envoy_select_envoy_mobile_listener(xs, repository = ""):
+# Selects the given values if Envoy Mobile xDS is enabled in the current build.
+def envoy_select_envoy_mobile_xds(xs, repository = ""):
return select({
- repository + "//bazel:disable_envoy_mobile_listener": [],
+ repository + "//bazel:disable_envoy_mobile_xds": [],
"//conditions:default": xs,
})
diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD
index 95b2503b0f48..b377dc5ec42a 100644
--- a/bazel/external/quiche.BUILD
+++ b/bazel/external/quiche.BUILD
@@ -6,8 +6,11 @@ load(
)
load(
"@envoy//bazel/external:quiche.bzl",
+ "envoy_quic_cc_library",
+ "envoy_quic_cc_test_library",
"envoy_quiche_platform_impl_cc_library",
"envoy_quiche_platform_impl_cc_test_library",
+ "quiche_copts",
)
load("@rules_proto//proto:defs.bzl", "proto_library")
@@ -38,21 +41,6 @@ src_files = glob([
"**/*.proto",
])
-# These options are only used to suppress errors in brought-in QUICHE tests.
-# Use #pragma GCC diagnostic ignored in integration code to suppress these errors.
-quiche_common_copts = [
- # hpack_huffman_decoder.cc overloads operator<<.
- "-Wno-unused-function",
- "-Wno-old-style-cast",
-]
-
-quiche_copts = select({
- # Ignore unguarded #pragma GCC statements in QUICHE sources
- "@envoy//bazel:windows_x86_64": ["-wd4068"],
- # Remove these after upstream fix.
- "//conditions:default": quiche_common_copts,
-})
-
test_suite(
name = "ci_tests",
tests = [
@@ -75,7 +63,7 @@ test_suite(
"quiche_balsa_header_properties_test",
"quiche_balsa_simple_buffer_test",
"quiche_common_test",
- "spdy_core_http2_header_block_test",
+ "quiche_http_header_block_test",
],
)
@@ -1330,17 +1318,6 @@ envoy_cc_library(
deps = [":quiche_common_platform"],
)
-envoy_cc_library(
- name = "spdy_simple_arena_lib",
- srcs = ["quiche/spdy/core/spdy_simple_arena.cc"],
- hdrs = ["quiche/spdy/core/spdy_simple_arena.h"],
- repository = "@envoy",
- visibility = ["//visibility:public"],
- deps = [
- ":quiche_common_platform",
- ],
-)
-
envoy_cc_library(
name = "spdy_no_op_headers_handler_lib",
hdrs = ["quiche/spdy/core/no_op_headers_handler.h"],
@@ -1396,7 +1373,6 @@ envoy_cc_library(
envoy_cc_library(
name = "spdy_core_http2_header_block_lib",
- srcs = ["quiche/spdy/core/http2_header_block.cc"],
hdrs = ["quiche/spdy/core/http2_header_block.h"],
copts = quiche_copts,
repository = "@envoy",
@@ -1405,19 +1381,7 @@ envoy_cc_library(
":quiche_common_lib",
":quiche_common_platform",
":quiche_common_text_utils_lib",
- ":spdy_core_http2_header_storage_lib",
- ],
-)
-
-envoy_cc_library(
- name = "spdy_core_http2_header_storage_lib",
- srcs = ["quiche/spdy/core/http2_header_storage.cc"],
- hdrs = ["quiche/spdy/core/http2_header_storage.h"],
- copts = quiche_copts,
- repository = "@envoy",
- deps = [
- "spdy_simple_arena_lib",
- ":quiche_common_platform",
+ ":quiche_http_header_block_lib",
],
)
@@ -1894,13 +1858,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_alarm_lib",
srcs = ["quiche/quic/core/quic_alarm.cc"],
hdrs = ["quiche/quic/core/quic_alarm.h"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_arena_scoped_ptr_lib",
":quic_core_connection_context_lib",
@@ -1908,12 +1869,9 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_alarm_factory_lib",
hdrs = ["quiche/quic/core/quic_alarm_factory.h"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_alarm_lib",
":quic_core_one_block_arena_lib",
@@ -2055,24 +2013,20 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_blocked_writer_interface_lib",
hdrs = ["quiche/quic/core/quic_blocked_writer_interface.h"],
- repository = "@envoy",
tags = ["nofips"],
deps = [":quic_platform_export"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_arena_scoped_ptr_lib",
hdrs = ["quiche/quic/core/quic_arena_scoped_ptr.h"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [":quic_platform_base"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_chaos_protector_lib",
srcs = [
"quiche/quic/core/quic_chaos_protector.cc",
@@ -2080,8 +2034,6 @@ envoy_cc_library(
hdrs = [
"quiche/quic/core/quic_chaos_protector.h",
],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_crypto_random_lib",
":quic_core_data_lib",
@@ -2094,13 +2046,9 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_clock_lib",
hdrs = ["quiche/quic/core/quic_clock.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_time_lib",
":quic_platform_base",
@@ -2118,14 +2066,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_config_lib",
srcs = ["quiche/quic/core/quic_config.cc"],
hdrs = ["quiche/quic/core/quic_config.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_constants_lib",
":quic_core_crypto_crypto_handshake_lib",
@@ -2138,13 +2082,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_bandwidth_sampler_lib",
srcs = ["quiche/quic/core/congestion_control/bandwidth_sampler.cc"],
hdrs = ["quiche/quic/core/congestion_control/bandwidth_sampler.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_congestion_control_congestion_control_interface_lib",
@@ -2157,14 +2098,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_bbr_lib",
srcs = ["quiche/quic/core/congestion_control/bbr_sender.cc"],
hdrs = ["quiche/quic/core/congestion_control/bbr_sender.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_congestion_control_bandwidth_sampler_lib",
@@ -2180,7 +2117,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_bbr2_lib",
srcs = [
"quiche/quic/core/congestion_control/bbr2_drain.cc",
@@ -2198,9 +2135,6 @@ envoy_cc_library(
"quiche/quic/core/congestion_control/bbr2_sender.h",
"quiche/quic/core/congestion_control/bbr2_startup.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_congestion_control_bandwidth_sampler_lib",
@@ -2216,13 +2150,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_general_loss_algorithm_lib",
srcs = ["quiche/quic/core/congestion_control/general_loss_algorithm.cc"],
hdrs = ["quiche/quic/core/congestion_control/general_loss_algorithm.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_congestion_control_congestion_control_interface_lib",
":quic_core_congestion_control_rtt_stats_lib",
@@ -2233,15 +2164,12 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_congestion_control_interface_lib",
hdrs = [
"quiche/quic/core/congestion_control/loss_detection_interface.h",
"quiche/quic/core/congestion_control/send_algorithm_interface.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_clock_lib",
@@ -2256,7 +2184,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_congestion_control_lib",
srcs = [
"quiche/quic/core/congestion_control/send_algorithm_interface.cc",
@@ -2265,9 +2193,6 @@ envoy_cc_library(
"quiche/quic/core/congestion_control/loss_detection_interface.h",
"quiche/quic/core/congestion_control/send_algorithm_interface.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_config_lib",
@@ -2284,13 +2209,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_pacing_sender_lib",
srcs = ["quiche/quic/core/congestion_control/pacing_sender.cc"],
hdrs = ["quiche/quic/core/congestion_control/pacing_sender.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_config_lib",
@@ -2301,13 +2223,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_rtt_stats_lib",
srcs = ["quiche/quic/core/congestion_control/rtt_stats.cc"],
hdrs = ["quiche/quic/core/congestion_control/rtt_stats.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_packets_lib",
":quic_core_time_lib",
@@ -2315,7 +2234,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_tcp_cubic_helper",
srcs = [
"quiche/quic/core/congestion_control/hybrid_slow_start.cc",
@@ -2325,9 +2244,6 @@ envoy_cc_library(
"quiche/quic/core/congestion_control/hybrid_slow_start.h",
"quiche/quic/core/congestion_control/prr_sender.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_packets_lib",
@@ -2337,7 +2253,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_tcp_cubic_bytes_lib",
srcs = [
"quiche/quic/core/congestion_control/cubic_bytes.cc",
@@ -2347,9 +2263,6 @@ envoy_cc_library(
"quiche/quic/core/congestion_control/cubic_bytes.h",
"quiche/quic/core/congestion_control/tcp_cubic_sender_bytes.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_congestion_control_congestion_control_interface_lib",
@@ -2364,26 +2277,20 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_uber_loss_algorithm_lib",
srcs = ["quiche/quic/core/congestion_control/uber_loss_algorithm.cc"],
hdrs = ["quiche/quic/core/congestion_control/uber_loss_algorithm.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_core_congestion_control_general_loss_algorithm_lib"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_congestion_control_windowed_filter_lib",
hdrs = ["quiche/quic/core/congestion_control/windowed_filter.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_core_time_lib"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_connection_context_lib",
srcs = [
"quiche/quic/core/quic_connection_context.cc",
@@ -2391,12 +2298,9 @@ envoy_cc_library(
hdrs = [
"quiche/quic/core/quic_connection_context.h",
],
- copts = quiche_copts,
external_deps = [
"abseil_str_format",
],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_platform_export",
":quiche_common_platform",
@@ -2404,13 +2308,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_connection_id_manager",
srcs = ["quiche/quic/core/quic_connection_id_manager.cc"],
hdrs = ["quiche/quic/core/quic_connection_id_manager.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_alarm_factory_lib",
":quic_core_alarm_lib",
@@ -2424,27 +2325,19 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_connection_id_generator_interface_lib",
hdrs = ["quiche/quic/core/connection_id_generator.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_types_lib",
":quic_core_versions_lib",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_deterministic_connection_id_generator_lib",
srcs = ["quiche/quic/core/deterministic_connection_id_generator.cc"],
hdrs = ["quiche/quic/core/deterministic_connection_id_generator.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_connection_id_generator_interface_lib",
":quic_core_utils_lib",
@@ -2452,14 +2345,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_connection_lib",
srcs = ["quiche/quic/core/quic_connection.cc"],
hdrs = ["quiche/quic/core/quic_connection.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_alarm_factory_lib",
":quic_core_alarm_lib",
@@ -2492,13 +2381,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_connection_stats_lib",
srcs = ["quiche/quic/core/quic_connection_stats.cc"],
hdrs = ["quiche/quic/core/quic_connection_stats.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_packets_lib",
@@ -2542,7 +2428,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_crypto_crypto_handshake_lib",
srcs = [
"quiche/quic/core/crypto/cert_compressor.cc",
@@ -2574,17 +2460,13 @@ envoy_cc_library(
"quiche/quic/core/crypto/quic_compressed_certs_cache.h",
"quiche/quic/core/crypto/transport_parameters.h",
],
- copts = quiche_copts,
external_deps = [
"ssl",
"zlib",
],
- repository = "@envoy",
tags = [
- "nofips",
"pg3",
],
- visibility = ["//visibility:public"],
deps = [
":quic_core_clock_lib",
":quic_core_connection_context_lib",
@@ -2610,7 +2492,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_client_crypto_crypto_handshake_lib",
srcs = [
"quiche/quic/core/crypto/quic_client_session_cache.cc",
@@ -2620,17 +2502,12 @@ envoy_cc_library(
"quiche/quic/core/crypto/quic_client_session_cache.h",
"quiche/quic/core/crypto/quic_crypto_client_config.h",
],
- copts = quiche_copts,
external_deps = [
- "ssl",
"zlib",
],
- repository = "@envoy",
tags = [
- "nofips",
"pg3",
],
- visibility = ["//visibility:public"],
deps = [
":quic_client_crypto_tls_handshake_lib",
":quic_core_crypto_client_proof_source_lib",
@@ -2639,7 +2516,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_server_crypto_crypto_handshake_lib",
srcs = [
"quiche/quic/core/crypto/quic_crypto_server_config.cc",
@@ -2647,17 +2524,13 @@ envoy_cc_library(
hdrs = [
"quiche/quic/core/crypto/quic_crypto_server_config.h",
],
- copts = quiche_copts,
external_deps = [
"ssl",
"zlib",
],
- repository = "@envoy",
tags = [
- "nofips",
"pg3",
],
- visibility = ["//visibility:public"],
deps = [
":quic_core_crypto_crypto_handshake_lib",
":quic_core_proto_crypto_server_config_proto_header",
@@ -2666,28 +2539,21 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_crypto_boring_utils_lib",
hdrs = ["quiche/quic/core/crypto/boring_utils.h"],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_platform_export",
":quiche_common_platform",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_crypto_certificate_view_lib",
srcs = ["quiche/quic/core/crypto/certificate_view.cc"],
hdrs = ["quiche/quic/core/crypto/certificate_view.h"],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_crypto_boring_utils_lib",
":quic_core_types_lib",
@@ -2698,7 +2564,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_crypto_encryption_lib",
srcs = [
"quiche/quic/core/crypto/aead_base_decrypter.cc",
@@ -2747,11 +2613,7 @@ envoy_cc_library(
"quiche/quic/core/crypto/quic_decrypter.h",
"quiche/quic/core/crypto/quic_encrypter.h",
],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_crypto_hkdf_lib",
":quic_core_data_lib",
@@ -2764,19 +2626,16 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_crypto_hkdf_lib",
srcs = ["quiche/quic/core/crypto/quic_hkdf.cc"],
hdrs = ["quiche/quic/core/crypto/quic_hkdf.h"],
- external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_platform_base",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_crypto_proof_source_lib",
srcs = [
"quiche/quic/core/crypto/proof_source.cc",
@@ -2786,10 +2645,6 @@ envoy_cc_library(
"quiche/quic/core/crypto/proof_source.h",
"quiche/quic/core/crypto/quic_crypto_proof.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_crypto_certificate_view_lib",
":quic_core_packets_lib",
@@ -2799,18 +2654,14 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_crypto_proof_source_x509_lib",
srcs = ["quiche/quic/core/crypto/proof_source_x509.cc"],
hdrs = ["quiche/quic/core/crypto/proof_source_x509.h"],
- copts = quiche_copts,
external_deps = [
"ssl",
"abseil_node_hash_map",
],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_crypto_certificate_view_lib",
":quic_core_crypto_crypto_handshake_lib",
@@ -2823,7 +2674,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_crypto_client_proof_source_lib",
srcs = [
"quiche/quic/core/crypto/client_proof_source.cc",
@@ -2831,10 +2682,6 @@ envoy_cc_library(
hdrs = [
"quiche/quic/core/crypto/client_proof_source.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_crypto_proof_source_lib",
":quic_platform_base",
@@ -2852,7 +2699,7 @@ envoy_cc_library(
deps = [":quiche_common_random_lib"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_crypto_tls_handshake_lib",
srcs = [
"quiche/quic/core/crypto/tls_connection.cc",
@@ -2860,10 +2707,7 @@ envoy_cc_library(
hdrs = [
"quiche/quic/core/crypto/tls_connection.h",
],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_crypto_proof_source_lib",
":quic_core_types_lib",
@@ -2871,7 +2715,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_server_crypto_tls_handshake_lib",
srcs = [
"quiche/quic/core/crypto/tls_server_connection.cc",
@@ -2879,10 +2723,7 @@ envoy_cc_library(
hdrs = [
"quiche/quic/core/crypto/tls_server_connection.h",
],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_crypto_proof_source_lib",
":quic_core_crypto_tls_handshake_lib",
@@ -2891,7 +2732,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_client_crypto_tls_handshake_lib",
srcs = [
"quiche/quic/core/crypto/tls_client_connection.cc",
@@ -2899,10 +2740,7 @@ envoy_cc_library(
hdrs = [
"quiche/quic/core/crypto/tls_client_connection.h",
],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_crypto_tls_handshake_lib",
],
@@ -2926,7 +2764,6 @@ envoy_cc_library(
":quiche_common_platform_iovec",
":quiche_common_platform_logging",
":quiche_common_platform_prefetch",
- "@envoy//source/common/quic/platform:quiche_logging_impl_lib",
],
)
@@ -2988,6 +2825,7 @@ envoy_cc_library(
copts = quiche_copts,
repository = "@envoy",
tags = ["nofips"],
+ visibility = ["//visibility:public"],
deps = [
":quiche_common_platform_export",
"@com_google_absl//absl/functional:any_invocable",
@@ -2995,7 +2833,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_data_lib",
srcs = [
"quiche/quic/core/quic_data_reader.cc",
@@ -3005,10 +2843,6 @@ envoy_cc_library(
"quiche/quic/core/quic_data_reader.h",
"quiche/quic/core/quic_data_writer.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_constants_lib",
":quic_core_crypto_random_lib",
@@ -3051,13 +2885,10 @@ envoy_cc_library(
visibility = ["//visibility:public"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_framer_lib",
srcs = ["quiche/quic/core/quic_framer.cc"],
hdrs = ["quiche/quic/core/quic_framer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_connection_id_generator_interface_lib",
":quic_core_constants_lib",
@@ -3153,12 +2984,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_http_constants_lib",
srcs = ["quiche/quic/core/http/http_constants.cc"],
hdrs = ["quiche/quic/core/http/http_constants.h"],
- copts = quiche_copts,
- repository = "@envoy",
deps = [":quic_core_types_lib"],
)
@@ -3168,12 +2997,14 @@ envoy_cc_library(
hdrs = ["quiche/common/capsule.h"],
copts = quiche_copts,
repository = "@envoy",
+ visibility = ["//visibility:public"],
deps = [
":quic_core_data_lib",
":quic_core_http_http_frames_lib",
":quic_core_types_lib",
":quic_platform_base",
":quiche_common_buffer_allocator_lib",
+ ":quiche_common_ip_address",
":quiche_common_wire_serialization",
":quiche_web_transport_web_transport_lib",
],
@@ -3187,7 +3018,7 @@ envoy_cc_library(
repository = "@envoy",
visibility = ["//visibility:public"],
deps = [
- ":quic_core_data_lib",
+ ":quiche_common_lib",
":quiche_common_platform_bug_tracker",
":quiche_common_platform_logging",
"@com_google_absl//absl/strings",
@@ -3207,26 +3038,18 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_client_lib",
srcs = [
- "quiche/quic/core/http/quic_client_promised_info.cc",
- "quiche/quic/core/http/quic_client_push_promise_index.cc",
"quiche/quic/core/http/quic_spdy_client_session.cc",
"quiche/quic/core/http/quic_spdy_client_session_base.cc",
"quiche/quic/core/http/quic_spdy_client_stream.cc",
],
hdrs = [
- "quiche/quic/core/http/quic_client_promised_info.h",
- "quiche/quic/core/http/quic_client_push_promise_index.h",
"quiche/quic/core/http/quic_spdy_client_session.h",
"quiche/quic/core/http/quic_spdy_client_session_base.h",
"quiche/quic/core/http/quic_spdy_client_stream.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_client_session_lib",
":quic_core_alarm_lib",
@@ -3241,18 +3064,13 @@ envoy_cc_library(
":quic_platform_base",
":spdy_core_framer_lib",
":spdy_core_protocol_lib",
- "@envoy//source/common/quic:spdy_server_push_utils_for_envoy_lib",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_header_list_lib",
srcs = ["quiche/quic/core/http/quic_header_list.cc"],
hdrs = ["quiche/quic/core/http/quic_header_list.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_packets_lib",
":quic_core_qpack_qpack_header_table_lib",
@@ -3264,13 +3082,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_http_decoder_lib",
srcs = ["quiche/quic/core/http/http_decoder.cc"],
hdrs = ["quiche/quic/core/http/http_decoder.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":http2_constants_lib",
":quic_core_data_lib",
@@ -3282,13 +3097,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_http_encoder_lib",
srcs = ["quiche/quic/core/http/http_encoder.cc"],
hdrs = ["quiche/quic/core/http/http_encoder.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_data_lib",
":quic_core_error_codes_lib",
@@ -3298,12 +3110,9 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_http_frames_lib",
hdrs = ["quiche/quic/core/http/http_frames.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_http_http_constants_lib",
":quic_core_types_lib",
@@ -3312,33 +3121,17 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_server_initiated_spdy_stream_lib",
srcs = ["quiche/quic/core/http/quic_server_initiated_spdy_stream.cc"],
hdrs = ["quiche/quic/core/http/quic_server_initiated_spdy_stream.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_http_spdy_session_lib",
":quic_core_types_lib",
],
)
-envoy_cc_library(
- name = "quic_core_http_spdy_server_push_utils_header",
- hdrs = ["quiche/quic/core/http/spdy_server_push_utils.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
- deps = [
- ":quic_platform_base",
- ":spdy_core_http2_header_block_lib",
- ],
-)
-
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_spdy_session_lib",
srcs = [
"quiche/quic/core/http/quic_headers_stream.cc",
@@ -3360,10 +3153,6 @@ envoy_cc_library(
"quiche/quic/core/http/web_transport_stream_adapter.h",
"quiche/quic/core/web_transport_stats.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_connection_lib",
":quic_core_crypto_crypto_handshake_lib",
@@ -3395,7 +3184,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_server_http_spdy_session_lib",
srcs = [
"quiche/quic/core/http/quic_server_session_base.cc",
@@ -3405,23 +3194,16 @@ envoy_cc_library(
"quiche/quic/core/http/quic_server_session_base.h",
"quiche/quic/core/http/quic_spdy_server_stream_base.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_http_spdy_session_lib",
":quic_server_session_lib",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_spdy_stream_body_manager_lib",
srcs = ["quiche/quic/core/http/quic_spdy_stream_body_manager.cc"],
hdrs = ["quiche/quic/core/http/quic_spdy_stream_body_manager.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_http_http_decoder_lib",
":quic_core_session_lib",
@@ -3429,13 +3211,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_http_spdy_utils_lib",
srcs = ["quiche/quic/core/http/spdy_utils.cc"],
hdrs = ["quiche/quic/core/http/spdy_utils.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_http_header_list_lib",
":quic_core_http_http_constants_lib",
@@ -3446,13 +3225,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_idle_network_detector_lib",
srcs = ["quiche/quic/core/quic_idle_network_detector.cc"],
hdrs = ["quiche/quic/core/quic_idle_network_detector.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_alarm_factory_lib",
":quic_core_alarm_lib",
@@ -3475,12 +3251,9 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_interval_deque_lib",
hdrs = ["quiche/quic/core/quic_interval_deque.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_interval_lib",
":quic_core_types_lib",
@@ -3507,17 +3280,22 @@ envoy_cc_library(
name = "quic_core_io_event_loop",
hdrs = select({
"@envoy//bazel:windows_x86_64": [],
+ "@envoy//bazel:disable_http3": [],
"//conditions:default": ["quiche/quic/core/io/quic_event_loop.h"],
}),
copts = quiche_copts,
repository = "@envoy",
tags = ["nofips"],
- deps = [
- ":quic_core_alarm_factory_lib",
- ":quic_core_clock_lib",
- ":quic_core_udp_socket_lib",
- "@com_google_absl//absl/base:core_headers",
- ],
+ deps = select({
+ "@envoy//bazel:windows_x86_64": [],
+ "@envoy//bazel:disable_http3": [],
+ "//conditions:default": [
+ ":quic_core_alarm_factory_lib",
+ ":quic_core_clock_lib",
+ ":quic_core_udp_socket_lib",
+ "@com_google_absl//absl/base:core_headers",
+ ],
+ }),
)
envoy_cc_library(
@@ -3554,6 +3332,7 @@ envoy_cc_library(
name = "quic_core_io_event_loop_socket_factory_lib",
srcs = select({
"@envoy//bazel:windows_x86_64": [],
+ "@envoy//bazel:disable_http3": [],
"//conditions:default": [
"quiche/quic/core/io/event_loop_connecting_client_socket.cc",
"quiche/quic/core/io/event_loop_socket_factory.cc",
@@ -3561,6 +3340,7 @@ envoy_cc_library(
}),
hdrs = select({
"@envoy//bazel:windows_x86_64": [],
+ "@envoy//bazel:disable_http3": [],
"//conditions:default": [
"quiche/quic/core/io/event_loop_connecting_client_socket.h",
"quiche/quic/core/io/event_loop_socket_factory.h",
@@ -3569,46 +3349,43 @@ envoy_cc_library(
copts = quiche_copts,
repository = "@envoy",
tags = ["nofips"],
- deps = [
- ":quic_core_io_event_loop",
- ":quic_core_io_socket_lib",
- ":quic_core_types_lib",
- ":quic_platform_socket_address",
- ":quiche_common_buffer_allocator_lib",
- ":quiche_common_platform",
- "@com_google_absl//absl/status:statusor",
- "@com_google_absl//absl/strings",
- "@com_google_absl//absl/types:optional",
- "@com_google_absl//absl/types:span",
- "@com_google_absl//absl/types:variant",
- ],
+ deps = select({
+ "@envoy//bazel:windows_x86_64": [],
+ "@envoy//bazel:disable_http3": [],
+ "//conditions:default": [
+ ":quic_core_io_event_loop",
+ ":quic_core_io_socket_lib",
+ ":quic_core_types_lib",
+ ":quic_platform_socket_address",
+ ":quiche_common_buffer_allocator_lib",
+ ":quiche_common_platform",
+ "@com_google_absl//absl/status:statusor",
+ "@com_google_absl//absl/strings",
+ "@com_google_absl//absl/types:optional",
+ "@com_google_absl//absl/types:span",
+ "@com_google_absl//absl/types:variant",
+ ],
+ }),
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_lru_cache_lib",
hdrs = ["quiche/quic/core/quic_lru_cache.h"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_platform_base"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_mtu_discovery_lib",
srcs = ["quiche/quic/core/quic_mtu_discovery.cc"],
hdrs = ["quiche/quic/core/quic_mtu_discovery.h"],
- copts = quiche_copts,
- repository = "@envoy",
deps = [
":quic_core_constants_lib",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_one_block_arena_lib",
srcs = ["quiche/quic/core/quic_one_block_arena.h"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_arena_scoped_ptr_lib",
":quic_core_types_lib",
@@ -3656,13 +3433,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_network_blackhole_detector_lib",
srcs = ["quiche/quic/core/quic_network_blackhole_detector.cc"],
hdrs = ["quiche/quic/core/quic_network_blackhole_detector.h"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_alarm_factory_lib",
":quic_core_alarm_lib",
@@ -3673,13 +3447,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_packet_creator_lib",
srcs = ["quiche/quic/core/quic_packet_creator.cc"],
hdrs = ["quiche/quic/core/quic_packet_creator.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_chaos_protector_lib",
":quic_core_coalesced_packet_lib",
@@ -3697,11 +3468,9 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_packet_number_indexed_queue_lib",
hdrs = ["quiche/quic/core/packet_number_indexed_queue.h"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_constants_lib",
":quic_core_types_lib",
@@ -3758,13 +3527,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_path_validator_lib",
srcs = ["quiche/quic/core/quic_path_validator.cc"],
hdrs = ["quiche/quic/core/quic_path_validator.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_alarm_factory_lib",
":quic_core_alarm_lib",
@@ -3779,13 +3545,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_ping_manager_lib",
srcs = ["quiche/quic/core/quic_ping_manager.cc"],
hdrs = ["quiche/quic/core/quic_ping_manager.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_alarm_factory_lib",
":quic_core_alarm_lib",
@@ -3796,12 +3559,9 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_process_packet_interface_lib",
hdrs = ["quiche/quic/core/quic_process_packet_interface.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_packets_lib",
":quic_platform_base",
@@ -3817,25 +3577,20 @@ envoy_cc_library(
visibility = ["//visibility:public"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_blocking_manager_lib",
srcs = ["quiche/quic/core/qpack/qpack_blocking_manager.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_blocking_manager.h"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_types_lib",
":quic_platform_base",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_decoder_lib",
srcs = ["quiche/quic/core/qpack/qpack_decoder.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_decoder.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_qpack_qpack_decoder_stream_sender_lib",
":quic_core_qpack_qpack_encoder_stream_receiver_lib",
@@ -3846,13 +3601,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_encoder_lib",
srcs = ["quiche/quic/core/qpack/qpack_encoder.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_encoder.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_qpack_blocking_manager_lib",
":quic_core_qpack_qpack_decoder_stream_receiver_lib",
@@ -3868,13 +3620,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_header_table_lib",
srcs = ["quiche/quic/core/qpack/qpack_header_table.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_header_table.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_qpack_qpack_static_table_lib",
":quic_platform_base",
@@ -3883,13 +3632,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_instruction_decoder_lib",
srcs = ["quiche/quic/core/qpack/qpack_instruction_decoder.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_instruction_decoder.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":http2_hpack_huffman_hpack_huffman_decoder_lib",
":http2_hpack_varint_hpack_varint_decoder_lib",
@@ -3898,23 +3644,17 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_instructions_lib",
srcs = ["quiche/quic/core/qpack/qpack_instructions.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_instructions.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_platform_base"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_instruction_encoder_lib",
srcs = ["quiche/quic/core/qpack/qpack_instruction_encoder.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_instruction_encoder.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":http2_hpack_huffman_hpack_huffman_encoder_lib",
":http2_hpack_varint_hpack_varint_encoder_lib",
@@ -3923,13 +3663,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_progressive_decoder_lib",
srcs = ["quiche/quic/core/qpack/qpack_progressive_decoder.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_progressive_decoder.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_qpack_qpack_decoder_stream_sender_lib",
":quic_core_qpack_qpack_encoder_stream_receiver_lib",
@@ -3943,23 +3680,17 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_required_insert_count_lib",
srcs = ["quiche/quic/core/qpack/qpack_required_insert_count.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_required_insert_count.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_platform_base"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_encoder_stream_sender_lib",
srcs = ["quiche/quic/core/qpack/qpack_encoder_stream_sender.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_encoder_stream_sender.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_qpack_qpack_instruction_encoder_lib",
":quic_core_qpack_qpack_instructions_lib",
@@ -3969,13 +3700,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_encoder_stream_receiver_lib",
srcs = ["quiche/quic/core/qpack/qpack_encoder_stream_receiver.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_encoder_stream_receiver.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":http2_decoder_decode_buffer_lib",
":http2_decoder_decode_status_lib",
@@ -3987,13 +3715,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_decoder_stream_sender_lib",
srcs = ["quiche/quic/core/qpack/qpack_decoder_stream_sender.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_decoder_stream_sender.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_qpack_qpack_instruction_encoder_lib",
":quic_core_qpack_qpack_instructions_lib",
@@ -4003,13 +3728,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_decoder_stream_receiver_lib",
srcs = ["quiche/quic/core/qpack/qpack_decoder_stream_receiver.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_decoder_stream_receiver.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":http2_decoder_decode_buffer_lib",
":http2_decoder_decode_status_lib",
@@ -4021,41 +3743,33 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_index_conversions_lib",
srcs = ["quiche/quic/core/qpack/qpack_index_conversions.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_index_conversions.h"],
- copts = quiche_copts,
- repository = "@envoy",
deps = [
":quic_platform_base",
":quic_platform_export",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_static_table_lib",
srcs = ["quiche/quic/core/qpack/qpack_static_table.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_static_table.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_platform_base",
":spdy_core_hpack_hpack_lib",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_stream_receiver_lib",
hdrs = ["quiche/quic/core/qpack/qpack_stream_receiver.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_platform_base"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_streams_lib",
srcs = [
"quiche/quic/core/qpack/qpack_receive_stream.cc",
@@ -4065,8 +3779,6 @@ envoy_cc_library(
"quiche/quic/core/qpack/qpack_receive_stream.h",
"quiche/quic/core/qpack/qpack_send_stream.h",
],
- copts = quiche_copts,
- repository = "@envoy",
deps = [
":quic_core_qpack_qpack_stream_receiver_lib",
":quic_core_qpack_qpack_stream_sender_delegate_lib",
@@ -4074,13 +3786,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_decoded_headers_accumulator_lib",
srcs = ["quiche/quic/core/qpack/qpack_decoded_headers_accumulator.cc"],
hdrs = ["quiche/quic/core/qpack/qpack_decoded_headers_accumulator.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_http_header_list_lib",
":quic_core_qpack_qpack_decoder_lib",
@@ -4090,35 +3799,26 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_value_splitting_header_list_lib",
srcs = ["quiche/quic/core/qpack/value_splitting_header_list.cc"],
hdrs = ["quiche/quic/core/qpack/value_splitting_header_list.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_platform_base",
":spdy_core_http2_header_block_lib",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_qpack_qpack_stream_sender_delegate_lib",
hdrs = ["quiche/quic/core/qpack/qpack_stream_sender_delegate.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_platform_base"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_received_packet_manager_lib",
srcs = ["quiche/quic/core/quic_received_packet_manager.cc"],
hdrs = ["quiche/quic/core/quic_received_packet_manager.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_config_lib",
":quic_core_congestion_control_rtt_stats_lib",
@@ -4130,13 +3830,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_sent_packet_manager_lib",
srcs = ["quiche/quic/core/quic_sent_packet_manager.cc"],
hdrs = ["quiche/quic/core/quic_sent_packet_manager.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_congestion_control_congestion_control_lib",
":quic_core_congestion_control_general_loss_algorithm_lib",
@@ -4157,12 +3854,9 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_web_transport_interface_lib",
hdrs = ["quiche/quic/core/web_transport_interface.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_session_lib",
":quic_core_types_lib",
@@ -4171,19 +3865,17 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_server_id_lib",
srcs = ["quiche/quic/core/quic_server_id.cc"],
hdrs = ["quiche/quic/core/quic_server_id.h"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_platform_base",
- "@com_googlesource_googleurl//url",
+ ":quiche_common_platform_googleurl",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_server_lib",
srcs = [
"quiche/quic/core/chlo_extractor.cc",
@@ -4197,10 +3889,6 @@ envoy_cc_library(
"quiche/quic/core/quic_dispatcher.h",
"quiche/quic/core/tls_chlo_extractor.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_alarm_factory_lib",
":quic_core_alarm_lib",
@@ -4247,7 +3935,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_session_lib",
srcs = [
"quiche/quic/core/legacy_quic_stream_id_manager.cc",
@@ -4281,11 +3969,7 @@ envoy_cc_library(
"quiche/quic/core/tls_handshaker.h",
"quiche/quic/core/uber_quic_stream_id_manager.h",
],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_client_crypto_crypto_handshake_lib",
":quic_core_config_lib",
@@ -4318,7 +4002,7 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_client_session_lib",
srcs = [
"quiche/quic/core/quic_crypto_client_handshaker.cc",
@@ -4330,18 +4014,14 @@ envoy_cc_library(
"quiche/quic/core/quic_crypto_client_stream.h",
"quiche/quic/core/tls_client_handshaker.h",
],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_client_crypto_crypto_handshake_lib",
":quic_core_session_lib",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_server_session_lib",
srcs = [
"quiche/quic/core/quic_crypto_server_stream.cc",
@@ -4353,11 +4033,7 @@ envoy_cc_library(
"quiche/quic/core/quic_crypto_server_stream_base.h",
"quiche/quic/core/tls_server_handshaker.h",
],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_session_lib",
":quic_server_crypto_crypto_handshake_lib",
@@ -4365,45 +4041,35 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_session_notifier_interface_lib",
hdrs = ["quiche/quic/core/session_notifier_interface.h"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_frames_frames_lib",
":quic_core_time_lib",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_socket_address_coder_lib",
srcs = ["quiche/quic/core/quic_socket_address_coder.cc"],
hdrs = ["quiche/quic/core/quic_socket_address_coder.h"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_platform_base",
":quic_platform_socket_address",
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_stream_frame_data_producer_lib",
hdrs = ["quiche/quic/core/quic_stream_frame_data_producer.h"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_core_types_lib"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_stream_send_buffer_lib",
srcs = ["quiche/quic/core/quic_stream_send_buffer.cc"],
hdrs = ["quiche/quic/core/quic_stream_send_buffer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_data_lib",
":quic_core_frames_frames_lib",
@@ -4417,13 +4083,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_stream_sequencer_buffer_lib",
srcs = ["quiche/quic/core/quic_stream_sequencer_buffer.cc"],
hdrs = ["quiche/quic/core/quic_stream_sequencer_buffer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_constants_lib",
":quic_core_interval_lib",
@@ -4434,13 +4097,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_sustained_bandwidth_recorder_lib",
srcs = ["quiche/quic/core/quic_sustained_bandwidth_recorder.cc"],
hdrs = ["quiche/quic/core/quic_sustained_bandwidth_recorder.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_bandwidth_lib",
":quic_core_time_lib",
@@ -4473,22 +4133,16 @@ envoy_cc_library(
deps = [":quic_platform_base"],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_time_accumulator_lib",
hdrs = ["quiche/quic/core/quic_time_accumulator.h"],
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_time_wait_list_manager_lib",
srcs = ["quiche/quic/core/quic_time_wait_list_manager.cc"],
hdrs = ["quiche/quic/core/quic_time_wait_list_manager.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_blocked_writer_interface_lib",
":quic_core_crypto_encryption_lib",
@@ -4503,13 +4157,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_transmission_info_lib",
srcs = ["quiche/quic/core/quic_transmission_info.cc"],
hdrs = ["quiche/quic/core/quic_transmission_info.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_ack_listener_interface_lib",
":quic_core_frames_frames_lib",
@@ -4546,13 +4197,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_uber_received_packet_manager_lib",
srcs = ["quiche/quic/core/uber_received_packet_manager.cc"],
hdrs = ["quiche/quic/core/uber_received_packet_manager.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_received_packet_manager_lib",
":quic_core_utils_lib",
@@ -4590,13 +4238,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_unacked_packet_map_lib",
srcs = ["quiche/quic/core/quic_unacked_packet_map.cc"],
hdrs = ["quiche/quic/core/quic_unacked_packet_map.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_connection_stats_lib",
":quic_core_packets_lib",
@@ -4629,13 +4274,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_core_version_manager_lib",
srcs = ["quiche/quic/core/quic_version_manager.cc"],
hdrs = ["quiche/quic/core/quic_version_manager.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_versions_lib",
":quic_platform_base",
@@ -4660,13 +4302,10 @@ envoy_cc_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_config_peer_lib",
srcs = ["quiche/quic/test_tools/quic_config_peer.cc"],
hdrs = ["quiche/quic/test_tools/quic_config_peer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_config_lib",
":quic_core_packets_lib",
@@ -4674,16 +4313,13 @@ envoy_cc_test_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_connection_id_manager_peer_lib",
hdrs = ["quiche/quic/test_tools/quic_connection_id_manager_peer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_core_connection_id_manager"],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_crypto_server_config_peer_lib",
srcs = [
"quiche/quic/test_tools/quic_crypto_server_config_peer.cc",
@@ -4691,9 +4327,6 @@ envoy_cc_test_library(
hdrs = [
"quiche/quic/test_tools/quic_crypto_server_config_peer.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_crypto_crypto_handshake_lib",
":quic_test_tools_mock_clock_lib",
@@ -4703,7 +4336,7 @@ envoy_cc_test_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_first_flight_lib",
srcs = [
"quiche/quic/test_tools/first_flight.cc",
@@ -4711,9 +4344,6 @@ envoy_cc_test_library(
hdrs = [
"quiche/quic/test_tools/first_flight.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_config_lib",
":quic_core_connection_lib",
@@ -4728,7 +4358,7 @@ envoy_cc_test_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_flow_controller_peer_lib",
srcs = [
"quiche/quic/test_tools/quic_flow_controller_peer.cc",
@@ -4736,22 +4366,16 @@ envoy_cc_library(
hdrs = [
"quiche/quic/test_tools/quic_flow_controller_peer.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_packets_lib",
":quic_core_session_lib",
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_framer_peer_lib",
srcs = ["quiche/quic/test_tools/quic_framer_peer.cc"],
hdrs = ["quiche/quic/test_tools/quic_framer_peer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_crypto_encryption_lib",
":quic_core_framer_lib",
@@ -4760,51 +4384,39 @@ envoy_cc_test_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_interval_deque_peer_lib",
hdrs = ["quiche/quic/test_tools/quic_interval_deque_peer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_interval_deque_lib",
":quic_core_interval_lib",
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_mock_clock_lib",
srcs = ["quiche/quic/test_tools/mock_clock.cc"],
hdrs = ["quiche/quic/test_tools/mock_clock.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_clock_lib",
":quic_core_time_lib",
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_mock_random_lib",
srcs = ["quiche/quic/test_tools/mock_random.cc"],
hdrs = ["quiche/quic/test_tools/mock_random.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_crypto_random_lib",
":quic_platform_test",
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_mock_syscall_wrapper_lib",
srcs = ["quiche/quic/test_tools/quic_mock_syscall_wrapper.cc"],
hdrs = ["quiche/quic/test_tools/quic_mock_syscall_wrapper.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_syscall_wrapper_lib",
":quic_platform_base",
@@ -4812,13 +4424,10 @@ envoy_cc_test_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_qpack_qpack_test_utils_lib",
srcs = ["quiche/quic/test_tools/qpack/qpack_test_utils.cc"],
hdrs = ["quiche/quic/test_tools/qpack/qpack_test_utils.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_qpack_qpack_encoder_lib",
":quic_core_qpack_qpack_stream_sender_delegate_lib",
@@ -4826,13 +4435,10 @@ envoy_cc_test_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_sent_packet_manager_peer_lib",
srcs = ["quiche/quic/test_tools/quic_sent_packet_manager_peer.cc"],
hdrs = ["quiche/quic/test_tools/quic_sent_packet_manager_peer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_congestion_control_congestion_control_interface_lib",
":quic_core_packets_lib",
@@ -4841,27 +4447,21 @@ envoy_cc_test_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_server_session_base_peer",
hdrs = [
"quiche/quic/test_tools/quic_server_session_base_peer.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_utils_lib",
":quic_server_http_spdy_session_lib",
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_simple_quic_framer_lib",
srcs = ["quiche/quic/test_tools/simple_quic_framer.cc"],
hdrs = ["quiche/quic/test_tools/simple_quic_framer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_crypto_encryption_lib",
":quic_core_framer_lib",
@@ -4870,26 +4470,20 @@ envoy_cc_test_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_stream_send_buffer_peer_lib",
srcs = ["quiche/quic/test_tools/quic_stream_send_buffer_peer.cc"],
hdrs = ["quiche/quic/test_tools/quic_stream_send_buffer_peer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_stream_send_buffer_lib",
":quic_test_tools_interval_deque_peer_lib",
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_stream_peer_lib",
srcs = ["quiche/quic/test_tools/quic_stream_peer.cc"],
hdrs = ["quiche/quic/test_tools/quic_stream_peer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_core_packets_lib",
":quic_core_session_lib",
@@ -4900,20 +4494,17 @@ envoy_cc_test_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_test_certificates_lib",
srcs = ["quiche/quic/test_tools/test_certificates.cc"],
hdrs = ["quiche/quic/test_tools/test_certificates.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_platform_base",
":quiche_common_platform",
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_test_utils_lib",
srcs = [
"quiche/quic/test_tools/crypto_test_utils.cc",
@@ -4934,10 +4525,7 @@ envoy_cc_test_library(
"quiche/quic/test_tools/quic_dispatcher_peer.h",
"quiche/quic/test_tools/quic_test_utils.h",
],
- copts = quiche_copts,
external_deps = ["ssl"],
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_client_session_lib",
":quic_core_congestion_control_congestion_control_interface_lib",
@@ -4982,7 +4570,7 @@ envoy_cc_test_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_session_peer_lib",
srcs = [
"quiche/quic/test_tools/quic_session_peer.cc",
@@ -4990,9 +4578,6 @@ envoy_cc_test_library(
hdrs = [
"quiche/quic/test_tools/quic_session_peer.h",
],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [
":quic_client_session_lib",
":quic_core_packets_lib",
@@ -5002,13 +4587,10 @@ envoy_cc_test_library(
],
)
-envoy_cc_test_library(
+envoy_quic_cc_test_library(
name = "quic_test_tools_unacked_packet_map_peer_lib",
srcs = ["quiche/quic/test_tools/quic_unacked_packet_map_peer.cc"],
hdrs = ["quiche/quic/test_tools/quic_unacked_packet_map_peer.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
deps = [":quic_core_unacked_packet_map_lib"],
)
@@ -5059,6 +4641,24 @@ envoy_quiche_platform_impl_cc_test_library(
],
)
+envoy_cc_library(
+ name = "quiche_common_platform_googleurl",
+ hdrs = ["quiche/common/platform/api/quiche_googleurl.h"],
+ repository = "@envoy",
+ tags = ["nofips"],
+ deps = [":quiche_common_platform_default_quiche_platform_impl_googleurl_impl_lib"],
+)
+
+envoy_quiche_platform_impl_cc_library(
+ name = "quiche_common_platform_default_quiche_platform_impl_googleurl_impl_lib",
+ hdrs = [
+ "quiche/common/platform/default/quiche_platform_impl/quiche_googleurl_impl.h",
+ ],
+ deps = [
+ "@com_googlesource_googleurl//url",
+ ],
+)
+
envoy_cc_library(
name = "quiche_common_platform_iovec",
hdrs = [
@@ -5084,8 +4684,15 @@ envoy_cc_library(
visibility = ["//visibility:public"],
deps = [
":quiche_common_platform_export",
- "@envoy//source/common/quic/platform:quiche_logging_impl_lib",
- ],
+ ] + select({
+ "@platforms//os:android": [
+ "@envoy//source/common/quic/platform/mobile_impl:mobile_quiche_bug_tracker_impl_lib",
+ ],
+ "@platforms//os:ios": [
+ "@envoy//source/common/quic/platform/mobile_impl:mobile_quiche_bug_tracker_impl_lib",
+ ],
+ "//conditions:default": ["@envoy//source/common/quic/platform:quiche_logging_impl_lib"],
+ }),
)
envoy_cc_library(
@@ -5098,8 +4705,15 @@ envoy_cc_library(
visibility = ["//visibility:public"],
deps = [
":quiche_common_platform_export",
- "@envoy//source/common/quic/platform:quiche_logging_impl_lib",
- ],
+ ] + select({
+ "@platforms//os:android": [
+ ":quiche_common_mobile_quiche_logging_lib",
+ ],
+ "@platforms//os:ios": [
+ ":quiche_common_mobile_quiche_logging_lib",
+ ],
+ "//conditions:default": ["@envoy//source/common/quic/platform:quiche_logging_impl_lib"],
+ }),
)
envoy_cc_library(
@@ -5126,6 +4740,21 @@ envoy_quiche_platform_impl_cc_library(
],
)
+envoy_quiche_platform_impl_cc_library(
+ name = "quiche_common_mobile_quiche_logging_lib",
+ srcs = [
+ "quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.cc",
+ ],
+ hdrs = [
+ "quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h",
+ ],
+ deps = [
+ "@com_google_absl//absl/flags:flag",
+ "@com_google_absl//absl/log:absl_check",
+ "@com_google_absl//absl/log:absl_log",
+ ],
+)
+
envoy_cc_library(
name = "quiche_common_platform_mutex",
srcs = [
@@ -5170,8 +4799,8 @@ envoy_cc_library(
visibility = ["//visibility:public"],
deps = [
":quiche_common_platform_export",
+ ":quiche_common_platform_googleurl",
":quiche_common_platform_logging",
- "@com_googlesource_googleurl//url",
],
)
@@ -5340,7 +4969,7 @@ envoy_cc_library(
],
)
-# Use the QUICHE default implmentation once the WIN32 compiler error is resolved.
+# Use the QUICHE default implementation once the WIN32 compiler error is resolved.
# envoy_quiche_platform_impl_cc_library(
# name = "quiche_common_platform_default_quiche_platform_impl_export_impl_lib",
# hdrs = [
@@ -5459,9 +5088,9 @@ envoy_cc_test_library(
tags = ["nofips"],
deps = [
":quiche_common_platform",
+ ":quiche_common_platform_googleurl",
":quiche_common_platform_iovec",
":quiche_common_platform_test",
- "@com_googlesource_googleurl//url",
"@envoy//test/common/quic/platform:quiche_test_helpers_impl_lib",
"@envoy//test/common/quic/platform:quiche_test_impl_lib",
],
@@ -5502,6 +5131,58 @@ envoy_cc_library(
],
)
+envoy_cc_library(
+ name = "quiche_simple_arena_lib",
+ srcs = ["quiche/common/quiche_simple_arena.cc"],
+ hdrs = ["quiche/common/quiche_simple_arena.h"],
+ repository = "@envoy",
+ tags = ["nofips"],
+ deps = [
+ ":quiche_common_platform_export",
+ ":quiche_common_platform_logging",
+ ],
+)
+
+envoy_cc_library(
+ name = "quiche_http_header_storage_lib",
+ srcs = ["quiche/common/http/http_header_storage.cc"],
+ hdrs = ["quiche/common/http/http_header_storage.h"],
+ repository = "@envoy",
+ tags = ["nofips"],
+ deps = [
+ ":quiche_common_platform_export",
+ ":quiche_common_platform_logging",
+ ":quiche_simple_arena_lib",
+ ],
+)
+
+envoy_cc_library(
+ name = "quiche_http_header_block_lib",
+ srcs = ["quiche/common/http/http_header_block.cc"],
+ hdrs = ["quiche/common/http/http_header_block.h"],
+ repository = "@envoy",
+ tags = ["nofips"],
+ deps = [
+ ":quiche_common_lib",
+ ":quiche_common_platform_export",
+ ":quiche_common_platform_logging",
+ ":quiche_common_text_utils_lib",
+ ":quiche_http_header_storage_lib",
+ ],
+)
+
+envoy_cc_test(
+ name = "quiche_http_header_block_test",
+ srcs = ["quiche/common/http/http_header_block_test.cc"],
+ repository = "@envoy",
+ tags = ["nofips"],
+ deps = [
+ ":quiche_common_platform_test",
+ ":quiche_http_header_block_lib",
+ ":spdy_test_tools_test_utils_lib",
+ ],
+)
+
envoy_cc_library(
name = "quiche_common_structured_headers_lib",
srcs = ["quiche/common/structured_headers.cc"],
@@ -5566,19 +5247,6 @@ envoy_cc_library(
],
)
-envoy_cc_test(
- name = "spdy_core_http2_header_block_test",
- srcs = ["quiche/spdy/core/http2_header_block_test.cc"],
- copts = quiche_copts,
- coverage = False,
- repository = "@envoy",
- tags = ["nofips"],
- deps = [
- ":spdy_core_http2_header_block_lib",
- ":spdy_test_tools_test_utils_lib",
- ],
-)
-
envoy_cc_test(
name = "quic_core_batch_writer_batch_writer_test",
srcs = select({
@@ -5611,14 +5279,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_load_balancer_config_lib",
srcs = ["quiche/quic/load_balancer/load_balancer_config.cc"],
hdrs = ["quiche/quic/load_balancer/load_balancer_config.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_types_lib",
":quic_load_balancer_server_id_lib",
@@ -5627,14 +5291,10 @@ envoy_cc_library(
],
)
-envoy_cc_library(
+envoy_quic_cc_library(
name = "quic_load_balancer_encoder_lib",
srcs = ["quiche/quic/load_balancer/load_balancer_encoder.cc"],
hdrs = ["quiche/quic/load_balancer/load_balancer_encoder.h"],
- copts = quiche_copts,
- repository = "@envoy",
- tags = ["nofips"],
- visibility = ["//visibility:public"],
deps = [
":quic_core_connection_id_generator_interface_lib",
":quic_core_crypto_random_lib",
diff --git a/bazel/external/quiche.bzl b/bazel/external/quiche.bzl
index b3f18a8467d0..0868fb0eb887 100644
--- a/bazel/external/quiche.bzl
+++ b/bazel/external/quiche.bzl
@@ -3,6 +3,22 @@ load(
"envoy_cc_library",
"envoy_cc_test_library",
)
+load("@envoy//bazel:envoy_select.bzl", "envoy_select_enable_http3")
+
+# These options are only used to suppress errors in brought-in QUICHE tests.
+# Use #pragma GCC diagnostic ignored in integration code to suppress these errors.
+quiche_common_copts = [
+ # hpack_huffman_decoder.cc overloads operator<<.
+ "-Wno-unused-function",
+ "-Wno-old-style-cast",
+]
+
+quiche_copts = select({
+ # Ignore unguarded #pragma GCC statements in QUICHE sources
+ "@envoy//bazel:windows_x86_64": ["-wd4068"],
+ # Remove these after upstream fix.
+ "//conditions:default": quiche_common_copts,
+})
def envoy_quiche_platform_impl_cc_library(
name,
@@ -34,3 +50,43 @@ def envoy_quiche_platform_impl_cc_test_library(
strip_include_prefix = "quiche/common/platform/default/",
tags = ["nofips"],
)
+
+# Used for QUIC libraries
+def envoy_quic_cc_library(
+ name,
+ srcs = [],
+ hdrs = [],
+ deps = [],
+ defines = [],
+ external_deps = [],
+ tags = []):
+ envoy_cc_library(
+ name = name,
+ srcs = envoy_select_enable_http3(srcs, "@envoy"),
+ hdrs = envoy_select_enable_http3(hdrs, "@envoy"),
+ repository = "@envoy",
+ copts = quiche_copts,
+ tags = ["nofips"] + tags,
+ visibility = ["//visibility:public"],
+ defines = defines,
+ external_deps = external_deps,
+ deps = envoy_select_enable_http3(deps, "@envoy"),
+ )
+
+def envoy_quic_cc_test_library(
+ name,
+ srcs = [],
+ hdrs = [],
+ tags = [],
+ external_deps = [],
+ deps = []):
+ envoy_cc_test_library(
+ name = name,
+ srcs = envoy_select_enable_http3(srcs, "@envoy"),
+ hdrs = envoy_select_enable_http3(hdrs, "@envoy"),
+ copts = quiche_copts,
+ repository = "@envoy",
+ tags = ["nofips"] + tags,
+ external_deps = external_deps,
+ deps = envoy_select_enable_http3(deps, "@envoy"),
+ )
diff --git a/bazel/foreign_cc/BUILD b/bazel/foreign_cc/BUILD
index 4d2b98fd2eb0..eb9c9e81d2c4 100644
--- a/bazel/foreign_cc/BUILD
+++ b/bazel/foreign_cc/BUILD
@@ -1,4 +1,5 @@
load("@rules_foreign_cc//foreign_cc:configure.bzl", "configure_make")
+load("@rules_foreign_cc//foreign_cc:make.bzl", "make")
load("//bazel:envoy_build_system.bzl", "envoy_cc_library", "envoy_cmake", "envoy_package")
licenses(["notice"]) # Apache 2
@@ -59,13 +60,32 @@ cc_library(
],
)
+make(
+ name = "lz4",
+ args = [
+ "MOREFLAGS='-fPIC'",
+ "BUILD_SHARED=no",
+ ],
+ lib_source = "@com_github_lz4_lz4//:all",
+ out_static_libs = [
+ "liblz4.a",
+ ],
+ tags = ["skip_on_windows"],
+ targets = [
+ "lib",
+ "install",
+ ],
+ visibility = ["//visibility:public"],
+ alwayslink = False,
+)
+
# Kafka client dependency used by Kafka-mesh filter.
# librdkafka build generates extra headers that need to be copied into source to get it to compile.
configure_make(
name = "librdkafka_build",
configure_in_place = True,
- configure_options = ["--disable-ssl --disable-gssapi --disable-lz4-ext --disable-zstd --disable-curl && cp Makefile.config src/.. && cp config.h src/.."],
- lib_source = "@edenhill_librdkafka//:all",
+ configure_options = ["--disable-ssl --disable-gssapi --disable-zstd --disable-curl && cp Makefile.config src/.. && cp config.h src/.."],
+ lib_source = "@confluentinc_librdkafka//:all",
out_static_libs = [
"librdkafka.a",
"librdkafka++.a",
@@ -74,6 +94,7 @@ configure_make(
targets = [
"ARFLAGS='' libs install-subdirs",
],
+ deps = [":lz4"],
alwayslink = True,
)
@@ -119,7 +140,7 @@ configure_make(
# Workaround for the issue with statically linked libstdc++
# using -l:libstdc++.a.
env = {
- "CXXFLAGS": "-lstdc++ -Wno-unused-command-line-argument",
+ "CXXFLAGS": "--static -lstdc++ -Wno-unused-command-line-argument",
},
lib_source = "@net_colm_open_source_colm//:all",
out_binaries = ["colm"],
@@ -141,7 +162,7 @@ configure_make(
# Workaround for the issue with statically linked libstdc++
# using -l:libstdc++.a.
env = {
- "CXXFLAGS": "-lstdc++ -Wno-unused-command-line-argument",
+ "CXXFLAGS": "--static -lstdc++ -Wno-unused-command-line-argument",
},
lib_source = "@net_colm_open_source_ragel//:all",
out_binaries = ["ragel"],
@@ -579,3 +600,27 @@ envoy_cmake(
}),
working_directory = "build/cmake",
)
+
+envoy_cmake(
+ name = "maxmind",
+ cache_entries = {
+ "CMAKE_BUILD_TYPE": "Release",
+ "CMAKE_INSTALL_LIBDIR": "lib",
+ "CMAKE_CXX_COMPILER_FORCED": "on",
+ "BUILD_SHARED_LIBS": "off",
+ "BUILD_TESTING": "off",
+ },
+ defines = ["MAXMIND_STATICLIB"],
+ lib_source = "@com_github_maxmind_libmaxminddb//:all",
+ out_static_libs = ["libmaxminddb.a"],
+ tags = ["skip_on_windows"],
+)
+
+envoy_cc_library(
+ name = "maxmind_linux",
+ srcs = [],
+ deps = select({
+ "//bazel:linux": [":maxmind"],
+ "//conditions:default": [],
+ }),
+)
diff --git a/bazel/foreign_cc/ipp-crypto-bn2lebinpad.patch b/bazel/foreign_cc/ipp-crypto-bn2lebinpad.patch
new file mode 100644
index 000000000000..da1546a1afcd
--- /dev/null
+++ b/bazel/foreign_cc/ipp-crypto-bn2lebinpad.patch
@@ -0,0 +1,17 @@
+diff --git a/sources/ippcp/crypto_mb/src/common/ifma_cvt52.c b/sources/ippcp/crypto_mb/src/common/ifma_cvt52.c
+index 1099518..7526fdc 100644
+--- a/sources/ippcp/crypto_mb/src/common/ifma_cvt52.c
++++ b/sources/ippcp/crypto_mb/src/common/ifma_cvt52.c
+@@ -168,12 +168,6 @@ __INLINE void transform_8sb_to_mb8(U64 out_mb8[], int bitLen, int8u *inp[8], int
+ }
+ }
+
+-#ifdef OPENSSL_IS_BORINGSSL
+-static int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen) {
+- return BN_bn2le_padded(to, tolen, a);
+-}
+-#endif
+-
+ #ifndef BN_OPENSSL_DISABLE
+ // Convert BIGNUM into MB8(Radix=2^52) format
+ // Returns bitmask of succesfully converted values
diff --git a/bazel/foreign_cc/vectorscan.patch b/bazel/foreign_cc/vectorscan.patch
new file mode 100644
index 000000000000..2ff5aab68bc1
--- /dev/null
+++ b/bazel/foreign_cc/vectorscan.patch
@@ -0,0 +1,33 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1db128b..ee3b4a9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -27,7 +27,7 @@ include (${CMAKE_MODULE_PATH}/platform.cmake)
+ include (${CMAKE_MODULE_PATH}/boost.cmake)
+ include (${CMAKE_MODULE_PATH}/ragel.cmake)
+
+-find_package(PkgConfig REQUIRED)
++find_package(PkgConfig QUIET)
+
+ find_program(RAGEL ragel)
+
+diff --git a/cmake/sqlite3.cmake b/cmake/sqlite3.cmake
+index 92b18ce..5291726 100644
+--- a/cmake/sqlite3.cmake
++++ b/cmake/sqlite3.cmake
+@@ -2,6 +2,8 @@
+ # a lot of noise to find sqlite
+ #
+
++if(NOT SQLITE_SKIP_CHECK)
++
+ option(SQLITE_PREFER_STATIC "Build sqlite3 statically instead of using an installed lib" OFF)
+
+ if(NOT SQLITE_PREFER_STATIC)
+@@ -33,4 +35,6 @@ else()
+ endif()
+ endif()
+
++endif()
++
+ # that's enough about sqlite
diff --git a/bazel/get_workspace_status b/bazel/get_workspace_status
index ca5159e6dea9..bc43475f01ac 100755
--- a/bazel/get_workspace_status
+++ b/bazel/get_workspace_status
@@ -23,6 +23,7 @@
if [ -f SOURCE_VERSION ]
then
echo "BUILD_SCM_REVISION $(cat SOURCE_VERSION)"
+ echo "ENVOY_BUILD_SCM_REVISION $(cat SOURCE_VERSION)"
echo "STABLE_BUILD_SCM_REVISION $(cat SOURCE_VERSION)"
echo "BUILD_SCM_STATUS Distribution"
exit 0
@@ -30,11 +31,13 @@ fi
if [[ -n "$BAZEL_FAKE_SCM_REVISION" ]]; then
echo "BUILD_SCM_REVISION $BAZEL_FAKE_SCM_REVISION"
+ echo "ENVOY_BUILD_SCM_REVISION $BAZEL_FAKE_SCM_REVISION"
echo "STABLE_BUILD_SCM_REVISION $BAZEL_FAKE_SCM_REVISION"
else
# The code below presents an implementation that works for git repository
git_rev=$(git rev-parse HEAD) || exit 1
echo "BUILD_SCM_REVISION ${git_rev}"
+ echo "ENVOY_BUILD_SCM_REVISION ${git_rev}"
echo "STABLE_BUILD_SCM_REVISION ${git_rev}"
fi
diff --git a/bazel/grpc.patch b/bazel/grpc.patch
index c8872879824c..4608049f1bf8 100644
--- a/bazel/grpc.patch
+++ b/bazel/grpc.patch
@@ -23,4 +23,17 @@ index 1bb970e049..81265483e9 100644
+ "-layering_check",
],
)
-
+
+diff --git a/src/core/lib/channel/channel_args.h b/src/core/lib/channel/channel_args.h
+index 38bb070213..b53086e680 100644
+--- a/src/core/lib/channel/channel_args.h
++++ b/src/core/lib/channel/channel_args.h
+@@ -284,7 +284,7 @@ class ChannelArgs {
+
+ class Value {
+ public:
+- explicit Value(int n) : rep_(reinterpret_cast(n), &int_vtable_) {}
++ explicit Value(int n) : rep_(reinterpret_cast(static_cast(n)), &int_vtable_) {}
+ explicit Value(std::string s)
+ : rep_(RefCountedString::Make(s).release(), &string_vtable_) {}
+ explicit Value(Pointer p) : rep_(std::move(p)) {}
diff --git a/bazel/python_dependencies.bzl b/bazel/python_dependencies.bzl
index 0033a5364547..ea50bf30ba38 100644
--- a/bazel/python_dependencies.bzl
+++ b/bazel/python_dependencies.bzl
@@ -1,7 +1,10 @@
load("@rules_python//python:pip.bzl", "pip_parse")
load("@python3_11//:defs.bzl", "interpreter")
+load("@envoy_toolshed//:packages.bzl", "load_packages")
def envoy_python_dependencies():
+ # TODO(phlax): rename base_pip3 -> pip3 and remove this
+ load_packages()
pip_parse(
name = "base_pip3",
python_interpreter_target = interpreter,
diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl
index 17cb1180490e..4affb6bb757f 100644
--- a/bazel/repositories.bzl
+++ b/bazel/repositories.bzl
@@ -1,8 +1,8 @@
-load(":dev_binding.bzl", "envoy_dev_binding")
+load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language")
load("@envoy_api//bazel:envoy_http_archive.bzl", "envoy_http_archive")
load("@envoy_api//bazel:external_deps.bzl", "load_repository_locations")
+load(":dev_binding.bzl", "envoy_dev_binding")
load(":repository_locations.bzl", "PROTOC_VERSIONS", "REPOSITORY_LOCATIONS_SPEC")
-load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language")
PPC_SKIP_TARGETS = ["envoy.filters.http.lua"]
@@ -16,6 +16,13 @@ WINDOWS_SKIP_TARGETS = [
"envoy.tracers.opencensus",
]
+NO_HTTP3_SKIP_TARGETS = [
+ "envoy.quic.crypto_stream.server.quiche",
+ "envoy.quic.deterministic_connection_id_generator",
+ "envoy.quic.crypto_stream.server.quiche",
+ "envoy.quic.proof_source.filter_chain",
+]
+
# Make all contents of an external repository accessible under a filegroup. Used for external HTTP
# archives, e.g. cares.
def _build_all_content(exclude = []):
@@ -108,13 +115,14 @@ envoy_entry_point(
name = "get_project_json",
pkg = "envoy.base.utils",
script = "envoy.project_data",
+ init_data = [":__init__.py"],
)
genrule(
name = "project",
outs = ["project.json"],
cmd = """
- $(location :get_project_json) . > $@
+ $(location :get_project_json) $$(dirname $(location @envoy//:VERSION.txt)) > $@
""",
tools = [
":get_project_json",
@@ -129,9 +137,12 @@ envoy_entry_point(
args = [
"release",
PATH,
+ "--release-message-path=$(location @envoy//changelogs:summary)",
],
+ data = ["@envoy//changelogs:summary"],
pkg = "envoy.base.utils",
script = "envoy.project",
+ init_data = [":__init__.py"],
)
envoy_entry_point(
@@ -142,6 +153,7 @@ envoy_entry_point(
],
pkg = "envoy.base.utils",
script = "envoy.project",
+ init_data = [":__init__.py"],
)
envoy_entry_point(
@@ -152,6 +164,7 @@ envoy_entry_point(
],
pkg = "envoy.base.utils",
script = "envoy.project",
+ init_data = [":__init__.py"],
)
envoy_entry_point(
@@ -162,6 +175,7 @@ envoy_entry_point(
],
pkg = "envoy.base.utils",
script = "envoy.project",
+ init_data = [":__init__.py"],
)
envoy_entry_point(
@@ -172,6 +186,7 @@ envoy_entry_point(
],
pkg = "envoy.base.utils",
script = "envoy.project",
+ init_data = [":__init__.py"],
)
''')
@@ -256,7 +271,7 @@ def envoy_dependencies(skip_targets = []):
_com_github_axboe_liburing()
_com_github_bazel_buildtools()
_com_github_c_ares_c_ares()
- _com_github_circonus_labs_libcircllhist()
+ _com_github_openhistogram_libcircllhist()
_com_github_cyan4973_xxhash()
_com_github_datadog_dd_trace_cpp()
_com_github_mirror_tclap()
@@ -270,9 +285,13 @@ def envoy_dependencies(skip_targets = []):
_com_github_google_tcmalloc()
_com_github_gperftools_gperftools()
_com_github_grpc_grpc()
+ _com_github_rules_proto_grpc()
_com_github_unicode_org_icu()
_com_github_intel_ipp_crypto_crypto_mb()
+ _com_github_intel_ipp_crypto_crypto_mb_fips()
_com_github_intel_qatlib()
+ _com_github_intel_qatzip()
+ _com_github_lz4_lz4()
_com_github_jbeder_yaml_cpp()
_com_github_libevent_libevent()
_com_github_luajit_luajit()
@@ -294,6 +313,7 @@ def envoy_dependencies(skip_targets = []):
_com_github_google_quiche()
_com_googlesource_googleurl()
_io_hyperscan()
+ _io_vectorscan()
_io_opentracing_cpp()
_net_colm_open_source_colm()
_net_colm_open_source_ragel()
@@ -318,6 +338,7 @@ def envoy_dependencies(skip_targets = []):
external_http_archive("bazel_toolchains")
external_http_archive("bazel_compdb")
external_http_archive("envoy_build_tools")
+ _com_github_maxmind_libmaxminddb()
# TODO(keith): Remove patch when we update rules_pkg
external_http_archive(
@@ -325,7 +346,12 @@ def envoy_dependencies(skip_targets = []):
patches = ["@envoy//bazel:rules_pkg.patch"],
)
external_http_archive("com_github_aignas_rules_shellcheck")
- external_http_archive("aspect_bazel_lib")
+ external_http_archive(
+ "aspect_bazel_lib",
+ patch_args = ["-p1"],
+ patches = ["@envoy//bazel:aspect.patch"],
+ )
+
_com_github_fdio_vpp_vcl()
# Unconditional, since we use this only for compiler-agnostic fuzzing utils.
@@ -346,10 +372,8 @@ def envoy_dependencies(skip_targets = []):
name = "com_google_googleapis_imports",
cc = True,
go = True,
+ python = True,
grpc = True,
- rules_override = {
- "py_proto_library": ["@envoy_api//bazel:api_build_system.bzl", ""],
- },
)
native.bind(
name = "bazel_runfiles",
@@ -371,14 +395,14 @@ def _boringssl_fips():
build_file = "@envoy//bazel/external:boringssl_fips.BUILD",
)
-def _com_github_circonus_labs_libcircllhist():
+def _com_github_openhistogram_libcircllhist():
external_http_archive(
- name = "com_github_circonus_labs_libcircllhist",
+ name = "com_github_openhistogram_libcircllhist",
build_file = "@envoy//bazel/external:libcircllhist.BUILD",
)
native.bind(
name = "libcircllhist",
- actual = "@com_github_circonus_labs_libcircllhist//:libcircllhist",
+ actual = "@com_github_openhistogram_libcircllhist//:libcircllhist",
)
def _com_github_axboe_liburing():
@@ -463,6 +487,10 @@ def _com_github_google_benchmark():
external_http_archive(
name = "com_github_google_benchmark",
)
+ external_http_archive(
+ name = "libpfm",
+ build_file = "@com_github_google_benchmark//tools:libpfm.BUILD.bazel",
+ )
native.bind(
name = "benchmark",
actual = "@com_github_google_benchmark//:benchmark",
@@ -500,9 +528,29 @@ def _com_github_intel_ipp_crypto_crypto_mb():
# to create dynamic *.so library target. Linker fails when linking
# with boringssl_fips library. Envoy uses only static library
# anyways, so created dynamic library would not be used anyways.
+ patches = [
+ "@envoy//bazel/foreign_cc:ipp-crypto-skip-dynamic-lib.patch",
+ "@envoy//bazel/foreign_cc:ipp-crypto-bn2lebinpad.patch",
+ ],
+ patch_args = ["-p1"],
+ build_file_content = BUILD_ALL_CONTENT,
+ )
+
+def _com_github_intel_ipp_crypto_crypto_mb_fips():
+ # Temporary fix for building ipp-crypto when boringssl-fips is used.
+ # Build will fail if bn2lebinpad patch is applied. Remove this archive
+ # when upstream dependency fixes this issue.
+ external_http_archive(
+ name = "com_github_intel_ipp_crypto_crypto_mb_fips",
+ # Patch removes from CMakeLists.txt instructions to
+ # to create dynamic *.so library target. Linker fails when linking
+ # with boringssl_fips library. Envoy uses only static library
+ # anyways, so created dynamic library would not be used anyways.
patches = ["@envoy//bazel/foreign_cc:ipp-crypto-skip-dynamic-lib.patch"],
patch_args = ["-p1"],
build_file_content = BUILD_ALL_CONTENT,
+ # Use existing ipp-crypto repository location name to avoid redefinition.
+ location_name = "com_github_intel_ipp_crypto_crypto_mb",
)
def _com_github_intel_qatlib():
@@ -511,6 +559,18 @@ def _com_github_intel_qatlib():
build_file_content = BUILD_ALL_CONTENT,
)
+def _com_github_intel_qatzip():
+ external_http_archive(
+ name = "com_github_intel_qatzip",
+ build_file_content = BUILD_ALL_CONTENT,
+ )
+
+def _com_github_lz4_lz4():
+ external_http_archive(
+ name = "com_github_lz4_lz4",
+ build_file_content = BUILD_ALL_CONTENT,
+ )
+
def _com_github_jbeder_yaml_cpp():
external_http_archive(
name = "com_github_jbeder_yaml_cpp",
@@ -665,6 +725,15 @@ def _io_hyperscan():
patches = ["@envoy//bazel/foreign_cc:hyperscan.patch"],
)
+def _io_vectorscan():
+ external_http_archive(
+ name = "io_vectorscan",
+ build_file_content = BUILD_ALL_CONTENT,
+ type = "tar.gz",
+ patch_args = ["-p1"],
+ patches = ["@envoy//bazel/foreign_cc:vectorscan.patch"],
+ )
+
def _io_opentracing_cpp():
external_http_archive(
name = "io_opentracing_cpp",
@@ -774,6 +843,10 @@ def _com_google_absl():
name = "absl-base",
actual = "@com_google_absl//absl/base",
)
+ native.bind(
+ name = "abseil_btree",
+ actual = "@com_google_absl//absl/container:btree",
+ )
native.bind(
name = "abseil_flat_hash_map",
actual = "@com_google_absl//absl/container:flat_hash_map",
@@ -834,6 +907,10 @@ def _com_google_absl():
name = "abseil_stacktrace",
actual = "@com_google_absl//absl/debugging:stacktrace",
)
+ native.bind(
+ name = "abseil_statusor",
+ actual = "@com_google_absl//absl/status:statusor",
+ )
# Require abseil_time as an indirect dependency as it is needed by the
# direct dependency jwt_verify_lib.
@@ -952,7 +1029,9 @@ def _io_opencensus_cpp():
)
def _com_github_curl():
- # Used by OpenCensus Zipkin exporter.
+ # The usage by AWS extensions common utilities is deprecated and will be removed by Q3 2024 after
+ # the deprecation period of 2 releases. Please DO NOT USE curl dependency for any new or existing extensions.
+ # See https://github.com/envoyproxy/envoy/issues/11816 & https://github.com/envoyproxy/envoy/pull/30731.
external_http_archive(
name = "com_github_curl",
build_file_content = BUILD_ALL_CONTENT + """
@@ -975,7 +1054,10 @@ cc_library(name = "curl", visibility = ["//visibility:public"], deps = ["@envoy/
def _v8():
external_http_archive(
name = "v8",
- patches = ["@envoy//bazel:v8.patch"],
+ patches = [
+ "@envoy//bazel:v8.patch",
+ "@envoy//bazel:v8_include.patch",
+ ],
patch_args = ["-p1"],
)
native.bind(
@@ -1131,6 +1213,9 @@ def _com_github_grpc_grpc():
actual = "@upb//:generated_code_support__only_for_generated_code_do_not_use__i_give_permission_to_break_me",
)
+def _com_github_rules_proto_grpc():
+ external_http_archive("com_github_rules_proto_grpc")
+
def _re2():
external_http_archive("com_googlesource_code_re2")
@@ -1328,7 +1413,7 @@ filegroup(
# This archive provides Kafka C/CPP client used by mesh filter to communicate with upstream
# Kafka clusters.
external_http_archive(
- name = "edenhill_librdkafka",
+ name = "confluentinc_librdkafka",
build_file_content = BUILD_ALL_CONTENT,
# (adam.kotwasinski) librdkafka bundles in cJSON, which is also bundled in by libvppinfra.
# For now, let's just drop this dependency from Kafka, as it's used only for monitoring.
@@ -1370,18 +1455,12 @@ def _rules_ruby():
def _foreign_cc_dependencies():
external_http_archive("rules_foreign_cc")
-def _is_linux(ctxt):
- return ctxt.os.name == "linux"
-
-def _is_arch(ctxt, arch):
- res = ctxt.execute(["uname", "-m"])
- return arch in res.stdout
-
-def _is_linux_ppc(ctxt):
- return _is_linux(ctxt) and _is_arch(ctxt, "ppc")
-
-def _is_linux_s390x(ctxt):
- return _is_linux(ctxt) and _is_arch(ctxt, "s390x")
-
-def _is_linux_x86_64(ctxt):
- return _is_linux(ctxt) and _is_arch(ctxt, "x86_64")
+def _com_github_maxmind_libmaxminddb():
+ external_http_archive(
+ name = "com_github_maxmind_libmaxminddb",
+ build_file_content = BUILD_ALL_CONTENT,
+ )
+ native.bind(
+ name = "maxmind",
+ actual = "@envoy//bazel/foreign_cc:maxmind_linux",
+ )
diff --git a/bazel/repositories_extra.bzl b/bazel/repositories_extra.bzl
index 40d348073fa4..a5bc2d527769 100644
--- a/bazel/repositories_extra.bzl
+++ b/bazel/repositories_extra.bzl
@@ -1,8 +1,9 @@
+load("@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies")
+load("@com_github_rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_toolchains")
load("@emsdk//:deps.bzl", emsdk_deps = "deps")
-load("@rules_python//python:repositories.bzl", "python_register_toolchains")
load("@proxy_wasm_cpp_host//bazel/cargo/wasmtime:crates.bzl", "wasmtime_fetch_remote_crates")
+load("@rules_python//python:repositories.bzl", "py_repositories", "python_register_toolchains")
load("//bazel/external/cargo:crates.bzl", "raze_fetch_remote_crates")
-load("@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies")
def _python_minor_version(python_version):
return "_".join(python_version.split(".")[:-1])
@@ -18,6 +19,8 @@ def envoy_dependencies_extra(
emsdk_deps()
raze_fetch_remote_crates()
wasmtime_fetch_remote_crates()
+ rules_proto_grpc_toolchains()
+ py_repositories()
# Registers underscored Python minor version - eg `python3_10`
python_register_toolchains(
diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl
index 0302660b40ed..00c8b9678dc3 100644
--- a/bazel/repository_locations.bzl
+++ b/bazel/repository_locations.bzl
@@ -60,10 +60,10 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Apple Rules for Bazel",
project_desc = "Bazel rules for Apple platforms",
project_url = "https://github.com/bazelbuild/rules_apple",
- version = "3.0.0-rc1",
- sha256 = "62b24b9c3c1eb5bdb6fe1a3f4bf541d6e61eac8997e87c25a50c821f85bf8ff2",
+ version = "3.1.1",
+ sha256 = "34c41bfb59cdaea29ac2df5a2fa79e5add609c71bb303b2ebb10985f93fa20e7",
urls = ["https://github.com/bazelbuild/rules_apple/releases/download/{version}/rules_apple.{version}.tar.gz"],
- release_date = "2023-08-28",
+ release_date = "2023-10-19",
use_category = ["build"],
license = "Apache-2.0",
license_url = "https://github.com/bazelbuild/rules_apple/blob/{version}/LICENSE",
@@ -72,9 +72,9 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Bazel build tools",
project_desc = "Developer tools for working with Google's bazel buildtool.",
project_url = "https://github.com/bazelbuild/buildtools",
- version = "6.3.3",
- sha256 = "42968f9134ba2c75c03bb271bd7bb062afb7da449f9b913c96e5be4ce890030a",
- release_date = "2023-08-25",
+ version = "6.4.0",
+ sha256 = "05c3c3602d25aeda1e9dbc91d3b66e624c1f9fdadf273e5480b489e744ca7269",
+ release_date = "2023-11-15",
strip_prefix = "buildtools-{version}",
urls = ["https://github.com/bazelbuild/buildtools/archive/v{version}.tar.gz"],
use_category = ["test_only"],
@@ -84,11 +84,11 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_desc = "Bazel rules for fuzz tests",
project_url = "https://github.com/bazelbuild/rules_fuzzing",
# Patch contains workaround for https://github.com/bazelbuild/rules_python/issues/1221
- version = "0.3.2",
- sha256 = "f85dc70bb9672af0e350686461fe6fdd0d61e10e75645f9e44fedf549b21e369",
+ version = "0.4.1",
+ sha256 = "f6f3f42c48576acd5653bf07637deee2ae4ebb77ccdb0dacc67c184508bedc8c",
strip_prefix = "rules_fuzzing-{version}",
urls = ["https://github.com/bazelbuild/rules_fuzzing/archive/v{version}.tar.gz"],
- release_date = "2022-08-31",
+ release_date = "2023-10-19",
use_category = ["test_only"],
implied_untracked_deps = [
# This is a repository rule generated to define an OSS-Fuzz fuzzing
@@ -102,11 +102,11 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "envoy-build-tools",
project_desc = "Common build tools shared by the Envoy/UDPA ecosystem",
project_url = "https://github.com/envoyproxy/envoy-build-tools",
- version = "633f57439ba683c1370fb8b1025680f1ce678caf",
- sha256 = "88e4b7d12429d488daff522b765f0f21a3204d2c4b262b4b9d67587230415454",
+ version = "157af2cabe71d054d4b9837a66f8458cb7bee2f0",
+ sha256 = "ab284f8b15f2b590d6fa3140d1f93d3fb96fbbea5ea0dfa01f48eb6d61d1c96b",
strip_prefix = "envoy-build-tools-{version}",
urls = ["https://github.com/envoyproxy/envoy-build-tools/archive/{version}.tar.gz"],
- release_date = "2023-09-15",
+ release_date = "2023-12-20",
use_category = ["build"],
license = "Apache-2.0",
license_url = "https://github.com/envoyproxy/envoy-build-tools/blob/{version}/LICENSE",
@@ -120,13 +120,13 @@ REPOSITORY_LOCATIONS_SPEC = dict(
# 2. Open https://chromium.googlesource.com/chromium/src/+/refs/tags//DEPS and note .
# 3. Find a commit in BoringSSL's "master-with-bazel" branch that merges .
#
- # chromium-112.0.5615.39 (linux/beta)
- version = "88d7a40bd06a34da6ee0d985545755199d047258",
- sha256 = "1e759891e168c5957f2f4d519929e2b4cef9303b7cf2049601081f4fca95bf21",
+ # chromium-118.0.5993.54 (linux/beta)
+ version = "45cf810dbdbd767f09f8cb0b0fcccd342c39041f",
+ sha256 = "f1f421738e9ba39dd88daf8cf3096ddba9c53e2b6b41b32fff5a3ff82f4cd162",
strip_prefix = "boringssl-{version}",
urls = ["https://github.com/google/boringssl/archive/{version}.tar.gz"],
use_category = ["controlplane", "dataplane_core"],
- release_date = "2023-02-14",
+ release_date = "2023-08-28",
cpe = "cpe:2.3:a:google:boringssl:*",
license = "Mixed",
license_url = "https://github.com/google/boringssl/blob/{version}/LICENSE",
@@ -148,12 +148,12 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Aspect Bazel helpers",
project_desc = "Base Starlark libraries and basic Bazel rules which are useful for constructing rulesets and BUILD files",
project_url = "https://github.com/aspect-build/bazel-lib",
- version = "1.34.1",
- sha256 = "271d5f38c218a0c2fe2e94f94dfc0b497e931cbb335348bf1695015191be5367",
+ version = "2.1.0",
+ sha256 = "fc8bd670380eaba5314769abbe9fee21d641e3da06d9d26b8073a301f6d62332",
strip_prefix = "bazel-lib-{version}",
urls = ["https://github.com/aspect-build/bazel-lib/archive/v{version}.tar.gz"],
use_category = ["build"],
- release_date = "2023-08-30",
+ release_date = "2023-12-23",
cpe = "N/A",
license = "Apache-2.0",
license_url = "https://github.com/aspect-build/bazel-lib/blob/v{version}/LICENSE",
@@ -176,11 +176,11 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Shellcheck rules for bazel",
project_desc = "Now you do not need to depend on the system shellcheck version in your bazel-managed (mono)repos.",
project_url = "https://github.com/aignas/rules_shellcheck",
- version = "0.1.1",
- sha256 = "4e7cc56d344d0adfd20283f7ad8cb4fba822c0b15ce122665b00dd87a27a74b6",
+ version = "0.2.4",
+ sha256 = "ce4d0e7a9beb1fb3f0d37424465060491a91dae68de1ef1c92ee57d94c773b46",
strip_prefix = "rules_shellcheck-{version}",
- urls = ["https://github.com/aignas/rules_shellcheck/archive/v{version}.tar.gz"],
- release_date = "2022-05-30",
+ urls = ["https://github.com/aignas/rules_shellcheck/archive/{version}.tar.gz"],
+ release_date = "2023-10-27",
use_category = ["build"],
cpe = "N/A",
license = "MIT",
@@ -204,12 +204,12 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Perfetto",
project_desc = "Perfetto Tracing SDK",
project_url = "https://perfetto.dev/",
- version = "36.1",
- sha256 = "b46145b6009dd7367ab12ef1e36a1656ec004674d3df167184a0ba6ceb384283",
+ version = "40.0",
+ sha256 = "bd78f0165e66026c31c8c39221ed2863697a8bba5cd39b12e4b43d0b7f71626f",
strip_prefix = "perfetto-{version}/sdk",
urls = ["https://github.com/google/perfetto/archive/v{version}.tar.gz"],
use_category = ["dataplane_core", "controlplane"],
- release_date = "2023-07-06",
+ release_date = "2023-12-05",
cpe = "N/A",
license = "Apache-2.0",
license_url = "https://github.com/google/perfetto/blob/v{version}/LICENSE",
@@ -228,19 +228,19 @@ REPOSITORY_LOCATIONS_SPEC = dict(
license = "c-ares",
license_url = "https://github.com/c-ares/c-ares/blob/cares-{underscore_version}/LICENSE.md",
),
- com_github_circonus_labs_libcircllhist = dict(
+ com_github_openhistogram_libcircllhist = dict(
project_name = "libcircllhist",
- project_desc = "An implementation of Circonus log-linear histograms",
- project_url = "https://github.com/circonus-labs/libcircllhist",
+ project_desc = "An implementation of OpenHistogram log-linear histograms",
+ project_url = "https://github.com/openhistogram/libcircllhist",
version = "39f9db724a81ba78f5d037f1cae79c5a07107c8e",
sha256 = "fd2492f6cc1f8734f8f57be8c2e7f2907e94ee2a4c02445ce59c4241fece144b",
strip_prefix = "libcircllhist-{version}",
- urls = ["https://github.com/circonus-labs/libcircllhist/archive/{version}.tar.gz"],
+ urls = ["https://github.com/openhistogram/libcircllhist/archive/{version}.tar.gz"],
use_category = ["controlplane", "observability_core", "dataplane_core"],
release_date = "2019-05-21",
cpe = "N/A",
license = "Apache-2.0",
- license_url = "https://github.com/circonus-labs/libcircllhist/blob/{version}/LICENSE",
+ license_url = "https://github.com/openhistogram/libcircllhist/blob/{version}/LICENSE",
),
com_github_cyan4973_xxhash = dict(
project_name = "xxHash",
@@ -376,16 +376,31 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "gRPC",
project_desc = "gRPC C core library",
project_url = "https://grpc.io",
- version = "1.56.2",
- sha256 = "931f07db9d48cff6a6007c1033ba6d691fe655bea2765444bc1ad974dfc840aa",
+ version = "1.59.1",
+ sha256 = "916f88a34f06b56432611aaa8c55befee96d0a7b7d7457733b9deeacbc016f99",
strip_prefix = "grpc-{version}",
urls = ["https://github.com/grpc/grpc/archive/v{version}.tar.gz"],
use_category = ["dataplane_core", "controlplane"],
- release_date = "2023-07-14",
+ release_date = "2023-10-06",
cpe = "cpe:2.3:a:grpc:grpc:*",
license = "Apache-2.0",
license_url = "https://github.com/grpc/grpc/blob/v{version}/LICENSE",
),
+ com_github_rules_proto_grpc = dict(
+ project_name = "Protobuf and gRPC rules for Bazel",
+ project_desc = "Bazel rules for building Protobuf and gRPC code and libraries from proto_library targets",
+ project_url = "https://github.com/rules-proto-grpc/rules_proto_grpc",
+ version = "4.6.0",
+ sha256 = "2a0860a336ae836b54671cbbe0710eec17c64ef70c4c5a88ccfd47ea6e3739bd",
+ strip_prefix = "rules_proto_grpc-{version}",
+ urls = ["https://github.com/rules-proto-grpc/rules_proto_grpc/releases/download/{version}/rules_proto_grpc-{version}.tar.gz"],
+ use_category = ["dataplane_ext"],
+ extensions = ["envoy.transport_sockets.alts"],
+ release_date = "2023-12-14",
+ cpe = "N/A",
+ license = "Apache-2.0",
+ license_url = "https://github.com/rules-proto-grpc/rules_proto_grpc/blob/{version}/LICENSE",
+ ),
com_github_unicode_org_icu = dict(
project_name = "ICU Library",
project_desc = "Development files for International Components for Unicode",
@@ -425,17 +440,32 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "qatlib",
project_desc = "Intel QuickAssist Technology Library",
project_url = "https://github.com/intel/qatlib",
- version = "23.02.0",
- sha256 = "075d900e44be30c117585054f0fd5eea853d3804106a401e537b1fff45297542",
+ version = "23.11.0",
+ sha256 = "f649613c243df98c2b005e58af7e0c9bb6d9638e0a12d2757d18d4930bf893cd",
strip_prefix = "qatlib-{version}",
urls = ["https://github.com/intel/qatlib/archive/refs/tags/{version}.tar.gz"],
use_category = ["dataplane_ext"],
- release_date = "2023-02-24",
- extensions = ["envoy.tls.key_providers.qat"],
+ release_date = "2023-11-15",
+ extensions = ["envoy.tls.key_providers.qat", "envoy.compression.qatzip.compressor"],
cpe = "N/A",
license = "BSD-3-Clause",
license_url = "https://github.com/intel/qatlib/blob/{version}/LICENSE",
),
+ com_github_intel_qatzip = dict(
+ project_name = "qatzip",
+ project_desc = "Intel QuickAssist Technology QATzip Library",
+ project_url = "https://github.com/intel/qatzip",
+ version = "1.1.2",
+ sha256 = "31419fa4b42d217b3e55a70a34545582cbf401a4f4d44738d21b4a3944b1e1ef",
+ strip_prefix = "QATzip-{version}",
+ urls = ["https://github.com/intel/QATzip/archive/v{version}.tar.gz"],
+ use_category = ["dataplane_ext"],
+ release_date = "2023-03-24",
+ extensions = ["envoy.compression.qatzip.compressor"],
+ cpe = "N/A",
+ license = "BSD-3-Clause",
+ license_url = "https://github.com/intel/QATzip/blob/{version}/LICENSE",
+ ),
com_github_luajit_luajit = dict(
project_name = "LuaJIT",
project_desc = "Just-In-Time compiler for Lua",
@@ -447,7 +477,10 @@ REPOSITORY_LOCATIONS_SPEC = dict(
urls = ["https://github.com/LuaJIT/LuaJIT/archive/{version}.tar.gz"],
release_date = "2023-04-16",
use_category = ["dataplane_ext"],
- extensions = ["envoy.filters.http.lua"],
+ extensions = [
+ "envoy.filters.http.lua",
+ "envoy.router.cluster_specifier_plugin.lua",
+ ],
cpe = "cpe:2.3:a:luajit:luajit:*",
license = "MIT",
license_url = "https://github.com/LuaJIT/LuaJIT/blob/{version}/COPYRIGHT",
@@ -456,12 +489,12 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Nghttp2",
project_desc = "Implementation of HTTP/2 and its header compression algorithm HPACK in C",
project_url = "https://nghttp2.org",
- version = "1.55.1",
- sha256 = "e12fddb65ae3218b4edc083501519379928eba153e71a1673b185570f08beb96",
+ version = "1.58.0",
+ sha256 = "9ebdfbfbca164ef72bdf5fd2a94a4e6dfb54ec39d2ef249aeb750a91ae361dfb",
strip_prefix = "nghttp2-{version}",
urls = ["https://github.com/nghttp2/nghttp2/releases/download/v{version}/nghttp2-{version}.tar.gz"],
use_category = ["controlplane", "dataplane_core"],
- release_date = "2023-07-14",
+ release_date = "2023-10-27",
cpe = "cpe:2.3:a:nghttp2:nghttp2:*",
license = "MIT",
license_url = "https://github.com/nghttp2/nghttp2/blob/v{version}/LICENSE",
@@ -484,6 +517,24 @@ REPOSITORY_LOCATIONS_SPEC = dict(
license = "BSD-3-Clause",
license_url = "https://github.com/intel/hyperscan/blob/v{version}/LICENSE",
),
+ io_vectorscan = dict(
+ project_name = "Vectorscan",
+ project_desc = "Hyperscan port for additional CPU architectures",
+ project_url = "https://www.vectorcamp.gr/vectorscan/",
+ version = "5.4.11",
+ sha256 = "905f76ad1fa9e4ae0eb28232cac98afdb96c479666202c5a4c27871fb30a2711",
+ strip_prefix = "vectorscan-vectorscan-{version}",
+ urls = ["https://codeload.github.com/VectorCamp/vectorscan/tar.gz/refs/tags/vectorscan/{version}"],
+ use_category = ["dataplane_ext"],
+ extensions = [
+ "envoy.matching.input_matchers.hyperscan",
+ "envoy.regex_engines.hyperscan",
+ ],
+ release_date = "2023-11-20",
+ cpe = "N/A",
+ license = "BSD-3-Clause",
+ license_url = "https://github.com/VectorCamp/vectorscan/blob/vectorscan/{version}/LICENSE",
+ ),
io_opentracing_cpp = dict(
project_name = "OpenTracing",
project_desc = "Vendor-neutral APIs and instrumentation for distributed tracing",
@@ -506,7 +557,6 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "skywalking-data-collect-protocol",
project_desc = "Data Collect Protocols of Apache SkyWalking",
project_url = "https://github.com/apache/skywalking-data-collect-protocol",
- name = "skywalking_data_collect_protocol",
sha256 = "49bd689b9c1c0ea12064bd35581689cef7835e5ac15d335dc425fbfc2029aa90",
urls = ["https://github.com/apache/skywalking-data-collect-protocol/archive/v{version}.tar.gz"],
strip_prefix = "skywalking-data-collect-protocol-{version}",
@@ -551,12 +601,12 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Benchmark",
project_desc = "Library to benchmark code snippets",
project_url = "https://github.com/google/benchmark",
- version = "1.7.0",
- sha256 = "3aff99169fa8bdee356eaa1f691e835a6e57b1efeadb8a0f9f228531158246ac",
+ version = "1.8.3",
+ sha256 = "6bc180a57d23d4d9515519f92b0c83d61b05b5bab188961f36ac7b06b0d9e9ce",
strip_prefix = "benchmark-{version}",
urls = ["https://github.com/google/benchmark/archive/v{version}.tar.gz"],
use_category = ["test_only"],
- release_date = "2022-07-25",
+ release_date = "2023-08-31",
license = "Apache-2.0",
license_url = "https://github.com/google/benchmark/blob/v{version}/LICENSE",
),
@@ -650,16 +700,16 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Boost",
project_desc = "Boost C++ source libraries",
project_url = "https://www.boost.org/",
- version = "1.78.0",
- sha256 = "94ced8b72956591c4775ae2207a9763d3600b30d9d7446562c552f0a14a63be7",
+ version = "1.84.0",
+ sha256 = "a5800f405508f5df8114558ca9855d2640a2de8f0445f051fa1c7c3383045724",
strip_prefix = "boost_{underscore_version}",
- urls = ["https://boostorg.jfrog.io/artifactory/main/release/{version}/source/boost_{underscore_version}.tar.gz"],
+ urls = ["https://archives.boost.io/release/{version}/source/boost_{underscore_version}.tar.gz"],
use_category = ["dataplane_ext"],
extensions = [
"envoy.matching.input_matchers.hyperscan",
"envoy.regex_engines.hyperscan",
],
- release_date = "2021-12-08",
+ release_date = "2023-12-13",
cpe = "cpe:2.3:a:boost:boost:*",
license = "Boost",
license_url = "https://github.com/boostorg/boost/blob/boost-{version}/LICENSE_1_0.txt",
@@ -680,7 +730,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
release_date = "2023-08-31",
cpe = "cpe:2.3:a:google:brotli:*",
license = "MIT",
- license_url = "https://github.com/google/brotli/blob/{version}/LICENSE",
+ license_url = "https://github.com/google/brotli/blob/v{version}/LICENSE",
),
com_github_facebook_zstd = dict(
project_name = "zstd",
@@ -732,13 +782,13 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "jwt_verify_lib",
project_desc = "JWT verification library for C++",
project_url = "https://github.com/google/jwt_verify_lib",
- version = "c29ba4bdab2cc9a7b4d80d1d3ebff3bf5b9bf6e2",
- sha256 = "5851ab1857edf46b31dc298fba984e1b7638f80a58f88a84a83402540643a99f",
+ version = "b59e8075d4a4f975ba6f109e1916d6e60aeb5613",
+ sha256 = "637e4983506c4f26bbe2808ae4e1944e46cbb2277d34ff0b8a3b72bdac3c4b91",
strip_prefix = "jwt_verify_lib-{version}",
urls = ["https://github.com/google/jwt_verify_lib/archive/{version}.tar.gz"],
use_category = ["dataplane_ext"],
extensions = ["envoy.filters.http.jwt_authn", "envoy.filters.http.gcp_authn"],
- release_date = "2022-11-04",
+ release_date = "2023-05-17",
cpe = "N/A",
license = "Apache-2.0",
license_url = "https://github.com/google/jwt_verify_lib/blob/{version}/LICENSE",
@@ -778,14 +828,14 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "nlohmann JSON",
project_desc = "Fast JSON parser/generator for C++",
project_url = "https://nlohmann.github.io/json",
- version = "3.11.2",
- sha256 = "d69f9deb6a75e2580465c6c4c5111b89c4dc2fa94e3a85fcd2ffcd9a143d9273",
+ version = "3.11.3",
+ sha256 = "0d8ef5af7f9794e3263480193c491549b2ba6cc74bb018906202ada498a79406",
strip_prefix = "json-{version}",
urls = ["https://github.com/nlohmann/json/archive/v{version}.tar.gz"],
# This will be a replacement for rapidJSON used in extensions and may also be a fast
# replacement for protobuf JSON.
use_category = ["controlplane", "dataplane_core"],
- release_date = "2022-08-12",
+ release_date = "2023-11-28",
cpe = "cpe:2.3:a:json-for-modern-cpp_project:json-for-modern-cpp:*",
license = "MIT",
license_url = "https://github.com/nlohmann/json/blob/v{version}/LICENSE.MIT",
@@ -938,9 +988,9 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "Python rules for Bazel",
project_desc = "Bazel rules for the Python language",
project_url = "https://github.com/bazelbuild/rules_python",
- version = "0.25.0",
- sha256 = "5868e73107a8e85d8f323806e60cad7283f34b32163ea6ff1020cf27abef6036",
- release_date = "2023-08-22",
+ version = "0.27.1",
+ sha256 = "e85ae30de33625a63eca7fc40a94fea845e641888e52f32b6beea91e8b1b2793",
+ release_date = "2023-12-05",
strip_prefix = "rules_python-{version}",
urls = ["https://github.com/bazelbuild/rules_python/archive/{version}.tar.gz"],
use_category = ["build"],
@@ -1069,13 +1119,14 @@ REPOSITORY_LOCATIONS_SPEC = dict(
license = "Apache-2.0",
license_url = "https://github.com/census-instrumentation/opencensus-cpp/blob/{version}/LICENSE",
),
- # This should be removed, see https://github.com/envoyproxy/envoy/issues/11816.
+ # Curl usage is under deprecation and will be removed by Q3 2024 before v1.31 release in July-2024.
+ # See https://github.com/envoyproxy/envoy/issues/11816 & https://github.com/envoyproxy/envoy/pull/30731.
com_github_curl = dict(
project_name = "curl",
project_desc = "Library for transferring data with URLs",
project_url = "https://curl.haxx.se",
- version = "8.2.1",
- sha256 = "f98bdb06c0f52bdd19e63c4a77b5eb19b243bcbbd0f5b002b9f3cba7295a3a42",
+ version = "8.4.0",
+ sha256 = "816e41809c043ff285e8c0f06a75a1fa250211bbfb2dc0a037eeef39f1a9e427",
strip_prefix = "curl-{version}",
urls = ["https://github.com/curl/curl/releases/download/curl-{underscore_version}/curl-{version}.tar.gz"],
use_category = ["dataplane_ext", "observability_ext"],
@@ -1085,7 +1136,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
"envoy.grpc_credentials.aws_iam",
"envoy.tracers.opencensus",
],
- release_date = "2023-07-26",
+ release_date = "2023-10-11",
cpe = "cpe:2.3:a:haxx:libcurl:*",
license = "curl",
license_url = "https://github.com/curl/curl/blob/curl-{underscore_version}/COPYING",
@@ -1124,12 +1175,12 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "QUICHE",
project_desc = "QUICHE (QUIC, HTTP/2, Etc) is Google‘s implementation of QUIC and related protocols",
project_url = "https://github.com/google/quiche",
- version = "667c58656fe58f27672c58c76023373f2d49ce2e",
- sha256 = "b82e5e626a3f51dc3a57154f2ed92c5ecfe9f5bc7f390fa6b74a9f3854022b1e",
+ version = "0860476f3e59c023bc96e8cea1f18b11e241fda7",
+ sha256 = "05d1210e4a3e381cf682564a3d350adb702aacc60c098434b6470301df2613f0",
urls = ["https://github.com/google/quiche/archive/{version}.tar.gz"],
strip_prefix = "quiche-{version}",
use_category = ["controlplane", "dataplane_core"],
- release_date = "2023-09-13",
+ release_date = "2023-12-28",
cpe = "N/A",
license = "BSD-3-Clause",
license_url = "https://github.com/google/quiche/blob/{version}/LICENSE",
@@ -1211,12 +1262,12 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "RE2",
project_desc = "RE2, a regular expression library",
project_url = "https://github.com/google/re2",
- version = "2023-07-01",
- sha256 = "18cf85922e27fad3ed9c96a27733037da445f35eb1a2744c306a37c6d11e95c4",
+ version = "2023-09-01",
+ sha256 = "5bb6875ae1cd1e9fedde98018c346db7260655f86fdb8837e3075103acd3649b",
strip_prefix = "re2-{version}",
urls = ["https://github.com/google/re2/archive/{version}.tar.gz"],
use_category = ["controlplane", "dataplane_core"],
- release_date = "2023-06-30",
+ release_date = "2023-08-31",
cpe = "N/A",
license = "BSD-3-Clause",
license_url = "https://github.com/google/re2/blob/{version}/LICENSE",
@@ -1272,20 +1323,20 @@ REPOSITORY_LOCATIONS_SPEC = dict(
license = "Apache-2.0",
license_url = "https://github.com/apache/kafka/blob/{version}/LICENSE",
),
- edenhill_librdkafka = dict(
+ confluentinc_librdkafka = dict(
project_name = "Kafka (C/C++ client)",
project_desc = "C/C++ client for Apache Kafka (open-source distributed event streaming platform)",
- project_url = "https://github.com/edenhill/librdkafka",
- version = "2.2.0",
- sha256 = "af9a820cbecbc64115629471df7c7cecd40403b6c34bfdbb9223152677a47226",
+ project_url = "https://github.com/confluentinc/librdkafka",
+ version = "2.3.0",
+ sha256 = "2d49c35c77eeb3d42fa61c43757fcbb6a206daa560247154e60642bcdcc14d12",
strip_prefix = "librdkafka-{version}",
- urls = ["https://github.com/edenhill/librdkafka/archive/v{version}.tar.gz"],
+ urls = ["https://github.com/confluentinc/librdkafka/archive/v{version}.tar.gz"],
use_category = ["dataplane_ext"],
extensions = ["envoy.filters.network.kafka_mesh"],
- release_date = "2023-07-12",
+ release_date = "2023-10-25",
cpe = "N/A",
license = "librdkafka",
- license_url = "https://github.com/edenhill/librdkafka/blob/v{version}/LICENSE",
+ license_url = "https://github.com/confluentinc/librdkafka/blob/v{version}/LICENSE",
),
kafka_server_binary = dict(
project_name = "Kafka (server binary)",
@@ -1315,8 +1366,8 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "WebAssembly for Proxies (C++ SDK)",
project_desc = "WebAssembly for Proxies (C++ SDK)",
project_url = "https://github.com/proxy-wasm/proxy-wasm-cpp-sdk",
- version = "e30535b7c0cd3126e6401bc3769063a74bbb37be",
- sha256 = "94e474ebea782225821224734ed5992fa749301e12e06b6520b8b4d4e1c05ffc",
+ version = "921039ae983ce053bf5cba78a85a3c08ff9791e5",
+ sha256 = "a11adfe4e6346d3318ff72643aa5569dc8439d7e8927ed148f93226fa255cc7a",
strip_prefix = "proxy-wasm-cpp-sdk-{version}",
urls = ["https://github.com/proxy-wasm/proxy-wasm-cpp-sdk/archive/{version}.tar.gz"],
use_category = ["dataplane_ext"],
@@ -1332,7 +1383,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
- release_date = "2022-03-15",
+ release_date = "2023-05-01",
cpe = "N/A",
license = "Apache-2.0",
license_url = "https://github.com/proxy-wasm/proxy-wasm-cpp-sdk/blob/{version}/LICENSE",
@@ -1341,8 +1392,8 @@ REPOSITORY_LOCATIONS_SPEC = dict(
project_name = "WebAssembly for Proxies (C++ host implementation)",
project_desc = "WebAssembly for Proxies (C++ host implementation)",
project_url = "https://github.com/proxy-wasm/proxy-wasm-cpp-host",
- version = "5d76116c449d6892b298b7ae79a84ef1cf5752bf",
- sha256 = "a5825a1a5bbd5b0178c6189b227d5cf4370ac713a883b41f6a54edd768a03cb7",
+ version = "e200fee8af40918c41f3275cff090993e3b26940",
+ sha256 = "9711411b3b8d48a3ee9278f44824ce569c1fdd491183255f568f2b938360e964",
strip_prefix = "proxy-wasm-cpp-host-{version}",
urls = ["https://github.com/proxy-wasm/proxy-wasm-cpp-host/archive/{version}.tar.gz"],
use_category = ["dataplane_ext"],
@@ -1358,7 +1409,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
- release_date = "2023-06-01",
+ release_date = "2023-12-19",
cpe = "N/A",
license = "Apache-2.0",
license_url = "https://github.com/proxy-wasm/proxy-wasm-cpp-host/blob/{version}/LICENSE",
@@ -1433,6 +1484,17 @@ REPOSITORY_LOCATIONS_SPEC = dict(
release_date = "2022-12-15",
cpe = "N/A",
),
+ libpfm = dict(
+ project_name = "libpfm",
+ project_desc = "A helper library to develop monitoring tools",
+ project_url = "https://sourceforge.net/projects/perfmon2",
+ version = "4.11.0",
+ sha256 = "5da5f8872bde14b3634c9688d980f68bda28b510268723cc12973eedbab9fecc",
+ strip_prefix = "libpfm-{version}",
+ use_category = ["test_only"],
+ urls = ["https://downloads.sourceforge.net/project/perfmon2/libpfm4/libpfm-{version}.tar.gz"],
+ release_date = "2020-09-03",
+ ),
rules_license = dict(
project_name = "rules_license",
project_desc = "Bazel rules for checking open source licenses",
@@ -1460,6 +1522,34 @@ REPOSITORY_LOCATIONS_SPEC = dict(
license = "MIT",
license_url = "https://github.com/protocolbuffers/utf8_range/blob/{version}/LICENSE",
),
+ com_github_maxmind_libmaxminddb = dict(
+ project_name = "maxmind_libmaxminddb",
+ project_desc = "C library for reading MaxMind DB files",
+ project_url = "https://github.com/maxmind/libmaxminddb",
+ version = "1.8.0",
+ sha256 = "1107799f77be6aa3b9796ad0eed8ffcc334bf45f8bd18e6a984d8adf3e719c6d",
+ strip_prefix = "libmaxminddb-{version}",
+ urls = ["https://github.com/maxmind/libmaxminddb/releases/download/{version}/libmaxminddb-{version}.tar.gz"],
+ use_category = ["dataplane_ext"],
+ extensions = ["envoy.geoip_providers.maxmind"],
+ release_date = "2023-11-07",
+ cpe = "cpe:2.3:a:maxmind:libmaxminddb:*",
+ license = "Apache-2.0",
+ license_url = "https://github.com/maxmind/libmaxminddb/blob/{version}/LICENSE",
+ ),
+ com_github_lz4_lz4 = dict(
+ project_name = "LZ4",
+ project_desc = "Extremely Fast Compression algorithm",
+ project_url = "http://www.lz4.org/",
+ version = "1.9.4",
+ sha256 = "0b0e3aa07c8c063ddf40b082bdf7e37a1562bda40a0ff5272957f3e987e0e54b",
+ strip_prefix = "lz4-{version}",
+ urls = ["https://github.com/lz4/lz4/archive/v{version}.tar.gz"],
+ use_category = ["dataplane_ext"],
+ release_date = "2022-08-15",
+ extensions = ["envoy.compression.qatzip.compressor"],
+ cpe = "N/A",
+ ),
)
def _compiled_protoc_deps(locations, versions):
diff --git a/bazel/v8_include.patch b/bazel/v8_include.patch
new file mode 100644
index 000000000000..3e6b492bf05d
--- /dev/null
+++ b/bazel/v8_include.patch
@@ -0,0 +1,41 @@
+# fix include types for late clang (15.0.7) / gcc (13.2.1)
+# for Arch linux / Fedora, like in
+# In file included from external/v8/src/torque/torque.cc:5:
+# In file included from external/v8/src/torque/source-positions.h:10:
+# In file included from external/v8/src/torque/contextual.h:10:
+# In file included from external/v8/src/base/macros.h:12:
+# external/v8/src/base/logging.h:154:26: error: use of undeclared identifier 'uint16_t'
+
+diff --git a/src/base/logging.h b/src/base/logging.h
+--- a/src/base/logging.h
++++ b/src/base/logging.h
+@@ -5,6 +5,7 @@
+ #ifndef V8_BASE_LOGGING_H_
+ #define V8_BASE_LOGGING_H_
+
++#include
+ #include
+ #include
+ #include
+diff --git a/src/base/macros.h b/src/base/macros.h
+--- a/src/base/macros.h
++++ b/src/base/macros.h
+@@ -5,6 +5,7 @@
+ #ifndef V8_BASE_MACROS_H_
+ #define V8_BASE_MACROS_H_
+
++#include
+ #include
+ #include
+
+diff --git a/src/inspector/v8-string-conversions.h b/src/inspector/v8-string-conversions.h
+--- a/src/inspector/v8-string-conversions.h
++++ b/src/inspector/v8-string-conversions.h
+@@ -5,6 +5,7 @@
+ #ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
+ #define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
+
++#include
+ #include
+
+ // Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may
diff --git a/bazel/version_update_post.sh b/bazel/version_update_post.sh
new file mode 100644
index 000000000000..ac877c1861f3
--- /dev/null
+++ b/bazel/version_update_post.sh
@@ -0,0 +1,78 @@
+#!/bin/bash -e
+
+set -o pipefail
+
+
+EXISTING_DATE="$("${JQ}" -r ".${DEP}.release_date" "${DEP_DATA}")"
+DATE_SEARCH="release_date = \"${EXISTING_DATE}\","
+DEP_CHECK="${DEP_CHECK:-tools/dependency/check}"
+
+find_date_line () {
+ local match match_ln date_match_ln
+ # This needs to find the correct date to replace
+ match="$(\
+ grep -n "${DEP_SEARCH}" "${VERSION_FILE}" \
+ | cut -d: -f-2)"
+ match_ln="$(\
+ echo "${match}" \
+ | cut -d: -f1)"
+ match_ln="$((match_ln + 1))"
+ date_match_ln="$(\
+ tail -n "+${match_ln}" "${VERSION_FILE}" \
+ | grep -n "${DATE_SEARCH}" \
+ | head -n1 \
+ | cut -d: -f1)"
+ date_match_ln="$((match_ln + date_match_ln - 1))"
+ printf '%s' "$date_match_ln"
+}
+
+update_date () {
+ local match_ln search replace
+ match_ln="$1"
+ search="$2"
+ replace="$3"
+ echo "Updating date(${match_ln}): ${search} -> ${replace}"
+ sed -i "${match_ln}s/${search}/${replace}/" "$VERSION_FILE"
+}
+
+get_new_date () {
+ # create a repository_locations with just the dep and with updated version
+ tmpfile="$(mktemp)"
+ # shellcheck disable=SC2016
+ "$JQ" --arg new_version "$VERSION" \
+ --arg existing_version "$EXISTING_VERSION" \
+ --arg dep "$DEP" \
+ 'if has($dep) then .[$dep].version = $new_version | .[$dep].urls |= map(gsub($existing_version; $new_version)) else . end' \
+ "$DEP_DATA" > "$tmpfile"
+ output="$(\
+ "$DEP_CHECK" \
+ --repository_locations="$tmpfile" \
+ --path "${BUILD_WORKSPACE_DIRECTORY}" \
+ -c release_dates 2>&1)"
+ echo "$output" \
+ | grep -E "^Mismatch" \
+ | grep "$DEP" \
+ | cut -d= -f2 \
+ | xargs || {
+ cat "$tmpfile" >&2
+ echo "$output" >&2
+ rm "$tmpfile"
+ exit 1
+ }
+ rm "$tmpfile"
+}
+
+post_version_update () {
+ local date_ln new_date
+ if [[ "$EXISTING_VERSION" == "$VERSION" ]]; then
+ echo "Nothing to update" >&2
+ exit 0
+ fi
+ date_ln="$(find_date_line)"
+ new_date="$(get_new_date)"
+ if [[ -z "$new_date" ]]; then
+ echo "Unable to retrieve date" >&2
+ exit 1
+ fi
+ update_date "$date_ln" "$EXISTING_DATE" "$new_date"
+}
diff --git a/changelogs/1.24.0.yaml b/changelogs/1.24.0.yaml
index fd5fc87991f5..52fad3a1659c 100644
--- a/changelogs/1.24.0.yaml
+++ b/changelogs/1.24.0.yaml
@@ -99,7 +99,7 @@ minor_behavior_changes:
changed the filter callback interfaces to make sure that downstream-only functionality is explicit.
- area: http
change: |
- the upstream remote address is now available to downstream filters via the ``upstreamRemoteAddress`` function.
+ the upstream remote address is now available to downstream HTTP filters via the ``upstreamRemoteAddress`` function.
- area: stats
change: |
Default tag extraction rules were changed for ``worker_id`` extraction. Previously, ``worker_`` was removed from the
@@ -193,13 +193,13 @@ new_features:
- area: http
change: |
made the :ref:`admission control ` work
- as an upstream filter.
+ as an upstream HTTP filter.
- area: http
change: |
added default-false ``envoy.reloadable_features.http1_use_balsa_parser`` for experimental BalsaParser.
- area: http
change: |
- added ``envoy.reloadable_features.allow_upstream_filters`` for experimental upstream filters.
+ added ``envoy.reloadable_features.allow_upstream_filters`` for experimental upstream HTTP filters.
- area: dns_resolver
change: |
added DNS stats for c-ares DNS resolver. Detailed documentation is available :ref:`here `.
diff --git a/changelogs/1.24.11.yaml b/changelogs/1.24.11.yaml
new file mode 100644
index 000000000000..c5c5e55329bb
--- /dev/null
+++ b/changelogs/1.24.11.yaml
@@ -0,0 +1,19 @@
+date: October 10, 2023
+
+behavior_changes:
+- area: http
+ change: |
+ Close HTTP/2 and HTTP/3 connections that prematurely reset streams. The runtime key
+ ``overload.premature_reset_min_stream_lifetime_seconds`` determines the interval where received stream
+ reset is considered premature (with 1 second default). The runtime key ``overload.premature_reset_total_stream_count``,
+ with the default value of 500, determines the number of requests received from a connection before the check for premature
+ resets is applied. The connection is disconnected if more than 50% of resets are premature.
+ Setting the runtime key ``envoy.restart_features.send_goaway_for_premature_rst_streams`` to ``false`` completely disables
+ this check.
+- area: http
+ change: |
+ Add runtime flag ``http.max_requests_per_io_cycle`` for setting the limit on the number of HTTP requests processed
+ from a single connection in a single I/O cycle. Requests over this limit are processed in subsequent I/O cycles. This
+ mitigates CPU starvation by connections that simultaneously send high number of requests by allowing requests from other
+ connections to make progress. This runtime value can be set to 1 in the presence of abusive HTTP/2 or HTTP/3 connections.
+ By default this limit is disabled.
diff --git a/changelogs/1.25.10.yaml b/changelogs/1.25.10.yaml
new file mode 100644
index 000000000000..087ad323021d
--- /dev/null
+++ b/changelogs/1.25.10.yaml
@@ -0,0 +1,34 @@
+date: October 10, 2023
+
+behavior_changes:
+- area: http
+ change: |
+ Close HTTP/2 and HTTP/3 connections that prematurely reset streams. The runtime key
+ ``overload.premature_reset_min_stream_lifetime_seconds`` determines the interval where received stream
+ reset is considered premature (with 1 second default). The runtime key ``overload.premature_reset_total_stream_count``,
+ with the default value of 500, determines the number of requests received from a connection before the check for premature
+ resets is applied. The connection is disconnected if more than 50% of resets are premature.
+ Setting the runtime key ``envoy.restart_features.send_goaway_for_premature_rst_streams`` to ``false`` completely disables
+ this check.
+- area: http
+ change: |
+ Add runtime flag ``http.max_requests_per_io_cycle`` for setting the limit on the number of HTTP requests processed
+ from a single connection in a single I/O cycle. Requests over this limit are processed in subsequent I/O cycles. This
+ mitigates CPU starvation by connections that simultaneously send high number of requests by allowing requests from other
+ connections to make progress. This runtime value can be set to 1 in the presence of abusive HTTP/2 or HTTP/3 connections.
+ By default this limit is disabled.
+- area: http
+ change: |
+ Add runtime flag ``http.max_requests_per_io_cycle`` for setting the limit on the number of HTTP requests processed
+ from a single connection in a single I/O cycle. Requests over this limit are processed in subsequent I/O cycles. This
+ mitigates CPU starvation by connections that simultaneously send high number of requests by allowing requests from other
+ connections to make progress. This runtime value can be set to 1 in the presence of abusive HTTP/2 or HTTP/3 connections.
+ By default this limit is disabled.
+
+bug_fixes:
+- area: tls
+ change: |
+ fixed a bug where handshake may fail when both private key provider and cert validation are set.
+- area: docker/publishing
+ change: |
+ Update base images to resolve various glibc vulnerabilities.
diff --git a/changelogs/1.25.11.yaml b/changelogs/1.25.11.yaml
new file mode 100644
index 000000000000..4beae10fad69
--- /dev/null
+++ b/changelogs/1.25.11.yaml
@@ -0,0 +1,7 @@
+date: October 16, 2023
+
+bug_fixes:
+- area: http
+ change: |
+ Fixed a bug where processing of deferred streams with the value of ``http.max_requests_per_io_cycle`` more than 1,
+ can cause a crash.
diff --git a/changelogs/1.26.5.yaml b/changelogs/1.26.5.yaml
new file mode 100644
index 000000000000..5f248d665be6
--- /dev/null
+++ b/changelogs/1.26.5.yaml
@@ -0,0 +1,24 @@
+date: October 10, 2023
+
+behavior_changes:
+- area: http
+ change: |
+ Close HTTP/2 and HTTP/3 connections that prematurely reset streams. The runtime key
+ ``overload.premature_reset_min_stream_lifetime_seconds`` determines the interval where received stream
+ reset is considered premature (with 1 second default). The runtime key ``overload.premature_reset_total_stream_count``,
+ with the default value of 500, determines the number of requests received from a connection before the check for premature
+ resets is applied. The connection is disconnected if more than 50% of resets are premature.
+ Setting the runtime key ``envoy.restart_features.send_goaway_for_premature_rst_streams`` to ``false`` completely disables
+ this check.
+- area: http
+ change: |
+ Add runtime flag ``http.max_requests_per_io_cycle`` for setting the limit on the number of HTTP requests processed
+ from a single connection in a single I/O cycle. Requests over this limit are processed in subsequent I/O cycles. This
+ mitigates CPU starvation by connections that simultaneously send high number of requests by allowing requests from other
+ connections to make progress. This runtime value can be set to 1 in the presence of abusive HTTP/2 or HTTP/3 connections.
+ By default this limit is disabled.
+
+bug_fixes:
+- area: tls
+ change: |
+ fixed a bug where handshake may fail when both private key provider and cert validation are set.
diff --git a/changelogs/1.26.6.yaml b/changelogs/1.26.6.yaml
new file mode 100644
index 000000000000..a5caeaa72fa5
--- /dev/null
+++ b/changelogs/1.26.6.yaml
@@ -0,0 +1,10 @@
+date: October 17, 2023
+
+bug_fixes:
+- area: tracing
+ change: |
+ Fixed a bug in the Datadog tracer where Datadog's "operation name" field would contain what should be in the "resource name" field.
+- area: http
+ change: |
+ Fixed a bug where processing of deferred streams with the value of ``http.max_requests_per_io_cycle`` more than 1,
+ can cause a crash.
diff --git a/changelogs/1.27.1.yaml b/changelogs/1.27.1.yaml
new file mode 100644
index 000000000000..a6ce59291213
--- /dev/null
+++ b/changelogs/1.27.1.yaml
@@ -0,0 +1,30 @@
+date: October 11, 2023
+
+behavior_changes:
+- area: http
+ change: |
+ Close HTTP/2 and HTTP/3 connections that prematurely reset streams. The runtime key
+ ``overload.premature_reset_min_stream_lifetime_seconds`` determines the interval where received stream
+ reset is considered premature (with 1 second default). The runtime key ``overload.premature_reset_total_stream_count``,
+ with the default value of 500, determines the number of requests received from a connection before the check for premature
+ resets is applied. The connection is disconnected if more than 50% of resets are premature.
+ Setting the runtime key ``envoy.restart_features.send_goaway_for_premature_rst_streams`` to ``false`` completely disables
+ this check.
+- area: http
+ change: |
+ Add runtime flag ``http.max_requests_per_io_cycle`` for setting the limit on the number of HTTP requests processed
+ from a single connection in a single I/O cycle. Requests over this limit are processed in subsequent I/O cycles. This
+ mitigates CPU starvation by connections that simultaneously send high number of requests by allowing requests from other
+ connections to make progress. This runtime value can be set to 1 in the presence of abusive HTTP/2 or HTTP/3 connections.
+ By default this limit is disabled.
+
+bug_fixes:
+- area: connection limit
+ change: |
+ fixed a use-after-free bug in the connection limit filter.
+- area: tls
+ change: |
+ fixed a bug where handshake may fail when both private key provider and cert validation are set.
+- area: docker/publishing
+ change: |
+ Update base images to resolve various glibc vulnerabilities.
diff --git a/changelogs/1.27.2.yaml b/changelogs/1.27.2.yaml
new file mode 100644
index 000000000000..91d3633c0154
--- /dev/null
+++ b/changelogs/1.27.2.yaml
@@ -0,0 +1,10 @@
+date: October 16, 2023
+
+bug_fixes:
+- area: tracing
+ change: |
+ Fixed a bug in the Datadog tracer where Datadog's "operation name" field would contain what should be in the "resource name" field.
+- area: http
+ change: |
+ Fixed a bug where processing of deferred streams with the value of ``http.max_requests_per_io_cycle`` more than 1,
+ can cause a crash.
diff --git a/changelogs/1.28.0.yaml b/changelogs/1.28.0.yaml
new file mode 100644
index 000000000000..72899ea63eb9
--- /dev/null
+++ b/changelogs/1.28.0.yaml
@@ -0,0 +1,445 @@
+date: October 18, 2023
+
+behavior_changes:
+- area: jwt
+ change: |
+ Changed behavior of the JWT extraction, passing entire token for validation, instead cut him in the non-Base64 character.
+ This change can be reverted temporarily by setting the runtime guard ``envoy.reloadable_features.token_passed_entirely`` to ``false``.
+- area: eds
+ change: |
+ Introduced caching of EDS assignments when used with ADS. Prior to this change, Envoy required that EDS assignments were sent
+ after an EDS cluster was updated. If no EDS assignment was received for the cluster, it ended up with an empty assignment.
+ Following this change, after a cluster update, Envoy waits for an EDS assignment until
+ :ref:`initial_fetch_timeout ` times out, and will then apply
+ the cached assignment and finish updating the warmed cluster. This change is disabled by default, and can be enabled by setting
+ the runtime flag ``envoy.restart_features.use_eds_cache_for_ads`` to ``true``.
+- area: http
+ change: |
+ Introduced a new runtime flag ``envoy.reloadable_features.no_downgrade_to_canonical_name`` to disable the name downgrading in the
+ per filter config searching.
+ See doc :ref:`Http filter route specific config ` or
+ issue https://github.com/envoyproxy/envoy/issues/29461 for more specific detail and examples.
+- area: http
+ change: |
+ Switch from http_parser to BalsaParser for handling HTTP/1.1 traffic. See https://github.com/envoyproxy/envoy/issues/21245 for
+ details. This behavioral change can be reverted by setting runtime flag ``envoy.reloadable_features.http1_use_balsa_parser`` to
+ ``false``.
+- area: udp_proxy
+ change: |
+ When the UDP proxy has session filters, choosing the upstream host and creating a socket only happens after iterating all
+ ``onNewSession()`` calls for all the filters in the chain. Upstream host health check for each downstream datagram does
+ not apply when there are session filters, and per-packet load balancing can't be used when there are session filters.
+- area: zone-aware routing
+ change: |
+ Zone-aware routing is now enabled even when the originating and upstream cluster have different numbers of zones.
+ Previously, zone-aware routing was disabled in that case and the ``lb_zone_number_differs`` stat on the cluster was incremented.
+ This behavioral change can be reverted by setting runtime guard
+ ``envoy.reloadable_features.enable_zone_routing_different_zone_counts`` to ``false``.
+ Additionally, zone-aware routing now works correctly even when the originating and upstream cluster have different zone sets.
+ Previously, zone-aware routing would not route fairly in this case.
+ To revert the entire change, set the runtime flag ``envoy.reloadable_features.locality_routing_use_new_routing_logic``
+ to ``false`` to get the old behavior and well-tested codepaths, undoing both changes.
+- area: UHV
+ change: |
+ Introduced runtime flag ``envoy.reloadable_features.enable_universal_header_validator`` for toggling Universal Header Validator
+ (UHV) on and off.
+ The default value is off. This option is currently functional only when the ``ENVOY_ENABLE_UHV`` build flag is enabled.
+ See https://github.com/envoyproxy/envoy/issues/10646 for more information about UHV.
+- area: http
+ change: |
+ Add runtime flag ``http.max_requests_per_io_cycle`` for setting the limit on the number of HTTP requests processed
+ from a single connection in a single I/O cycle. Requests over this limit are processed in subsequent I/O cycles. This
+ mitigates CPU starvation by connections that simultaneously send high number of requests by allowing requests from other
+ connections to make progress. This runtime value can be set to 1 in the presence of abusive HTTP/2 or HTTP/3 connections.
+ By default this limit is disabled.
+
+minor_behavior_changes:
+- area: ext_authz
+ change: |
+ Removing any query parameter in the presence of repeated query parameter keys no longer drops the repeats.
+- area: alternate_protocols_cache_filter
+ change: |
+ Changed the alternate protocols cache filter to get the cache from cluster config rather than filter config.
+ This allows one downstream HTTP filter to be used with multiple clusters with different caches. This change can be
+ reverted by setting runtime guard ``envoy.reloadable_features.use_cluster_cache_for_alt_protocols_filter`` to ``false``.
+- area: ext_authz
+ change: |
+ Don't append the local address to ``x-forwarded-for`` header when sending an http (not gRPC) auth request.
+ This behavior can be reverted by setting runtime flag
+ ``envoy.reloadable_features.ext_authz_http_send_original_xff`` to ``false``.
+- area: ext_proc
+ change: |
+ Envoy will only take
+ :ref:`mode_override `
+ when waiting for the header responses. It will be ignored if it is in other processing states.
+- area: outlier detection
+ change: |
+ Outlier detection will always respect ``max_ejection_percent`` now.
+ This behavioral change can be reverted by setting runtime guard
+ ``envoy.reloadable_features.check_mep_on_first_eject`` to ``false``.
+- area: outlier detection
+ change: |
+ A node must stay in healthy state for at least one period of
+ :ref:`check interval ` before ejection time multiplier is decremented.
+- area: quic
+ change: |
+ Enable QUICHE request and response headers validation. This behavior can be reverted by setting runtime flag
+ ``envoy.reloadable_features.FLAGS_envoy_quic_reloadable_flag_quic_act_upon_invalid_header`` to ``false``.
+- area: http oauth2 filter
+ change: |
+ Change HMAC cookie encoding to base64-encoded only. This change can be reverted temporarily by
+ setting the runtime guard ``envoy.reloadable_features.hmac_base64_encoding_only`` to ``false``.
+- area: router
+ change: |
+ Enable copying response_code from the upstream stream_info onto the downstream stream_info.
+ This behavior can be reverted by setting runtime guard
+ ``envoy.reloadable_features.copy_response_code_to_downstream_stream_info`` to ``false``.
+- area: xds
+ change: |
+ Set the lower bound of :ref:`fill_rate `
+ to once per year. Values lower than once per year will automatically be set to that value.
+- area: redis
+ change: |
+ The redis network filter :ref:`connection_rate_limit_per_sec
+ `
+ must be greater than 0. A config that sets this value to 0 will be rejected.
+- area: upstream
+ change: |
+ Deprecate code path of legacy upstream load balancer. Ideally, this is implementation detail changes and should not
+ affect users. However, if there is any user who encounters issues, this behavior can be reverted by setting runtime flag
+ ``envoy_reloadable_features_convert_legacy_lb_config`` to false.
+- area: http
+ change: |
+ Change the proxy status for ``UpstreamRequestTimeout`` to ``HttpResponseTimeout``.
+ It can be disabled by the runtime guard ``envoy.reloadable_features.proxy_status_upstream_request_timeout``.
+- area: local_rate_limit
+ change: |
+ Added new configuration field :ref:`always_consume_default_token_bucket
+ `
+ to allow for setting if default token bucket should be always consumed or only be consumed when there is no matching descriptor.
+- area: tls
+ change: |
+ changed ssl failure reason format in ssl socket for a better handling.
+ It can be disabled by the runtime guard ``envoy.reloadable_features.ssl_transport_failure_reason_format``.
+- area: tls_inspector
+ change: |
+ Updated the security posture of the :ref:`TLS inspector listener filter ` to
+ robust against untrusted downstreams and upstreams.
+- area: router
+ change: |
+ Enable environment_variable in router direct response.
+- area: access_log
+ change: |
+ When emitting grpc logs, only downstream HTTP filter state was used. Now, both downstream and upstream HTTP filter states
+ will be tried to find the keys configured in filter_state_objects_to_log.
+
+bug_fixes:
+- area: connection limit
+ change: |
+ Fixed a use-after-free bug in the connection limit filter.
+- area: subset load balancer
+ change: |
+ Fixed a bug where
+ :ref:`overprovisioning_factor` and
+ :ref:`weighted_priority_health `
+ values were not respected when subset load balacing was enabled. The default values of ``140`` and ``false`` were always used.
+- area: http1
+ change: |
+ Fixed a bug where HTTP/1.1 requests with ``Connection: close`` header is handled differently if the requested is internally redirected.
+ Without internal redirect, the response will also have a ``Connection: close`` header and the connection will be closed after finishing
+ that request. Requests with internal redirect should be handled in the same way. This behavior can be reverted by setting runtime
+ ``envoy.reloadable_features.http1_connection_close_header_in_redirect`` to ``false``.
+- area: redis
+ change: |
+ Fixed a bug where redis key formatter is using the closed stream because of life time issues.
+- area: extension_discovery_service
+ change: |
+ Fixed a bug causing crash if ECDS is used with upstream HTTP filters.
+- area: tls
+ change: |
+ Fixed a bug where handshake may fail when both private key provider and cert validation are set.
+- area: dns
+ change: |
+ Fixed a bug where when ``respect_dns_ttl`` was set to ``true``, c-ares dns resolver only considered address record for TTL calculation
+ while ignoring CNAME records TTL. Now when ``respect_dns_ttl`` is set to ``true`` minimum of all TTL records is considered.
+- area: dns
+ change: |
+ Fixed a bug where dns response was not always conforming `RFC 2181 `_ for TTL values.
+ Previously a malicious user could add a TTL greater than 2^31 - 1, and with c-ares library using 32 bit signed int data type
+ would overflow and send a negative TTL.
+- area: healthcheck
+ change: |
+ The default behavior of unejecting outlier-detection-ejected host on successful active health checking can
+ be disabled by setting :ref:`outlier_detection.successful_active_health_check_uneject_host
+ `
+ to ``false``. This new configuration flag is a substitute for the removed runtime option
+ ``envoy.reloadable_features_successful_active_health_check_uneject_host``.
+- area: aws signer
+ change: |
+ Fixed a bug where expiration timestamp on task roles failed to validate. This causes failure of credential caching which
+ results in constant hits to the task role metadata URL.
+- area: router check tool
+ change: |
+ Fixed a bug where the route coverage is not correctly calculated when a route has weighted clusters.
+- area: unix domain sockets
+ change: |
+ Fixed a crash on some versions of macOS when using a listener on a unix-domain socket.
+- area: redis
+ change: |
+ Fixed a bug where redis key with % in the key is failing with a validation error.
+- area: tracing
+ change: |
+ Fixed a bug in the Datadog tracer where Datadog's "operation name" field would contain what should be in the "resource name" field.
+- area: http
+ change: |
+ Close HTTP/2 and HTTP/3 connections that prematurely reset streams. The runtime key
+ ``overload.premature_reset_min_stream_lifetime_seconds`` determines the interval where received stream
+ reset is considered premature (with 1 second default). The runtime key ``overload.premature_reset_total_stream_count``,
+ with the default value of 500, determines the number of requests received from a connection before the check for premature
+ resets is applied. The connection is disconnected if more than 50% of resets are premature, or if
+ the number of suspect streams is already large enough to guarantee that more than 50% of the streams will be suspect
+ upon reaching the total stream threshold (even if all the remaining streams are considered benign).
+ Setting the runtime key ``envoy.restart_features.send_goaway_for_premature_rst_streams`` to ``false`` completely disables
+ this check.
+- area: http
+ change: |
+ Fixed a bug that could cause metadata to be decoded after a local reply has been triggered.
+ Can be disabled by setting ``envoy.reloadable_features.stop_decode_metadata_on_local_reply`` to false.
+- area: docker/publishing
+ change: |
+ Update base images to resolve various glibc vulnerabilities.
+- area: xds
+ change: |
+ Fix a bug where the nonce was not reset after reconnecting to the xDS server, when using State-of-the-World.
+
+removed_config_or_runtime:
+- area: listener
+ change: |
+ Removed ``envoy.reloadable_features.enable_update_listener_socket_options`` runtime flag and legacy code paths.
+- area: tcp
+ change: |
+ Removed runtime key ``envoy.reloadable_features.tcp_pool_idle_timeout``.
+- area: http filters
+ change: |
+ Removed ``envoy_reloadable_features_http_filter_avoid_reentrant_local_reply`` runtime flag and legacy code paths.
+- area: tcp_proxy
+ change: |
+ Removed ``envoy_reloadable_features_finish_reading_on_decode_trailers`` runtime flag and legacy code paths.
+- area: dns
+ change: |
+ Removed ``envoy.restart_features.use_apple_api_for_dns_lookups`` and legacy code paths.
+- area: runtime
+ change: |
+ Removed ``envoy.restart_features.remove_runtime_singleton`` and legacy code paths.
+- area: runtime
+ change: |
+ Removed ``envoy_reloadable_features_append_query_parameters_path_rewriter`` and legacy code paths.
+- area: xDS
+ change: |
+ Removed ``envoy.restart_features.explicit_wildcard_resource`` and legacy code paths.
+- area: quic
+ change: |
+ Removed ``envoy.reloadable_features.reject_require_client_certificate_with_quic`` and legacy code paths.
+- area: healthcheck
+ change: |
+ Removed ``envoy.reloadable_features_successful_active_health_check_uneject_host`` runtime option and
+ substituted it with :ref:`outlier_detection.successful_active_health_check_uneject_host
+ `
+ outlier detection configuration flag.
+- area: ext_authz
+ change: |
+ Removed ``envoy.reloadable_features.http_ext_auth_failure_mode_allow_header_add``
+ runtime option and substituted it with :ref:`failure_mode_allow_header_add
+ `
+ configuration flag.
+
+new_features:
+- area: access_log
+ change: |
+ Added ``%RESPONSE_FLAGS_LONG%`` substitution string, that will output a pascal case string representing the response flags.
+ The output response flags will correspond with ``%RESPONSE_FLAGS%``, only with a long textual string representation.
+- area: compression
+ change: |
+ Added :ref:`remove_accept_encoding_header
+ `
+ for per-route configuration of this value.
+- area: config
+ change: |
+ Added the capability to defer broadcasting of certain cluster (CDS, EDS) to
+ worker threads from the main thread. This optimization can save significant
+ amount of memory in cases where there are (1) a large number of workers and
+ (2) a large amount of config, most of which is unused. This capability is
+ guarded by :ref:`enable_deferred_cluster_creation
+ `.
+- area: extension_discovery_service
+ change: |
+ Added ECDS support for :ref:`downstream network filters `.
+- area: ext_proc
+ change: |
+ Added
+ :ref:`disable_immediate_response `
+ config API to ignore the
+ :ref:`immediate_response `
+ message from the external processing server.
+- area: access_log
+ change: |
+ Added a field lookup to ``%FILTER_STATE%`` for objects that have reflection enabled.
+- area: http
+ change: |
+ Added :ref:`Json-To-Metadata filter `.
+- area: listener
+ change: |
+ Added possibility to track global downstream connection limit via :ref:`downstream connections monitor
+ ` in overload manager.
+- area: extension_discovery_service
+ change: |
+ Added metric ``listener.listener_stat.network_extension_config_missing`` to track closed connections due to missing config.
+- area: lua
+ change: |
+ Added :ref:`downstreamRemoteAddress() `
+ method to the Stream info object API.
+- area: quic
+ change: |
+ Added support for QUIC listener filters with ECDS support reusing the same config API
+ :ref:`listener_filters ` as TCP does.
+- area: oauth2
+ change: |
+ Added :ref:`use_refresh_token `
+ to support updating an access token via a refresh token if that is provided by authorization server.
+- area: redis
+ change: |
+ Added support for ``time`` command (returns a local response).
+- area: extension_discovery_service
+ change: |
+ Added ECDS support for :ref:`upstream network filters `.
+- area: redis
+ change: |
+ Added support for ``lmove`` command.
+- area: upstream
+ change: |
+ Added :ref:`allow_redundant_keys `
+ to suppport redundant keys in request metadata for subset load balancing.
+- area: access_logs
+ change: |
+ Added :ref:`json_format_options ` config option to
+ support JSON output formatting and the :ref:`sort_properties `
+ option to print the JSON output with sorted properties.
+- area: tap
+ change: |
+ Added :ref:`custom_sink ` type to enable writing tap data
+ out to a custom sink extension.
+- area: tls
+ change: |
+ Added :ref:`disable_stateful_session_resumption
+ ` config option to
+ disable stateful TLS session resumption.
+- area: udp_proxy
+ change: |
+ Added :ref:`session_filters ` config to
+ support optional filters that will run for each upstream UDP session. More information can be found in the UDP proxy documentation.
+- area: udp_proxy
+ change: |
+ Added ``injectDatagramToFilterChain()`` callback to UDP session filters that allows session filters to inject datagrams downstream
+ or upstream the filter chain during a filter chain iteration. This can be used, for example, by session filters that are required
+ to buffer datagrams due to an asynchronous call.
+- area: otlp_stats_sink
+ change: |
+ Added :ref:`stats prefix option `
+ to OTLP stats sink that enables adding a static prefix to all stats flushed by this sink.
+- area: udp_proxy
+ change: |
+ Added :ref:`http_capsule ` UDP session filter
+ that can be used to encapsule or decapsulate UDP datagrams in HTTP, when used for UDP tunneling.
+- area: tap
+ change: |
+ Added :ref:`record_headers_received_time `
+ to control writing request and response headers received time in trace output.
+- area: udp_proxy
+ change: |
+ added :ref:`dynamic_forward_proxy `
+ UDP session filter that can be used to have dynamic forward proxy UDP flows, when used in conjunction with another session filter
+ that sets required filter state values.
+- area: zookeeper
+ change: |
+ Added support for emitting per opcode request bytes metrics via :ref:`enable_per_opcode_request_bytes_metrics
+ `.
+ added support for emitting per opcode response bytes metrics via :ref:`enable_per_opcode_response_bytes_metrics
+ `.
+- area: tls
+ change: |
+ Added fallback :ref:`fallback
+ `
+ to support private key provider to fallback to boringssl TLS handshake.
+ If the private key provider isn't available (eg. the required hardware capability doesn't existed),
+ Envoy will fallback to the BoringSSL default implementation when the fallback is ``true``.
+ The default value is ``false``.
+- area: tcp
+ change: |
+ Added the support to detect and send TCP RST for raw buffer socket based connections. This is currently supported on Linux only.
+ It can be disabled by the runtime guard ``envoy_reloadable_features_detect_and_raise_rst_tcp_connection``.
+- area: upstream
+ change: |
+ Added the ability to specify a custom upstream local address selector using
+ :ref:`local_address_selector `.
+- area: redis
+ change: |
+ Added new configuration field :ref:`read_command_policy
+ `
+ to specify Envoy should route read commands to another cluster.
+- area: tap
+ change: |
+ Added :ref:`record_downstream_connection `
+ to control writing downstream connection address info in trace output.
+- area: tracing
+ change: |
+ Added :ref:`spawn_upstream_span
+ `
+ to control whether to create separate upstream span for upstream request.
+- area: original_dst
+ change: |
+ added support for the internal listener address recovery using the original destination listener filter.
+- area: filters
+ change: |
+ Added filters to update the filter state for :ref:`the HTTP requests ` and
+ :ref:`the TCP connections `.
+- area: http
+ change: |
+ Added :ref:`disabled
+ `
+ flag to disable a filter in the filter chain by default. The filter can be enabled explicitly by setting
+ valid per filter config in the route configuration.
+- area: admin_logging
+ change: |
+ added support for glob control of fine-grain loggers in admin /logging interface.
+- area: geoip
+ change: |
+ Added support for :ref:`Maxmind geolocation provider `.
+- area: admin
+ change: |
+ Added a new ``skip_exit`` query parameter to ``/drain_listeners`` to skip exiting after the drain period.
+- area: router
+ change: |
+ Added ``metadata`` support for :ref:`virtual host ` and
+ :ref:`route configuration `.
+- area: tracing
+ change: |
+ Added support for exporting spans via HTTP on the OpenTelemetry tracer.
+
+deprecated:
+- area: tracing
+ change: |
+ OpenTracing is deprecated and will be removed at version 1.30, since the upstream project has been abandoned.
+- area: tracing
+ change: |
+ Opencensus is deprecated and will be removed at version 1.30, since the upstream project has been abandoned.
+- area: tracing
+ change: |
+ :ref:`start_child_span `
+ is deprecated by
+ :ref:`spawn_upstream_span
+ `.
+ Please use the new field to control whether to create separate upstream span for upstream request.
+- area: listener
+ change: |
+ deprecated runtime key ``overload.global_downstream_max_connections`` in favor of :ref:`downstream connections monitor
+ `.
diff --git a/changelogs/BUILD b/changelogs/BUILD
index 57ad9389b3b1..e36d6bfbb93a 100644
--- a/changelogs/BUILD
+++ b/changelogs/BUILD
@@ -12,3 +12,13 @@ filegroup(
name = "changelogs",
srcs = glob(["*.*.*.yaml"]) + ["current.yaml"],
)
+
+genrule(
+ name = "summary",
+ outs = ["summary.txt"],
+ cmd = """
+ cat $(location :summary.md) > $@
+ """,
+ tools = ["summary.md"],
+ visibility = ["//visibility:public"],
+)
diff --git a/changelogs/current.yaml b/changelogs/current.yaml
index 964a4cd719cb..715baf916d7e 100644
--- a/changelogs/current.yaml
+++ b/changelogs/current.yaml
@@ -2,281 +2,350 @@ date: Pending
behavior_changes:
# *Changes that are expected to cause an incompatibility if applicable; deployment changes are likely required*
-- area: jwt
- change: |
- Changed behavior of the jwt extraction, passing entire token for validation, instead cut him in the non-Base64 character.
- This change can be reverted temporarily by setting the runtime guard ``envoy.reloadable_features.token_passed_entirely`` to false.
-- area: eds
+- area: http
change: |
- Introduced caching of EDS assignments when used with ADS. Prior to this change, Envoy required that EDS assignments were sent
- after an EDS cluster was updated. If no EDS assignment was received for the cluster, it ended up with an empty assignment.
- Following this change, after a cluster update, Envoy waits for an EDS assignment until
- :ref:`initial_fetch_timeout ` times out, and will then apply
- the cached assignment and finish updating the warmed cluster. This change is disabled by default, and can be enabled by setting
- the runtime flag ``envoy.restart_features.use_eds_cache_for_ads`` to true.
+ Remove the hop by hop TE header from downstream request headers. This change can be temporarily reverted
+ by setting ``envoy.reloadable_features.sanitize_te`` to false.
- area: http
change: |
- Introduced a new runtime flag ``envoy.reloadable_features.no_downgrade_to_canonical_name`` to disable the name downgrading in the
- per filter config searching.
+ Flip runtime flag ``envoy.reloadable_features.no_downgrade_to_canonical_name`` to true. Name downgrading in the
+ per filter config searching will be disabled by default. This behavior can be temporarily reverted by setting
+ the flag to false explicitly.
See doc :ref:`Http filter route specific config ` or
issue https://github.com/envoyproxy/envoy/issues/29461 for more specific detail and examples.
-- area: http
+- area: listener
change: |
- Switch from http_parser to BalsaParser for handling HTTP/1.1 traffic. See https://github.com/envoyproxy/envoy/issues/21245 for
- details. This behavioral change can be reverted by setting runtime flag ``envoy.reloadable_features.http1_use_balsa_parser`` to
- false.
-- area: udp_proxy
+ undeprecated runtime key ``overload.global_downstream_max_connections`` until :ref:`downstream connections monitor
+ ` extension becomes stable.
+- area: stats dns_filter
change: |
- When the UDP proxy has session filters, choosing the upstream host and creating a socket only happens after iterating all
- ``onNewSession()`` calls for all the filters in the chain. Upstream host health check for each downstream datagram does
- not apply when there are session filters, and per-packet load balancing can't be used when there are session filters.
-- area: zone-aware routing
- change: |
- Zone-aware routing is now enabled even when the originating and upstream cluster have different numbers of zones.
- Previously, zone-aware routing was disabled in that case and the ``lb_zone_number_differs`` stat on the cluster was incremented.
- This behavioral change can be reverted by setting runtime guard
- ``envoy.reloadable_features.enable_zone_routing_different_zone_counts`` to false.
- Additionally, zone-aware routing now works correctly even when the originating and upstream cluster have different zone sets.
- Previously, zone-aware routing would not route fairly in this case.
- To revert the entire change, set the runtime flag ``envoy.reloadable_features.locality_routing_use_new_routing_logic``
- to false to get the old behavior and well-tested codepaths, undoing both changes.
-
-- area: UHV
+ Fixed tag extraction so that :ref:`stat_prefix `
+ is properly extracted. This changes the Prometheus name from
+ dns_filter_myprefix_local_a_record_answers{} to dns_filter_local_a_record_answers{envoy.dns_filter_prefix="myprefix"}.
+- area: stats connection_limit
+ change: |
+ Fixed tag extraction so that :ref:`stat_prefix `
+ is properly extracted. This changes the Prometheus name from ``envoy_connection_limit_myprefix_limited_connections{}`` to
+ ``envoy_connection_limit_limited_connections{envoy_connection_limit_prefix="myprefix"}``.
+- area: http2
+ change: |
+ Changes the default value of ``envoy.reloadable_features.http2_use_oghttp2`` to true. This changes the codec used for HTTP/2
+ requests and responses. This behavior can be reverted by setting the feature to false.
+- area: http2
+ change: |
+ Discard the ``Host`` header if the ``:authority`` header was received to bring Envoy into compliance with
+ https://www.rfc-editor.org/rfc/rfc9113#section-8.3.1 This behavioral change can be reverted by setting runtime flag
+ ``envoy.reloadable_features.http2_discard_host_header`` to false.
+- area: grpc reverse bridge
change: |
- Introduced runtime flag ``envoy.reloadable_features.enable_universal_header_validator`` for toggling Universal Header Validator
- (UHV) on and off.
- The default value is off. This option is currently functional only when the ``ENVOY_ENABLE_UHV`` build flag is enabled.
- See https://github.com/envoyproxy/envoy/issues/10646 for more information about UHV.
+ Handle empty response bodies in grpc_http1_reverse_bridge. This may cause problems for clients expecting the filter to crash
+ for empty responses. This behavioral change can be temporarily reverted by setting runtime guard
+ ``envoy.reloadable_features.grpc_http1_reverse_bridge_handle_empty_response`` to false.
minor_behavior_changes:
# *Changes that may cause incompatibilities for some users, but should not for most*
-- area: ext_authz
+- area: golang
+ change: |
+ Remove Protocol method from RequestHeaderMap.
+ To get the protocol, please use GetProperty("request.protocol") instead.
+- area: aws
+ change: |
+ Added support to use http async client to fetch the credentials from EC2 instance metadata and ECS task metadata providers
+ instead of libcurl which is deprecated. By default this behavior is disabled. To enable set
+ ``envoy.reloadable_features.use_http_client_to_fetch_aws_credentials`` to true.
+- area: local_rate_limit
+ change: |
+ Added new configuration field :ref:`rate_limited_as_resource_exhausted
+ `
+ to allow for setting if rate limit grpc response should be RESOURCE_EXHAUSTED instead of the default UNAVAILABLE.
+- area: config parsing, http cache filter
+ change: |
+ Replaces protobuf hashing by human-readable string with a dedicated deterministic hashing algorithm.
+ The performance of the hash operation is improved by 2-10x depending on the structure of the message,
+ which is expected to reduce config update time or startup time by 10-25%. The new algorithm is also
+ used for http_cache_filter hashing, which will effectively cause a one-time cache flush on update
+ for users with a persistent cache. To enable this behavior set ``envoy.restart_features.use_fast_protobuf_hash`` to true.
+- area: filter state
+ change: |
+ Added config name of filter sending a local reply in filter state with key
+ ``envoy.filters.network.http_connection_manager.local_reply_owner``.
+ See :ref:`the well-known filter state keys ` for more detail.
+- area: http2
+ change: |
+ Flip the runtime guard ``envoy.reloadable_features.defer_processing_backedup_streams`` to be on by default.
+ This feature improves flow control within the proxy by deferring work on the receiving end if the other
+ end is backed up.
+- area: admin
+ change: |
+ Switch no admin ``warning`` -> ``info``.
+- area: generic_proxy
+ change: |
+ Update the stats prefix of generic proxy from ```` to ``generic_proxy.``.
+
+bug_fixes:
+# *Changes expected to improve the state of the world and are unlikely to have negative effects*
+- area: buffer
change: |
- removing any query parameter in the presence of repeated query parameter keys no longer drops the repeats.
-- area: alternate_protocols_cache_filter
+ Fixed a bug (https://github.com/envoyproxy/envoy/issues/28760) that the internal listener causes an undefined
+ behavior due to the unintended release of the buffer memory.
+- area: xds
change: |
- Changed the alternate protocols cache filter to get the cache from cluster config rather than filter config.
- This allows one downstream filter to be used with multiple clusters with different caches. This change can be reverted by
- setting runtime guard ``envoy.reloadable_features.use_cluster_cache_for_alt_protocols_filter`` to false.
-- area: ext_authz
+ Fixed a bug (https://github.com/envoyproxy/envoy/issues/27702) that caused ADS initialization
+ to fail on the first attempt and set a back-off retry interval of up to 1 second, if ADS is
+ using an Envoy Cluster for the backend. The issue was fixed to ensure that ADS initialization
+ happens after the Envoy Cluster it depends upon has been properly initialized. ADS that does
+ not depend on an Envoy Cluster (i.e. GoogleGrpc) is not affected by this change.
+- area: grpc
change: |
- Don't append the local address to ``x-forwarded-for`` header when sending an http (not gRPC) auth request.
- This behavior can be reverted by setting runtime flag
- ``envoy.reloadable_features.ext_authz_http_send_original_xff`` to false.
-- area: outlier detection
+ Fixed a bug in gRPC async client cache which intermittently causes CPU spikes due to busy loop in timer expiration.
+- area: tracing
change: |
- Outlier detection will always respect max_ejection_percent now.
- This behavioral change can be reverted by setting runtime guard
- ``envoy.reloadable_features.check_mep_on_first_eject`` to false.
+ Fixed a bug that caused the Datadog tracing extension to drop traces that
+ should be kept on account of an extracted sampling decision.
- area: quic
change: |
- Enable QUICHE request and response headers validation. This behavior can be reverted by setting runtime flag
- ``envoy.reloadable_features.FLAGS_envoy_quic_reloadable_flag_quic_act_upon_invalid_header`` to false.
-- area: http oauth2 filter
- change: |
- Change HMAC cookie encoding to base64-encoded only. This change can be reverted temporarily by
- setting the runtime guard ``envoy.reloadable_features.hmac_base64_encoding_only`` to false.
-- area: router
+ Fixed a bug in QUIC and HCM interaction which could cause use-after-free during asynchronous certificates retrieval.
+ The fix is guarded by runtime ``envoy.reloadable_features.quic_fix_filter_manager_uaf``.
+- area: redis
change: |
- Enable copying response_code from the upstream stream_info onto the downstream stream_info.
- This behavior can be reverted by setting runtime guard
- ``envoy.reloadable_features.copy_response_code_to_downstream_stream_info`` to false.
-- area: xds
+ Fixed a bug causing crash if incoming redis key does not match against a prefix_route and catch_all_route is not defined.
+- area: access log
change: |
- Set the lower bound of :ref:`fill_rate `
- to once per year. Values lower than once per year will automatically be set to that value.
-- area: redis
+ Fixed a bug where the omit_empty_values field was not honored for access logs specifying formats via text_format_source.
+- area: ext_proc
change: |
- The redis network filter :ref:`connection_rate_limit_per_sec
- `
- must be greater than 0. A config that sets this value to 0 will be rejected.
-
-bug_fixes:
-# *Changes expected to improve the state of the world and are unlikely to have negative effects*
-- area: connection limit
+ Fixed content_length related issues when body mutation by external processor is enabled. ext_proc filter removes the content
+ length header in 1)STREAMED BodySendMode 2) BUFFERED_PARTIAL BodySendMode and 3) BUFFERED BodySendMode + SKIP HeaderSendMode.
+ This will enable chunked-encoding whenever feasible in HTTP1.1. Besides, ext_proc filter keep content length header
+ in BUFFERED BodySendMode + SEND HeaderSendMode. It is now external processor's responsibility to set the content length
+ correctly matched to the mutated body. if those two doesn't match, the mutation will be rejected and local reply with error
+ status will be returned.
+- area: dynamic_forward_proxy
+ change: |
+ Fixed a bug where the preresolved hostnames specified in the Dynamic Forward Proxy cluster
+ config would not use the normalized hostname as the DNS cache key, which is the same key
+ used for retrieval. This caused cache misses on initial use, even though the host DNS entry
+ was pre-resolved. The fix is guarded by runtime guard ``envoy.reloadable_features.normalize_host_for_preresolve_dfp_dns``,
+ which defaults to true.
+- area: otlp_stat_sink
+ change: |
+ Fixed a bug where a histogram bucket counts were wrong. Additionally, the number of buckets is fixed and is now
+ one element larger than the explicit bounds elements, as required by the specification.
+- area: tracing
change: |
- fixed a use-after-free bug in the connection limit filter.
-- area: subset load balancer
+ Fixed a bug where child spans produced by the Datadog tracer would have an incorrect operation name.
+- area: DNS
change: |
- Fixed a bug where
- :ref:`overprovisioning_factor` and
- :ref:`weighted_priority_health `
- values were not respected when subset load balacing was enabled. The default values of 140 and false were always used.
-- area: http1
+ Fixed a race condition that when multiple requests with the same authority header are sent to Envoy, sometimes some requests
+ may receive 503 response with no_healthy_upstream from Envoy. The fix is guarded by runtime guard
+ ``envoy.reloadable_features.dns_cache_set_first_resolve_complete``, which defaults to true.
+- area: upstream
change: |
- Fixed a bug where HTTP/1.1 requests with "Connection: close" header is handled differently if the requested is internally redirected.
- Without internal redirect, the response will also have a "Connection: close" header and the connection will be closed after finishing
- that request. Requests with internal redirect should be handled in the same way. This behavior can be reverted by setting runtime
- ``envoy.reloadable_features.http1_connection_close_header_in_redirect`` to false.
-- area: redis
+ Fixed a bug that the subset load balancer will always be used even if the subset load balancer config does not
+ contain any subset selector.
+- area: docker
change: |
- fixed a bug where redis key formatter is using the closed stream because of life time issues.
-- area: extension_discovery_service
+ Updated base image to ``ubuntu:22.04`` to fix Redis memory issue (https://github.com/envoyproxy/envoy/issues/31248).
+- area: ext_authz
change: |
- Fixed a bug causing crash if ECDS is used with upstream HTTP filters.
-- area: tls
+ Fixed a bug to ensure the proper functioning of the ``with_request_body`` feature within the per-route ExtAuthZ filter.
+
+removed_config_or_runtime:
+# *Normally occurs at the end of the* :ref:`deprecation period `
+- area: http
change: |
- fixed a bug where handshake may fail when both private key provider and cert validation are set.
-- area: dns
+ Removed ``envoy.reloadable_features.expand_agnostic_stream_lifetime`` and legacy code paths.
+- area: http
change: |
- Fixed a bug where when respect_dns_ttl was set to true, c-ares dns resolver only considered address record for ttl calculation
- while ignoring CNAME records TTL. Now when respect_dns_ttl is set to true minimum of all TTL records is considered.
-- area: dns
+ removed ``envoy.reloadable_features.sanitize_original_path`` and legacy code paths.
+- area: maglev
change: |
- Fixed a bug where dns response was not always conforming [RFC 2181](https://datatracker.ietf.org/doc/html/rfc2181) for TTL values.
- Previously a malicious user could add a TTL greater than 2^31 - 1, and with c-ares library using 32 bit signed int data type
- would overflow and send a negative TTL.
-- area: healthcheck
+ Removed ``envoy.reloadable_features.allow_compact_maglev`` and legacy code paths.
+- area: router
change: |
- The default behavior of unejecting outlier-detection-ejected host on successful active health checking can
- be disabled by setting :ref:`outlier_detection.successful_active_health_check_uneject_host
- `
- to ``false``. This new configuration flag is a substitute for the removed runtime option
- ``envoy.reloadable_features_successful_active_health_check_uneject_host``.
-- area: aws signer
+ Removed the deprecated ``envoy.reloadable_features.prohibit_route_refresh_after_response_headers_sent``
+ runtime flag and legacy code path.
+- area: upstream
change: |
- fixed a bug where expiration timestamp on task roles failed to validate. This causes failure of credential caching which
- results in constant hits to the task role metadata URL.
-- area: router check tool
+ Removed the deprecated ``envoy.reloadable_features.validate_detailed_override_host_statuses``
+ runtime flag and legacy code path.
+- area: grpc
change: |
- Fixed a bug where the route coverage is not correctly calculated when a route has weighted clusters.
-- area: unix domain sockets
+ Removed the deprecated ``envoy.reloadable_features.service_sanitize_non_utf8_strings``
+ runtime flag and legacy code path.
+- area: access log
change: |
- Fixed a crash on some versions of macOS when using a listener on a unix-domain socket.
-- area: redis
+ Removed the deprecated ``envoy.reloadable_features.format_ports_as_numbers``
+ runtime flag and legacy code path.
+- area: router
change: |
- Fixed a bug where redis key with % in the key is failing with a validation error.
+ Removed the deprecated ``envoy.reloadable_features.ignore_optional_option_from_hcm_for_route_config``
+ runtime flag and legacy code path.
-removed_config_or_runtime:
-# *Normally occurs at the end of the* :ref:`deprecation period `
-- area: listener
- change: |
- Removed ``envoy.reloadable_features.enable_update_listener_socket_options`` runtime flag and legacy code paths.
-- area: tcp
+new_features:
+- area: composite filter
+ change: |
+ added :ref:`ExtensionConfiguration discovery service` support for
+ :ref:`composite filter `.
+- area: aws
+ change: |
+ Added support for AWS common utility to fetch metadata credentials from AWS STS by using ``WebIdentityToken``. To enable
+ you need to set ``envoy.reloadable_features.use_http_client_to_fetch_aws_credentials`` to ``true`` so that web identity
+ credentials provider can use http async client to fetch credentials. Web identity credentials provider cannot use current
+ default libcurl credentials fetcher which is under deprecation and will soon be removed. Web identity credentials provider
+ is not compatible with :ref:`Grpc Credentials AWS IAM `
+ plugin which can only support deprecated libcurl credentials fetcher, see https://github.com/envoyproxy/envoy/pull/30626.
+- area: filters
+ change: |
+ Added :ref:`the Basic Auth filter `, which can be used to
+ authenticate user credentials in the HTTP Authentication heaer defined in `RFC7617 `_.
+- area: upstream
change: |
- Removed runtime key ``envoy.reloadable_features.tcp_pool_idle_timeout``.
-- area: http filters
+ Implmented API :ref:`drop_overloads`
+ which can be used to drop certain percentage of traffic from Envoy.
+- area: stats
change: |
- Removed ``envoy_reloadable_features_http_filter_avoid_reentrant_local_reply`` runtime flag and legacy code paths.
-- area: tcp_proxy
+ added :ref:`per_endpoint_stats ` to get some metrics
+ for each endpoint in a cluster.
+- area: jwt
change: |
- Removed ``envoy_reloadable_features_finish_reading_on_decode_trailers`` runtime flag and legacy code paths.
-- area: dns
+ The jwt filter can now serialize non-primitive custom claims when maping claims to headers.
+ These claims will be serialized as JSON and encoded as Base64.
+- area: jwt
change: |
- Removed ``envoy.restart_features.use_apple_api_for_dns_lookups`` and legacy code paths.
-- area: runtime
+ The JWT authentication filter supports changing the routes when either the headers or the
+ dynamic metadata are modified.
+- area: tcp_proxy
change: |
- Removed ``envoy.restart_features.remove_runtime_singleton`` and legacy code paths.
-- area: xDS
+ added support to TCP Proxy for recording the latency in ``UpstreamTiming`` from when the first
+ initial connection to the upstream cluster was attempted to when either the
+ connection was successfully established or the filiter failed to initialize
+ any connection to the upstream.
+- area: ratelimit
change: |
- Removed ``envoy.restart_features.explicit_wildcard_resource`` and legacy code paths.
-- area: quic
+ Ratelimit supports setting the HTTP status that is returned to the client when the ratelimit server
+ returns an error or cannot be reached with :ref:`status_on_error
+ `
+ configuration flag.
+- area: tracing
change: |
- Removed ``envoy.reloadable_features.reject_require_client_certificate_with_quic`` and legacy code paths.
-- area: healthcheck
+ Added support for configuring resource detectors on the OpenTelemetry tracer.
+- area: tracing
change: |
- Removed ``envoy.reloadable_features_successful_active_health_check_uneject_host`` runtime option and
- substituted it with :ref:`outlier_detection.successful_active_health_check_uneject_host
- `
- outlier detection configuration flag.
-
-new_features:
-- area: access_log
+ Added support to configure a sampler for the OpenTelemetry tracer.
+- area: CEL-attributes
change: |
- added %RESPONSE_FLAGS_LONG% substitution string, that will output a pascal case string representing the resonse flags.
- The output response flags will correspond with %RESPONSE_FLAGS%, only with a long textual string representation.
-- area: config
+ Added :ref:`attribute ` ``connection.transport_failure_reason``
+ for looking up connection transport failure reason.
+- area: ext_authz
change: |
- Added the capability to defer broadcasting of certain cluster (CDS, EDS) to
- worker threads from the main thread. This optimization can save significant
- amount of memory in cases where there are (1) a large number of workers and
- (2) a large amount of config, most of which is unused. This capability is
- guarded by :ref:`enable_deferred_cluster_creation
- `.
-- area: extension_discovery_service
+ New config parameter :ref:`charge_cluster_response_stats
+ `
+ for not incrementing cluster statistics on ext_authz response. Default true, no behavior change.
+- area: ext_authz
change: |
- added ECDS support for :ref:` downstream network filters`.
-- area: ext_proc
+ forward :ref:`filter_metadata ` selected by
+ :ref:`route_metadata_context_namespaces
+ `
+ and :ref:`typed_filter_metadata ` selected by
+ :ref:`route_typed_metadata_context_namespaces
+ `
+ from the metadata of the selected route to external auth service.
+ This metadata propagation is independent from the dynamic metadata from connection and request.
+- area: ext_authz_filter
+ change: |
+ added :ref:`with_request_body
+ ` to optionally override
+ the default behavior of sending the request body to the authorization server from the per-route filter.
+- area: grpc async client
+ change: |
+ added :ref:`max_cached_entry_idle_duration
+ `
+ to control the cached grpc client eviction time in the cache.
+- area: ratelimit
+ change: |
+ Ratelimit supports optional additional prefix to use when emitting statistics with :ref:`stat_prefix
+ `
+ configuration flag.
+- area: udp_proxy
change: |
- added
- :ref:`disable_immediate_response `
- config API to ignore the
- :ref:`immediate_response `
- message from the external processing server.
-- area: access_log
+ added support for propagating the response headers in :ref:`UdpTunnelingConfig
+ ` and
+ response trailers in :ref:`UdpTunnelingConfig
+ ` to
+ the downstream info filter state.
+- area: tracing
change: |
- added a field lookup to %FILTER_STATE% for objects that have reflection enabled.
-- area: http
+ Provide initial span attributes to a sampler used in the OpenTelemetry tracer.
+- area: tracing
change: |
- added :ref:`Json-To-Metadata filter `.
-- area: extension_discovery_service
+ Added support to configure a Dynatrace resource detector for the OpenTelemetry tracer.
+- area: compression
change: |
- added metric listener.listener_stat.network_extension_config_missing to track closed connections due to missing config.
-- area: quic
+ Added qatzip :ref:`compressor `.
+- area: udp_proxy
change: |
- added support for QUIC listener filters with ECDS support reusing the same config API
- :ref:`listener_filters ` as TCP does.
+ add :ref:`access log options
+ `
+ to allow recording an access log entry periodically for the UDP session, and allow recording an access
+ log entry on the connection tunnel created successfully to upstream when UDP tunneling is configured.
+- area: internal_redirects
+ change: |
+ Added support to copy headers from the redirect response to the
+ triggered request. See
+ :ref:`response_headers_to_copy`.
+- area: stateful_session
+ change: |
+ Added :ref:`strict mode `
+ to cookie and header based stateful session. If a destination encoded in :ref:`cookie
+ `
+ or in :ref:`specified header
+ ` respectively
+ is not available, Envoy will return ``503`` instead of selecting another destination from the cluster.
+- area: stream info
+ change: |
+ Added time spent reading request headers to ``DownstreamTiming``.
- area: redis
change: |
- added support for time command (returns a local response).
-- area: extension_discovery_service
+ Added support for the watch command (aborts multi transactions if watched keys change).
+- area: grpc_http_bridge
change: |
- added ECDS support for :ref:` upstream network filters`.
-- area: redis
+ added :ref:`ignore_query_parameters
+ ` option for
+ automatically stripping query parameters in request URL path.
+- area: access_log
change: |
- added support for lmove command.
-- area: upstream
+ Added new access log command operator ``%EMIT_TIME%`` to get the time when the log entry is emitted.
+- area: access_log
change: |
- added :ref:`allow_redundant_keys