Skip to content

Conversation

@mattsre
Copy link

@mattsre mattsre commented Dec 28, 2025

This PR is stacked on #365 and should be rebased once that PR is merged

Motivation

CI runs on an ancient version of K8S and old versions of Pulsar. Newer versions of sn-platform images require a license key to run, so these cannot easily be bumped. The existing e2e tests rely on exec'ing into pods and running pulsarctl commands, but this binary is not in OSS Pulsar images which makes it difficult to test locally for OSS contributors looking to make changes to the project.

Modifications

  • Update CI to run on k8s 1.34 and use OSS Pulsar 4.1 Docker images
  • Update tests to work with OSS Pulsar images (no pulsarctl available in images)
  • Fix some lint findings

Verifying this change

  • Make sure that the change passes the CI checks.

This change is already covered by existing tests. CI upgrade was tested on a PR in my fork here: mattsre#1 as well as running locally

Documentation

  • no-need-doc

Internal changes to CI and tests, no package changes

@github-actions github-actions bot added the no-need-doc This pr does not need any document label Dec 28, 2025
@mattsre mattsre marked this pull request as ready for review December 28, 2025 11:07
@mattsre mattsre requested review from a team as code owners December 28, 2025 11:07
@mattsre mattsre changed the title Use OSS Pulsar image and charts for e2e tests refactor: use OSS Pulsar image and charts for e2e tests Dec 28, 2025
@freeznet freeznet requested a review from Copilot January 5, 2026 03:34
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the e2e test infrastructure to use open-source Apache Pulsar images and Helm charts instead of proprietary StreamNative Platform images. The motivation is to enable testing on newer Kubernetes versions and make it easier for OSS contributors to run tests locally without requiring license keys. The changes update CI workflows, test utilities, and configuration files to work with OSS Pulsar images that don't include the pulsarctl binary. Additionally, the PR addresses various lint findings from the golangci-lint v2 configuration upgrade.

Key Changes:

  • Migrates from StreamNative Platform 2.10.4.3 to Apache Pulsar 4.1.2 Docker images
  • Updates test commands from pulsarctl to pulsar-admin for compatibility with OSS images
  • Updates Kubernetes version support from v1.19.11 to v1.34.2
  • Upgrades golangci-lint from v1.55.2 to v2.7.2 with v2 configuration format

Reviewed changes

Copilot reviewed 13 out of 15 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
.github/workflows/e2e_test.yml Updates CI to use OSS Pulsar 4.1.2 image, K8s v1.34.2, kind v0.31.0, and Apache Pulsar Helm chart
.github/workflows/golangci-lint.yml Upgrades golangci-lint action and version to v2.7.2
.golangci.yml Migrates lint configuration to v2 format with updated linters and settings
.ci/clusters/values.yaml Configures Helm chart to use OSS Pulsar 4.1.2 images instead of StreamNative Platform
tests/operator/resources_test.go Replaces pulsarctl commands with pulsar-admin, updates to use ptr.To instead of pointer, fixes lint issues
tests/utils/k8s.go Adds context parameter to ExecInPod and uses StreamWithContext
tests/utils/spec.go Fixes struct initialization, updates type aliases, replaces interface{} with any
pkg/admin/impl.go Simplifies nonPartitioned logic
controllers/ Minor lint fixes (removes unnecessary object metadata references)
scripts/lint.sh Updates golangci-lint version to v2.7.2
hack/kind-cluster-build.sh Updates default K8s version to v1.34.2
README.md Updates documented K8s version support to v1.34
.gitignore Adds local development tool entries
go.sum Adds missing go.mod entry

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

# See the License for the specific language governing permissions and
# limitations under the License.

version: "2"
Copy link

Copilot AI Jan 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The version field is set to "2" which refers to the golangci-lint configuration file format version, not the golangci-lint tool version. However, this is inconsistent with the actual golangci-lint versions being used in the scripts and workflows. The configuration format version 2 is correct for newer golangci-lint versions (v1.60+), but the tool versions specified elsewhere (v2.7.2) do not exist. Ensure this configuration is compatible with the actual golangci-lint version being used.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-need-doc This pr does not need any document

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants