Skip to content

envoyproxy/java-control-plane

Folders and files

NameName
Last commit message
Last commit date
Jul 30, 2021
Jun 27, 2024
Dec 24, 2024
Feb 6, 2025
Apr 19, 2018
Feb 6, 2025
Feb 6, 2025
Feb 6, 2025
Feb 6, 2025
Feb 12, 2018
Apr 19, 2018
Feb 16, 2018
Feb 19, 2018
Feb 16, 2018
Feb 9, 2018
Dec 13, 2022
Jan 23, 2024
Sep 2, 2021
Feb 16, 2018
Sep 21, 2020
Feb 6, 2025

java-control-plane

OpenSSF Scorecard CircleCI codecov Maven Central

This repository contains a Java-based implementation of an API server that implements the discovery service APIs defined in data-plane-api. It started life as a port of go-control-plane, but building an idiomatic Java implementation is prioritized over exact interface parity with the Go implementation.

Only v3 resources as well as transport versions are now supported. Migrating to v3 is necessary as Envoy dropped v2 support at EOY 2020 (see API_VERSIONING.md)

See the v2-to-v3 migration guide for an explanation of migration paths.

Requirements

  1. Java 8+
  2. Maven

Build & Test

mvn clean package

More thorough usage examples are still TODO, but there is a basic test implementation in TestMain.

Envoy API

There is automation built into this repo to keep the Envoy API (i.e. protobuf files) up to date with the latest available Envoy release.

This automation uses Github Workflows and works as follows: a scheduled workflow runs with weekly cadence, and calls a reusable workflow that fetches the latest available Envoy release and compares it with the version currently used in the repo.

If the latest available Envoy release doesn't match the version currently used, another reusable workflow is called which creates a PR that upgrades the Envoy API to the latest available release.

Releasing a new version

To release and publish a new version, do the following:

  1. create a personal API token in CircleCI by following the instructions listed here
  2. from terminal, curl the CircleCI API as follows
 curl -X POST \
    -H "Content-Type: application/json" \
    -d '{ "build_parameters": { "RELEASE": "<e.g. 0.1.29>", "NEXT": "<e.g. 0.1.30-SNAPSHOT>" } }' \
    "https://circleci.com/api/v1.1/project/github/envoyproxy/java-control-plane/tree/main?circle-token=<API token>"