diff --git a/cmd/gotk/bootstrap.go b/cmd/gotk/bootstrap.go index 7c8fb1c973bb037e0cfef6d2d25c98ed1ba81f6c..e90d4f3a99f539ea7099b33f493de06b9272b7fe 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 c7d0a4aeedb7d95313e238a9c7770e63ac5ff26a..dfd967870063000f480e2161ced4abf020e16591 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=<organization> --repository=<repo name> --hostname=<domain> + + # Run bootstrap for a an existing repository with a branch named main + gotk bootstrap github --owner=<organization> --repository=<repo name> --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 cf2c8c4ff868b1687513166bc77c390979b81e8c..98d0b6310fab13f59ada95c97a318a7ac645dbc0 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=<group> --repository=<repo name> --hostname=<domain> + + # Run bootstrap for a an existing repository with a branch named main + gotk bootstrap gitlab --owner=<organization> --repository=<repo name> --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 8b423a2387a89c071ccdc354cf9c1fadee5e661e..9cd75b6da1cc60e28efcb2d6643e627b7a8bca2f 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 0b8c7f4327593bea51bce5b6f98e135126b2b28e..3ddc3a978ce9caf69be4e0b75f9e9039e3068d3e 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=<organization> --repository=<repo name> --hostname=<domain> + # Run bootstrap for a an existing repository with a branch named main + gotk bootstrap github --owner=<organization> --repository=<repo name> --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 afc95becc085ce34eeeba5084ce8e9abba644cc6..f666688e333641b9b6c488464f6e41b6158a8828 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=<group> --repository=<repo name> --hostname=<domain> + # Run bootstrap for a an existing repository with a branch named main + gotk bootstrap gitlab --owner=<organization> --repository=<repo name> --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 be99fe35f7607c853a3e6784d346db5df9c8d477..2ed262afbfa35328c9ee389553d4437cbeaef6ec 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 <GIT-PROVIDER> --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)