As a developer, I want to run qrun publish to push my image to the Voyage registry and deploy to an environment so that my application is accessible to users.
Design
Command Interface
# Publish to dev environment (default)
qrun publish
# Publish to specific environment
qrun publish --env staging
qrun publish --env prod
# Publish with specific channel
qrun publish --env prod --channel stable
# Publish existing image (skip build)
qrun publish --image myapp:v1.2.3 --env prod
# Dry run (show what would happen)
qrun publish --dry-run --env prod
Publish Workflow
1. Build image (or use --image)
2. Authenticate with Voyage
3. Push image to Voyage OCI registry
4. Verify digest after push
5. Create release record in Voyage
6. Trigger deployment to environment
7. Wait for deployment confirmation
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #13
User Story
As a developer, I want to run
qrun publishto push my image to the Voyage registry and deploy to an environment so that my application is accessible to users.Design
Command Interface
Publish Workflow
Voyage API Integration
Output Format
Files to Create/Modify
PublishCommand.javaVoyageClient.javaRegistryPusher.javaDeploymentTracker.javaArtifactRecord.javaImplementation Tasks
PublishCommandwith Picocli annotationsVoyageClientfor API calls--envoption with validation--channeloption--imageoption to skip build--dry-runoption--wait/--no-waitfor deploymentAcceptance Criteria
qrun publishpushes image to Voyage registry--dry-runshows actions without executing