Skip to content

A go utility which allows to generate the diff between two Kustomization directories.

License

Notifications You must be signed in to change notification settings

kevincali/kustomize-diff

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kustomize-diff

A go utility which allows to generate the diff between two Kustomization directories. This is for example useful for pull request reviews when the result of the Kustomization should be reviewed and not only the changes in the sources.

Install

The latest version can be downloaded from the releases. Make sure the downloaded binary is executable (chmod -x) and place it somewhere in the $PATH for easy access.

To download and install in one go (make sure to select the correct binary for your system), use:

wget https://github.com/Namoshek/kustomize-diff/releases/download/v0.3.0/kustomize-diff-v0.3.0-linux-amd64.tar.gz \
  && tar -xzvf kustomize-diff-v0.3.0-linux-amd64.tar.gz \
  && chmod a+x kustomize-diff \
  && sudo mv kustomize-diff /usr/local/bin/kustomize-diff

Usage

Running kustomize-diff is as simple as:

$> kustomize-diff inline ./old-version/overlays/dev ./new-version/overlays/dev

which will give you a result (obviously depending on the differences) like:

```diff
 apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: my-app
   namespace: my-namespace
 spec:
-  replicas: 1
+  replicas: 2
   selector:
     matchLabels:
       app: my-app
     template:
       metadata:
         labels:
           app: my-app
       spec:
         containers:
         - name: app
           image: my-app:latest
           ports:
-          - name: http
+          - name: https
             protocol: TCP
-            containerPort: 8080
+            containerPort: 8081
```
```diff
 apiVersion: v1
 kind: Service
 metadata:
   name: my-app
   namespace: my-namespace
 spec:
   selector:
     app: my-app
   type: ClusterIP
   ports:
-  - name: http
-    port: 8080
+  - name: https
+    port: 8081
     protocol: TCP
-    targetPort: http
+    targetPort: https
```

By default, kustomize-diff will use the kustomize binary from the $PATH to create the Kustomization of the given directories. By providing the --kustomize-executable=<path> option, a custom Kustomize executable may be used instead.

In case of success, the command will exit with the exit code 0. Otherwise, an exit code >0 will be returned.

Diff for Pull Request Review

To use this utility in a pull request pipeline, it is recommended to checkout the source repository two times, once for the pull request target branch and once for the pull request source branch. The output of kustomize-diff can then be posted as pull request comment for review, for example.

Azure DevOps

To simplify posting the diff as comment(s) on a pull request, kustomize-diff provides a second command called azuredevops which accepts a few parameters that make this a breeze:

kustomize-diff azuredevops \
  --organization <organization> \
  --project <project> \
  --repository-id <repository-name-or-id> \
  --pull-request-id <pull-request-id> \
  --personal-access-token <pat> \
  --hide-diff-in-spoiler \
  --comment-per-resource \
  <pathToOldKustomization> <pathToNewKustomization>

Development

Run locally

The application can be run locally using:

go run main.go <arguments> [flags]

Run Tests

To run the tests, use:

go test -v --cover ./...

Build

To build the application, use:

env GOOS=<os> GOARCH=<arch> go build -o bin/kustomize-diff main.go

where GOOS/GOARCH are from go tool dist list, e.g. GOOS=linux GOARCH=amd64 or GOOS=windows GOARCH=amd64.

License

Namoshek/kustomize-diff is open-sourced software licensed under the MIT license.

About

A go utility which allows to generate the diff between two Kustomization directories.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%