From 1218d6abe8b977cce85b8c01a4daaca65fbe1380 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Wed, 9 Sep 2020 16:13:56 +0300 Subject: [PATCH] Add branch flag to bootstrap cmd --- cmd/gotk/bootstrap.go | 13 ++++++++----- cmd/gotk/bootstrap_github.go | 26 +++++++++++++------------- cmd/gotk/bootstrap_gitlab.go | 26 +++++++++++++------------- docs/cmd/gotk_bootstrap.md | 1 + docs/cmd/gotk_bootstrap_github.md | 4 ++++ docs/cmd/gotk_bootstrap_gitlab.md | 4 ++++ docs/guides/installation.md | 4 ++++ 7 files changed, 47 insertions(+), 31 deletions(-) diff --git a/cmd/gotk/bootstrap.go b/cmd/gotk/bootstrap.go index 7c8fb1c9..e90d4f3a 100644 --- a/cmd/gotk/bootstrap.go +++ b/cmd/gotk/bootstrap.go @@ -50,10 +50,11 @@ var ( bootstrapRegistry string bootstrapImagePullSecret string bootstrapArch string + bootstrapBranch string ) const ( - bootstrapBranch = "master" + bootstrapDefaultBranch = "master" bootstrapInstallManifest = "toolkit-components.yaml" bootstrapSourceManifest = "toolkit-source.yaml" bootstrapKustomizationManifest = "toolkit-kustomization.yaml" @@ -70,6 +71,8 @@ func init() { "Kubernetes secret name used for pulling the toolkit images from a private registry") bootstrapCmd.PersistentFlags().StringVar(&bootstrapArch, "arch", "amd64", "arch can be amd64 or arm64") + bootstrapCmd.PersistentFlags().StringVar(&bootstrapBranch, "branch", bootstrapDefaultBranch, + "default branch (for GitHub this must match the organization default branch setting)") rootCmd.AddCommand(bootstrapCmd) } @@ -114,8 +117,8 @@ func applyInstallManifests(ctx context.Context, manifestPath string, components return nil } -func generateSyncManifests(url, name, namespace, targetPath, tmpDir string, interval time.Duration) error { - gvk := sourcev1.GroupVersion.WithKind("GitRepository") +func generateSyncManifests(url, branch, name, namespace, targetPath, tmpDir string, interval time.Duration) error { + gvk := sourcev1.GroupVersion.WithKind(sourcev1.GitRepositoryKind) gitRepository := sourcev1.GitRepository{ TypeMeta: metav1.TypeMeta{ Kind: gvk.Kind, @@ -131,7 +134,7 @@ func generateSyncManifests(url, name, namespace, targetPath, tmpDir string, inte Duration: interval, }, Reference: &sourcev1.GitRepositoryRef{ - Branch: "master", + Branch: branch, }, SecretRef: &corev1.LocalObjectReference{ Name: name, @@ -148,7 +151,7 @@ func generateSyncManifests(url, name, namespace, targetPath, tmpDir string, inte return err } - gvk = kustomizev1.GroupVersion.WithKind("Kustomization") + gvk = kustomizev1.GroupVersion.WithKind(kustomizev1.KustomizationKind) kustomization := kustomizev1.Kustomization{ TypeMeta: metav1.TypeMeta{ Kind: gvk.Kind, diff --git a/cmd/gotk/bootstrap_github.go b/cmd/gotk/bootstrap_github.go index c7d0a4ae..dfd96787 100644 --- a/cmd/gotk/bootstrap_github.go +++ b/cmd/gotk/bootstrap_github.go @@ -55,6 +55,9 @@ the bootstrap command will perform an upgrade if needed.`, # Run bootstrap for a private repo hosted on GitHub Enterprise gotk bootstrap github --owner= --repository= --hostname= + + # Run bootstrap for a an existing repository with a branch named main + gotk bootstrap github --owner= --repository= --branch=main `, RunE: bootstrapGitHubCmdRun, } @@ -223,22 +226,19 @@ func bootstrapGitHubCmdRun(cmd *cobra.Command, args []string) error { } // configure repo synchronization - if isInstall { - // generate source and kustomization manifests - logger.Actionf("generating sync manifests") - if err := generateSyncManifests(repository.GetSSH(), namespace, namespace, ghPath, tmpDir, ghInterval); err != nil { - return err - } + logger.Actionf("generating sync manifests") + if err := generateSyncManifests(repository.GetSSH(), bootstrapBranch, namespace, namespace, ghPath, tmpDir, ghInterval); err != nil { + return err + } - // commit and push manifests - if changed, err = repository.Commit(ctx, path.Join(ghPath, namespace), "Add manifests"); err != nil { + // commit and push manifests + if changed, err = repository.Commit(ctx, path.Join(ghPath, namespace), "Add manifests"); err != nil { + return err + } else if changed { + if err := repository.Push(ctx); err != nil { return err - } else if changed { - if err := repository.Push(ctx); err != nil { - return err - } - logger.Successf("sync manifests pushed") } + logger.Successf("sync manifests pushed") // apply manifests and waiting for sync logger.Actionf("applying sync manifests") diff --git a/cmd/gotk/bootstrap_gitlab.go b/cmd/gotk/bootstrap_gitlab.go index cf2c8c4f..98d0b631 100644 --- a/cmd/gotk/bootstrap_gitlab.go +++ b/cmd/gotk/bootstrap_gitlab.go @@ -52,6 +52,9 @@ the bootstrap command will perform an upgrade if needed.`, # Run bootstrap for a private repo hosted on a GitLab server gotk bootstrap gitlab --owner= --repository= --hostname= + + # Run bootstrap for a an existing repository with a branch named main + gotk bootstrap gitlab --owner= --repository= --branch=main `, RunE: bootstrapGitLabCmdRun, } @@ -195,22 +198,19 @@ func bootstrapGitLabCmdRun(cmd *cobra.Command, args []string) error { } // configure repo synchronization - if isInstall { - // generate source and kustomization manifests - logger.Actionf("generating sync manifests") - if err := generateSyncManifests(repository.GetSSH(), namespace, namespace, glPath, tmpDir, glInterval); err != nil { - return err - } + logger.Actionf("generating sync manifests") + if err := generateSyncManifests(repository.GetSSH(), bootstrapBranch, namespace, namespace, glPath, tmpDir, glInterval); err != nil { + return err + } - // commit and push manifests - if changed, err = repository.Commit(ctx, path.Join(glPath, namespace), "Add manifests"); err != nil { + // commit and push manifests + if changed, err = repository.Commit(ctx, path.Join(glPath, namespace), "Add manifests"); err != nil { + return err + } else if changed { + if err := repository.Push(ctx); err != nil { return err - } else if changed { - if err := repository.Push(ctx); err != nil { - return err - } - logger.Successf("sync manifests pushed") } + logger.Successf("sync manifests pushed") // apply manifests and waiting for sync logger.Actionf("applying sync manifests") diff --git a/docs/cmd/gotk_bootstrap.md b/docs/cmd/gotk_bootstrap.md index 8b423a23..9cd75b6d 100644 --- a/docs/cmd/gotk_bootstrap.md +++ b/docs/cmd/gotk_bootstrap.md @@ -10,6 +10,7 @@ The bootstrap sub-commands bootstrap the toolkit components on the targeted Git ``` --arch string arch can be amd64 or arm64 (default "amd64") + --branch string default branch (for GitHub this must match the organization default branch setting) (default "master") --components strings list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) -h, --help help for bootstrap --image-pull-secret string Kubernetes secret name used for pulling the toolkit images from a private registry diff --git a/docs/cmd/gotk_bootstrap_github.md b/docs/cmd/gotk_bootstrap_github.md index 0b8c7f43..3ddc3a97 100644 --- a/docs/cmd/gotk_bootstrap_github.md +++ b/docs/cmd/gotk_bootstrap_github.md @@ -35,6 +35,9 @@ gotk bootstrap github [flags] # Run bootstrap for a private repo hosted on GitHub Enterprise gotk bootstrap github --owner= --repository= --hostname= + # Run bootstrap for a an existing repository with a branch named main + gotk bootstrap github --owner= --repository= --branch=main + ``` ### Options @@ -55,6 +58,7 @@ gotk bootstrap github [flags] ``` --arch string arch can be amd64 or arm64 (default "amd64") + --branch string default branch (for GitHub this must match the organization default branch setting) (default "master") --components strings list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) --image-pull-secret string Kubernetes secret name used for pulling the toolkit images from a private registry --kubeconfig string path to the kubeconfig file (default "~/.kube/config") diff --git a/docs/cmd/gotk_bootstrap_gitlab.md b/docs/cmd/gotk_bootstrap_gitlab.md index afc95bec..f666688e 100644 --- a/docs/cmd/gotk_bootstrap_gitlab.md +++ b/docs/cmd/gotk_bootstrap_gitlab.md @@ -32,6 +32,9 @@ gotk bootstrap gitlab [flags] # Run bootstrap for a private repo hosted on a GitLab server gotk bootstrap gitlab --owner= --repository= --hostname= + # Run bootstrap for a an existing repository with a branch named main + gotk bootstrap gitlab --owner= --repository= --branch=main + ``` ### Options @@ -52,6 +55,7 @@ gotk bootstrap gitlab [flags] ``` --arch string arch can be amd64 or arm64 (default "amd64") + --branch string default branch (for GitHub this must match the organization default branch setting) (default "master") --components strings list of components, accepts comma-separated values (default [source-controller,kustomize-controller,helm-controller,notification-controller]) --image-pull-secret string Kubernetes secret name used for pulling the toolkit images from a private registry --kubeconfig string path to the kubeconfig file (default "~/.kube/config") diff --git a/docs/guides/installation.md b/docs/guides/installation.md index be99fe35..2ed262af 100644 --- a/docs/guides/installation.md +++ b/docs/guides/installation.md @@ -79,6 +79,10 @@ cluster e.g. `staging-cluster` and `production-cluster`: └── gitops-system ``` +!!! hint "Change the default branch" + If you wish to change the branch to something else than master, create the repository manually, + push a branch to origin and then use `gotk bootstrap --branch=your-branch`. + ### GitHub and GitHub Enterprise Generate a [personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)