diff --git a/create_kind_cluster.sh b/create_kind_cluster.sh index 3ec944fa..64411c66 100755 --- a/create_kind_cluster.sh +++ b/create_kind_cluster.sh @@ -13,19 +13,24 @@ set -o errexit # desired cluster name; default is "kind" KIND_CLUSTER_NAME="${KIND_CLUSTER_NAME:-kind}" +# kind executable +go install sigs.k8s.io/kind@v0.29.0 +kind="$(go env GOPATH)/bin/kind" +which "${kind}" + # create registry container unless it already exists reg_name='kind-registry' -reg_port='5000' +reg_port='15000' running="$(docker inspect -f '{{.State.Running}}' "${reg_name}" 2>/dev/null || true)" if [ "${running}" != 'true' ]; then docker container rm "${reg_name}" 2>/dev/null || true docker run \ - -d --restart=always -p "${reg_port}:5000" --name "${reg_name}" \ - registry:2 + -d --restart=always -e "REGISTRY_HTTP_ADDR=0.0.0.0:${reg_port}" -p "${reg_port}:${reg_port}" --name "${reg_name}" \ + registry:3 fi # create a cluster with the local registry enabled in containerd -cat < canary.show @@ -42,7 +42,7 @@ grep -F "kind: Deployment" canary.show grep -F "kind: Service" canary.show grep -F "namespace: $NAMESPACE" canary.show grep -F "name: helloworld-canary" canary.show -grep -E "image: localhost:5000/k8s/helloworld/image@sha256" canary.show +grep -E "image: localhost:15000/k8s/helloworld/image@sha256" canary.show $(rlocation examples/helloworld/release.show) > release.show echo "DEBUG: release.show:" @@ -52,4 +52,4 @@ grep -F "kind: Deployment" release.show grep -F "kind: Service" release.show grep -F "namespace: $NAMESPACE" canary.show grep -F "name: helloworld" mynamespace.show -grep -E "image: localhost:5000/k8s/helloworld/image@sha256" release.show +grep -E "image: localhost:15000/k8s/helloworld/image@sha256" release.show diff --git a/gitops/git/git.go b/gitops/git/git.go index 190ca0d0..e8b8cfab 100644 --- a/gitops/git/git.go +++ b/gitops/git/git.go @@ -45,10 +45,13 @@ func Clone(repo, dir, mirrorDir, primaryBranch, gitopsPath string) (*Repo, error } args = append(args, repo, dir) exec.Mustex("", "git", args...) - exec.Mustex(dir, "git", "config", "--local", "core.sparsecheckout", "true") - genPath := fmt.Sprintf("%s/\n", gitopsPath) - if err := ioutil.WriteFile(filepath.Join(dir, ".git/info/sparse-checkout"), []byte(genPath), 0644); err != nil { - return nil, fmt.Errorf("Unable to create .git/info/sparse-checkout: %w", err) + // Enable sparse-checkout when restricting to a subdir + if !isRootPath(gitopsPath) { + exec.Mustex(dir, "git", "config", "--local", "core.sparsecheckout", "true") + genPath := fmt.Sprintf("%s/\n", gitopsPath) + if err := ioutil.WriteFile(filepath.Join(dir, ".git/info/sparse-checkout"), []byte(genPath), 0644); err != nil { + return nil, fmt.Errorf("Unable to create .git/info/sparse-checkout: %w", err) + } } exec.Mustex(dir, "git", "checkout", primaryBranch) return &Repo{ @@ -108,7 +111,11 @@ func (r *Repo) GetLastCommitMessage() (msg string) { // Commit all changes to the current branch. returns true if there were any changes func (r *Repo) Commit(message, gitopsPath string) bool { - exec.Mustex(r.Dir, "git", "add", gitopsPath) + if isRootPath(gitopsPath) { + exec.Mustex(r.Dir, "git", "add", ".") + } else { + exec.Mustex(r.Dir, "git", "add", gitopsPath) + } if r.IsClean() { return false } @@ -155,3 +162,8 @@ func (r *Repo) Push(branches []string) { args := append([]string{"push", r.RemoteName, "-f", "--set-upstream"}, branches...) exec.Mustex(r.Dir, "git", args...) } + +// isRootPath is an internal helper to detect "full repo" case. +func isRootPath(gitopsPath string) bool { + return gitopsPath == "" || gitopsPath == "." +} \ No newline at end of file