Skip to content
Merged
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
13 changes: 9 additions & 4 deletions create_kind_cluster.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 <<EOF | kind create cluster --name "${KIND_CLUSTER_NAME}" --image "kindest/node:v1.30.13" --config=-
cat <<EOF | "${kind}" create cluster --name "${KIND_CLUSTER_NAME}" --image "kindest/node:v1.30.13" --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
containerdConfigPatches:
Expand Down
4 changes: 1 addition & 3 deletions e2e_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,12 @@ bindir=$(cd `dirname "$0"` && pwd)
repo_path=$bindir
cd $repo_path

#check installs
# Check prerequisites
bazel version
docker version
which kubectl
go version

go get sigs.k8s.io/kind@v0.29.0

cluster_running="$(docker inspect -f '{{.State.Running}}' kind-control-plane 2>/dev/null || true)"
if [ "${cluster_running}" != 'true' ]; then
./create_kind_cluster.sh
Expand Down
2 changes: 1 addition & 1 deletion examples/helloworld/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ CLUSTER = "kind-kind"

USER = "kind-kind"

REGISTRY = "localhost:5000"
REGISTRY = "localhost:15000"

k8s_deploy(
name = "mynamespace",
Expand Down
6 changes: 3 additions & 3 deletions examples/helloworld/k8s_deploy_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ cat mynamespace.show
grep -F "kind: Deployment" mynamespace.show
grep -F "kind: Service" mynamespace.show
grep -F "name: helloworld" mynamespace.show
grep -E "image: localhost:5000/.*/helloworld/image@sha256" mynamespace.show
grep -E "image: localhost:15000/.*/helloworld/image@sha256" mynamespace.show
grep -E "app_label_image_short_digest" mynamespace.show | grep -v -F 'image.short-digest'

$(rlocation examples/helloworld/canary.show) > canary.show
Expand All @@ -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:"
Expand All @@ -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
22 changes: 17 additions & 5 deletions gitops/git/git.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{
Expand Down Expand Up @@ -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
}
Expand Down Expand Up @@ -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 == "."
}