Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions plugins/connectrpc/kotlin/v0.8.0/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*
!Dockerfile
!pom.xml
20 changes: 20 additions & 0 deletions plugins/connectrpc/kotlin/v0.8.0/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# syntax=docker/dockerfile:1.22
FROM debian:bookworm-20260316 AS build

RUN apt-get update \
&& apt-get install -y curl
WORKDIR /app
RUN curl -fsSL -o /app/protoc-gen-connect-kotlin.jar https://repo1.maven.org/maven2/com/connectrpc/protoc-gen-connect-kotlin/0.8.0/protoc-gen-connect-kotlin-0.8.0.jar

FROM gcr.io/distroless/java21-debian12:latest@sha256:f34fd3e4e2d7a246d764d0614f5e6ffb3a735930723fac4cfc25a72798950262 as base

FROM maven:3.9.11-eclipse-temurin-21 AS maven-deps
COPY pom.xml /tmp/pom.xml
RUN cd /tmp && mvn -f pom.xml dependency:go-offline

FROM scratch
COPY --from=base --link / /
COPY --from=build --link --chmod=0755 --chown=root:root /app/protoc-gen-connect-kotlin.jar .
COPY --from=maven-deps /root/.m2/repository /maven-repository
USER nobody
ENTRYPOINT [ "/usr/bin/java", "-jar", "/protoc-gen-connect-kotlin.jar"]
30 changes: 30 additions & 0 deletions plugins/connectrpc/kotlin/v0.8.0/buf.plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
version: v1
name: buf.build/connectrpc/kotlin
plugin_version: v0.8.0
source_url: https://github.com/connectrpc/connect-kotlin
integration_guide_url: https://connectrpc.com/docs/kotlin/getting-started
description: Idiomatic gRPC & Connect RPCs for Kotlin.
deps:
- plugin: buf.build/protocolbuffers/kotlin:v34.0
output_languages:
- kotlin
spdx_license_id: Apache-2.0
license_url: https://github.com/connectrpc/connect-kotlin/blob/v0.8.0/LICENSE
registry:
opts:
- generateCallbackMethods=true
maven:
compiler:
kotlin:
api_version: "2.1"
version: "2.2.21"
deps:
- com.connectrpc:connect-kotlin:0.8.0
- com.connectrpc:connect-kotlin-google-java-ext:0.8.0
- com.connectrpc:connect-kotlin-okhttp:0.8.0
additional_runtimes:
- name: lite
deps:
- com.connectrpc:connect-kotlin:0.8.0
- com.connectrpc:connect-kotlin-google-javalite-ext:0.8.0
- com.connectrpc:connect-kotlin-okhttp:0.8.0
76 changes: 76 additions & 0 deletions plugins/connectrpc/kotlin/v0.8.0/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>temp</groupId>
<artifactId>temp</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>com.connectrpc</groupId>
<artifactId>connect-kotlin</artifactId>
<version>0.8.0</version>
</dependency>
<dependency>
<groupId>com.connectrpc</groupId>
<artifactId>connect-kotlin-google-java-ext</artifactId>
<version>0.8.0</version>
</dependency>
<dependency>
<groupId>com.connectrpc</groupId>
<artifactId>connect-kotlin-okhttp</artifactId>
<version>0.8.0</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-kotlin</artifactId>
<version>4.34.0</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>1.8.22</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>1.8.22</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>4.34.0</version>
</dependency>
<!-- lite -->
<dependency>
<groupId>com.connectrpc</groupId>
<artifactId>connect-kotlin-google-javalite-ext</artifactId>
<version>0.8.0</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-kotlin-lite</artifactId>
<version>4.34.0</version>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-javalite</artifactId>
<version>4.34.0</version>
</dependency>
<dependency>
<groupId>build.buf</groupId>
<artifactId>protobuf-javalite</artifactId>
<version>4.34.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>2.2.21</version>
<configuration>
<apiVersion>2.1</apiVersion>
</configuration>
</plugin>
</plugins>
</build>
</project>
34 changes: 34 additions & 0 deletions tests/plugins_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"cmp"
"context"
"encoding/xml"
"errors"
"fmt"
"io"
"io/fs"
Expand All @@ -25,6 +26,7 @@ import (
"golang.org/x/mod/semver"
"golang.org/x/mod/sumdb/dirhash"

"github.com/bufbuild/plugins/internal/maven"
"github.com/bufbuild/plugins/internal/plugin"
"github.com/bufbuild/plugins/internal/source"
)
Expand Down Expand Up @@ -326,6 +328,38 @@ func TestMavenDependencies(t *testing.T) {
}
}

func TestMavenPOMInSync(t *testing.T) {
t.Parallel()
plugins := loadFilteredPlugins(t)
pluginsDir, err := filepath.Abs(filepath.Join("..", "plugins"))
require.NoError(t, err)
for _, p := range plugins {
if p.Registry.Maven == nil {
continue
}
pomPath := filepath.Join(filepath.Dir(p.Path), "pom.xml")
if _, err := os.Stat(pomPath); err != nil {
if errors.Is(err, fs.ErrNotExist) {
continue
}
require.NoError(t, err)
}
t.Run(fmt.Sprintf("%s/%s@%s", p.Identity.Owner(), p.Identity.Plugin(), p.PluginVersion), func(t *testing.T) {
t.Parallel()
pluginVersionDir := filepath.Dir(p.Path)
pluginConfig, err := bufremotepluginconfig.ParseConfig(p.Path)
require.NoError(t, err)
require.NoError(t, maven.MergeTransitiveDeps(pluginConfig, pluginsDir))
require.NoError(t, maven.DeduplicateAllDeps(pluginConfig.Registry.Maven))
expectedPOM, err := maven.RenderPOM(pluginConfig)
require.NoError(t, err)
actualPOM, err := os.ReadFile(filepath.Join(pluginVersionDir, "pom.xml"))
require.NoError(t, err)
assert.Equal(t, expectedPOM, string(actualPOM), "pom.xml is out of sync with buf.plugin.yaml")
})
}
}

func TestNugetDependencies(t *testing.T) {
t.Parallel()

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
h1:jZozX+zN6UUwiUu38R4IG3BD2PFi7novwzYovV5V5mY=
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
h1:qI/BZM1TvMxo1xA+W5Y+h5jGfuIHe2aFsVRriNpB/3M=
Loading