Browse Source

Create OSSF scorecard job (#3032)

* Create scorecard.yml

Adds a scorecard workflow to regularly check the repo.
See docs: https://github.com/marketplace/actions/ossf-scorecard-action#scorecard-badge

Signed-off-by: Moritz Johner <moolen@users.noreply.github.com>
Moritz Johner 2 years ago
parent
commit
00249f1d43

+ 19 - 10
.github/workflows/ci.yml

@@ -15,15 +15,21 @@ env:
   # Sonar
   # Sonar
   SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
   SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
 
 
+permissions:
+  contents: read
+
 jobs:
 jobs:
   detect-noop:
   detect-noop:
+    permissions:
+      actions: write  # for fkirc/skip-duplicate-actions to skip or stop workflow runs
+      contents: read  # for fkirc/skip-duplicate-actions to read and compare commits
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     outputs:
     outputs:
       noop: ${{ steps.noop.outputs.should_skip }}
       noop: ${{ steps.noop.outputs.should_skip }}
     steps:
     steps:
       - name: Detect No-op Changes
       - name: Detect No-op Changes
         id: noop
         id: noop
-        uses: fkirc/skip-duplicate-actions@v5.3.1
+        uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5.3.1
         with:
         with:
           github_token: ${{ secrets.GITHUB_TOKEN }}
           github_token: ${{ secrets.GITHUB_TOKEN }}
           paths_ignore: '["**.md", "**.png", "**.jpg"]'
           paths_ignore: '["**.md", "**.png", "**.jpg"]'
@@ -31,16 +37,19 @@ jobs:
           concurrent_skipping: false
           concurrent_skipping: false
 
 
   lint:
   lint:
+    permissions:
+      contents: read  # for actions/checkout to fetch code
+      pull-requests: read  # for golangci/golangci-lint-action to fetch pull requests
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     needs: detect-noop
     needs: detect-noop
     if: needs.detect-noop.outputs.noop != 'true' && github.ref != 'refs/heads/main'
     if: needs.detect-noop.outputs.noop != 'true' && github.ref != 'refs/heads/main'
 
 
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
 
 
       - name: Setup Go
       - name: Setup Go
-        uses: actions/setup-go@v5
+        uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
         id: setup-go
         id: setup-go
         with:
         with:
           go-version-file: "go.mod"
           go-version-file: "go.mod"
@@ -50,7 +59,7 @@ jobs:
         run: go mod download
         run: go mod download
 
 
       - name: Lint
       - name: Lint
-        uses: golangci/golangci-lint-action@v3
+        uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3.7.0
         with:
         with:
           version: ${{ env.GOLANGCI_VERSION }}
           version: ${{ env.GOLANGCI_VERSION }}
           skip-pkg-cache: true
           skip-pkg-cache: true
@@ -63,10 +72,10 @@ jobs:
 
 
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
 
 
       - name: Setup Go
       - name: Setup Go
-        uses: actions/setup-go@v5
+        uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
         id: setup-go
         id: setup-go
         with:
         with:
           go-version-file: "go.mod"
           go-version-file: "go.mod"
@@ -91,13 +100,13 @@ jobs:
 
 
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
 
 
       - name: Fetch History
       - name: Fetch History
         run: git fetch --prune --unshallow
         run: git fetch --prune --unshallow
 
 
       - name: Setup Go
       - name: Setup Go
-        uses: actions/setup-go@v5
+        uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
         id: setup-go
         id: setup-go
         with:
         with:
           go-version-file: "go.mod"
           go-version-file: "go.mod"
@@ -107,7 +116,7 @@ jobs:
         run: go mod download
         run: go mod download
 
 
       - name: Cache envtest binaries
       - name: Cache envtest binaries
-        uses: actions/cache@v3
+        uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3
         with:
         with:
           path: bin/k8s
           path: bin/k8s
           key: ${{ runner.os }}-envtest-${{env.KUBERNETES_VERSION}}
           key: ${{ runner.os }}-envtest-${{env.KUBERNETES_VERSION}}
@@ -117,7 +126,7 @@ jobs:
           make test
           make test
 
 
       - name: Publish Unit Test Coverage
       - name: Publish Unit Test Coverage
-        uses: codecov/codecov-action@v3
+        uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4
         with:
         with:
           flags: unittests
           flags: unittests
           file: ./cover.out
           file: ./cover.out

+ 6 - 3
.github/workflows/dlc.yml

@@ -6,20 +6,23 @@ on:
       - "go.mod"
       - "go.mod"
   workflow_dispatch: {}
   workflow_dispatch: {}
 
 
+permissions:
+  contents: read
+
 jobs:
 jobs:
   fossa-scan:
   fossa-scan:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     steps:
     steps:
       - name: "Checkout Code"
       - name: "Checkout Code"
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
 
 
       - name: "Run FOSSA Scan"
       - name: "Run FOSSA Scan"
-        uses: fossas/fossa-action@main
+        uses: fossas/fossa-action@45d0cd825dcbe195c58a83662b0abb684ca739d8 # main
         with:
         with:
           api-key: ${{secrets.FOSSA_API_KEY}}
           api-key: ${{secrets.FOSSA_API_KEY}}
 
 
       - name: "Run FOSSA Test"
       - name: "Run FOSSA Test"
-        uses: fossas/fossa-action@main
+        uses: fossas/fossa-action@45d0cd825dcbe195c58a83662b0abb684ca739d8 # main
         with:
         with:
           api-key: ${{secrets.FOSSA_API_KEY}}
           api-key: ${{secrets.FOSSA_API_KEY}}
           run-tests: true
           run-tests: true

+ 7 - 2
.github/workflows/docs.yml

@@ -6,16 +6,21 @@ on:
       - main
       - main
       - release-*
       - release-*
 
 
+permissions:
+  contents: read
+
 jobs:
 jobs:
   deploy:
   deploy:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
+    permissions:
+      contents: write
     steps:
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
         with:
         with:
           fetch-depth: 0
           fetch-depth: 0
 
 
       - name: Setup Go
       - name: Setup Go
-        uses: actions/setup-go@v5
+        uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
         with:
         with:
           go-version-file: "go.mod"
           go-version-file: "go.mod"
 
 

+ 6 - 4
.github/workflows/e2e-managed.yml

@@ -3,8 +3,6 @@ on:
     types: [ok-to-test-managed-command]
     types: [ok-to-test-managed-command]
 
 
 permissions:
 permissions:
-  id-token: write
-  checks: write
   contents: read
   contents: read
 
 
 env:
 env:
@@ -56,13 +54,17 @@ name: managed e2e tests
 jobs:
 jobs:
   run-e2e-managed:
   run-e2e-managed:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
+    permissions:
+      id-token: write
+      checks: write
+      contents: read
     if: github.event_name == 'repository_dispatch'
     if: github.event_name == 'repository_dispatch'
 
 
     steps:
     steps:
 
 
     # Check out merge commit
     # Check out merge commit
     - name: Fork based /ok-to-test-managed checkout
     - name: Fork based /ok-to-test-managed checkout
-      uses: actions/checkout@v4
+      uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
       with:
       with:
         ref: 'refs/pull/${{ env.GITHUB_PR_NUMBER }}/merge'
         ref: 'refs/pull/${{ env.GITHUB_PR_NUMBER }}/merge'
 
 
@@ -72,7 +74,7 @@ jobs:
     - uses: ./.github/actions/e2e-managed
     - uses: ./.github/actions/e2e-managed
 
 
     # set status=completed
     # set status=completed
-    - uses: actions/github-script@v7
+    - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
       if: ${{ always() }}
       if: ${{ always() }}
       env:
       env:
         number: ${{ env.GITHUB_PR_NUMBER }}
         number: ${{ env.GITHUB_PR_NUMBER }}

+ 11 - 5
.github/workflows/e2e.yml

@@ -5,8 +5,6 @@ on:
     types: [ok-to-test-command]
     types: [ok-to-test-command]
 
 
 permissions:
 permissions:
-  id-token: write
-  checks: write
   contents: read
   contents: read
 
 
 name: e2e tests
 name: e2e tests
@@ -52,11 +50,15 @@ jobs:
 
 
   integration-trusted:
   integration-trusted:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
+    permissions:
+      id-token: write
+      checks: write
+      contents: read
     if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository && github.actor !='dependabot[bot]'
     if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository && github.actor !='dependabot[bot]'
     steps:
     steps:
 
 
     - name: Branch based PR checkout
     - name: Branch based PR checkout
-      uses: actions/checkout@v4
+      uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
 
 
     - name: Fetch History
     - name: Fetch History
       run: git fetch --prune --unshallow
       run: git fetch --prune --unshallow
@@ -66,12 +68,16 @@ jobs:
   # Repo owner has commented /ok-to-test on a (fork-based) pull request
   # Repo owner has commented /ok-to-test on a (fork-based) pull request
   integration-fork:
   integration-fork:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
+    permissions:
+      id-token: write
+      checks: write
+      contents: read
     if: github.event_name == 'repository_dispatch'
     if: github.event_name == 'repository_dispatch'
     steps:
     steps:
 
 
     # Check out merge commit
     # Check out merge commit
     - name: Fork based /ok-to-test checkout
     - name: Fork based /ok-to-test checkout
-      uses: actions/checkout@v4
+      uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
       with:
       with:
         ref: 'refs/pull/${{ github.event.client_payload.pull_request.number }}/merge'
         ref: 'refs/pull/${{ github.event.client_payload.pull_request.number }}/merge'
 
 
@@ -81,7 +87,7 @@ jobs:
     - uses: ./.github/actions/e2e
     - uses: ./.github/actions/e2e
 
 
     # Update check run called "integration-fork"
     # Update check run called "integration-fork"
-    - uses: actions/github-script@v7
+    - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
       id: update-check-run
       id: update-check-run
       if: ${{ always() }}
       if: ${{ always() }}
       env:
       env:

+ 21 - 8
.github/workflows/helm.yml

@@ -14,12 +14,15 @@ on:
       - 'deploy/crds'
       - 'deploy/crds'
   workflow_dispatch: {}
   workflow_dispatch: {}
 
 
+permissions:
+  contents: read
+
 jobs:
 jobs:
   lint-and-test:
   lint-and-test:
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
         with:
         with:
           fetch-depth: 0
           fetch-depth: 0
 
 
@@ -27,16 +30,16 @@ jobs:
         run: |
         run: |
           make helm.generate
           make helm.generate
       - name: Set up Helm
       - name: Set up Helm
-        uses: azure/setup-helm@v3.5
+        uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78 # v3.5
         with:
         with:
           version: v3.4.2
           version: v3.4.2
 
 
-      - uses: actions/setup-python@v5.0.0
+      - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0
         with:
         with:
           python-version: 3.7
           python-version: 3.7
 
 
       - name: Set up chart-testing
       - name: Set up chart-testing
-        uses: helm/chart-testing-action@v2.6.1
+        uses: helm/chart-testing-action@e6669bcd63d7cb57cb4380c33043eebe5d111992 # v2.6.1
 
 
       - name: Run chart-testing (list-changed)
       - name: Run chart-testing (list-changed)
         id: list-changed
         id: list-changed
@@ -53,7 +56,7 @@ jobs:
         run: ct lint --config=.github/ci/ct.yaml
         run: ct lint --config=.github/ci/ct.yaml
 
 
       - name: Create kind cluster
       - name: Create kind cluster
-        uses: helm/kind-action@v1.8.0
+        uses: helm/kind-action@dda0770415bac9fc20092cacbc54aa298604d140 # v1.8.0
         if: steps.list-changed.outputs.changed == 'true'
         if: steps.list-changed.outputs.changed == 'true'
 
 
       - name: Run chart-testing (install)
       - name: Run chart-testing (install)
@@ -65,10 +68,12 @@ jobs:
         run: make helm.test
         run: make helm.test
 
 
   release:
   release:
+    permissions:
+      contents: write  # for helm/chart-releaser-action to push chart release and create a release
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
         with:
         with:
           fetch-depth: 0
           fetch-depth: 0
 
 
@@ -77,19 +82,27 @@ jobs:
           git config user.name "$GITHUB_ACTOR"
           git config user.name "$GITHUB_ACTOR"
           git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
           git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
       - name: Set up Helm
       - name: Set up Helm
-        uses: azure/setup-helm@v3.4
+        uses: azure/setup-helm@f382f75448129b3be48f8121b9857be18d815a82 # v3.4
         with:
         with:
           version: v3.4.2
           version: v3.4.2
 
 
       - name: Generate chart
       - name: Generate chart
         run: |
         run: |
           make helm.generate
           make helm.generate
+      - name: Import GPG key
+        run: |
+          echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --dearmor --output keyring.gpg
+          echo "${{ secrets.GPG_PASSPHRASE }}" > passphrase-file.txt
       - name: Run chart-releaser
       - name: Run chart-releaser
-        uses: helm/chart-releaser-action@v1.6.0
+        uses: helm/chart-releaser-action@a917fd15b20e8b64b94d9158ad54cd6345335584 # v1.6.0
         if: |
         if: |
           github.ref == 'refs/heads/main' ||
           github.ref == 'refs/heads/main' ||
           startsWith(github.ref, 'refs/heads/release-')
           startsWith(github.ref, 'refs/heads/release-')
         env:
         env:
+          CR_KEY: external-secrets <external-secrets@external-secrets.io>
+          CR_KEYRING: keyring.gpg
+          CR_PASSPHRASE_FILE: passphrase-file.txt
+          CR_SIGN: true
           CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
           CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
           CR_RELEASE_NAME_TEMPLATE: "helm-chart-{{ .Version }}"
           CR_RELEASE_NAME_TEMPLATE: "helm-chart-{{ .Version }}"
         with:
         with:

+ 7 - 2
.github/workflows/ok-to-test-managed.yml

@@ -5,8 +5,13 @@ on:
   issue_comment:
   issue_comment:
     types: [created]
     types: [created]
 
 
+permissions:
+  contents: read
+
 jobs:
 jobs:
   ok-to-test-managed:
   ok-to-test-managed:
+    permissions:
+      pull-requests: write  # for peter-evans/slash-command-dispatch to create PR reaction
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     # Only run for PRs, not issue comments
     # Only run for PRs, not issue comments
     if: ${{ github.event.issue.pull_request }}
     if: ${{ github.event.issue.pull_request }}
@@ -17,13 +22,13 @@ jobs:
     # See app.yml for an example app manifest
     # See app.yml for an example app manifest
     - name: Generate token
     - name: Generate token
       id: generate_token
       id: generate_token
-      uses: tibdex/github-app-token@v2
+      uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0
       with:
       with:
         app_id: ${{ secrets.APP_ID }}
         app_id: ${{ secrets.APP_ID }}
         private_key: ${{ secrets.PRIVATE_KEY }}
         private_key: ${{ secrets.PRIVATE_KEY }}
 
 
     - name: Slash Command Dispatch
     - name: Slash Command Dispatch
-      uses: peter-evans/slash-command-dispatch@v3
+      uses: peter-evans/slash-command-dispatch@f996d7b7aae9059759ac55e978cff76d91853301 # v3.0.2
       env:
       env:
         TOKEN: ${{ steps.generate_token.outputs.token }}
         TOKEN: ${{ steps.generate_token.outputs.token }}
       with:
       with:

+ 7 - 2
.github/workflows/ok-to-test.yml

@@ -5,8 +5,13 @@ on:
   issue_comment:
   issue_comment:
     types: [created]
     types: [created]
 
 
+permissions:
+  contents: read
+
 jobs:
 jobs:
   ok-to-test:
   ok-to-test:
+    permissions:
+      pull-requests: write  # for peter-evans/slash-command-dispatch to create PR reaction
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     # Only run for PRs, not issue comments
     # Only run for PRs, not issue comments
     if: ${{ github.event.issue.pull_request }}
     if: ${{ github.event.issue.pull_request }}
@@ -17,13 +22,13 @@ jobs:
     # See app.yml for an example app manifest
     # See app.yml for an example app manifest
     - name: Generate token
     - name: Generate token
       id: generate_token
       id: generate_token
-      uses: tibdex/github-app-token@v2
+      uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0
       with:
       with:
         app_id: ${{ secrets.APP_ID }}
         app_id: ${{ secrets.APP_ID }}
         private_key: ${{ secrets.PRIVATE_KEY }}
         private_key: ${{ secrets.PRIVATE_KEY }}
 
 
     - name: Slash Command Dispatch
     - name: Slash Command Dispatch
-      uses: peter-evans/slash-command-dispatch@v3
+      uses: peter-evans/slash-command-dispatch@f996d7b7aae9059759ac55e978cff76d91853301 # v3.0.2
       with:
       with:
         token: ${{ steps.generate_token.outputs.token }}
         token: ${{ steps.generate_token.outputs.token }}
         reaction-token: ${{ secrets.GITHUB_TOKEN }}
         reaction-token: ${{ secrets.GITHUB_TOKEN }}

+ 7 - 7
.github/workflows/publish.yml

@@ -50,23 +50,23 @@ jobs:
     steps:
     steps:
 
 
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
         with:
         with:
           ref: ${{ inputs.ref }}
           ref: ${{ inputs.ref }}
 
 
       - name: Setup QEMU
       - name: Setup QEMU
-        uses: docker/setup-qemu-action@v3
+        uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0
         with:
         with:
           platforms: all
           platforms: all
 
 
       - name: Setup Docker Buildx
       - name: Setup Docker Buildx
-        uses: docker/setup-buildx-action@v3
+        uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0
         with:
         with:
           version: 'v0.4.2'
           version: 'v0.4.2'
           install: true
           install: true
 
 
       - name: Setup Go
       - name: Setup Go
-        uses: actions/setup-go@v5
+        uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
         id: setup-go
         id: setup-go
         with:
         with:
           go-version-file: "go.mod"
           go-version-file: "go.mod"
@@ -80,7 +80,7 @@ jobs:
         run: git fetch --prune --unshallow
         run: git fetch --prune --unshallow
 
 
       - name: Login to Docker
       - name: Login to Docker
-        uses: docker/login-action@v3
+        uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
         if: env.IS_FORK == 'false'
         if: env.IS_FORK == 'false'
         with:
         with:
           registry: ghcr.io
           registry: ghcr.io
@@ -126,7 +126,7 @@ jobs:
         run: make docker.build
         run: make docker.build
 
 
       - name: Run Trivy vulnerability scanner
       - name: Run Trivy vulnerability scanner
-        uses: aquasecurity/trivy-action@master
+        uses: aquasecurity/trivy-action@f3d98514b056d8c71a3552e8328c225bc7f6f353 # master
         with:
         with:
           image-ref: ${{ inputs.image-name }}:${{ steps.container_info.outputs.image-tag }}
           image-ref: ${{ inputs.image-name }}:${{ steps.container_info.outputs.image-tag }}
           format: 'table'
           format: 'table'
@@ -140,7 +140,7 @@ jobs:
     needs: build-publish
     needs: build-publish
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
       - name: Sign image
       - name: Sign image
         if: env.IS_FORK == 'false'
         if: env.IS_FORK == 'false'
         uses: ./.github/actions/sign
         uses: ./.github/actions/sign

+ 4 - 1
.github/workflows/rebuild-image.yml

@@ -8,6 +8,9 @@ on:
         required: true
         required: true
         default: 'v0.6.1'
         default: 'v0.6.1'
 
 
+permissions:
+  contents: read
+
 jobs:
 jobs:
   checkout:
   checkout:
     name: Checkout repo
     name: Checkout repo
@@ -17,7 +20,7 @@ jobs:
 
 
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
         with:
         with:
           fetch-depth: 0
           fetch-depth: 0
           ref: ${{ github.event.inputs.ref }}
           ref: ${{ github.event.inputs.ref }}

+ 6 - 6
.github/workflows/release.yml

@@ -22,13 +22,13 @@ jobs:
 
 
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
         with:
         with:
           fetch-depth: 0
           fetch-depth: 0
           ref: ${{ github.event.inputs.source_ref }}
           ref: ${{ github.event.inputs.source_ref }}
 
 
       - name: Create Release
       - name: Create Release
-        uses: softprops/action-gh-release@v1
+        uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
         with:
         with:
           tag_name: ${{ github.event.inputs.version }}
           tag_name: ${{ github.event.inputs.version }}
           target_commitish: ${{ github.event.inputs.source_ref }}
           target_commitish: ${{ github.event.inputs.source_ref }}
@@ -71,12 +71,12 @@ jobs:
 
 
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
         with:
         with:
           fetch-depth: 0
           fetch-depth: 0
 
 
       - name: Setup Go
       - name: Setup Go
-        uses: actions/setup-go@v5
+        uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
         id: setup-go
         id: setup-go
         with:
         with:
           go-version-file: "go.mod"
           go-version-file: "go.mod"
@@ -86,7 +86,7 @@ jobs:
         run: go mod download
         run: go mod download
 
 
       - name: Login to Docker
       - name: Login to Docker
-        uses: docker/login-action@v3
+        uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0
         with:
         with:
           registry: ghcr.io
           registry: ghcr.io
           username: ${{ secrets.GHCR_USERNAME }}
           username: ${{ secrets.GHCR_USERNAME }}
@@ -113,7 +113,7 @@ jobs:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 
 
       - name: Update Release
       - name: Update Release
-        uses: softprops/action-gh-release@v1
+        uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v1
         with:
         with:
           tag_name: ${{ github.event.inputs.version }}
           tag_name: ${{ github.event.inputs.version }}
           files: |
           files: |

+ 38 - 0
.github/workflows/scorecard.yml

@@ -0,0 +1,38 @@
+name: Scorecard supply-chain security
+on:
+  branch_protection_rule:
+  schedule:
+    - cron: '27 2 * * 3'
+  push:
+    branches: [ "main" ]
+
+permissions: read-all
+
+jobs:
+  analysis:
+    name: Scorecard analysis
+    runs-on: ubuntu-latest
+    permissions:
+      # Needed to upload the results to code-scanning dashboard.
+      security-events: write
+      # Needed to publish results and get a badge (see publish_results below).
+      id-token: write
+
+    steps:
+      - name: "Checkout code"
+        uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
+        with:
+          persist-credentials: false
+
+      - name: "Run analysis"
+        uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2
+        with:
+          results_file: results.sarif
+          results_format: sarif
+          publish_results: true
+
+      # Upload the results to GitHub's code scanning dashboard.
+      - name: "Upload to code-scanning"
+        uses: github/codeql-action/upload-sarif@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4
+        with:
+          sarif_file: results.sarif

+ 7 - 1
.github/workflows/stale.yml

@@ -3,11 +3,17 @@ on:
   schedule:
   schedule:
     - cron: '30 1 * * *'
     - cron: '30 1 * * *'
 
 
+permissions:
+  contents: read
+
 jobs:
 jobs:
   stale:
   stale:
+    permissions:
+      issues: write  # for actions/stale to close stale issues
+      pull-requests: write  # for actions/stale to close stale PRs
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     steps:
     steps:
-      - uses: actions/stale@v9
+      - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0
         with:
         with:
           repo-token: ${{ secrets.GITHUB_TOKEN }}
           repo-token: ${{ secrets.GITHUB_TOKEN }}
           stale-issue-message: 'This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 30 days.'
           stale-issue-message: 'This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 30 days.'

+ 9 - 4
.github/workflows/update-deps.yml

@@ -8,6 +8,9 @@ on:
     inputs: {}
     inputs: {}
 
 
 
 
+permissions:
+  contents: read
+
 jobs:
 jobs:
   branches:
   branches:
     name: get branch data
     name: get branch data
@@ -17,7 +20,7 @@ jobs:
 
 
     steps:
     steps:
       - name: Checkout
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
         with:
         with:
           fetch-depth: 0
           fetch-depth: 0
           ref: ${{ github.event.inputs.ref }}
           ref: ${{ github.event.inputs.ref }}
@@ -28,6 +31,8 @@ jobs:
           echo "branches=$(git branch -a | grep -E "remotes/origin/(main|release-)" | sed 's/  remotes\/origin\///' | sort -V | tail -2 | head -1 | jq -R -s -c 'split("\n") | map(select(length > 0)) | . + ["main"]')" >> $GITHUB_OUTPUT
           echo "branches=$(git branch -a | grep -E "remotes/origin/(main|release-)" | sed 's/  remotes\/origin\///' | sort -V | tail -2 | head -1 | jq -R -s -c 'split("\n") | map(select(length > 0)) | . + ["main"]')" >> $GITHUB_OUTPUT
 
 
   update-dependencies:
   update-dependencies:
+    permissions:
+      contents: write  # for Git to git push
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     needs: branches
     needs: branches
     strategy:
     strategy:
@@ -35,7 +40,7 @@ jobs:
         branch: ${{ fromJson(needs.branches.outputs.branches) }}
         branch: ${{ fromJson(needs.branches.outputs.branches) }}
     steps:
     steps:
     - name: Setup Go
     - name: Setup Go
-      uses: actions/setup-go@v5
+      uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
       with:
       with:
         go-version: "1.21"
         go-version: "1.21"
 
 
@@ -43,11 +48,11 @@ jobs:
       # from running: we can create a PR but the tests won't run :/
       # from running: we can create a PR but the tests won't run :/
     - name: Generate token
     - name: Generate token
       id: generate_token
       id: generate_token
-      uses: tibdex/github-app-token@v2
+      uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0
       with:
       with:
         app_id: ${{ secrets.APP_ID }}
         app_id: ${{ secrets.APP_ID }}
         private_key: ${{ secrets.PRIVATE_KEY }}
         private_key: ${{ secrets.PRIVATE_KEY }}
-    - uses: actions/checkout@v4
+    - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
       with:
       with:
         token: ${{ steps.generate_token.outputs.token }}
         token: ${{ steps.generate_token.outputs.token }}
         ref: ${{ matrix.branch }}
         ref: ${{ matrix.branch }}

+ 1 - 1
Dockerfile

@@ -1,4 +1,4 @@
-FROM gcr.io/distroless/static
+FROM gcr.io/distroless/static@sha256:9be3fcc6abeaf985b5ecce59451acbcbb15e7be39472320c538d0d55a0834edc
 ARG TARGETOS
 ARG TARGETOS
 ARG TARGETARCH
 ARG TARGETARCH
 COPY bin/external-secrets-${TARGETOS}-${TARGETARCH} /bin/external-secrets
 COPY bin/external-secrets-${TARGETOS}-${TARGETARCH} /bin/external-secrets

+ 1 - 1
Dockerfile.ubi

@@ -1,4 +1,4 @@
-FROM registry.access.redhat.com/ubi8/ubi-minimal
+FROM registry.access.redhat.com/ubi8/ubi-minimal@sha256:d8b81a38b5ad9694742ea03159d3217cd2dde3997b1ee53bbb53c33dd67be7b7
 ARG TARGETOS
 ARG TARGETOS
 ARG TARGETARCH
 ARG TARGETARCH
 COPY bin/external-secrets-${TARGETOS}-${TARGETARCH} /bin/external-secrets
 COPY bin/external-secrets-${TARGETOS}-${TARGETARCH} /bin/external-secrets

+ 1 - 0
README.md

@@ -6,6 +6,7 @@
 
 
 ![ci](https://github.com/external-secrets/external-secrets/actions/workflows/ci.yml/badge.svg?branch=main)
 ![ci](https://github.com/external-secrets/external-secrets/actions/workflows/ci.yml/badge.svg?branch=main)
 [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5327/badge)](https://bestpractices.coreinfrastructure.org/projects/5947)
 [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5327/badge)](https://bestpractices.coreinfrastructure.org/projects/5947)
+[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/external-secrets/external-secrets/badge)](https://securityscorecards.dev/viewer/?uri=github.com/external-secrets/external-secrets)
 [![Go Report Card](https://goreportcard.com/badge/github.com/external-secrets/external-secrets)](https://goreportcard.com/report/github.com/external-secrets/external-secrets)
 [![Go Report Card](https://goreportcard.com/badge/github.com/external-secrets/external-secrets)](https://goreportcard.com/report/github.com/external-secrets/external-secrets)
 [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fexternal-secrets%2Fexternal-secrets.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fexternal-secrets%2Fexternal-secrets?ref=badge_shield)
 [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fexternal-secrets%2Fexternal-secrets.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fexternal-secrets%2Fexternal-secrets?ref=badge_shield)
 <a href="https://artifacthub.io/packages/helm/external-secrets-operator/external-secrets"><img alt="Artifact Hub" src="https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/external-secrets" /></a>
 <a href="https://artifacthub.io/packages/helm/external-secrets-operator/external-secrets"><img alt="Artifact Hub" src="https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/external-secrets" /></a>

+ 1 - 1
docs/api/clustersecretstore.md

@@ -6,7 +6,7 @@ The `ClusterSecretStore` is a cluster scoped SecretStore that can be referenced
 
 
 ## Example
 ## Example
 
 
-For a full list of supported fields see [spec](./spec.md) or dig into our [guides](../guides).
+For a full list of supported fields see [spec](./spec.md) or dig into our [guides](../guides/introduction.md).
 
 
 ``` yaml
 ``` yaml
 {% include 'full-cluster-secret-store.yaml' %}
 {% include 'full-cluster-secret-store.yaml' %}

+ 1 - 1
docs/guides/pushsecrets.md

@@ -37,5 +37,5 @@ By leaving off the secret key but setting the remote property option.
 
 
 This will _marshal_ the entire secret data and push it into this single property as a JSON object.
 This will _marshal_ the entire secret data and push it into this single property as a JSON object.
 
 
-!!! warning inline end
+!!! warning inline
     This should _ONLY_ be done if the secret data is marshal-able. Values like, binary data cannot be marshaled and will result in error or invalid secret data.
     This should _ONLY_ be done if the secret data is marshal-able. Values like, binary data cannot be marshaled and will result in error or invalid secret data.

+ 3 - 3
docs/provider/yandex-certificate-manager.md

@@ -4,7 +4,7 @@ External Secrets Operator integrates with [Yandex Certificate Manager](https://c
 for secret management.
 for secret management.
 
 
 ### Prerequisites
 ### Prerequisites
-* [External Secrets Operator installed](../guides-getting-started/#installing-with-helm)
+* [External Secrets Operator installed](../introduction/getting-started.md#installing-with-helm)
 * [Yandex.Cloud CLI installed](https://cloud.yandex.com/docs/cli/quickstart)
 * [Yandex.Cloud CLI installed](https://cloud.yandex.com/docs/cli/quickstart)
 
 
 ### Authentication
 ### Authentication
@@ -24,7 +24,7 @@ yc iam key create \
 ```bash
 ```bash
 kubectl create secret generic yc-auth --from-file=authorized-key=authorized-key.json
 kubectl create secret generic yc-auth --from-file=authorized-key=authorized-key.json
 ```
 ```
-* Create a [SecretStore](../api-secretstore/) pointing to `yc-auth` k8s secret:
+* Create a [SecretStore](../api/secretstore.md) pointing to `yc-auth` k8s secret:
 ```yaml
 ```yaml
 apiVersion: external-secrets.io/v1beta1
 apiVersion: external-secrets.io/v1beta1
 kind: SecretStore
 kind: SecretStore
@@ -58,7 +58,7 @@ Run the following command to ensure that the correct access binding has been add
 ```bash
 ```bash
 yc cm certificate list-access-bindings --id *****
 yc cm certificate list-access-bindings --id *****
 ```
 ```
-* Create an [ExternalSecret](../api-externalsecret/) pointing to `secret-store` and the certificate in Certificate Manager:
+* Create an [ExternalSecret](../api/externalsecret.md) pointing to `secret-store` and the certificate in Certificate Manager:
 ```yaml
 ```yaml
 apiVersion: external-secrets.io/v1beta1
 apiVersion: external-secrets.io/v1beta1
 kind: ExternalSecret
 kind: ExternalSecret

+ 3 - 3
docs/provider/yandex-lockbox.md

@@ -4,7 +4,7 @@ External Secrets Operator integrates with [Yandex Lockbox](https://cloud.yandex.
 for secret management.
 for secret management.
 
 
 ### Prerequisites
 ### Prerequisites
-* [External Secrets Operator installed](../guides-getting-started/#installing-with-helm)
+* [External Secrets Operator installed](../introduction/getting-started.md#installing-with-helm)
 * [Yandex.Cloud CLI installed](https://cloud.yandex.com/docs/cli/quickstart)
 * [Yandex.Cloud CLI installed](https://cloud.yandex.com/docs/cli/quickstart)
 
 
 ### Authentication
 ### Authentication
@@ -24,7 +24,7 @@ yc iam key create \
 ```bash
 ```bash
 kubectl create secret generic yc-auth --from-file=authorized-key=authorized-key.json
 kubectl create secret generic yc-auth --from-file=authorized-key=authorized-key.json
 ```
 ```
-* Create a [SecretStore](../api-secretstore/) pointing to `yc-auth` k8s secret:
+* Create a [SecretStore](../api/secretstore.md) pointing to `yc-auth` k8s secret:
 ```yaml
 ```yaml
 apiVersion: external-secrets.io/v1beta1
 apiVersion: external-secrets.io/v1beta1
 kind: SecretStore
 kind: SecretStore
@@ -61,7 +61,7 @@ Run the following command to ensure that the correct access binding has been add
 ```bash
 ```bash
 yc lockbox secret list-access-bindings --name lockbox-secret
 yc lockbox secret list-access-bindings --name lockbox-secret
 ```
 ```
-* Create an [ExternalSecret](../api-externalsecret/) pointing to `secret-store` and `lockbox-secret`:
+* Create an [ExternalSecret](../api/externalsecret.md) pointing to `secret-store` and `lockbox-secret`:
 ```yaml
 ```yaml
 apiVersion: external-secrets.io/v1beta1
 apiVersion: external-secrets.io/v1beta1
 kind: ExternalSecret
 kind: ExternalSecret

+ 1 - 1
e2e/Dockerfile

@@ -17,7 +17,7 @@ COPY . .
 WORKDIR /usr/src/app/e2e
 WORKDIR /usr/src/app/e2e
 RUN make e2e-bin
 RUN make e2e-bin
 
 
-FROM alpine:3.15.0
+FROM alpine:3.19.0@sha256:13b7e62e8df80264dbb747995705a986aa530415763a6c58f84a3ca8af9a5bcd
 RUN apk add -U --no-cache \
 RUN apk add -U --no-cache \
     ca-certificates \
     ca-certificates \
     bash \
     bash \

+ 12 - 12
e2e/go.mod

@@ -48,13 +48,13 @@ require (
 	github.com/aliyun/alibaba-cloud-sdk-go v1.62.271
 	github.com/aliyun/alibaba-cloud-sdk-go v1.62.271
 	github.com/aws/aws-sdk-go v1.49.16
 	github.com/aws/aws-sdk-go v1.49.16
 	github.com/external-secrets/external-secrets v0.0.0
 	github.com/external-secrets/external-secrets v0.0.0
-	github.com/fluxcd/helm-controller/api v0.22.2
-	github.com/fluxcd/pkg/apis/meta v0.14.2
-	github.com/fluxcd/source-controller/api v0.25.11
+	github.com/fluxcd/helm-controller/api v0.37.2
+	github.com/fluxcd/pkg/apis/meta v1.2.0
+	github.com/fluxcd/source-controller/api v1.2.3
 	github.com/golang-jwt/jwt/v4 v4.5.0
 	github.com/golang-jwt/jwt/v4 v4.5.0
 	github.com/hashicorp/vault/api v1.10.0
 	github.com/hashicorp/vault/api v1.10.0
-	github.com/onsi/ginkgo/v2 v2.13.2
-	github.com/onsi/gomega v1.29.0
+	github.com/onsi/ginkgo/v2 v2.14.0
+	github.com/onsi/gomega v1.30.0
 	github.com/oracle/oci-go-sdk/v65 v65.55.0
 	github.com/oracle/oci-go-sdk/v65 v65.55.0
 	github.com/scaleway/scaleway-sdk-go v1.0.0-beta.22
 	github.com/scaleway/scaleway-sdk-go v1.0.0-beta.22
 	github.com/xanzy/go-gitlab v0.95.2
 	github.com/xanzy/go-gitlab v0.95.2
@@ -65,7 +65,7 @@ require (
 	k8s.io/apimachinery v0.29.0
 	k8s.io/apimachinery v0.29.0
 	k8s.io/client-go v1.5.2
 	k8s.io/client-go v1.5.2
 	k8s.io/utils v0.0.0-20240102154912-e7106e64919e
 	k8s.io/utils v0.0.0-20240102154912-e7106e64919e
-	sigs.k8s.io/controller-runtime v0.16.3
+	sigs.k8s.io/controller-runtime v0.17.0
 	sigs.k8s.io/yaml v1.4.0
 	sigs.k8s.io/yaml v1.4.0
 	software.sslmate.com/src/go-pkcs12 v0.2.0
 	software.sslmate.com/src/go-pkcs12 v0.2.0
 )
 )
@@ -96,10 +96,10 @@ require (
 	github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
 	github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
 	github.com/dimchansky/utfbom v1.1.1 // indirect
 	github.com/dimchansky/utfbom v1.1.1 // indirect
 	github.com/emicklei/go-restful/v3 v3.11.1 // indirect
 	github.com/emicklei/go-restful/v3 v3.11.1 // indirect
-	github.com/evanphx/json-patch/v5 v5.7.0 // indirect
+	github.com/evanphx/json-patch/v5 v5.8.0 // indirect
 	github.com/felixge/httpsnoop v1.0.4 // indirect
 	github.com/felixge/httpsnoop v1.0.4 // indirect
-	github.com/fluxcd/pkg/apis/acl v0.0.3 // indirect
-	github.com/fluxcd/pkg/apis/kustomize v0.4.1 // indirect
+	github.com/fluxcd/pkg/apis/acl v0.1.0 // indirect
+	github.com/fluxcd/pkg/apis/kustomize v1.2.0 // indirect
 	github.com/fsnotify/fsnotify v1.7.0 // indirect
 	github.com/fsnotify/fsnotify v1.7.0 // indirect
 	github.com/go-jose/go-jose/v3 v3.0.1 // indirect
 	github.com/go-jose/go-jose/v3 v3.0.1 // indirect
 	github.com/go-logr/logr v1.4.1 // indirect
 	github.com/go-logr/logr v1.4.1 // indirect
@@ -176,9 +176,9 @@ require (
 	go.opentelemetry.io/otel v1.21.0 // indirect
 	go.opentelemetry.io/otel v1.21.0 // indirect
 	go.opentelemetry.io/otel/metric v1.21.0 // indirect
 	go.opentelemetry.io/otel/metric v1.21.0 // indirect
 	go.opentelemetry.io/otel/trace v1.21.0 // indirect
 	go.opentelemetry.io/otel/trace v1.21.0 // indirect
-	golang.org/x/crypto v0.17.0 // indirect
+	golang.org/x/crypto v0.18.0 // indirect
 	golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect
 	golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect
-	golang.org/x/net v0.19.0 // indirect
+	golang.org/x/net v0.20.0 // indirect
 	golang.org/x/sync v0.6.0 // indirect
 	golang.org/x/sync v0.6.0 // indirect
 	golang.org/x/sys v0.16.0 // indirect
 	golang.org/x/sys v0.16.0 // indirect
 	golang.org/x/term v0.16.0 // indirect
 	golang.org/x/term v0.16.0 // indirect
@@ -198,7 +198,7 @@ require (
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	grpc.go4.org v0.0.0-20170609214715-11d0a25b4919 // indirect
 	grpc.go4.org v0.0.0-20170609214715-11d0a25b4919 // indirect
 	k8s.io/component-base v0.29.0 // indirect
 	k8s.io/component-base v0.29.0 // indirect
-	k8s.io/klog/v2 v2.110.1 // indirect
+	k8s.io/klog/v2 v2.120.0 // indirect
 	k8s.io/kube-openapi v0.0.0-20240105020646-a37d4de58910 // indirect
 	k8s.io/kube-openapi v0.0.0-20240105020646-a37d4de58910 // indirect
 	sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
 	sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
 	sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
 	sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect

+ 28 - 28
e2e/go.sum

@@ -149,22 +149,22 @@ github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBF
 github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
 github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
 github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
 github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
 github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc=
-github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
+github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro=
+github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
 github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
 github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
 github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
 github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
 github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
 github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/fluxcd/helm-controller/api v0.22.2 h1:nh0GZBsUE0gNzm4PmPa4aOoqYlbZbpGt2pcIL9S2184=
-github.com/fluxcd/helm-controller/api v0.22.2/go.mod h1:GfD9TFgLyn81VgwZN1yM47/aUdz0SwTSyRAGmC8xZ+c=
-github.com/fluxcd/pkg/apis/acl v0.0.3 h1:Lw0ZHdpnO4G7Zy9KjrzwwBmDZQuy4qEjaU/RvA6k1lc=
-github.com/fluxcd/pkg/apis/acl v0.0.3/go.mod h1:XPts6lRJ9C9fIF9xVWofmQwftvhY25n1ps7W9xw0XLU=
-github.com/fluxcd/pkg/apis/kustomize v0.4.1 h1:YgIF9TJ23pH66W/gYlEu+DeH1pU3tS4xYlRc5AQzk58=
-github.com/fluxcd/pkg/apis/kustomize v0.4.1/go.mod h1:U9rfSgDHaQd74PgPKt9DprtuzT+i1m18zlHxatq7c5Y=
-github.com/fluxcd/pkg/apis/meta v0.14.2 h1:/Hf7I/Vz01vv3m7Qx7DtQvrzAL1oVt0MJcLb/I1Y1HE=
-github.com/fluxcd/pkg/apis/meta v0.14.2/go.mod h1:ijZ61VG/8T3U17gj0aFL3fdtZL+mulD6V8VrLLUCAgM=
-github.com/fluxcd/source-controller/api v0.25.11 h1:1YbH5vlQ1k96tbRKTdQHCBsBVMgpp/QaRpKG/r29koQ=
-github.com/fluxcd/source-controller/api v0.25.11/go.mod h1:5kihSWjg+gIXLPTTXbe6AnY+g+iDmP+CY4g6nFqublc=
+github.com/fluxcd/helm-controller/api v0.37.2 h1:tkLezpRdqPDz7HoKHFu92sV+ppOCVDxkjFTh8/lpff8=
+github.com/fluxcd/helm-controller/api v0.37.2/go.mod h1:BuXZhAX9blQviil6yUN5zNM4RB753yhyBTJXxXff7Mo=
+github.com/fluxcd/pkg/apis/acl v0.1.0 h1:EoAl377hDQYL3WqanWCdifauXqXbMyFuK82NnX6pH4Q=
+github.com/fluxcd/pkg/apis/acl v0.1.0/go.mod h1:zfEZzz169Oap034EsDhmCAGgnWlcWmIObZjYMusoXS8=
+github.com/fluxcd/pkg/apis/kustomize v1.2.0 h1:vkVs+OumxaWso0jNCqdgFFfMHdh+qtZhykTkjl7OgmA=
+github.com/fluxcd/pkg/apis/kustomize v1.2.0/go.mod h1:VF7tR/WuVFeum+HaMTHwp+eCtsHiiQlY6ihgqtAnW/M=
+github.com/fluxcd/pkg/apis/meta v1.2.0 h1:O766PzGAdMdQKybSflGL8oV0+GgCNIkdsxfalRyzeO8=
+github.com/fluxcd/pkg/apis/meta v1.2.0/go.mod h1:fU/Az9AoVyIxC0oI4ihG0NVMNnvrcCzdEym3wxjIQsc=
+github.com/fluxcd/source-controller/api v1.2.3 h1:71mXv3Qg9HEhcpqOq1ObmoE+P/HuZNaAvxfI7dqZMo8=
+github.com/fluxcd/source-controller/api v1.2.3/go.mod h1:5gaIVVH7hgb8p3HKFp8P6hGmZEC8fKSt4EcrG3g5vZI=
 github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
 github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
 github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
 github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
 github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
 github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
@@ -175,7 +175,6 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2
 github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA=
 github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA=
 github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8=
 github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8=
 github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
 github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
 github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
 github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
@@ -395,10 +394,10 @@ github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3P
 github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
 github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/onsi/ginkgo/v2 v2.13.2 h1:Bi2gGVkfn6gQcjNjZJVO8Gf0FHzMPf2phUei9tejVMs=
-github.com/onsi/ginkgo/v2 v2.13.2/go.mod h1:XStQ8QcGwLyF4HdfcZB8SFOS/MWCgDuXMSBe6zrvLgM=
-github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg=
-github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
+github.com/onsi/ginkgo/v2 v2.14.0 h1:vSmGj2Z5YPb9JwCWT6z6ihcUvDhuXLc3sJiqd3jMKAY=
+github.com/onsi/ginkgo/v2 v2.14.0/go.mod h1:JkUdW7JkN0V6rFvsHcJ478egV3XH9NxpD27Hal/PhZw=
+github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
+github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
 github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A=
 github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A=
 github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mod h1:AC62GU6hc0BrNm+9RK9VSiwa/EUe1bkIeFORAMcHvJU=
 github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mod h1:AC62GU6hc0BrNm+9RK9VSiwa/EUe1bkIeFORAMcHvJU=
 github.com/oracle/oci-go-sdk/v65 v65.55.0 h1:enKyHVLdJYDJrc9232w33u5F6t2p8Din4593kn3nh/w=
 github.com/oracle/oci-go-sdk/v65 v65.55.0 h1:enKyHVLdJYDJrc9232w33u5F6t2p8Din4593kn3nh/w=
@@ -490,15 +489,15 @@ go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc=
 go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
 go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
 go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
 go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
 go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM=
 go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM=
-go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY=
-go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE=
+go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o=
+go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A=
 go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc=
 go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc=
 go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ=
 go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ=
 go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
 go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
 go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
 go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
-go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
-go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
 go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
 go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
@@ -518,8 +517,8 @@ golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58
 golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
 golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
 golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
 golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
 golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
-golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
-golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
+golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
+golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -599,8 +598,9 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
 golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
 golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
 golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
 golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
 golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
 golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
-golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
 golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
 golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
+golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo=
+golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -924,8 +924,8 @@ k8s.io/client-go v0.28.1 h1:pRhMzB8HyLfVwpngWKE8hDcXRqifh1ga2Z/PU9SXVK8=
 k8s.io/client-go v0.28.1/go.mod h1:pEZA3FqOsVkCc07pFVzK076R+P/eXqsgx5zuuRWukNE=
 k8s.io/client-go v0.28.1/go.mod h1:pEZA3FqOsVkCc07pFVzK076R+P/eXqsgx5zuuRWukNE=
 k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
 k8s.io/component-base v0.28.1 h1:LA4AujMlK2mr0tZbQDZkjWbdhTV5bRyEyAFe0TJxlWg=
 k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
 k8s.io/component-base v0.28.1/go.mod h1:jI11OyhbX21Qtbav7JkhehyBsIRfnO8oEgoAR12ArIU=
-k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0=
-k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo=
+k8s.io/klog/v2 v2.120.0 h1:z+q5mfovBj1fKFxiRzsa2DsJLPIVMk/KFL81LMOfK+8=
+k8s.io/klog/v2 v2.120.0/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
 k8s.io/kube-openapi v0.0.0-20240105020646-a37d4de58910 h1:1Rp/XEKP5uxPs6QrsngEHAxBjaAR78iJRiJq5Fi7LSU=
 k8s.io/kube-openapi v0.0.0-20240105020646-a37d4de58910 h1:1Rp/XEKP5uxPs6QrsngEHAxBjaAR78iJRiJq5Fi7LSU=
 k8s.io/kube-openapi v0.0.0-20240105020646-a37d4de58910/go.mod h1:Pa1PvrP7ACSkuX6I7KYomY6cmMA0Tx86waBhDUgoKPw=
 k8s.io/kube-openapi v0.0.0-20240105020646-a37d4de58910/go.mod h1:Pa1PvrP7ACSkuX6I7KYomY6cmMA0Tx86waBhDUgoKPw=
 k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ=
 k8s.io/utils v0.0.0-20240102154912-e7106e64919e h1:eQ/4ljkx21sObifjzXwlPKpdGLrCfRziVtos3ofG/sQ=
@@ -933,8 +933,8 @@ k8s.io/utils v0.0.0-20240102154912-e7106e64919e/go.mod h1:OLgZIPagt7ERELqWJFomSt
 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
 rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
 rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
 rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
 rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4=
-sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0=
+sigs.k8s.io/controller-runtime v0.17.0 h1:fjJQf8Ukya+VjogLO6/bNX9HE6Y2xpsO5+fyS26ur/s=
+sigs.k8s.io/controller-runtime v0.17.0/go.mod h1:+MngTvIQQQhfXtwfdGw/UOQ/aIaqsYywfCINOtwMO/s=
 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
 sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
 sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=

+ 2 - 2
hack/api-docs/Dockerfile

@@ -11,12 +11,12 @@
 # See the License for the specific language governing permissions and
 # See the License for the specific language governing permissions and
 # limitations under the License.
 # limitations under the License.
 
 
-FROM alpine:3.18
+FROM alpine:3.18@sha256:34871e7290500828b39e22294660bee86d966bc0017544e848dd9a255cdf59e0
 COPY requirements.txt /
 COPY requirements.txt /
 RUN apk add -U --no-cache \
 RUN apk add -U --no-cache \
     python3 \
     python3 \
     python3-dev \
     python3-dev \
-    py3-pip \
+    py3-pip==23.1.2-r0 \
     musl-dev \
     musl-dev \
     git \
     git \
     openssh \
     openssh \

+ 1 - 0
hack/api-docs/mkdocs.yml

@@ -77,6 +77,7 @@ nav:
       - Decoding Strategies: guides/decoding-strategy.md
       - Decoding Strategies: guides/decoding-strategy.md
       - Controller Classes: guides/controller-class.md
       - Controller Classes: guides/controller-class.md
     - Generators: guides/generator.md
     - Generators: guides/generator.md
+    - Push Secrets: guides/pushsecrets.md
     - Operations:
     - Operations:
       - Multi Tenancy: guides/multi-tenancy.md
       - Multi Tenancy: guides/multi-tenancy.md
       - Security Best Practices: guides/security-best-practices.md
       - Security Best Practices: guides/security-best-practices.md

+ 35 - 11
hack/api-docs/requirements.txt

@@ -1,18 +1,42 @@
-Click==8.0.3
+Babel==2.14.0
+certifi==2023.11.17
+charset-normalizer==3.3.2
+click==8.1.3
+colorama==0.4.6
+csscompressor==0.9.5
+ghp-import==2.1.0
 htmlmin==0.1.12
 htmlmin==0.1.12
-Jinja2==3.0.3
+idna==3.6
+importlib-metadata==7.0.1
+importlib-resources==6.1.1
+Jinja2==3.1.2
 jsmin==3.0.1
 jsmin==3.0.1
 livereload==2.6.3
 livereload==2.6.3
-Markdown==3.3.6
-MarkupSafe==2.0.1
-mkdocs==1.4.3
-mike @ git+https://github.com/jimporter/mike@300593c
-mkdocs-material==9.1.9
+Markdown==3.5.2
+MarkupSafe==2.1.1
+mergedeep==1.3.4
+mike @ git+https://github.com/jimporter/mike@300593c338b18f61f604d18457c351e166318020
+mkdocs==1.5.3
+mkdocs-macros-plugin==0.7.0
+mkdocs-material==9.5.3
+mkdocs-material-extensions==1.3.1
 mkdocs-minify-plugin==0.5.0
 mkdocs-minify-plugin==0.5.0
+packaging==23.2
+paginate==0.5.6
+pathspec==0.12.1
 pep562==1.1
 pep562==1.1
-Pygments==2.15.1
-pymdown-extensions==9.11
-PyYAML==5.3.1 # 6.0 is broken: https://github.com/yaml/pyyaml/issues/601
+platformdirs==4.1.0
+Pygments==2.17.2
+pymdown-extensions==10.7
+python-dateutil==2.8.2
+PyYAML==5.3.1
+pyyaml_env_tag==0.1
+regex==2023.12.25
+requests==2.31.0
 six==1.16.0
 six==1.16.0
+termcolor==2.4.0
 tornado==6.1
 tornado==6.1
-mkdocs-macros-plugin==0.7.0
+urllib3==2.1.0
+verspec==0.1.0
+watchdog==3.0.0
+zipp==3.17.0

+ 1 - 1
tilt.debug.dockerfile

@@ -1,4 +1,4 @@
-FROM golang:1.21.6
+FROM golang:1.21.6@sha256:6fbd2d3398db924f8d708cf6e94bd3a436bb468195daa6a96e80504e0a9615f2
 WORKDIR /
 WORKDIR /
 COPY ./bin/external-secrets /external-secrets
 COPY ./bin/external-secrets /external-secrets
 
 

+ 1 - 1
tilt.dockerfile

@@ -1,4 +1,4 @@
-FROM alpine
+FROM alpine@sha256:51b67269f354137895d43f3b3d810bfacd3945438e94dc5ac55fdac340352f48
 WORKDIR /
 WORKDIR /
 COPY ./bin/external-secrets /external-secrets
 COPY ./bin/external-secrets /external-secrets