Skip to content

Inject proper crane version from tag in CI#458

Merged
msajidmansoori12 merged 6 commits into
mainfrom
fix-crane-version
Jun 5, 2026
Merged

Inject proper crane version from tag in CI#458
msajidmansoori12 merged 6 commits into
mainfrom
fix-crane-version

Conversation

@msajidmansoori12

@msajidmansoori12 msajidmansoori12 commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • Chores

    • Release builds now write compiled artifacts to a dedicated distribution directory.
    • Build process embeds a computed build version (tag or commit-based) into artifacts and validates its presence.
    • CI will fail if the expected version metadata is not found in the produced binary.
  • New Features

    • CLI version output now includes the build commit SHA alongside the version for clearer traceability.

Signed-off-by: M Sajid Mansoori <mmansoor@redhat.com>
Signed-off-by: M Sajid Mansoori <mmansoor@redhat.com>
@msajidmansoori12 msajidmansoori12 self-assigned this Jun 5, 2026
@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@msajidmansoori12, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 18 minutes and 55 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: af2673c3-37c3-4ec8-b75e-57d3058291ea

📥 Commits

Reviewing files that changed from the base of the PR and between 4e56e18 and 4d60edd.

📒 Files selected for processing (3)
  • .github/workflows/build-release-binaries.yml
  • cmd/version/version.go
  • internal/buildinfo/buildinfo.go

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds an exported BuildCommit variable, prints that SHA in the version command, and updates CI to compute BUILD_VERSION (tag or main-), inject Version and BuildCommit into the Go binary via -ldflags, output to dist/, and validate the binary contains the version string.

Changes

Build version injection and validation

Layer / File(s) Summary
Build metadata variable
internal/buildinfo/buildinfo.go
Adds exported BuildCommit string and documents Version and BuildCommit as overridable via -ldflags at build time.
Version command output
cmd/version/version.go
version command now prints SHA: <buildinfo.BuildCommit> alongside the crane version, before printing crane-lib and kustomize versions.
CI: compute, inject, and validate build version
.github/workflows/build-release-binaries.yml
Workflow sets BUILD_VERSION (tag name or main-<sha>), passes BUILD_VERSION and BUILD_COMMIT into the Go build via -ldflags -X internal/buildinfo.Version=... -X internal/buildinfo.BuildCommit=..., writes the artifact to dist/, and verifies the built binary contains the injected version string using a string search.

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant GoBuild as "go build"
  participant DistArtifact as "dist/<binary>"
  GitHubActions->>GitHubActions: compute BUILD_VERSION (tag || main-<sha>)
  GitHubActions->>GoBuild: run `go build -ldflags -X internal/buildinfo.Version=${BUILD_VERSION} -X internal/buildinfo.BuildCommit=${BUILD_COMMIT}` -> outputs to dist/
  GoBuild->>DistArtifact: write binary with embedded Version and BuildCommit strings
  GitHubActions->>DistArtifact: run `strings | grep -Fq "${BUILD_VERSION}"` to validate
  GitHubActions-->>GitHubActions: fail workflow if grep misses match
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • migtools/crane#378: Related workflow changes for building/packaging Go binaries and handling dist artifacts.

Poem

🐰 I tucked a SHA inside the crate,
A BUILD_VERSION sealed its fate,
Ldflags whispered to the binary's ear,
Grep gave a nod — the tag is clear,
Hoppity hops, the release is near!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title clearly summarizes the main change: injecting proper crane version from tags in CI via build-time version injection.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-crane-version

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

Test Coverage Report

Total: 46.6%

Per-package coverage

  • github.com/konveyor/crane — 0.0%
  • github.com/konveyor/crane/cmd/apply — 54.9%
  • github.com/konveyor/crane/cmd/convert — 0.0%
  • github.com/konveyor/crane/cmd/export — 93.1%
  • github.com/konveyor/crane/cmd/plugin-manager — 0.0%
  • github.com/konveyor/crane/cmd/plugin-manager/add — 0.0%
  • github.com/konveyor/crane/cmd/plugin-manager/list — 0.0%
  • github.com/konveyor/crane/cmd/plugin-manager/remove — 0.0%
  • github.com/konveyor/crane/cmd/skopeo-sync-gen — 0.0%
  • github.com/konveyor/crane/cmd/transfer-pvc — 9.2%
  • github.com/konveyor/crane/cmd/transform — 50.9%
  • github.com/konveyor/crane/cmd/transform/listplugins — 23.0%
  • github.com/konveyor/crane/cmd/transform/optionals — 0.0%
  • github.com/konveyor/crane/cmd/tunnel-api — 0.0%
  • github.com/konveyor/crane/cmd/validate — 39.1%
  • github.com/konveyor/crane/cmd/version — 20.0%
  • github.com/konveyor/crane/internal/apply — 33.6%
  • github.com/konveyor/crane/internal/buildinfo — 100.0%
  • github.com/konveyor/crane/internal/file — 71.4%
  • github.com/konveyor/crane/internal/flags — 0.0%
  • github.com/konveyor/crane/internal/kustomize — 85.7%
  • github.com/konveyor/crane/internal/plugin — 32.9%
  • github.com/konveyor/crane/internal/transform — 80.9%
  • github.com/konveyor/crane/internal/validate — 58.2%
Full function-level details
github.com/konveyor/crane/cmd/apply/apply.go:41:			Complete					100.0%
github.com/konveyor/crane/cmd/apply/apply.go:47:			Validate					100.0%
github.com/konveyor/crane/cmd/apply/apply.go:52:			Run						0.0%
github.com/konveyor/crane/cmd/apply/apply.go:56:			NewApplyCommand					0.0%
github.com/konveyor/crane/cmd/apply/apply.go:97:			getStageNames					100.0%
github.com/konveyor/crane/cmd/apply/apply.go:105:			addFlagsForOptions				0.0%
github.com/konveyor/crane/cmd/apply/apply.go:118:			run						84.2%
github.com/konveyor/crane/cmd/convert/convert.go:30:			NewConvertOptions				0.0%
github.com/konveyor/crane/cmd/convert/convert.go:63:			addFlagsForConvertOptions			0.0%
github.com/konveyor/crane/cmd/convert/convert.go:74:			Complete					0.0%
github.com/konveyor/crane/cmd/convert/convert.go:83:			Run						0.0%
github.com/konveyor/crane/cmd/convert/convert.go:87:			run						0.0%
github.com/konveyor/crane/cmd/convert/convert.go:112:			getClientFromContext				0.0%
github.com/konveyor/crane/cmd/convert/convert.go:134:			getRestConfigFromContext			0.0%
github.com/konveyor/crane/cmd/export/cluster.go:29:			NewClusterScopeHandler				100.0%
github.com/konveyor/crane/cmd/export/cluster.go:35:			isClusterScopedResource				100.0%
github.com/konveyor/crane/cmd/export/cluster.go:44:			filterRbacResources				100.0%
github.com/konveyor/crane/cmd/export/cluster.go:102:			NewClusterScopedRbacHandler			100.0%
github.com/konveyor/crane/cmd/export/cluster.go:113:			exportedSANamespaces				100.0%
github.com/konveyor/crane/cmd/export/cluster.go:126:			groupMatchesExportedSANamespaces		100.0%
github.com/konveyor/crane/cmd/export/cluster.go:143:			parseServiceAccountUserSubject			100.0%
github.com/konveyor/crane/cmd/export/cluster.go:154:			prepareForFiltering				100.0%
github.com/konveyor/crane/cmd/export/cluster.go:187:			filteredResourcesOfKind				100.0%
github.com/konveyor/crane/cmd/export/cluster.go:213:			accept						100.0%
github.com/konveyor/crane/cmd/export/cluster.go:223:			acceptClusterRoleBinding			100.0%
github.com/konveyor/crane/cmd/export/cluster.go:260:			acceptClusterRole				100.0%
github.com/konveyor/crane/cmd/export/cluster.go:284:			acceptSecurityContextConstraints		100.0%
github.com/konveyor/crane/cmd/export/cluster.go:336:			anyServiceAccountInNamespace			100.0%
github.com/konveyor/crane/cmd/export/crd.go:17:				normalizeGroupSet				85.7%
github.com/konveyor/crane/cmd/export/crd.go:29:				shouldSkipCRDGroup				100.0%
github.com/konveyor/crane/cmd/export/crd.go:50:				crdFailureAPIResourceName			100.0%
github.com/konveyor/crane/cmd/export/crd.go:56:				getOperatorManager				92.9%
github.com/konveyor/crane/cmd/export/crd.go:88:				collectRelatedCRDs				90.6%
github.com/konveyor/crane/cmd/export/discover.go:39:			hasClusterScopedManifests			100.0%
github.com/konveyor/crane/cmd/export/discover.go:57:			prepareClusterResourceDir			100.0%
github.com/konveyor/crane/cmd/export/discover.go:73:			prepareFailuresDir				100.0%
github.com/konveyor/crane/cmd/export/discover.go:85:			writeResources					85.7%
github.com/konveyor/crane/cmd/export/discover.go:133:			writeErrors					83.3%
github.com/konveyor/crane/cmd/export/discover.go:174:			getFilePath					100.0%
github.com/konveyor/crane/cmd/export/discover.go:185:			discoverPreferredResources			100.0%
github.com/konveyor/crane/cmd/export/discover.go:214:			resourceToExtract				100.0%
github.com/konveyor/crane/cmd/export/discover.go:283:			isAdmittedResource				100.0%
github.com/konveyor/crane/cmd/export/discover.go:292:			getObjects					100.0%
github.com/konveyor/crane/cmd/export/discover.go:326:			iterateItemsByGet				93.8%
github.com/konveyor/crane/cmd/export/discover.go:352:			iterateItemsInList				92.3%
github.com/konveyor/crane/cmd/export/export.go:52:			Complete					90.0%
github.com/konveyor/crane/cmd/export/export.go:91:			Validate					100.0%
github.com/konveyor/crane/cmd/export/export.go:106:			validateExportNamespace				87.5%
github.com/konveyor/crane/cmd/export/export.go:122:			Run						0.0%
github.com/konveyor/crane/cmd/export/export.go:225:			NewExportCommand				50.0%
github.com/konveyor/crane/cmd/plugin-manager/add/add.go:42:		Complete					0.0%
github.com/konveyor/crane/cmd/plugin-manager/add/add.go:47:		Validate					0.0%
github.com/konveyor/crane/cmd/plugin-manager/add/add.go:90:		Run						0.0%
github.com/konveyor/crane/cmd/plugin-manager/add/add.go:94:		NewAddCommand					0.0%
github.com/konveyor/crane/cmd/plugin-manager/add/add.go:126:		addFlagsForOptions				0.0%
github.com/konveyor/crane/cmd/plugin-manager/add/add.go:131:		run						0.0%
github.com/konveyor/crane/cmd/plugin-manager/add/add.go:195:		downloadBinary					0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:46:		Complete					0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:51:		Validate					0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:56:		Run						0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:60:		NewListCommand					0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:90:		addFlagsForOptions				0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:98:		run						0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:167:		printInstalledInformation			0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:177:		groupInformationForPlugins			0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:196:		printInformation				0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:208:		printParamsInformation				0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:222:		getOptionalFields				0.0%
github.com/konveyor/crane/cmd/plugin-manager/list/list.go:247:		printTable					0.0%
github.com/konveyor/crane/cmd/plugin-manager/plugin-manager.go:33:	Complete					0.0%
github.com/konveyor/crane/cmd/plugin-manager/plugin-manager.go:38:	Validate					0.0%
github.com/konveyor/crane/cmd/plugin-manager/plugin-manager.go:43:	Run						0.0%
github.com/konveyor/crane/cmd/plugin-manager/plugin-manager.go:47:	NewPluginManagerCommand				0.0%
github.com/konveyor/crane/cmd/plugin-manager/plugin-manager.go:78:	addFlagsForOptions				0.0%
github.com/konveyor/crane/cmd/plugin-manager/plugin-manager.go:86:	run						0.0%
github.com/konveyor/crane/cmd/plugin-manager/remove/remove.go:33:	Complete					0.0%
github.com/konveyor/crane/cmd/plugin-manager/remove/remove.go:38:	Validate					0.0%
github.com/konveyor/crane/cmd/plugin-manager/remove/remove.go:43:	Run						0.0%
github.com/konveyor/crane/cmd/plugin-manager/remove/remove.go:47:	NewRemoveCommand				0.0%
github.com/konveyor/crane/cmd/plugin-manager/remove/remove.go:77:	run						0.0%
github.com/konveyor/crane/cmd/skopeo-sync-gen/skopeo-sync-gen.go:61:	Complete					0.0%
github.com/konveyor/crane/cmd/skopeo-sync-gen/skopeo-sync-gen.go:65:	Validate					0.0%
github.com/konveyor/crane/cmd/skopeo-sync-gen/skopeo-sync-gen.go:69:	NewSkopeoSyncGenCommand				0.0%
github.com/konveyor/crane/cmd/skopeo-sync-gen/skopeo-sync-gen.go:103:	shouldAddImageStream				0.0%
github.com/konveyor/crane/cmd/skopeo-sync-gen/skopeo-sync-gen.go:114:	Run						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:37:		NewRsyncLogStream				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:50:		Init						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:138:		writeProgressToFile				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:148:		Close						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:154:		Streams						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:190:		addDataSize					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:215:		String						100.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:219:		MarshalJSON					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:223:		AsString					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:271:		NewProgress					100.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:291:		Completed					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:296:		Status						38.5%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:321:		Merge						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:376:		newDataSize					72.7%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:399:		parseRsyncLogs					76.1%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:479:		waitForPodRunning				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/progress.go:513:		getFinalPodStatus				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:89:		Validate					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:117:		Validate					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:133:		NewTransferPVCCommand				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:169:		addFlagsToTransferPVCCommand			0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:189:		Complete					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:220:		Validate					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:246:		Run						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:250:		getClientFromContext				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:271:		getRestConfigFromContext			0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:278:		run						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:485:		getValidatedResourceName			0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:495:		getNodeNameForPVC				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:515:		getIDsForNamespace				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:541:		getRsyncClientPodSecurityContext		0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:553:		getRsyncServerPodSecurityContext		0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:565:		garbageCollect					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:602:		deleteResourcesIteratively			0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:628:		deleteResourcesForGVK				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:649:		followClientLogs				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:678:		waitForEndpoint					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:690:		createEndpoint					0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:735:		getRouteHostName				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:752:		buildDestinationPVC				0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:773:		ApplyTo						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:793:		ApplyTo						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:805:		ApplyTo						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:821:		String						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:825:		Set						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:835:		Type						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:841:		parseSourceDestinationMapping			100.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:863:		String						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:867:		Set						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:876:		Type						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:880:		String						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:884:		Set						0.0%
github.com/konveyor/crane/cmd/transfer-pvc/transfer-pvc.go:894:		Type						0.0%
github.com/konveyor/crane/cmd/transform/listplugins/listplugins.go:33:	Complete					0.0%
github.com/konveyor/crane/cmd/transform/listplugins/listplugins.go:38:	Validate					0.0%
github.com/konveyor/crane/cmd/transform/listplugins/listplugins.go:43:	Run						0.0%
github.com/konveyor/crane/cmd/transform/listplugins/listplugins.go:47:	NewListPluginsCommand				0.0%
github.com/konveyor/crane/cmd/transform/listplugins/listplugins.go:80:	GetPluginNames					85.7%
github.com/konveyor/crane/cmd/transform/listplugins/listplugins.go:95:	getFilteredPlugins				75.0%
github.com/konveyor/crane/cmd/transform/listplugins/listplugins.go:104:	run						0.0%
github.com/konveyor/crane/cmd/transform/optionals/optionals.go:31:	Complete					0.0%
github.com/konveyor/crane/cmd/transform/optionals/optionals.go:36:	Validate					0.0%
github.com/konveyor/crane/cmd/transform/optionals/optionals.go:41:	Run						0.0%
github.com/konveyor/crane/cmd/transform/optionals/optionals.go:45:	NewOptionalsCommand				0.0%
github.com/konveyor/crane/cmd/transform/optionals/optionals.go:77:	run						0.0%
github.com/konveyor/crane/cmd/transform/transform.go:56:		Complete					0.0%
github.com/konveyor/crane/cmd/transform/transform.go:62:		Validate					0.0%
github.com/konveyor/crane/cmd/transform/transform.go:67:		Run						0.0%
github.com/konveyor/crane/cmd/transform/transform.go:72:		getPluginCompletions				100.0%
github.com/konveyor/crane/cmd/transform/transform.go:97:		NewTransformCommand				0.0%
github.com/konveyor/crane/cmd/transform/transform.go:140:		addFlagsForOptions				0.0%
github.com/konveyor/crane/cmd/transform/transform.go:159:		run						11.8%
github.com/konveyor/crane/cmd/transform/transform.go:310:		optionalFlagsToLower				0.0%
github.com/konveyor/crane/cmd/transform/transform.go:320:		runStageWithCleanup				0.0%
github.com/konveyor/crane/cmd/transform/transform.go:336:		reconcileInstructionStages			80.0%
github.com/konveyor/crane/cmd/transform/transform.go:385:		ensurePreviousStagesRun				83.3%
github.com/konveyor/crane/cmd/transform/transform.go:402:		ensureStagesHaveOutput				92.9%
github.com/konveyor/crane/cmd/transform/transform.go:441:		createDefaultStagesForAllPlugins		94.7%
github.com/konveyor/crane/cmd/transform/transform.go:493:		validateStageNameToken				100.0%
github.com/konveyor/crane/cmd/transform/transform.go:508:		findStageByDirName				100.0%
github.com/konveyor/crane/cmd/transform/transform.go:520:		findStagesByName				100.0%
github.com/konveyor/crane/cmd/transform/transform.go:532:		createStageDirectory				77.8%
github.com/konveyor/crane/cmd/transform/transform.go:553:		createCustomStageWithExplicitName		100.0%
github.com/konveyor/crane/cmd/transform/transform.go:569:		createCustomStageWithAutoPriority		71.4%
github.com/konveyor/crane/cmd/transform/transform.go:591:		createPluginStage				0.0%
github.com/konveyor/crane/cmd/transform/transform.go:624:		resolveAndValidateStages			57.3%
github.com/konveyor/crane/cmd/tunnel-api/tunnel-api.go:35:		NewTunnelAPIOptions				0.0%
github.com/konveyor/crane/cmd/tunnel-api/tunnel-api.go:65:		addFlagsForTunnelAPIOptions			0.0%
github.com/konveyor/crane/cmd/tunnel-api/tunnel-api.go:77:		Complete					0.0%
github.com/konveyor/crane/cmd/tunnel-api/tunnel-api.go:100:		Validate					0.0%
github.com/konveyor/crane/cmd/tunnel-api/tunnel-api.go:116:		Run						0.0%
github.com/konveyor/crane/cmd/tunnel-api/tunnel-api.go:120:		getClientFromContext				0.0%
github.com/konveyor/crane/cmd/tunnel-api/tunnel-api.go:129:		getRestConfigFromContext			0.0%
github.com/konveyor/crane/cmd/tunnel-api/tunnel-api.go:136:		run						0.0%
github.com/konveyor/crane/cmd/validate/validate.go:33:			Complete					0.0%
github.com/konveyor/crane/cmd/validate/validate.go:45:			Validate					100.0%
github.com/konveyor/crane/cmd/validate/validate.go:87:			Run						12.2%
github.com/konveyor/crane/cmd/validate/validate.go:167:			NewValidateCommand				44.4%
github.com/konveyor/crane/cmd/version/version.go:20:			Complete					0.0%
github.com/konveyor/crane/cmd/version/version.go:25:			Validate					0.0%
github.com/konveyor/crane/cmd/version/version.go:30:			Run						0.0%
github.com/konveyor/crane/cmd/version/version.go:34:			NewVersionCommand				0.0%
github.com/konveyor/crane/cmd/version/version.go:60:			run						100.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:20:			CreateTempDir					100.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:27:			ListFilesRecursively				91.7%
github.com/konveyor/crane/e2e-tests/utils/utils.go:50:			ListFilesRecursivelyAsList			80.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:74:			HasFilesRecursively				80.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:85:			ReadTestdataFile				88.9%
github.com/konveyor/crane/e2e-tests/utils/utils.go:104:			TestdataFilePath				0.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:124:			GoldenManifestsDir				90.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:143:			CompareDirectoryFileSets			78.9%
github.com/konveyor/crane/e2e-tests/utils/utils.go:178:			CompareDirectoryYAMLSemantics			82.4%
github.com/konveyor/crane/e2e-tests/utils/utils.go:212:			CompareDirectoryYAMLSemanticsExport		89.3%
github.com/konveyor/crane/e2e-tests/utils/utils.go:264:			buildNormalizedExportIndex			81.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:304:			canonicalizeDocs				87.5%
github.com/konveyor/crane/e2e-tests/utils/utils.go:318:			extractResourceIdentity				77.8%
github.com/konveyor/crane/e2e-tests/utils/utils.go:381:			parseYAMLDocuments				100.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:400:			compareYAMLFileBytes				100.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:420:			AssertNoKindsInOutput				0.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:476:			AssertKindsInOutput				0.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:528:			LooksLikeYAMLFile				100.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:542:			normalizeUnstableFields				100.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:579:			normalizePodServiceAccountVolumeNames		90.9%
github.com/konveyor/crane/e2e-tests/utils/utils.go:638:			normalizeWithPath				92.9%
github.com/konveyor/crane/e2e-tests/utils/utils.go:668:			shouldDropField					100.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:719:			AssertWhiteoutResourceFilesExist		0.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:759:			AssertWhiteoutResourceFileCount			0.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:791:			AssertWhiteoutCommentsInKustomization		0.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:846:			AssertKindsNotInActiveKustomizeResources	0.0%
github.com/konveyor/crane/e2e-tests/utils/utils.go:888:			CaptureAPISurfaceScriptPath			75.0%
github.com/konveyor/crane/internal/apply/kustomize.go:30:		ApplySingleStage				0.0%
github.com/konveyor/crane/internal/apply/kustomize.go:79:		ApplyMultiStage					0.0%
github.com/konveyor/crane/internal/apply/kustomize.go:133:		runKustomizeBuild				0.0%
github.com/konveyor/crane/internal/apply/kustomize.go:142:		filterClusterScopedResources			82.4%
github.com/konveyor/crane/internal/apply/kustomize.go:198:		splitMultiDocYAMLToFiles			85.7%
github.com/konveyor/crane/internal/buildinfo/buildinfo.go:25:		readKustomizeVersion				100.0%
github.com/konveyor/crane/internal/file/file_helper.go:22:		ReadFiles					100.0%
github.com/konveyor/crane/internal/file/file_helper.go:32:		readFiles					84.0%
github.com/konveyor/crane/internal/file/file_helper.go:83:		GetWhiteOutFilePath				100.0%
github.com/konveyor/crane/internal/file/file_helper.go:87:		GetTransformPath				100.0%
github.com/konveyor/crane/internal/file/file_helper.go:91:		GetIgnoredPatchesPath				0.0%
github.com/konveyor/crane/internal/file/file_helper.go:95:		updateTransformDirPath				100.0%
github.com/konveyor/crane/internal/file/file_helper.go:99:		updateIgnoredPatchesDirPath			0.0%
github.com/konveyor/crane/internal/file/file_helper.go:106:		updatePath					100.0%
github.com/konveyor/crane/internal/file/file_helper.go:113:		GetOutputFilePath				100.0%
github.com/konveyor/crane/internal/file/file_helper.go:123:		GetStageDir					100.0%
github.com/konveyor/crane/internal/file/file_helper.go:129:		GetResourcesDir					100.0%
github.com/konveyor/crane/internal/file/file_helper.go:135:		GetPatchesDir					100.0%
github.com/konveyor/crane/internal/file/file_helper.go:141:		GetReportsDir					100.0%
github.com/konveyor/crane/internal/file/file_helper.go:147:		GetWhiteoutsDir					100.0%
github.com/konveyor/crane/internal/file/file_helper.go:153:		GetKustomizationPath				100.0%
github.com/konveyor/crane/internal/file/file_helper.go:159:		GetMetadataPath					100.0%
github.com/konveyor/crane/internal/file/file_helper.go:165:		GetResourceTypeFilePath				100.0%
github.com/konveyor/crane/internal/file/file_helper.go:171:		GetPatchFilePath				100.0%
github.com/konveyor/crane/internal/file/file_helper.go:177:		GetWhiteoutReportPath				100.0%
github.com/konveyor/crane/internal/file/file_helper.go:183:		GetIgnoredPatchReportPath			100.0%
github.com/konveyor/crane/internal/file/file_helper.go:189:		GetStageWorkDir					0.0%
github.com/konveyor/crane/internal/file/file_helper.go:195:		GetStageInputDir				0.0%
github.com/konveyor/crane/internal/file/file_helper.go:202:		GetStageTransformDir				0.0%
github.com/konveyor/crane/internal/file/file_helper.go:208:		GetStageOutputDir				0.0%
github.com/konveyor/crane/internal/file/file_helper.go:215:		GetResourceFilename				0.0%
github.com/konveyor/crane/internal/flags/global_flags.go:14:		ApplyFlags					0.0%
github.com/konveyor/crane/internal/flags/global_flags.go:21:		GetLogger					0.0%
github.com/konveyor/crane/internal/flags/global_flags.go:29:		initConfig					0.0%
github.com/konveyor/crane/internal/kustomize/args.go:20:		ParseAndValidateArgs				100.0%
github.com/konveyor/crane/internal/kustomize/args.go:92:		splitArgs					100.0%
github.com/konveyor/crane/internal/kustomize/runner.go:21:		Build						82.4%
github.com/konveyor/crane/internal/kustomize/runner.go:55:		buildOptions					100.0%
github.com/konveyor/crane/internal/kustomize/runner.go:105:		setEnvVars					46.2%
github.com/konveyor/crane/internal/plugin/plugin_helper.go:21:		GetPlugins					0.0%
github.com/konveyor/crane/internal/plugin/plugin_helper.go:38:		getBinaryPlugins				0.0%
github.com/konveyor/crane/internal/plugin/plugin_helper.go:63:		IsExecAny					0.0%
github.com/konveyor/crane/internal/plugin/plugin_helper.go:67:		GetFilteredPlugins				0.0%
github.com/konveyor/crane/internal/plugin/plugin_helper.go:109:		isPluginInList					0.0%
github.com/konveyor/crane/internal/plugin/plugin_manager_helper.go:24:	BuildManifestMap				0.0%
github.com/konveyor/crane/internal/plugin/plugin_manager_helper.go:68:	GetYamlFromUrl					75.0%
github.com/konveyor/crane/internal/plugin/plugin_manager_helper.go:82:	YamlToManifest					72.7%
github.com/konveyor/crane/internal/plugin/plugin_manager_helper.go:104:	FilterPluginForOsArch				100.0%
github.com/konveyor/crane/internal/plugin/plugin_manager_helper.go:122:	GetDefaultSource				0.0%
github.com/konveyor/crane/internal/plugin/plugin_manager_helper.go:131:	LocateBinaryInPluginDir				0.0%
github.com/konveyor/crane/internal/plugin/plugin_manager_helper.go:143:	IsUrl						100.0%
github.com/konveyor/crane/internal/plugin/plugin_manager_helper.go:149:	getData						80.0%
github.com/konveyor/crane/internal/transform/instructions.go:31:	LoadInstructions				61.1%
github.com/konveyor/crane/internal/transform/instructions.go:63:	friendlyInstructionsDecodeError			87.5%
github.com/konveyor/crane/internal/transform/instructions.go:78:	ValidateInstructions				100.0%
github.com/konveyor/crane/internal/transform/instructions.go:112:	GenerateStageDirNames				100.0%
github.com/konveyor/crane/internal/transform/orchestrator.go:41:	RunMultiStage					75.0%
github.com/konveyor/crane/internal/transform/orchestrator.go:147:	executeStage					72.7%
github.com/konveyor/crane/internal/transform/orchestrator.go:199:	transformResources				68.4%
github.com/konveyor/crane/internal/transform/orchestrator.go:250:	formatResourceID				0.0%
github.com/konveyor/crane/internal/transform/orchestrator.go:257:	getPluginForStage				90.9%
github.com/konveyor/crane/internal/transform/orchestrator.go:284:	getAvailablePluginNames				0.0%
github.com/konveyor/crane/internal/transform/orchestrator.go:297:	applyStageTransforms				80.8%
github.com/konveyor/crane/internal/transform/orchestrator.go:354:	loadResourcesFromDirectory			85.7%
github.com/konveyor/crane/internal/transform/orchestrator.go:369:	writeResourcesToDirectory			73.1%
github.com/konveyor/crane/internal/transform/stages.go:22:		DiscoverStages					90.5%
github.com/konveyor/crane/internal/transform/stages.go:83:		FilterStages					100.0%
github.com/konveyor/crane/internal/transform/stages.go:112:		GetFirstStage					100.0%
github.com/konveyor/crane/internal/transform/stages.go:122:		GetLastStage					66.7%
github.com/konveyor/crane/internal/transform/stages.go:132:		GetPreviousStage				100.0%
github.com/konveyor/crane/internal/transform/stages.go:142:		GetNextStage					100.0%
github.com/konveyor/crane/internal/transform/stages.go:152:		ValidateStageName				100.0%
github.com/konveyor/crane/internal/transform/stages.go:161:		GenerateStageName				100.0%
github.com/konveyor/crane/internal/transform/test_helpers.go:8:		hasKustomizeCommand				100.0%
github.com/konveyor/crane/internal/transform/test_helpers.go:14:	contains					100.0%
github.com/konveyor/crane/internal/transform/test_helpers.go:23:	findInString					100.0%
github.com/konveyor/crane/internal/transform/writer.go:28:		NewKustomizeWriter				100.0%
github.com/konveyor/crane/internal/transform/writer.go:37:		WriteStage					68.4%
github.com/konveyor/crane/internal/transform/writer.go:218:		getResourceID					100.0%
github.com/konveyor/crane/internal/transform/writer.go:231:		filterValidRemoveOps				76.2%
github.com/konveyor/crane/internal/transform/writer.go:275:		pathExists					93.5%
github.com/konveyor/crane/internal/transform/writer.go:352:		generateKustomizationWithComments		93.8%
github.com/konveyor/crane/internal/transform/writer.go:383:		checkStageDirectory				23.1%
github.com/konveyor/crane/internal/validate/api_resources.go:23:	ParseAPIResourcesJSON				90.9%
github.com/konveyor/crane/internal/validate/matcher.go:25:		MatchResults					75.0%
github.com/konveyor/crane/internal/validate/matcher.go:36:		MatchResultsFromIndex				100.0%
github.com/konveyor/crane/internal/validate/matcher.go:72:		buildDiscoveryIndex				64.7%
github.com/konveyor/crane/internal/validate/matcher.go:102:		matchEntry					100.0%
github.com/konveyor/crane/internal/validate/matcher.go:131:		buildKindIndex					100.0%
github.com/konveyor/crane/internal/validate/matcher.go:143:		addSuggestion					92.3%
github.com/konveyor/crane/internal/validate/report.go:17:		FormatTable					91.3%
github.com/konveyor/crane/internal/validate/report.go:60:		FormatJSON					100.0%
github.com/konveyor/crane/internal/validate/report.go:67:		FormatYAML					0.0%
github.com/konveyor/crane/internal/validate/report.go:79:		WriteFailures					0.0%
github.com/konveyor/crane/internal/validate/report.go:115:		failureFileName					0.0%
github.com/konveyor/crane/internal/validate/report.go:129:		safeFilePart					0.0%
github.com/konveyor/crane/internal/validate/report.go:145:		parseAPIVersion					0.0%
github.com/konveyor/crane/internal/validate/scanner.go:34:		ScanManifests					75.4%
github.com/konveyor/crane/internal/validate/types.go:46:		HasIncompatible					100.0%
github.com/konveyor/crane/internal/validate/types.go:49:		IncompatibleResults				0.0%
github.com/konveyor/crane/main.go:21:					main						0.0%
total:									(statements)					46.6%

Posted by CI

Signed-off-by: M Sajid Mansoori <mmansoor@redhat.com>
Signed-off-by: M Sajid Mansoori <mmansoor@redhat.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@cmd/version/version.go`:
- Line 63: TestVersionOutput currently doesn't assert the new "SHA" line; update
the test in cmd/version/version_test.go (TestVersionOutput) to assert that the
captured stdout contains the SHA output by checking for the substring "\tSHA:"
or the actual buildinfo.BuildCommit value (e.g., using strings.Contains or
require/ assert Contains on the test's stdout variable). Locate the test helper
that invokes version.PrintVersion (or main/version command) and add a single
assertion asserting stdout includes "\tSHA:" (or buildinfo.BuildCommit) so the
new line is covered.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: df523179-a799-4255-b78f-67c6fd6746f2

📥 Commits

Reviewing files that changed from the base of the PR and between fd9e681 and 88d3d11.

📒 Files selected for processing (2)
  • cmd/version/version.go
  • internal/buildinfo/buildinfo.go

Comment thread cmd/version/version.go

@aufi aufi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looks great, thanks for the PR! Left one minor comment.

Comment thread internal/buildinfo/buildinfo.go Outdated
Signed-off-by: M Sajid Mansoori <mmansoor@redhat.com>
Signed-off-by: M Sajid Mansoori <mmansoor@redhat.com>
@msajidmansoori12

Copy link
Copy Markdown
Contributor Author

@CodeRabbit summary

@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown
✅ Action performed

Summary regeneration triggered.

@msajidmansoori12 msajidmansoori12 merged commit 5965967 into main Jun 5, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants