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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cli/cmd/beta.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func AddBetaCmd(rootCmd *cobra.Command, opts *util.GlobalOptions) {

AddExtendCmd(beta.cmd, opts)
AddBootstrapGcpCmd(beta.cmd, opts)
AddBootstrapLocalCmd(beta.cmd)
AddBootstrapLocalCmd(beta.cmd, opts)
AddBetaInstallCmd(beta.cmd, opts)
AddBetaVaultSecretCmd(beta.cmd, opts)
}
7 changes: 5 additions & 2 deletions cli/cmd/bootstrap_local.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import (

type BootstrapLocalCmd struct {
cmd *cobra.Command
Opts *util.GlobalOptions
CodesphereEnv *local.CodesphereEnvironment
Yes bool
// Experiments backs the deprecated --experiments flag; its values
Expand All @@ -56,7 +57,8 @@ func (c *BootstrapLocalCmd) RunE(_ *cobra.Command, args []string) error {
return nil
}

func AddBootstrapLocalCmd(parent *cobra.Command) {
// AddBootstrapLocalCmd adds the local bootstrap command to parent.
func AddBootstrapLocalCmd(parent *cobra.Command, opts *util.GlobalOptions) {
bootstrapLocalCmd := BootstrapLocalCmd{
cmd: &cobra.Command{
Use: "bootstrap-local",
Expand All @@ -66,6 +68,7 @@ func AddBootstrapLocalCmd(parent *cobra.Command) {
For local setups, use Minikube with a virtual machine on Linux.
Not for production use.`),
},
Opts: opts,
CodesphereEnv: &local.CodesphereEnvironment{},
}

Expand Down Expand Up @@ -153,7 +156,7 @@ func (c *BootstrapLocalCmd) BootstrapLocal() error {
return fmt.Errorf("failed to initialize Helm client: %w", err)
}

bs := local.NewLocalBootstrapper(ctx, stlog, kubeClient, restConfig, fw, icg, helmClient, c.CodesphereEnv)
bs := local.NewLocalBootstrapper(ctx, stlog, kubeClient, restConfig, fw, icg, helmClient, c.CodesphereEnv, c.Opts.Verbose)
return bs.Bootstrap()
}

Expand Down
2 changes: 1 addition & 1 deletion cli/cmd/build_image.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func AddBuildImageCmd(parentCmd *cobra.Command, opts *util.GlobalOptions) {

// AddBuildImageCmd adds the build image command to the parent command
func (c *BuildImageCmd) BuildImage(pm installer.PackageManager, im system.ImageManager) error {
err := pm.Extract(c.Opts.Force)
err := pm.Extract(c.Opts.Force, c.Opts.Verbose)
if err != nil {
return fmt.Errorf("failed to extract package: %w", err)
}
Expand Down
8 changes: 4 additions & 4 deletions cli/cmd/build_image_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ var _ = Describe("BuildImageCmd", func() {
mockPackageManager := installer.NewMockPackageManager(GinkgoT())
mockImageManager := system.NewMockImageManager(GinkgoT())

mockPackageManager.EXPECT().Extract(false).Return(nil)
mockPackageManager.EXPECT().Extract(false, false).Return(nil)
mockPackageManager.EXPECT().GetCodesphereVersion().Return("", errors.New("failed to extract version"))

err := c.BuildImage(mockPackageManager, mockImageManager)
Expand All @@ -83,7 +83,7 @@ var _ = Describe("BuildImageCmd", func() {
c.Opts.Dockerfile = "Dockerfile"
c.Opts.Registry = "my-registry.com/my-image"

mockPackageManager.EXPECT().Extract(false).Return(nil)
mockPackageManager.EXPECT().Extract(false, false).Return(nil)
mockPackageManager.EXPECT().GetCodesphereVersion().Return("codesphere-v1.66.0", nil)
mockImageManager.EXPECT().BuildImage("Dockerfile", "my-registry.com/my-image:codesphere-v1.66.0", ".").Return(errors.New("build failed"))

Expand All @@ -99,7 +99,7 @@ var _ = Describe("BuildImageCmd", func() {
c.Opts.Dockerfile = "Dockerfile"
c.Opts.Registry = "my-registry.com/my-image"

mockPackageManager.EXPECT().Extract(false).Return(nil)
mockPackageManager.EXPECT().Extract(false, false).Return(nil)
mockPackageManager.EXPECT().GetCodesphereVersion().Return("codesphere-v1.66.0", nil)
mockImageManager.EXPECT().BuildImage("Dockerfile", "my-registry.com/my-image:codesphere-v1.66.0", ".").Return(nil)
mockImageManager.EXPECT().PushImage("my-registry.com/my-image:codesphere-v1.66.0").Return(errors.New("push failed"))
Expand All @@ -116,7 +116,7 @@ var _ = Describe("BuildImageCmd", func() {
c.Opts.Dockerfile = "Dockerfile"
c.Opts.Registry = "my-registry.com/my-image"

mockPackageManager.EXPECT().Extract(false).Return(nil)
mockPackageManager.EXPECT().Extract(false, false).Return(nil)
mockPackageManager.EXPECT().GetCodesphereVersion().Return("codesphere-v1.66.0", nil)
mockImageManager.EXPECT().BuildImage("Dockerfile", "my-registry.com/my-image:codesphere-v1.66.0", ".").Return(nil)
mockImageManager.EXPECT().PushImage("my-registry.com/my-image:codesphere-v1.66.0").Return(nil)
Expand Down
2 changes: 1 addition & 1 deletion cli/cmd/build_images.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func (c *BuildImagesCmd) BuildAndPushImages(pm installer.PackageManager, cm inst
return fmt.Errorf("registry server (property registry.server) not defined in the config, please specify a valid registry to which the image shall be pushed")
}

err = pm.Extract(c.Opts.Force)
err = pm.Extract(c.Opts.Force, c.Opts.Verbose)
if err != nil {
return fmt.Errorf("failed to extract package: %w", err)
}
Expand Down
10 changes: 5 additions & 5 deletions cli/cmd/build_images_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ var _ = Describe("BuildImagesCmd", func() {
},
}
mockConfigManager.EXPECT().ParseConfigYaml("config-without-dockerfile.yaml").Return(configWithoutDockerfile, nil)
mockPackageManager.EXPECT().Extract(false).Return(nil)
mockPackageManager.EXPECT().Extract(false, false).Return(nil)
mockPackageManager.EXPECT().GetCodesphereVersion().Return("1.0.0", nil)

err := c.BuildAndPushImages(mockPackageManager, mockConfigManager, mockImageManager)
Expand Down Expand Up @@ -235,7 +235,7 @@ var _ = Describe("BuildImagesCmd", func() {
},
}
mockConfigManager.EXPECT().ParseConfigYaml("config-with-dockerfile.yaml").Return(configWithDockerfile, nil)
mockPackageManager.EXPECT().Extract(false).Return(nil)
mockPackageManager.EXPECT().Extract(false, false).Return(nil)
mockPackageManager.EXPECT().GetCodesphereVersion().Return("1.0.0", nil)
mockImageManager.EXPECT().BuildImage("Dockerfile", "registry.example.com/my-ubuntu-24.04-default:1.0.0", ".").Return(errors.New("build failed"))

Expand Down Expand Up @@ -274,7 +274,7 @@ var _ = Describe("BuildImagesCmd", func() {
},
}
mockConfigManager.EXPECT().ParseConfigYaml("config-with-dockerfile.yaml").Return(configWithDockerfile, nil)
mockPackageManager.EXPECT().Extract(false).Return(nil)
mockPackageManager.EXPECT().Extract(false, false).Return(nil)
mockPackageManager.EXPECT().GetCodesphereVersion().Return("1.0.0", nil)
mockImageManager.EXPECT().BuildImage("Dockerfile", "registry.example.com/my-ubuntu-24.04-default:1.0.0", ".").Return(nil)
mockImageManager.EXPECT().PushImage("registry.example.com/my-ubuntu-24.04-default:1.0.0").Return(errors.New("push failed"))
Expand Down Expand Up @@ -314,7 +314,7 @@ var _ = Describe("BuildImagesCmd", func() {
},
}
mockConfigManager.EXPECT().ParseConfigYaml("config-with-dockerfile.yaml").Return(configWithDockerfile, nil)
mockPackageManager.EXPECT().Extract(false).Return(nil)
mockPackageManager.EXPECT().Extract(false, false).Return(nil)
mockPackageManager.EXPECT().GetCodesphereVersion().Return("1.0.0", nil)
mockImageManager.EXPECT().BuildImage("Dockerfile", "registry.example.com/my-ubuntu-24.04-default:1.0.0", ".").Return(nil)
mockImageManager.EXPECT().PushImage("registry.example.com/my-ubuntu-24.04-default:1.0.0").Return(nil)
Expand Down Expand Up @@ -371,7 +371,7 @@ var _ = Describe("BuildImagesCmd", func() {
},
}
mockConfigManager.EXPECT().ParseConfigYaml("config-with-multiple-images.yaml").Return(configWithMultipleImages, nil)
mockPackageManager.EXPECT().Extract(false).Return(nil)
mockPackageManager.EXPECT().Extract(false, false).Return(nil)
mockPackageManager.EXPECT().GetCodesphereVersion().Return("1.0.0", nil)

// Expect calls for my-ubuntu-24.04 default flavor
Expand Down
3 changes: 3 additions & 0 deletions cli/cmd/codesphere/install_codesphere.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,17 @@ func (c *InstallCodesphereCmd) RunE(cmd *cobra.Command, _ []string) error {
infraInstaller := &installer.CodesphereInstaller{

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

1 more quite flag

cli/cmd/bootstrap_gcp.go
flags.BoolVar(&bootstrapGcpCmd.SSHQuiet, "ssh-quiet", false, "Suppress SSH command output (default: false)")

SkipSteps: c.Opts.SkipSteps,
AllowedSteps: installer.InfraSteps,
Verbose: c.Opts.Verbose,
}
dependenciesInstaller := &installer.CodesphereInstaller{
SkipSteps: append(sharedInstallCodesphereSteps(), c.Opts.SkipSteps...),
AllowedSteps: installer.DependenciesSteps,
Verbose: c.Opts.Verbose,
}
platformInstaller := &installer.CodesphereInstaller{
SkipSteps: append(sharedInstallCodesphereSteps(), c.Opts.SkipSteps...),
AllowedSteps: installer.PlatformSteps,
Verbose: c.Opts.Verbose,
}

if c.Opts.CodesphereOnly {
Expand Down
1 change: 1 addition & 0 deletions cli/cmd/codesphere/install_codesphere_dependencies.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ func installCodesphereDepencies(opts *InstallCodesphereOpts, cfg files.RootConfi
VaultPath: opts.Vault,
PrivKey: opts.PrivKey,
Force: opts.Force,
Verbose: opts.Verbose,
SkipSteps: opts.SkipSteps,
AllowedSteps: installer.DependenciesSteps,
DirectConnection: opts.DirectConnection,
Expand Down
1 change: 1 addition & 0 deletions cli/cmd/codesphere/install_codesphere_infra.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ func installCodesphereInfra(opts *InstallCodesphereOpts, env env.Env) error {
VaultPath: opts.Vault,
PrivKey: opts.PrivKey,
Force: opts.Force,
Verbose: opts.Verbose,
SkipSteps: opts.SkipSteps,
AllowedSteps: installer.InfraSteps,
DirectConnection: opts.DirectConnection,
Expand Down
1 change: 1 addition & 0 deletions cli/cmd/codesphere/install_codesphere_platform.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ func installCodespherePlatform(ctx context.Context, opts *InstallCodesphereOpts,
VaultPath: opts.Vault,
PrivKey: opts.PrivKey,
Force: opts.Force,
Verbose: opts.Verbose,
SkipSteps: opts.SkipSteps,
AllowedSteps: installer.PlatformSteps,
CodesphereOnly: true,
Expand Down
12 changes: 5 additions & 7 deletions cli/cmd/codesphere/smoketest_codesphere.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,16 @@ var availableSteps = []teststeps.SmokeTestStep{
}

type SmoketestCodesphereCmd struct {
cmd *cobra.Command
cmd *cobra.Command
GlobalOptions *util.GlobalOptions
// TODO (Simon)for now I kept the opts in the teststeps package,
// but if we add more tests we should move unified opts here and probably use seperate
// structs for the different test types (base smoke test, ui test etc.)
Opts *teststeps.SmoketestCodesphereOpts
}

func (c *SmoketestCodesphereCmd) RunE(_ *cobra.Command, args []string) error {
c.Opts.Verbose = c.GlobalOptions.Verbose
client, err := codesphere.NewClient(c.Opts.BaseURL, c.Opts.Token)
if err != nil {
return fmt.Errorf("failed to create Codesphere client: %w", err)
Expand Down Expand Up @@ -76,10 +78,6 @@ func AddSmoketestCmd(parent *cobra.Command, opts *util.GlobalOptions) {
Cmd: "--baseurl https://codesphere.example.com/api --token YOUR_TOKEN --team-id TEAM_ID --plan-id PLAN_ID",
Desc: "Run smoke tests against a specific team within your Codesphere installation, using a specific workspace plan",
},
{
Cmd: "--baseurl https://codesphere.example.com/api --token YOUR_TOKEN --quiet",
Desc: "Run smoke tests in quiet mode (no progress logging)",
},
{
Cmd: "--baseurl https://codesphere.example.com/api --token YOUR_TOKEN --timeout 15m",
Desc: "Run smoke tests with custom timeout",
Expand All @@ -94,13 +92,13 @@ func AddSmoketestCmd(parent *cobra.Command, opts *util.GlobalOptions) {
},
}),
},
Opts: &teststeps.SmoketestCodesphereOpts{},
GlobalOptions: opts,
Opts: &teststeps.SmoketestCodesphereOpts{},
}
c.cmd.Flags().StringVar(&c.Opts.BaseURL, "baseurl", "", "Base URL of the Codesphere API")
c.cmd.Flags().StringVar(&c.Opts.Token, "token", "", "API token for authentication")
c.cmd.Flags().StringVar(&c.Opts.TeamID, "team-id", "", "Team ID for workspace creation")
c.cmd.Flags().StringVar(&c.Opts.PlanID, "plan-id", "", "Plan ID for workspace creation")
c.cmd.Flags().BoolVarP(&c.Opts.Quiet, "quiet", "q", false, "Suppress progress logging")
c.cmd.Flags().DurationVar(&c.Opts.Timeout, "timeout", defaultTimeout, "Timeout for the entire smoke test")
c.cmd.Flags().StringVar(&c.Opts.Profile, "profile", defaultProfile, "CI profile to use for landscape and pipeline")
c.cmd.Flags().StringSliceVar(&c.Opts.Steps, "steps", []string{}, fmt.Sprintf("Comma-separated list of steps to run (%s). If empty, all steps including deleteWorkspace are run. If specified without deleteWorkspace, the workspace will be kept for manual inspection.", strings.Join(stepNames, ",")))
Expand Down
2 changes: 1 addition & 1 deletion cli/cmd/codesphere/smoketest_codesphere_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ var _ = Describe("SmoketestCodesphereCmd", func() {
Token: "test-token",
TeamID: teamId,
PlanID: planId,
Quiet: true, // Suppress log output in tests
Verbose: false, // Suppress log output in tests
Timeout: 10 * time.Minute,
Profile: "ci.yml",
Steps: []string{},
Expand Down
5 changes: 2 additions & 3 deletions cli/cmd/download_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ type DownloadPackageOpts struct {
Version string
Hash string
Filename string
Quiet bool
}

func (c *DownloadPackageCmd) RunE(_ *cobra.Command, args []string) error {
Expand Down Expand Up @@ -83,13 +82,13 @@ func AddDownloadPackageCmd(download *cobra.Command, opts *util.GlobalOptions) {
return nil
},
},
Opts: DownloadPackageOpts{GlobalOptions: opts},
FileWriter: intutil.NewFilesystemWriter(),
}

pkg.cmd.Flags().StringVarP(&pkg.Opts.Version, "version", "V", "", "Codesphere version to download")
pkg.cmd.Flags().StringVarP(&pkg.Opts.Hash, "hash", "H", "", "Hash of the version to download if multiple builds exist for the same version")
pkg.cmd.Flags().StringVarP(&pkg.Opts.Filename, "file", "f", "installer-lite.tar.gz", "Specify artifact to download")
pkg.cmd.Flags().BoolVarP(&pkg.Opts.Quiet, "quiet", "q", false, "Suppress progress output during download")
util.AddCmd(download, pkg.cmd)

pkg.cmd.RunE = pkg.RunE
Expand Down Expand Up @@ -118,7 +117,7 @@ func (c *DownloadPackageCmd) DownloadBuild(p portal.Portal, build portal.Build,
fileSize = int(fileInfo.Size())
}

err = p.DownloadBuildArtifact("codesphere", download, out, fileSize, c.Opts.Quiet)
err = p.DownloadBuildArtifact("codesphere", download, out, fileSize, !c.Opts.Verbose)
if err != nil {
return fmt.Errorf("failed to download build: %w", err)
}
Expand Down
12 changes: 6 additions & 6 deletions cli/cmd/download_package_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ var _ = Describe("DownloadPackages", func() {
JustBeforeEach(func() {
c = cmd.DownloadPackageCmd{
Opts: cmd.DownloadPackageOpts{
Version: version,
Filename: filename,
Quiet: false,
GlobalOptions: &util.GlobalOptions{},
Version: version,
Filename: filename,
},
FileWriter: mockFileWriter,
}
Expand Down Expand Up @@ -182,7 +182,7 @@ var _ = Describe("DownloadPackages", func() {
fakeFile := os.NewFile(uintptr(0), filename)
mockFileWriter.EXPECT().OpenAppend(version+"-"+hash+"-"+filename).Return(fakeFile, nil)
mockFileWriter.EXPECT().Open(version+"-"+hash+"-"+filename).Return(fakeFile, nil)
mockPortal.EXPECT().DownloadBuildArtifact(portal.CodesphereProduct, expectedBuildToDownload, mock.Anything, 0, false).Return(nil)
mockPortal.EXPECT().DownloadBuildArtifact(portal.CodesphereProduct, expectedBuildToDownload, mock.Anything, 0, true).Return(nil)
mockPortal.EXPECT().VerifyBuildArtifactDownload(mock.Anything, expectedBuildToDownload).Return(nil)
err := c.DownloadBuild(mockPortal, build, filename)
Expect(err).NotTo(HaveOccurred())
Expand All @@ -209,7 +209,7 @@ var _ = Describe("DownloadPackages", func() {
fakeFile := os.NewFile(uintptr(0), filename)
mockFileWriter.EXPECT().OpenAppend(version+"-"+longHash+"-"+filename).Return(fakeFile, nil)
mockFileWriter.EXPECT().Open(version+"-"+longHash+"-"+filename).Return(fakeFile, nil)
mockPortal.EXPECT().DownloadBuildArtifact(portal.CodesphereProduct, expectedBuildToDownload, mock.Anything, 0, false).Return(nil)
mockPortal.EXPECT().DownloadBuildArtifact(portal.CodesphereProduct, expectedBuildToDownload, mock.Anything, 0, true).Return(nil)
mockPortal.EXPECT().VerifyBuildArtifactDownload(mock.Anything, expectedBuildToDownload).Return(nil)
err := c.DownloadBuild(mockPortal, buildWithLongHash, filename)
Expect(err).NotTo(HaveOccurred())
Expand All @@ -231,7 +231,7 @@ var _ = Describe("DownloadPackages", func() {
fakeFile := os.NewFile(uintptr(0), filename)
mockFileWriter.EXPECT().OpenAppend("other-version-v1.42.0-"+hash+"-"+filename).Return(fakeFile, nil)
mockFileWriter.EXPECT().Open("other-version-v1.42.0-"+hash+"-"+filename).Return(fakeFile, nil)
mockPortal.EXPECT().DownloadBuildArtifact(portal.CodesphereProduct, expectedBuildToDownload, mock.Anything, 0, false).Return(nil)
mockPortal.EXPECT().DownloadBuildArtifact(portal.CodesphereProduct, expectedBuildToDownload, mock.Anything, 0, true).Return(nil)
mockPortal.EXPECT().VerifyBuildArtifactDownload(mock.Anything, expectedBuildToDownload).Return(nil)
err := c.DownloadBuild(mockPortal, build, filename)
Expect(err).NotTo(HaveOccurred())
Expand Down
4 changes: 2 additions & 2 deletions cli/cmd/extend_baseimage.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ func AddExtendBaseimageCmd(extend *cobra.Command, opts *util.GlobalOptions) {
}

func (c *ExtendBaseimageCmd) ExtendBaseimage(pm installer.PackageManager, im system.ImageManager) error {
err := pm.Extract(c.Opts.Force)
err := pm.Extract(c.Opts.Force, c.Opts.Verbose)
if err != nil {
return fmt.Errorf("failed to extract package: %w", err)
}
Expand All @@ -86,7 +86,7 @@ func (c *ExtendBaseimageCmd) ExtendBaseimage(pm installer.PackageManager, im sys
return fmt.Errorf("failed to get image name: %w", err)
}

imagePath, err := pm.GetBaseimagePath(c.Opts.Baseimage, c.Opts.Force)
imagePath, err := pm.GetBaseimagePath(c.Opts.Baseimage, c.Opts.Force, c.Opts.Verbose)
if err != nil {
return fmt.Errorf("failed to get image path: %w", err)
}
Expand Down
Loading
Loading