-
Notifications
You must be signed in to change notification settings - Fork 426
CNTRLPLANE-2167:Integrate OpenShift Test Extension (OTE) into oc #2176
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CNTRLPLANE-2167:Integrate OpenShift Test Extension (OTE) into oc #2176
Conversation
WalkthroughAdds a new oc-tests-ext CLI binary and test image: new Cobra-based command, test extension registry, Makefile targets and Dockerfile to build/package the binary, and module dependencies required for the extension infrastructure. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes ✨ Finishing touches
Comment |
|
@gangwgr: This pull request references CNTRLPLANE-2167 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set. DetailsIn response to this: Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
Makefile (1)
76-78: Consider aligning build flags with the main oc target.The
oc-tests-extbuild uses a simplego buildcommand without the build flags and ldflags used by the mainoctarget. This means:
- Version information won't be injected (from
GO_LD_EXTRAFLAGS)- Build tags like
gssapi,containers_image_openpgpwon't be appliedIf
oc-tests-extrequires any of these capabilities or version metadata, align with theoctarget's build configuration.🔎 Suggested alignment with oc build flags
If version info and build tags are needed:
oc-tests-ext: - go build -o oc-tests-ext ./cmd/oc-tests-ext + GO_BUILD_PACKAGES=./cmd/oc-tests-ext GO_BUILD_BINDIR=. $(MAKE) build .PHONY: oc-tests-extOr if only basic flags are needed:
oc-tests-ext: - go build -o oc-tests-ext ./cmd/oc-tests-ext + go build $(GO_BUILD_FLAGS) -ldflags="$(GO_LD_EXTRAFLAGS)" -o oc-tests-ext ./cmd/oc-tests-ext .PHONY: oc-tests-extcmd/oc-tests-ext/main.go (1)
47-53: Consider making extension parameters configurable for future flexibility.The extension is created with hardcoded parameters (
"openshift","payload","oc"). While this is appropriate for current test infrastructure needs, consider whether these should be configurable via flags or environment variables if future use cases require different values.For now, the hardcoded approach is acceptable for test infrastructure. This comment is just a suggestion for future enhancement if needed.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
⛔ Files ignored due to path filters (295)
go.sumis excluded by!**/*.sumvendor/cel.dev/expr/.bazelversionis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/.gitattributesis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/.gitignoreis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/CODE_OF_CONDUCT.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/CONTRIBUTING.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/GOVERNANCE.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/MAINTAINERS.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/MODULE.bazelis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/README.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/WORKSPACEis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/WORKSPACE.bzlmodis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/checked.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/cel.dev/expr/cloudbuild.yamlis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/eval.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/cel.dev/expr/explain.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/cel.dev/expr/regen_go_proto.shis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/regen_go_proto_canonical_protos.shis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/syntax.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/cel.dev/expr/value.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/.gitignoreis excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/README.mdis excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/antlrdoc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_config.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_config_set.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_deserialization_options.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_deserializer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_simulator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_state.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_type.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/char_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/common_token_factory.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/common_token_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/comparators.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/configuration.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/dfa.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/dfa_serializer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/dfa_state.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/diagnostic_error_listener.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/error_listener.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/error_strategy.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/errors.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/file_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/input_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/int_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/interval_set.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/jcollect.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/lexer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/lexer_action.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/lexer_action_executor.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/lexer_atn_simulator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/ll1_analyzer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/nostatistics.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/parser.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/parser_atn_simulator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/parser_rule_context.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/prediction_context.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/prediction_context_cache.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/prediction_mode.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/recognizer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/rule_context.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/semantic_context.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/statistics.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/stats_data.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/token.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/token_source.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/token_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/tokenstream_rewriter.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/trace_listener.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/transition.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/tree.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/trees.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/utils.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/cel.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/decls.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/env.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/folding.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/inlining.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/io.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/library.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/macro.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/optimizer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/options.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/program.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/prompt.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/templates/authoring.tmplis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/validator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/checker.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/cost.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/decls/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/decls/decls.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/env.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/errors.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/format.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/mapping.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/options.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/printer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/scopes.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/ast.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/conversion.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/expr.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/factory.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/navigable.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/containers/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/containers/container.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/cost.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/debug/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/debug/debug.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/decls/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/decls/decls.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/env/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/env/env.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/error.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/errors.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/functions/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/functions/functions.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/location.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/operators/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/operators/operators.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/overloads/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/overloads/overloads.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/runes/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/runes/buffer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/source.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/stdlib/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/stdlib/standard.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/any_value.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/bool.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/bytes.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/compare.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/double.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/duration.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/err.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/format.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/int.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/iterator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/json_value.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/list.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/map.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/null.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/object.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/optional.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/overflow.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/checked.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/enum.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/equal.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/file.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/pb.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/type.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/provider.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/ref/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/ref/provider.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/ref/reference.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/string.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/timestamp.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/comparer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/container.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/field_tester.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/indexer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/iterator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/lister.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/mapper.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/matcher.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/math.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/receiver.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/sizer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/traits.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/zeroer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/uint.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/unknown.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/util.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/activation.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/attribute_patterns.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/attributes.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/decorators.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/dispatcher.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/evalstate.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/interpretable.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/interpreter.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/optimizations.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/planner.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/prune.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/runtimecost.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/errors.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/BUILD.bazelis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CEL.g4is excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CEL.interpis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CEL.tokensis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CELLexer.interpis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CELLexer.tokensis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_base_listener.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_base_visitor.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_lexer.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_listener.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_parser.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_visitor.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/doc.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/generate.shis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/helper.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/input.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/macro.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/options.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/parser.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/unescape.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/unparser.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmd.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdimages/cmdimages.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdinfo/info.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdlist/list.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runsuite.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runtest.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdupdate/update.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/dbtime/time.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extension.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/environment.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result_writer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/spec.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/task.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/registry.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/component.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/concurrency.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/environment.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/names.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/output.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/suite.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/junit/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/README.mdis excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/byte.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/empty.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int32.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int64.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/set.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/string.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/version/version.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/.gitignoreis excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/.golangci.ymlis excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/README.mdis excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/camel.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/helper.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/kebab.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/snake.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/constraints/constraints.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/cmp.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/slices.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/sort.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/zsortanyfunc.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/zsortordered.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/checked.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/eval.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/explain.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/syntax.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/value.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/rpc/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/encoding/protojson/decode.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/encoding/protojson/doc.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/encoding/protojson/encode.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/editionssupport/editions.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/decode.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/decode_number.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/decode_string.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/decode_token.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/encode.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/reflect/protodesc/desc.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.gois excluded by!vendor/**,!**/vendor/**
📒 Files selected for processing (5)
.gitignoreMakefilecmd/oc-tests-ext/main.gogo.modimages/cli-tests/Dockerfile.rhel
🧰 Additional context used
📓 Path-based instructions (1)
**
⚙️ CodeRabbit configuration file
-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.
Files:
images/cli-tests/Dockerfile.rhelgo.modcmd/oc-tests-ext/main.goMakefile
🧬 Code graph analysis (1)
cmd/oc-tests-ext/main.go (2)
pkg/cli/version/version.go (1)
Version(28-32)pkg/cli/admin/catalog/catalog.go (1)
AddCommand(27-33)
🔇 Additional comments (6)
.gitignore (1)
2-2: LGTM!The addition properly ignores the new
oc-tests-extbinary artifact, consistent with existing patterns for other binaries like/ocand/clicheck.images/cli-tests/Dockerfile.rhel (1)
1-11: LGTM! Clean multi-stage build.The Dockerfile follows best practices:
- Multi-stage build minimizes final image size
- Uses
--warn-undefined-variablesto catch Makefile issues early- Places binary in
/usr/bin/for PATH availability- Includes proper metadata labels
The lack of
ENTRYPOINTorCMDis appropriate for test tooling that will be explicitly invoked.Makefile (1)
60-60: LGTM! Image target follows established patterns.The
ocp-cli-testsimage target correctly uses thebuild-imagemacro with appropriate parameters, consistent with other image targets likeocp-cliandocp-cli-artifacts.cmd/oc-tests-ext/main.go (2)
17-21: LGTM! Clean main function.The implementation follows Kubernetes CLI patterns by using
cli.Runfor consistent command execution and proper exit code handling.
23-45: LGTM! Well-structured root command.The root command implementation is clean and follows Cobra best practices:
- Default help behavior when no subcommands are specified
- Proper version handling with fallback to
"<unknown>"- Delegates subcommand registration to the extension registry
go.mod (1)
41-41: No action needed.The commit
13f4631a80b013a969b7d3d0acefaac754fc5b67exists in the upstream repository and is a recent, properly signed merge commit from November 25, 2025. All five dependencies checked have no known security vulnerabilities. The use of the pseudo-version appears intentional for accessing the latest development features.
f73fc1b to
addffee
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Fix all issues with AI Agents 🤖
In @images/cli-tests/Dockerfile.rhel:
- Around line 5-9: The final image copies the gzipped binary oc-tests-ext.gz
from the builder stage but does not extract it, so the executable at
/usr/bin/oc-tests-ext.gz is non-runnable; update the final stage to extract the
binary after copying (for example, COPY --from=builder .../oc-tests-ext.gz
/usr/bin/ followed by running gunzip /usr/bin/oc-tests-ext.gz to produce
/usr/bin/oc-tests-ext) and ensure the resulting /usr/bin/oc-tests-ext has
executable permissions (chmod +x) so CI can run it.
🧹 Nitpick comments (1)
Makefile (1)
76-78: Consider aligning the build process with the standard build workflow.The
oc-tests-exttarget uses a basicgo buildcommand without the build tags (GO_BUILD_FLAGS) and linker flags (GO_LD_EXTRAFLAGS) used by other binaries in this project. This may result in:
- Missing build tags (e.g.,
include_gcs,include_oss,containers_image_openpgp,gssapi)- Absent version metadata that aids debugging and observability
- Inconsistent output location compared to other build artifacts
🔎 Proposed changes to align with standard build process
-oc-tests-ext: - go build -o oc-tests-ext ./cmd/oc-tests-ext +oc-tests-ext: GO_BUILD_PACKAGES :=./cmd/oc-tests-ext +oc-tests-ext: build .PHONY: oc-tests-extThis change ensures
oc-tests-extinherits the same build flags, linker flags, and output conventions as other binaries. Ifoc-tests-extgenuinely requires a minimal build without these flags, please add a comment explaining the rationale.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (2)
Makefileimages/cli-tests/Dockerfile.rhel
🧰 Additional context used
📓 Path-based instructions (1)
**
⚙️ CodeRabbit configuration file
-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.
Files:
images/cli-tests/Dockerfile.rhelMakefile
🔇 Additional comments (1)
Makefile (1)
60-61: LGTM!The
build-imagemacro call follows the established pattern used for other image targets and correctly references the new Dockerfile.
| RUN make oc-tests-ext --warn-undefined-variables \ | ||
| && gzip oc-tests-ext | ||
|
|
||
| FROM registry.ci.openshift.org/ocp/4.22:base-rhel9 | ||
| COPY --from=builder /go/src/github.com/openshift/oc/oc-tests-ext.gz /usr/bin/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extract the binary in the final stage.
The binary is gzipped in the builder stage (line 6) but copied as a .gz file to /usr/bin/ in the final stage without extraction. A gzipped binary cannot be executed directly, which breaks the intended functionality for CI testing.
🔎 Proposed fix
Option 1 (recommended): Extract during copy
-RUN make oc-tests-ext --warn-undefined-variables \
- && gzip oc-tests-ext
+RUN make oc-tests-ext --warn-undefined-variables
FROM registry.ci.openshift.org/ocp/4.22:base-rhel9
-COPY --from=builder /go/src/github.com/openshift/oc/oc-tests-ext.gz /usr/bin/
+COPY --from=builder /go/src/github.com/openshift/oc/oc-tests-ext /usr/bin/Option 2: Extract in final stage if compression is needed for layer size
FROM registry.ci.openshift.org/ocp/4.22:base-rhel9
COPY --from=builder /go/src/github.com/openshift/oc/oc-tests-ext.gz /usr/bin/
+RUN gunzip /usr/bin/oc-tests-ext.gz && chmod +x /usr/bin/oc-tests-ext📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| RUN make oc-tests-ext --warn-undefined-variables \ | |
| && gzip oc-tests-ext | |
| FROM registry.ci.openshift.org/ocp/4.22:base-rhel9 | |
| COPY --from=builder /go/src/github.com/openshift/oc/oc-tests-ext.gz /usr/bin/ | |
| RUN make oc-tests-ext --warn-undefined-variables | |
| FROM registry.ci.openshift.org/ocp/4.22:base-rhel9 | |
| COPY --from=builder /go/src/github.com/openshift/oc/oc-tests-ext /usr/bin/ |
🤖 Prompt for AI Agents
In @images/cli-tests/Dockerfile.rhel around lines 5-9, The final image copies
the gzipped binary oc-tests-ext.gz from the builder stage but does not extract
it, so the executable at /usr/bin/oc-tests-ext.gz is non-runnable; update the
final stage to extract the binary after copying (for example, COPY
--from=builder .../oc-tests-ext.gz /usr/bin/ followed by running gunzip
/usr/bin/oc-tests-ext.gz to produce /usr/bin/oc-tests-ext) and ensure the
resulting /usr/bin/oc-tests-ext has executable permissions (chmod +x) so CI can
run it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this comment ^^ valid or OTE can run extracted gzipped binary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
@ardaguclu Let me investigate how oc-tests-ext is used and whether there's any special handling for gzipped binaries in the OTE framework or CI pipeline.
🏁 Script executed:
#!/bin/bash
# Check how oc-tests-ext is invoked or referenced in CI configs
echo "=== Searching for oc-tests-ext invocation patterns ==="
rg -n "oc-tests-ext" --type=yaml -C3
# Check if there are any extraction scripts or patterns
echo -e "\n=== Checking for gunzip or extraction patterns ==="
rg -n "gunzip|tar.*xz|extract" --type=dockerfile -C2
# Look at other Dockerfiles to see if gzipping binaries is a common pattern
echo -e "\n=== Checking other Dockerfiles for gzip patterns ==="
fd -e rhel -e Dockerfile --exec grep -l "gzip" {}
# Check if there are similar image build patterns
echo -e "\n=== Examining other test-related Dockerfiles ==="
fd "Dockerfile" images/ --exec cat {}
Length of output: 6156
🏁 Script executed:
#!/bin/bash
# Check if there's any entrypoint or CMD that might handle extraction
echo "=== Checking for ENTRYPOINT or CMD in cli-tests Dockerfile ==="
grep -n "ENTRYPOINT\|CMD" images/cli-tests/Dockerfile.rhel
# Look for any wrapper scripts or extraction logic in the codebase
echo -e "\n=== Searching for extraction or wrapper scripts ==="
rg -n "oc-tests-ext" -C5
# Check the main.go to see if there's any self-extraction logic
echo -e "\n=== Checking main.go for any extraction patterns ==="
cat cmd/oc-tests-ext/main.go | head -50
# Search for how openshift-tests-extension is typically used
echo -e "\n=== Checking go.mod for OTE details ==="
grep "openshift-tests-extension" go.mod
# Look for any documentation about OTE binary handling
echo -e "\n=== Searching for README or docs mentioning binary handling ==="
fd -e md . --exec rg -l "oc-tests-ext|test.*extension" {}
Length of output: 3580
@ardaguclu My review comment is valid. Based on the codebase analysis, here's the evidence:
The binary cannot be executed in its gzipped state:
-
No extraction mechanism exists: The Dockerfile has no
ENTRYPOINTorCMDthat would extract the binary, and there are no wrapper scripts in the codebase. -
Standard executable expected: The
main.goshows a standard Cobra CLI with no self-extraction logic. It's a normal Go binary that expects to be directly executable. -
Inconsistent with other images: All other Dockerfiles in this repo copy binaries uncompressed:
# From cli/Dockerfile.rhel COPY --from=builder /go/src/github.com/openshift/oc/oc /usr/bin/ # Not: COPY ... /oc.gz /usr/bin/
-
Linux cannot execute .gz files: The kernel cannot directly execute gzipped binaries—they must be extracted first.
The fix should remove the gzip step entirely (Option 1 from my original comment):
-RUN make oc-tests-ext --warn-undefined-variables \
- && gzip oc-tests-ext
+RUN make oc-tests-ext --warn-undefined-variables
FROM registry.ci.openshift.org/ocp/4.22:base-rhel9
-COPY --from=builder /go/src/github.com/openshift/oc/oc-tests-ext.gz /usr/bin/
+COPY --from=builder /go/src/github.com/openshift/oc/oc-tests-ext /usr/bin/This matches the pattern used by all other binaries in the repository.
addffee to
449f971
Compare
|
@gangwgr: This pull request references CNTRLPLANE-2167 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Fix all issues with AI Agents 🤖
In @go.mod:
- Line 41: Update the transitive vulnerable CEL dependency by adding or bumping
a direct requirement for github.com/google/cel-go to a release that depends on
cel.dev/expr ≥ 1.17.7 (e.g., bump to a cel-go version ≥ the one that requires
expr 1.17.7), then run go get github.com/google/cel-go@<new-version> and go mod
tidy to regenerate go.sum; ensure go.mod no longer pulls cel.dev/expr v0.24.0
and run tests to verify the build.
🧹 Nitpick comments (2)
cmd/oc-tests-ext/main.go (2)
23-45: Consider removing or utilizing the unused context parameter.The
ctxparameter is declared but never used in the function body. If context propagation isn't needed for the current implementation, consider removing it to improve clarity.🔎 Proposed fix
-func newOperatorTestCommand(ctx context.Context) *cobra.Command { +func newOperatorTestCommand() *cobra.Command { registry := prepareOperatorTestsRegistry() cmd := &cobra.Command{And update the call site:
func main() { - command := newOperatorTestCommand(context.Background()) + command := newOperatorTestCommand() code := cli.Run(command) os.Exit(code) }
47-53: Consider extracting magic strings to named constants.The extension configuration uses hardcoded string literals. While the current implementation is clear, extracting these to constants would improve maintainability if these values need to be referenced elsewhere or changed in the future.
🔎 Proposed refactor
+const ( + extensionName = "openshift" + extensionPayload = "payload" + extensionID = "oc" +) + func prepareOperatorTestsRegistry() *oteextension.Registry { registry := oteextension.NewRegistry() - extension := oteextension.NewExtension("openshift", "payload", "oc") + extension := oteextension.NewExtension(extensionName, extensionPayload, extensionID) registry.Register(extension) return registry }
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
⛔ Files ignored due to path filters (296)
go.sumis excluded by!**/*.sumvendor/cel.dev/expr/.bazelversionis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/.gitattributesis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/.gitignoreis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/CODE_OF_CONDUCT.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/CONTRIBUTING.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/GOVERNANCE.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/MAINTAINERS.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/MODULE.bazelis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/README.mdis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/WORKSPACEis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/WORKSPACE.bzlmodis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/checked.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/cel.dev/expr/cloudbuild.yamlis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/eval.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/cel.dev/expr/explain.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/cel.dev/expr/regen_go_proto.shis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/regen_go_proto_canonical_protos.shis excluded by!vendor/**,!**/vendor/**vendor/cel.dev/expr/syntax.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/cel.dev/expr/value.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/.gitignoreis excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/README.mdis excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/antlrdoc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_config.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_config_set.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_deserialization_options.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_deserializer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_simulator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_state.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/atn_type.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/char_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/common_token_factory.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/common_token_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/comparators.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/configuration.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/dfa.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/dfa_serializer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/dfa_state.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/diagnostic_error_listener.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/error_listener.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/error_strategy.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/errors.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/file_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/input_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/int_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/interval_set.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/jcollect.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/lexer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/lexer_action.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/lexer_action_executor.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/lexer_atn_simulator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/ll1_analyzer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/nostatistics.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/parser.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/parser_atn_simulator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/parser_rule_context.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/prediction_context.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/prediction_context_cache.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/prediction_mode.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/recognizer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/rule_context.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/semantic_context.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/statistics.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/stats_data.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/token.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/token_source.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/token_stream.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/tokenstream_rewriter.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/trace_listener.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/transition.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/tree.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/trees.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/antlr4-go/antlr/v4/utils.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/cel.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/decls.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/env.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/folding.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/inlining.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/io.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/library.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/macro.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/optimizer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/options.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/program.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/prompt.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/templates/authoring.tmplis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/cel/validator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/checker.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/cost.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/decls/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/decls/decls.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/env.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/errors.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/format.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/mapping.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/options.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/printer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/scopes.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/checker/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/ast.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/conversion.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/expr.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/factory.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/ast/navigable.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/containers/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/containers/container.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/cost.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/debug/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/debug/debug.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/decls/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/decls/decls.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/env/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/env/env.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/error.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/errors.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/functions/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/functions/functions.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/location.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/operators/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/operators/operators.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/overloads/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/overloads/overloads.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/runes/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/runes/buffer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/source.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/stdlib/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/stdlib/standard.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/any_value.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/bool.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/bytes.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/compare.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/double.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/duration.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/err.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/format.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/int.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/iterator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/json_value.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/list.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/map.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/null.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/object.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/optional.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/overflow.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/checked.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/enum.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/equal.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/file.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/pb.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/pb/type.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/provider.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/ref/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/ref/provider.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/ref/reference.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/string.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/timestamp.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/comparer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/container.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/field_tester.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/indexer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/iterator.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/lister.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/mapper.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/matcher.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/math.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/receiver.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/sizer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/traits.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/traits/zeroer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/uint.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/unknown.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/common/types/util.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/activation.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/attribute_patterns.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/attributes.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/decorators.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/dispatcher.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/evalstate.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/interpretable.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/interpreter.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/optimizations.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/planner.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/prune.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/interpreter/runtimecost.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/BUILD.bazelis excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/errors.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/BUILD.bazelis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CEL.g4is excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CEL.interpis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CEL.tokensis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CELLexer.interpis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/CELLexer.tokensis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_base_listener.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_base_visitor.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_lexer.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_listener.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_parser.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/cel_visitor.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/doc.gois excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/gen/generate.shis excluded by!**/gen/**,!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/helper.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/input.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/macro.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/options.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/parser.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/unescape.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/google/cel-go/parser/unparser.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmd.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdimages/cmdimages.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdinfo/info.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdlist/list.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runsuite.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdrun/runtest.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdupdate/update.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/dbtime/time.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extension.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/environment.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/result_writer.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/spec.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/task.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/extensiontests/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/registry.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/component.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/concurrency.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/environment.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/names.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/output.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/flags/suite.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/junit/types.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/README.mdis excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/byte.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/empty.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int32.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/int64.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/set.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/util/sets/string.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/openshift-eng/openshift-tests-extension/pkg/version/version.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/.gitignoreis excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/.golangci.ymlis excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/README.mdis excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/camel.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/doc.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/helper.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/kebab.gois excluded by!vendor/**,!**/vendor/**vendor/github.com/stoewer/go-strcase/snake.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/constraints/constraints.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/cmp.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/slices.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/sort.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/zsortanyfunc.gois excluded by!vendor/**,!**/vendor/**vendor/golang.org/x/exp/slices/zsortordered.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/checked.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/eval.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/explain.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/syntax.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/api/expr/v1alpha1/value.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/rpc/LICENSEis excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.gois excluded by!**/*.pb.go,!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/encoding/protojson/decode.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/encoding/protojson/doc.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/encoding/protojson/encode.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/editionssupport/editions.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/decode.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/decode_number.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/decode_string.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/decode_token.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/internal/encoding/json/encode.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/reflect/protodesc/desc.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.gois excluded by!vendor/**,!**/vendor/**vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.gois excluded by!vendor/**,!**/vendor/**
📒 Files selected for processing (4)
Makefilecmd/oc-tests-ext/main.gogo.modimages/cli-tests/Dockerfile.rhel
🚧 Files skipped from review as they are similar to previous changes (2)
- Makefile
- images/cli-tests/Dockerfile.rhel
🧰 Additional context used
📓 Path-based instructions (1)
**
⚙️ CodeRabbit configuration file
-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.
Files:
go.modcmd/oc-tests-ext/main.go
🔇 Additional comments (1)
cmd/oc-tests-ext/main.go (1)
17-21: LGTM!The main function follows standard Kubernetes CLI patterns using
component-base/cli.Runfor consistent execution and exit code handling.
| github.com/moby/term v0.5.2 | ||
| github.com/opencontainers/go-digest v1.0.0 | ||
| github.com/opencontainers/image-spec v1.1.0 | ||
| github.com/openshift-eng/openshift-tests-extension v0.0.0-20251125140340-13f4631a80b0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
cat -n go.mod | sed -n '1,250p'Repository: openshift/oc
Length of output: 13358
🌐 Web query:
golang security advisories cel.dev/expr google/cel-go antlr4 stoewer go-strcase 2025 2026
💡 Result:
Summary of findings (searched 2025–2026):
- Expr (cel.dev/expr / github.com/expr‑lang/expr)
- Multiple disclosed DoS/resource‑exhaustion advisories in 2025:
- CVE‑2025‑29786 (memory exhaustion from unbounded input; fixed in expr ≥ 1.17.0). [1][2][3]
- CVE‑2025‑68156 (DoS via several builtin functions causing unbounded recursion; fixed in expr ≥ 1.17.7). [4]
References: Recorded Future / NVD summaries and vendor distro trackers; GitLab advisory. [1][2][3][4]
- antlr4
- Malicious npm package reports in 2025 (OSV entries for malicious/typo packages related to antlr4 ecosystem: MAL‑2025‑14606 (antlr4‑graps) and MAL‑2025‑38650 (vscode‑antlr4)). These are malicious/typo‑package OSV records (npm), not necessarily vulnerabilities in the upstream ANTLR project but supply‑chain incidents to watch. [5][6]
- google/cel‑go (github.com/google/cel‑go / cel.dev CEL implementation)
- I found release activity but no publicly listed CVE/security advisory specifically for google/cel‑go in 2025–2026 from the searches performed. See project releases. (No matching CVE advisory located in searches.) [7]
- stoewer / go‑strcase
- Project activity and releases/patches in 2025 (e.g., go‑strcase releases and dependency bumps in downstream projects), but no public CVE/security advisory I could find for 2025–2026 in the searches. Example release/PR references. [8][9]
If you want, I can:
- fetch the primary advisories (NVD / GitHub Security Advisories / vendor release notes) for each item above and assemble exact CVE IDs, affected versions, and upgrade/remediation steps; or
- monitor these packages (OSV / GitHub advisories / NVD) and alert on new advisories through a watch.
Sources
- CVE‑2025‑29786 / Expr (advisories / distro trackers): Recorded Future / Amazon ALAS / Rapid7 / Snyk. [1][2][3]
- CVE‑2025‑68156 / Expr (GitLab advisory entry). [4]
- OSV malicious package entries for antlr4-related npm packages (MAL‑2025‑14606, MAL‑2025‑38650). [5][6]
- google/cel‑go releases (repo releases page). [7]
- stoewer / go‑strcase release/PR records (dependabot/PR and release notes referenced in downstream projects). [8][9]
References (numbered above)
- CVE-2025-29786 / Recorded Future / NVD summaries.
- AWS/ALAS entry for CVE-2025-29786.
- Rapid7 / Snyk coverage of CVE-2025-29786.
- GitLab advisory / CVE-2025-68156 for expr.
- OSV MAL-2025-14606 (antlr4-graps).
- OSV MAL-2025-38650 (vscode-antlr4).
- github.com/google/cel-go/releases.
- PR/release noting go-strcase bump (stoewer/go-strcase).
- downstream project release notes referencing antlr4 runtime and go-strcase updates.
Would you like me to fetch the full advisories (NVD/GitHub/OSV links and exact affected versions + remediation commands)?
Critical: cel.dev/expr v0.24.0 contains known vulnerabilities (CVE-2025-29786, CVE-2025-68156) that have been patched in later versions.
The dependency cel.dev/expr v0.24.0 (line 73, pulled transitively via google/cel-go v0.26.0) is vulnerable to:
- CVE-2025-29786: Memory exhaustion from unbounded input (fixed in expr ≥ 1.17.0)
- CVE-2025-68156: Denial-of-service via unbounded recursion in builtin functions (fixed in expr ≥ 1.17.7)
Upgrade google/cel-go and its transitive dependencies to versions that require cel.dev/expr ≥ 1.17.7 to resolve these vulnerabilities before merging.
🤖 Prompt for AI Agents
In @go.mod around line 41, Update the transitive vulnerable CEL dependency by
adding or bumping a direct requirement for github.com/google/cel-go to a release
that depends on cel.dev/expr ≥ 1.17.7 (e.g., bump to a cel-go version ≥ the one
that requires expr 1.17.7), then run go get
github.com/google/cel-go@<new-version> and go mod tidy to regenerate go.sum;
ensure go.mod no longer pulls cel.dev/expr v0.24.0 and run tests to verify the
build.
Add cli-tests image build to enable testing of oc-tests-ext binary in CI rehearsals. Changes: - Add cli-tests image to images list with appropriate inputs - Exclude cli-tests from promotion (test-only image) This enables: - Building cli-tests image in CI from PR openshift#2176 - Testing oc-tests-ext integration with origin - Validating the extension framework before merge Related: - oc PR: openshift/oc#2176 - origin PR: https://github.com/gangwgr/origin/pull/new/test-oc-cli
ardaguclu
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall idea looks reasonable to me. But I'd like to understand how are you planning to use this cli-tests image in CI system. Are you sure that this image will successfully run tests against the PRs in oc?. What changes are you planning to add in here https://github.com/openshift/release/blob/master/ci-operator/config/openshift/oc/openshift-oc-main.yaml?.
| RUN make oc-tests-ext --warn-undefined-variables \ | ||
| && gzip oc-tests-ext | ||
|
|
||
| FROM registry.ci.openshift.org/ocp/4.22:base-rhel9 | ||
| COPY --from=builder /go/src/github.com/openshift/oc/oc-tests-ext.gz /usr/bin/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this comment ^^ valid or OTE can run extracted gzipped binary?
images/cli-tests/Dockerfile.rhel
Outdated
| RUN make oc-tests-ext --warn-undefined-variables \ | ||
| && gzip oc-tests-ext | ||
|
|
||
| FROM registry.ci.openshift.org/ocp/4.22:base-rhel9 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you need oc binary as well, you can use cli image instead of base-rhel9.
|
|
||
| $(call build-image,ocp-cli-artifacts,$(IMAGE_REGISTRY)/ocp/4.2:cli-artifacts,./images/cli-artifacts/Dockerfile.rhel,.) | ||
|
|
||
| $(call build-image,ocp-cli-tests,$(IMAGE_REGISTRY)/ocp/4.2:cli-tests,./images/cli-tests/Dockerfile.rhel,.) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| $(call build-image,ocp-cli-tests,$(IMAGE_REGISTRY)/ocp/4.2:cli-tests,./images/cli-tests/Dockerfile.rhel,.) | |
| $(call build-image,ocp-cli-tests,$(IMAGE_REGISTRY)/ocp/4.2:cli-tests,./images/cli-tests/Dockerfile.rhel,.) | |
| image-ocp-tests: image-ocp-cli |
Makefile
Outdated
| oc: build | ||
| .PHONY: oc | ||
|
|
||
| oc-tests-ext: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| oc-tests-ext: | |
| oc-tests-ext: GO_BUILD_PACKAGES :=./cmd/oc-tests-ext | |
| oc-tests-ext: build | |
| .PHONY: oc-tests-ext |
| # $4 - context | ||
| $(call build-image,ocp-cli,$(IMAGE_REGISTRY)/ocp/4.2:cli,./images/cli/Dockerfile.rhel,.) | ||
|
|
||
| $(call build-image,ocp-cli-artifacts,$(IMAGE_REGISTRY)/ocp/4.2:cli-artifacts,./images/cli-artifacts/Dockerfile.rhel,.) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
GO_BUILD_PACKAGES still builds oc-tests-ext binary. It should be updated like this;
GO_BUILD_PACKAGES :=$(strip \
./cmd/oc/... \
$(wildcard ./tools/*) \
)| "k8s.io/klog/v2" | ||
| ) | ||
|
|
||
| func main() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This binary should be added in .gitignore.
Yes I'm trying like this openshift/origin#30653 and openshift/release#73124 |
Add oc-tests-ext binary support via separate Docker image to avoid bloating the main CLI image. Changes: - Create cmd/oc-tests-ext/main.go to build oc-tests-ext binary - Create images/cli-tests/Dockerfile.rhel for building oc-tests-ext image - Add ocp-cli-tests image build target in Makefile (ocp/4.2:cli-tests) - Gzip oc-tests-ext binary to reduce image size (55MB -> ~24MB) - Make oc-tests-ext an independent build target in Makefile - Remove oc-tests-ext from main CLI image (Dockerfile.rhel) The main CLI image remains lean with only the oc binary, while oc-tests-ext is available in a separate cli-tests image for CI usage. Addresses feedback from @ardaguclu to keep test binary separate from product image and avoid 30% size increase.
449f971 to
037dbde
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (2)
cmd/oc-tests-ext/main.go (2)
23-45: Consider renaming for clarity.The function name
newOperatorTestCommandcontains "Operator" but the command is actually for running "oc tests" as indicated by the usage string and short description. Consider renaming tonewOcTestsExtCommandfor clarity.🔎 Proposed rename
-func newOperatorTestCommand(ctx context.Context) *cobra.Command { +func newOcTestsExtCommand(ctx context.Context) *cobra.Command { registry := prepareOperatorTestsRegistry() cmd := &cobra.Command{And update the call in main:
func main() { - command := newOperatorTestCommand(context.Background()) + command := newOcTestsExtCommand(context.Background()) code := cli.Run(command) os.Exit(code) }
47-53: Consider renaming function for clarity.The function name
prepareOperatorTestsRegistryuses "Operator" terminology, but the binary is explicitly namedoc-tests-extand described as running "oc tests as part of OTE." Renaming toprepareOcTestsExtRegistrywould align the function name with the actual purpose and binary naming convention.Regarding the extension parameters
NewExtension("openshift", "payload", "oc"): verification requires access to the OpenShift Tests Extension framework documentation, as this is external library usage with no comparable examples in the codebase.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting
📒 Files selected for processing (4)
.gitignoreMakefilecmd/oc-tests-ext/main.goimages/cli-tests/Dockerfile.rhel
✅ Files skipped from review due to trivial changes (1)
- .gitignore
🚧 Files skipped from review as they are similar to previous changes (1)
- images/cli-tests/Dockerfile.rhel
🧰 Additional context used
📓 Path-based instructions (1)
**
⚙️ CodeRabbit configuration file
-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.
Files:
cmd/oc-tests-ext/main.goMakefile
🔇 Additional comments (5)
Makefile (4)
30-33: LGTM! Addresses past review feedback.The restriction of
GO_BUILD_PACKAGESto./cmd/oc/...correctly excludesoc-tests-extfrom default builds, addressing the previous review comment. The newoc-tests-exttarget (lines 77-79) provides explicit control for building the test binary separately.
60-61: LGTM! Follows existing image build patterns.The new
ocp-cli-testsimage target is structured consistently with other image targets in the Makefile.
65-65: LGTM! Correct dependency order.The dependency ensures the base
ocp-cliimage is built beforeocp-cli-tests, following the established pattern for other image dependencies.
77-79: LGTM! Well-structured build target.The
oc-tests-exttarget correctly sets its ownGO_BUILD_PACKAGESscope and follows the established pattern used by theoctarget.cmd/oc-tests-ext/main.go (1)
17-21: LGTM! Standard k8s CLI pattern.The main function correctly initializes the command with a background context and uses the k8s component-base CLI runner, which is the idiomatic approach for k8s-ecosystem tooling.
|
@ardaguclu Updated pr as per feedback please take a look |
|
This PR looks good to me. Thank you |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ardaguclu, gangwgr The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/test e2e-aws-ovn-serial-1of2 |
|
unfortunately |
|
@ardaguclu: Overrode contexts on behalf of ardaguclu: ci/prow/okd-scos-images DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
@gangwgr: all tests passed! Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
|
/verified by ci runs |
|
@gangwgr: This PR has been marked as verified by DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
|
/hold cancel |
Add cli-tests image build to support oc-tests-ext test extension binary. Changes: - Add cli-tests image using cli as base (matches Dockerfile.rhel) - Provide builder image input for build stage - Exclude cli-tests from promotion (test-only image) This enables: - Building cli-tests image containing oc-tests-ext.gz - Automatic extraction and execution of oc CLI extension tests - Integration with OpenShift test framework via origin The cli-tests image contains the oc-tests-ext binary (gzipped, ~24MB) layered on top of the cli image, providing both oc and oc-tests-ext for test execution. Depends-On: openshift/oc#2176 (merged)
Add cli-tests image build to support oc-tests-ext test extension binary. Changes: - Add cli-tests image using cli as base (matches Dockerfile.rhel) - Provide builder image input for build stage - Exclude cli-tests from promotion (test-only image) This enables: - Building cli-tests image containing oc-tests-ext.gz - Automatic extraction and execution of oc CLI extension tests - Integration with OpenShift test framework via origin The cli-tests image contains the oc-tests-ext binary (gzipped, ~24MB) layered on top of the cli image, providing both oc and oc-tests-ext for test execution. Depends-On: openshift/oc#2176 (merged)
Add cli-tests image build to support oc-tests-ext test extension binary. Changes: - Add cli-tests image using cli as base (matches Dockerfile.rhel) - Provide builder image input for build stage - Exclude cli-tests from promotion (test-only image) This enables: - Building cli-tests image containing oc-tests-ext.gz - Automatic extraction and execution of oc CLI extension tests - Integration with OpenShift test framework via origin The cli-tests image contains the oc-tests-ext binary (gzipped, ~24MB) layered on top of the cli image, providing both oc and oc-tests-ext for test execution. Depends-On: openshift/oc#2176 (merged)
Add cli-tests image build to support oc-tests-ext test extension binary. Changes: - Add cli-tests image using cli as base (matches Dockerfile.rhel) - Provide builder image input for build stage - Exclude cli-tests from promotion (test-only image) This enables: - Building cli-tests image containing oc-tests-ext.gz - Automatic extraction and execution of oc CLI extension tests - Integration with OpenShift test framework via origin The cli-tests image contains the oc-tests-ext binary (gzipped, ~24MB) layered on top of the cli image, providing both oc and oc-tests-ext for test execution. Depends-On: openshift/oc#2176 (merged)
Add cli-tests image build to support oc-tests-ext test extension binary. Changes: - Add cli-tests image using cli as base (matches Dockerfile.rhel) - Provide builder image input for build stage - Exclude cli-tests from promotion (test-only image) This enables: - Building cli-tests image containing oc-tests-ext.gz - Automatic extraction and execution of oc CLI extension tests - Integration with OpenShift test framework via origin The cli-tests image contains the oc-tests-ext binary (gzipped, ~24MB) layered on top of the cli image, providing both oc and oc-tests-ext for test execution. Depends-On: openshift/oc#2176 (merged)
As per discussion https://redhat-internal.slack.com/archives/CC3CZCQHM/p1762421042028719
CNTRLPLANE-2167:Integrate OpenShift Test Extension (OTE) into oc