Repository: knative-sandbox/eventing-kafka
Pull request #129 (2020-10-22 01:29:53)

[Automated] Update actions
Produced via:
```shell
# meta: knative-sandbox/.github
# main: knative-sandbox/eventing-kafka
cp $(find "${GITHUB_WORKSPACE}/meta/workflow-templates" -type f -name '*.yaml') \
  "${GITHUB_WORKSPACE}/main/.github/workflows/"
```
/cc knative-sandbox/channel-wg-leads
/assign knative-sandbox/channel-wg-leads

knative-prow-robot: @knative-automation: GitHub didn't allow me to request PR reviews from the following users: knative-automation/channel-wg-leads.

Note that only [knative-sandbox members](https://github.com/orgs/knative-sandbox/people) and repo collaborators can review this PR, and authors cannot review their own PRs.

<details>

In response to [this](https://github.com/knative-sandbox/eventing-kafka/pull/129):

>Produced via:
>```shell
># meta: knative-sandbox/.github
># main: knative-sandbox/eventing-kafka
>cp $(find "${GITHUB_WORKSPACE}/meta/workflow-templates" -type f -name '*.yaml') \
>  "${GITHUB_WORKSPACE}/main/.github/workflows/"
>```
>/cc knative-automation/channel-wg-leads
>/assign knative-automation/channel-wg-leads


Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
</details>
knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka/pull/129#" title="Author self-approved">knative-automation</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **lberk** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @lberk` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/knative-sandbox/eventing-kafka/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["lberk"]} -->
knative-prow-robot: Welcome @knative-automation! It looks like this is your first PR to knative-sandbox/eventing-kafka 🎉
knative-prow-robot: Hi @knative-automation. Thanks for your PR.

I'm waiting for a [knative-sandbox](https://github.com/orgs/knative-sandbox/people) member to verify that this patch is reasonable to test. If it is, they should reply with `/ok-to-test` on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should [join the org](https://github.com/orgs/knative-sandbox/people) to skip this step.

Once the patch is verified, the new status will be reflected by the `ok-to-test` label.

I understand the commands that are listed [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
</details>

knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka/pull/129#" title="Author self-approved">knative-automation</a>*, *<a href="https://github.com/knative-sandbox/eventing-kafka/pull/129#pullrequestreview-514299861" title="Approved">mattmoor</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **lberk** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @lberk` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/knative-sandbox/eventing-kafka/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["lberk"]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/129?src=pr&el=h1) Report
> Merging [#129](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/129?src=pr&el=desc) into [master](https://codecov.io/gh/knative-sandbox/eventing-kafka/commit/fc0ce343034836a126d773144b61bfb388d1e9d0?el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/129/graphs/tree.svg?width=650&height=150&src=pr&token=W765CT93QC)](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/129?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master     #129   +/-   ##
=======================================
  Coverage   74.97%   74.97%           
=======================================
  Files         110      110           
  Lines        3944     3944           
=======================================
  Hits         2957     2957           
  Misses        804      804           
  Partials      183      183           
```



------

[Continue to review full report at Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/129?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/129?src=pr&el=footer). Last update [fc0ce34...d133317](https://codecov.io/gh/knative-sandbox/eventing-kafka/pull/129?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

knative-prow-robot: New changes are detected. LGTM label has been removed.
knative-prow-robot: @knative-automation: The following test **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-sandbox-eventing-kafka-unit-tests | e91cb828af7124b55fc7fbbc0849ebd328d440f0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative-sandbox_eventing-kafka/129/pull-knative-sandbox-eventing-kafka-unit-tests/1320538922958196739) | `/test pull-knative-sandbox-eventing-kafka-unit-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative-sandbox_eventing-kafka/129). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka/pull/129#" title="Author self-approved">knative-automation</a>*, *<a href="https://github.com/knative-sandbox/eventing-kafka/pull/129#pullrequestreview-518269358" title="Approved">mattmoor</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **lberk** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @lberk` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/knative-sandbox/eventing-kafka/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["lberk"]} -->

Patch:
diff --git a/.github/workflows/knative-boilerplate.yaml b/.github/workflows/knative-boilerplate.yaml
index b45afcca5..9329fdd7e 100644
--- a/.github/workflows/knative-boilerplate.yaml
+++ b/.github/workflows/knative-boilerplate.yaml
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # This file is automagically synced here from github.com/knative-sandbox/.github
-# repo by knobots: https://github.com/mattmoor/knobots and will be overwritten.
+# repo by knobots: https://github.com/knative-sandbox/knobots and will be overwritten.
 
 name: Boilerplate
 
diff --git a/.github/workflows/knative-donotsubmit.yaml b/.github/workflows/knative-donotsubmit.yaml
index 92a96636b..d9131173d 100644
--- a/.github/workflows/knative-donotsubmit.yaml
+++ b/.github/workflows/knative-donotsubmit.yaml
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # This file is automagically synced here from github.com/knative-sandbox/.github
-# repo by knobots: https://github.com/mattmoor/knobots and will be overwritten.
+# repo by knobots: https://github.com/knative-sandbox/knobots and will be overwritten.
 
 name: Do Not Submit
 
diff --git a/.github/workflows/knative-go-build.yaml b/.github/workflows/knative-go-build.yaml
index 609551157..226eac87d 100644
--- a/.github/workflows/knative-go-build.yaml
+++ b/.github/workflows/knative-go-build.yaml
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # This file is automagically synced here from github.com/knative-sandbox/.github
-# repo by knobots: https://github.com/mattmoor/knobots and will be overwritten.
+# repo by knobots: https://github.com/knative-sandbox/knobots and will be overwritten.
 
 name: Build
 
diff --git a/.github/workflows/knative-releasability.yaml b/.github/workflows/knative-releasability.yaml
new file mode 100644
index 000000000..e3e928013
--- /dev/null
+++ b/.github/workflows/knative-releasability.yaml
@@ -0,0 +1,138 @@
+# Copyright 2020 The Knative Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file is automagically synced here from github.com/knative-sandbox/.github
+# repo by knobots: https://github.com/mattmoor/knobots and will be overwritten.
+
+name: 'Releasability'
+
+on:
+  schedule:
+    - cron: '0 1 * * 1-5' # 6am Pacific, weekdays.
+
+  workflow_dispatch:      # Manual trigger.
+    inputs:
+      releaseFamily:
+        description: 'Release? (vX.Y)'
+      slackChannel:
+        description: 'Slack Channel? (release-#)'
+
+jobs:
+  releasability:
+    name: Releasability
+    runs-on: 'ubuntu-latest'
+
+    env:
+      #########################################
+      #   Update this section each release.   #
+      RELEASE: 'v0.19'
+      SLACK_CHANNEL: 'release-19'
+      #########################################
+
+    steps:
+      - name: Defaults
+        run: |
+          # If manual trigger sent releaseFamily and slackChannel, then override them
+          if [[ "${{ github.event.inputs.releaseFamily }}" != "" ]]; then
+            echo "RELEASE=${{ github.event.inputs.releaseFamily }}" >> $GITHUB_ENV
+          fi
+          if [[ "${{ github.event.inputs.slackChannel }}" != "" ]]; then
+            echo "SLACK_CHANNEL=${{ github.event.inputs.slackChannel }}" >> $GITHUB_ENV
+          fi
+
+      - name: Set up Go 1.15.x
+        uses: actions/setup-go@v2
+        with:
+          go-version: 1.15.x
+
+      - name: Install Dependencies
+        run: GO111MODULE=on go get knative.dev/test-infra/buoy@master
+
+      - name: Check out code
+        uses: actions/checkout@v2
+
+      - name: Exists
+        id: exists
+        run: |
+          EXISTS=0
+          buoy exists go.mod --release ${RELEASE} --verbose || EXISTS=$?
+          if [[ "$EXISTS" -eq "0" ]]; then
+            EXISTS=true
+          else
+            EXISTS=false
+          fi
+          echo ::set-output name=release-branch::${EXISTS}
+
+      - name: Check
+        if: steps.exists.outputs.release-branch == 'false'
+        run: |
+          # The following pushes the stdout of buoy into $CHECK_MESSAGE
+          CHECK=0
+          echo 'CHECK_MESSAGE<<EOF' >> $GITHUB_ENV
+          buoy check go.mod --release ${RELEASE} --domain knative.dev --verbose >> $GITHUB_ENV || CHECK=$?
+          echo 'EOF' >> $GITHUB_ENV
+
+          # We just captured the return code of the buoy call, test it to see
+          # if we should continue validating. The next steps short circuit if
+          # we already know we are not ready for a release.
+          if [[ "$CHECK" -eq "0"  ]]; then
+            echo 'current=true' >> $GITHUB_ENV
+          else
+            echo 'current=false' >> $GITHUB_ENV
+          fi
+
+      - name: Upgrade
+        if: steps.exists.outputs.release-branch == 'false' && env.current == 'true'
+        run: |
+          # if update deps returns un-successful, then mark current to false.
+          if ! ./hack/update-deps.sh --release ${RELEASE} --upgrade; then
+            echo "VERIFY_MESSAGE=Unable to update deps for ${{ github.repository }}." >> $GITHUB_ENV
+            echo 'current=false' >> $GITHUB_ENV
+          fi
+
+      - name: Verify
+        if: steps.exists.outputs.release-branch == 'false' && env.current == 'true'
+        run: |
+          # If we see no changes after the upgrade, then we are up to date.
+          if [[ -z "$(git status --porcelain)" ]]; then
+              echo "VERIFY_MESSAGE=${{ github.repository }} up to date." >> $GITHUB_ENV
+          else
+              echo "VERIFY_MESSAGE=${{ github.repository }} is out of date." >> $GITHUB_ENV
+              echo 'current=false' >> $GITHUB_ENV
+          fi
+
+      - name: Status GO
+        if: steps.exists.outputs.release-branch == 'false' && env.current == 'true'
+        run: |
+          echo 'SLACK_COLOR=#098e00' >> $GITHUB_ENV
+          echo 'SLACK_TITLE=Releasability for ${{ github.repository }} @ ${{ env.RELEASE }} is GO!' >> $GITHUB_ENV
+
+      - name: Status NO-GO
+        if: steps.exists.outputs.release-branch == 'false' && env.current == 'false'
+        run: |
+          echo 'SLACK_COLOR=#8E1600' >> $GITHUB_ENV
+          echo 'SLACK_TITLE=Releasability for ${{ github.repository }} @ ${{ env.RELEASE }} is NO-GO!' >> $GITHUB_ENV
+
+      - name: Post status to Slack
+        if: steps.exists.outputs.release-branch == 'false'
+        uses: rtCamp/action-slack-notify@v2.1.0
+        env:
+          SLACK_ICON: http://github.com/knative.png?size=48
+          SLACK_USERNAME: github-actions
+          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
+          MSG_MINIMAL: 'true'
+          SLACK_MESSAGE: |
+            ${{ env.CHECK_MESSAGE }}
+            ${{ env.VERIFY_MESSAGE }}
+            For detailed logs: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
diff --git a/.github/workflows/knative-security.yaml b/.github/workflows/knative-security.yaml
index fcfe017a6..47186ef2e 100644
--- a/.github/workflows/knative-security.yaml
+++ b/.github/workflows/knative-security.yaml
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # This file is automagically synced here from github.com/knative-sandbox/.github
-# repo by knobots: https://github.com/mattmoor/knobots and will be overwritten.
+# repo by knobots: https://github.com/knative-sandbox/knobots and will be overwritten.
 
 name: 'Security'
 
diff --git a/.github/workflows/knative-stale.yaml b/.github/workflows/knative-stale.yaml
index 1b4e4334b..972826971 100644
--- a/.github/workflows/knative-stale.yaml
+++ b/.github/workflows/knative-stale.yaml
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # This file is automagically synced here from github.com/knative-sandbox/.github
-# repo by knobots: https://github.com/mattmoor/knobots and will be overwritten.
+# repo by knobots: https://github.com/knative-sandbox/knobots and will be overwritten.
 
 name: 'Close stale'
 
diff --git a/.github/workflows/knative-style.yaml b/.github/workflows/knative-style.yaml
index c96d3985c..a57a71a23 100644
--- a/.github/workflows/knative-style.yaml
+++ b/.github/workflows/knative-style.yaml
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # This file is automagically synced here from github.com/knative-sandbox/.github
-# repo by knobots: https://github.com/mattmoor/knobots and will be overwritten.
+# repo by knobots: https://github.com/knative-sandbox/knobots and will be overwritten.
 
 name: Code Style
 
@@ -121,7 +121,7 @@ jobs:
         if: steps.golangci_configuration.outputs.files_exists == 'true'
         uses: golangci/golangci-lint-action@v2
         with:
-          version: v1.30
+          version: v1.32
 
       - name: misspell
         shell: bash
diff --git a/.github/workflows/knative-verify.yaml b/.github/workflows/knative-verify.yaml
index 7b9664ad2..ed5bb3a13 100644
--- a/.github/workflows/knative-verify.yaml
+++ b/.github/workflows/knative-verify.yaml
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # This file is automagically synced here from github.com/knative-sandbox/.github
-# repo by knobots: https://github.com/mattmoor/knobots and will be overwritten.
+# repo by knobots: https://github.com/knative-sandbox/knobots and will be overwritten.
 
 name: Verify
 
diff --git a/config/source/resources/kafkabinding.yaml b/config/source/resources/kafkabinding.yaml
index 3d12e01a2..5424d282e 100644
--- a/config/source/resources/kafkabinding.yaml
+++ b/config/source/resources/kafkabinding.yaml
@@ -22,6 +22,15 @@ metadata:
   name: kafkabindings.bindings.knative.dev
 spec:
   group: bindings.knative.dev
+  preserveUnknownFields: false
+  validation:
+    openAPIV3Schema:
+      type: object
+      # this is a work around so we don't need to flush out the
+      # schema for each version at this time
+      #
+      # see issue: https://github.com/knative/serving/issues/912
+      x-kubernetes-preserve-unknown-fields: true
   names:
     categories:
     - all
@@ -33,6 +42,12 @@ spec:
   scope: Namespaced
   subresources:
     status: {}
+  conversion:
+    strategy: Webhook
+    webhookClientConfig:
+      service:
+        name: kafka-source-webhook
+        namespace: knative-sources
   additionalPrinterColumns:
     - name: BootstrapServers
       type: string
diff --git a/go.mod b/go.mod
index 5f368bfe9..3a46ccbe8 100644
--- a/go.mod
+++ b/go.mod
@@ -33,9 +33,9 @@ require (
 	k8s.io/apimachinery v0.18.8
 	k8s.io/client-go v11.0.1-0.20190805182717-6502b5e7b1b5+incompatible
 	k8s.io/utils v0.0.0-20200603063816-c1c6865ac451
-	knative.dev/eventing v0.18.1-0.20201027082733-0422b999bcda
-	knative.dev/pkg v0.0.0-20201027020033-875095c42ee0
-	knative.dev/test-infra v0.0.0-20201026182042-46291de4ab66
+	knative.dev/eventing v0.18.1-0.20201027234734-7ba58ca471c0
+	knative.dev/hack v0.0.0-20201027221733-0d7f2f064b7b
+	knative.dev/pkg v0.0.0-20201028000034-e39bfc4544a8
 )
 
 replace (
diff --git a/go.sum b/go.sum
index 6ef228710..76927c12c 100644
--- a/go.sum
+++ b/go.sum
@@ -23,7 +23,6 @@ cloud.google.com/go v0.55.0/go.mod h1:ZHmoY+/lIMNkN2+fBmuTiqZ4inFhvQad8ft7MT8IV5
 cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
 cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
 cloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU=
-cloud.google.com/go v0.61.0/go.mod h1:XukKJg4Y7QsUu0Hxg3qQKUWR4VuWivmyMK2+rUyxAqw=
 cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA=
 cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
 cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8=
@@ -46,7 +45,6 @@ cloud.google.com/go/pubsub v1.2.0 h1:Lpy6hKgdcl7a3WGSfJIFmxmcdjSpP6OmBEfcOv1Y680
 cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
 cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
 cloud.google.com/go/pubsub v1.4.0/go.mod h1:LFrqilwgdw4X2cJS9ALgzYmMu+ULyrUN6IHV3CPK4TM=
-cloud.google.com/go/pubsub v1.6.1/go.mod h1:kvW9rcn9OLEx6eTIzMBbWbpB8YsK3vu9jxgPolVz+p4=
 cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
 cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
 cloud.google.com/go/storage v1.6.0 h1:UDpwYIwla4jHGzZJaEJYx1tOejbgSoNqsAfHAUYe2r8=
@@ -258,7 +256,6 @@ github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpi
 github.com/aws/aws-sdk-go v1.23.22/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
 github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
 github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
 github.com/aws/aws-sdk-go v1.29.32/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
 github.com/aws/aws-sdk-go v1.29.34/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg=
 github.com/aws/aws-sdk-go v1.30.4/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
@@ -284,8 +281,6 @@ github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17
 github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
 github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
 github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
-github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
-github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
 github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
 github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b h1:AP/Y7sqYicnjGDfD5VcY4CIfh1hRXBUavxrvELjTiOE=
 github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q=
@@ -464,13 +459,6 @@ github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0
 github.com/go-bindata/go-bindata/v3 v3.1.3/go.mod h1:1/zrpXsLD8YDIbhZRqXzm1Ghc7NhEvIN9+Z6R5/xH4I=
 github.com/go-critic/go-critic v0.4.1/go.mod h1:7/14rZGnZbY6E38VEGk2kVhoq6itzc1E68facVDK23g=
 github.com/go-critic/go-critic v0.4.3/go.mod h1:j4O3D4RoIwRqlZw5jJpx0BNfXWWbpcJoKu5cYSe4YmQ=
-github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4=
-github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E=
-github.com/go-git/go-billy/v5 v5.0.0 h1:7NQHvd9FVid8VL4qVUMm8XifBK+2xCoZ2lSk0agRrHM=
-github.com/go-git/go-billy/v5 v5.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
-github.com/go-git/go-git-fixtures/v4 v4.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw=
-github.com/go-git/go-git/v5 v5.1.0 h1:HxJn9g/E7eYvKW3Fm7Jt4ee8LXfPOm/H1cdDu8vEssk=
-github.com/go-git/go-git/v5 v5.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM=
 github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@@ -672,8 +660,6 @@ github.com/google/go-containerregistry v0.0.0-20200115214256-379933c9c22b/go.mod
 github.com/google/go-containerregistry v0.0.0-20200123184029-53ce695e4179/go.mod h1:Wtl/v6YdQxv397EREtzwgd9+Ud7Q5D8XMbi3Zazgkrs=
 github.com/google/go-containerregistry v0.0.0-20200331213917-3d03ed9b1ca2/go.mod h1:pD1UFYs7MCAx+ZLShBdttcaOSbyc8F9Na/9IZLNwJeA=
 github.com/google/go-containerregistry v0.1.1/go.mod h1:npTSyywOeILcgWqd+rvtzGWflIPPcBQhYoOONaY4ltM=
-github.com/google/go-containerregistry v0.1.3/go.mod h1:3Wg/Hjgn/ZDxrYYhtzZJWdThOd8zeI2zAmn4oVfm1Wg=
-github.com/google/go-containerregistry v0.1.4/go.mod h1:6EGiuQp36pL82lX6rFN0s9AJOVL0Mlgx/DAsYZW5X3s=
 github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY=
 github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
 github.com/google/go-github/v27 v27.0.6 h1:oiOZuBmGHvrGM1X9uNUAUlLgp5r1UUO/M/KnbHnLRlQ=
@@ -694,7 +680,6 @@ github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
 github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/licenseclassifier v0.0.0-20190926221455-842c0d70d702/go.mod h1:qsqn2hxC+vURpyBRygGUuinTO42MFRLcsmQ/P8v94+M=
 github.com/google/licenseclassifier v0.0.0-20200402202327-879cb1424de0/go.mod h1:qsqn2hxC+vURpyBRygGUuinTO42MFRLcsmQ/P8v94+M=
-github.com/google/licenseclassifier v0.0.0-20200708223521-3d09a0ea2f39/go.mod h1:qsqn2hxC+vURpyBRygGUuinTO42MFRLcsmQ/P8v94+M=
 github.com/google/mako v0.0.0-20190821191249-122f8dcef9e3 h1:/o5e44nTD/QEEiWPGSFT3bSqcq3Qg7q27N9bv4gKh5M=
 github.com/google/mako v0.0.0-20190821191249-122f8dcef9e3/go.mod h1:YzLcVlL+NqWnmUEPuhS1LxDDwGO9WNbVlEXaF4IH35g=
 github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
@@ -1353,7 +1338,6 @@ github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV
 github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44238/go.mod h1:JwQJCMWpUDqjZrB5jpw0f5VbN7U95zxFy1ZDpoEarGo=
 github.com/vdemeester/k8s-pkg-credentialprovider v1.13.12-1/go.mod h1:Fko0rTxEtDW2kju5Ky7yFJNS3IcNvW8IPsp4/e9oev0=
 github.com/vdemeester/k8s-pkg-credentialprovider v1.17.4/go.mod h1:inCTmtUdr5KJbreVojo06krnTgaeAz/Z7lynpPk/Q2c=
-github.com/vdemeester/k8s-pkg-credentialprovider v1.18.1-0.20201019120933-f1d16962a4db/go.mod h1:grWy0bkr1XO6hqbaaCKaPXqkBVlMGHYG6PGykktwbJc=
 github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
 github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU=
 github.com/wavesoftware/go-ensure v1.0.0/go.mod h1:K2UAFSwMTvpiRGay/M3aEYYuurcR8S4A6HkQlJPV8k4=
@@ -1662,8 +1646,6 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200610111108-226ff32320da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200802091954-4b90ce9b60b3 h1:qDJKu1y/1SjhWac4BQZjLljqvqiWUhjmDMnonmVGDAU=
-golang.org/x/sys v0.0.0-20200802091954-4b90ce9b60b3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f h1:Fqb3ao1hUmOR3GkUOg/Y+BadLwykBIzs5q8Ez2SbHyc=
@@ -1776,8 +1758,6 @@ golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roY
 golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200701000337-a32c0cb1d5b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200709181711-e327e1019dfe/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200725200936-102e7d357031/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
@@ -1885,10 +1865,7 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc
 google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200701001935-0939c5918c31/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200709005830-7a2ca40e9dc3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200711021454-869866162049/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200726014623-da3ae01ef02d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200731012542-8145dea6a485/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20200831141814-d751682dd103/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
@@ -2020,7 +1997,6 @@ k8s.io/client-go v0.18.8 h1:SdbLpIxk5j5YbFr1b7fq8S7mDgDjYmUxSbszyoesoDM=
 k8s.io/client-go v0.18.8/go.mod h1:HqFqMllQ5NnQJNwjro9k5zMyfhZlOwpuTLVrxjkYSxU=
 k8s.io/cloud-provider v0.17.0/go.mod h1:Ze4c3w2C0bRsjkBUoHpFi+qWe3ob1wI2/7cUn+YQIDE=
 k8s.io/cloud-provider v0.17.4/go.mod h1:XEjKDzfD+b9MTLXQFlDGkk6Ho8SGMpaU8Uugx/KNK9U=
-k8s.io/cloud-provider v0.18.8/go.mod h1:cn9AlzMPVIXA4HHLVbgGUigaQlZyHSZ7WAwDEFNrQSs=
 k8s.io/code-generator v0.18.8 h1:lgO1P1wjikEtzNvj7ia+x1VC4svJ28a/r0wnOLhhOTU=
 k8s.io/code-generator v0.18.8/go.mod h1:TgNEVx9hCyPGpdtCWA34olQYLkh3ok9ar7XfSsr8b6c=
 k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc=
@@ -2029,7 +2005,6 @@ k8s.io/component-base v0.17.4/go.mod h1:5BRqHMbbQPm2kKu35v3G+CpVq4K0RJKC7TRioF0I
 k8s.io/component-base v0.18.8/go.mod h1:00frPRDas29rx58pPCxNkhUfPbwajlyyvu8ruNgSErU=
 k8s.io/csi-translation-lib v0.17.0/go.mod h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls=
 k8s.io/csi-translation-lib v0.17.4/go.mod h1:CsxmjwxEI0tTNMzffIAcgR9lX4wOh6AKHdxQrT7L0oo=
-k8s.io/csi-translation-lib v0.18.8/go.mod h1:6cA6Btlzxy9s3QrS4BCZzQqclIWnTLr6Jx3H2ctAzY4=
 k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 k8s.io/gengo v0.0.0-20190306031000-7a1b7fb0289f/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 k8s.io/gengo v0.0.0-20191108084044-e500ee069b5c/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
@@ -2055,7 +2030,6 @@ k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
 k8s.io/kubernetes v1.14.7/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
 k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8=
 k8s.io/legacy-cloud-providers v0.17.4/go.mod h1:FikRNoD64ECjkxO36gkDgJeiQWwyZTuBkhu+yxOc1Js=
-k8s.io/legacy-cloud-providers v0.18.8/go.mod h1:tgp4xYf6lvjrWnjQwTOPvWQE9IVqSBGPF4on0IyICQE=
 k8s.io/metrics v0.17.2/go.mod h1:3TkNHET4ROd+NfzNxkjoVfQ0Ob4iZnaHmSEA4vYpwLw=
 k8s.io/test-infra v0.0.0-20181019233642-2e10a0bbe9b3/go.mod h1:2NzXB13Ji0nqpyublHeiPC4FZwU0TknfvyaaNfl/BTA=
 k8s.io/test-infra v0.0.0-20191212060232-70b0b49fe247/go.mod h1:d8SKryJBXAwfCFVL4wieRez47J2NOOAb9d029sWLseQ=
@@ -2074,10 +2048,13 @@ k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 h1:v8ud2Up6QK1lNOKFgiIVrZdMg7Mpm
 k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 knative.dev/caching v0.0.0-20190719140829-2032732871ff/go.mod h1:dHXFU6CGlLlbzaWc32g80cR92iuBSpsslDNBWI8C7eg=
 knative.dev/caching v0.0.0-20200116200605-67bca2c83dfa/go.mod h1:dHXFU6CGlLlbzaWc32g80cR92iuBSpsslDNBWI8C7eg=
-knative.dev/eventing v0.18.1-0.20201027082733-0422b999bcda h1:g15ehmxEFdE4UL72zLE5n1Ql0cMAHcf5eDbq5kw9a08=
-knative.dev/eventing v0.18.1-0.20201027082733-0422b999bcda/go.mod h1:SPQEV8jjU8nlkGJMMb1DAUr7z/jBYePc99LQZQ3QmrM=
+knative.dev/eventing v0.18.1-0.20201027234734-7ba58ca471c0 h1:YHGdn1t8SarClmhQNVbZ0aOuLEFUf6FX4794esSgV4w=
+knative.dev/eventing v0.18.1-0.20201027234734-7ba58ca471c0/go.mod h1:ZZaTVSV8CSlztDvrOQnbKPCd1jSe1RhpaSCqSiEpq4g=
 knative.dev/eventing-contrib v0.6.1-0.20190723221543-5ce18048c08b/go.mod h1:SnXZgSGgMSMLNFTwTnpaOH7hXDzTFtw0J8OmHflNx3g=
 knative.dev/eventing-contrib v0.11.2/go.mod h1:SnXZgSGgMSMLNFTwTnpaOH7hXDzTFtw0J8OmHflNx3g=
+knative.dev/hack v0.0.0-20201027201633-1763a666eb41/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
+knative.dev/hack v0.0.0-20201027221733-0d7f2f064b7b h1:tBUkvMhcWZny+7CJTs5Ona8S3OCKJkgAwgZ7mkgWL3Y=
+knative.dev/hack v0.0.0-20201027221733-0d7f2f064b7b/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
 knative.dev/pkg v0.0.0-20191101194912-56c2594e4f11/go.mod h1:pgODObA1dTyhNoFxPZTTjNWfx6F0aKsKzn+vaT9XO/Q=
 knative.dev/pkg v0.0.0-20191111150521-6d806b998379/go.mod h1:pgODObA1dTyhNoFxPZTTjNWfx6F0aKsKzn+vaT9XO/Q=
 knative.dev/pkg v0.0.0-20200207155214-fef852970f43/go.mod h1:pgODObA1dTyhNoFxPZTTjNWfx6F0aKsKzn+vaT9XO/Q=
@@ -2086,18 +2063,14 @@ knative.dev/pkg v0.0.0-20200505191044-3da93ebb24c2/go.mod h1:Q6sL35DdGs8hIQZKdaC
 knative.dev/pkg v0.0.0-20200515002500-16d7b963416f/go.mod h1:tMOHGbxtRz8zYFGEGpV/bpoTEM1o89MwYFC4YJXl3GY=
 knative.dev/pkg v0.0.0-20200528142800-1c6815d7e4c9/go.mod h1:QgNZTxnwpB/oSpNcfnLVlw+WpEwwyKAvJlvR3hgeltA=
 knative.dev/pkg v0.0.0-20200711004937-22502028e31a/go.mod h1:AqAJV6rYi8IGikDjJ/9ZQd9qKdkXVlesVnVjwx62YB8=
-knative.dev/pkg v0.0.0-20201026232541-37583c54bfc3/go.mod h1:pc2VrtK69NrLtGMc6Gu0BL8IOfmph6KNvIDVrFqqW3Q=
-knative.dev/pkg v0.0.0-20201027020033-875095c42ee0 h1:wds7wavjBGM/5XszmdhMf+nP844AhxRQYM+SqoM77ok=
-knative.dev/pkg v0.0.0-20201027020033-875095c42ee0/go.mod h1:vytY2kpkAbUm8yDIzJrLEgJ7FK/ieWuQDo4cNavAwuc=
+knative.dev/pkg v0.0.0-20201027223833-826303ca0653/go.mod h1:QE0oLfNTKMOrbh5kpt8O58nDxbvEvz3t6R8xTdaWZrg=
+knative.dev/pkg v0.0.0-20201028000034-e39bfc4544a8 h1:Ib2LZMawsK2SfjK/f5TZYAh7K6tjvL/2NkHj26sfm5c=
+knative.dev/pkg v0.0.0-20201028000034-e39bfc4544a8/go.mod h1:QE0oLfNTKMOrbh5kpt8O58nDxbvEvz3t6R8xTdaWZrg=
 knative.dev/test-infra v0.0.0-20200407185800-1b88cb3b45a5/go.mod h1:xcdUkMJrLlBswIZqL5zCuBFOC22WIPMQoVX1L35i0vQ=
 knative.dev/test-infra v0.0.0-20200505052144-5ea2f705bb55/go.mod h1:WqF1Azka+FxPZ20keR2zCNtiQA1MP9ZB4BH4HuI+SIU=
 knative.dev/test-infra v0.0.0-20200513011557-d03429a76034/go.mod h1:aMif0KXL4g19YCYwsy4Ocjjz5xgPlseYV+B95Oo4JGE=
 knative.dev/test-infra v0.0.0-20200519015156-82551620b0a9/go.mod h1:A5b2OAXTOeHT3hHhVQm3dmtbuWvIDP7qzgtqxA3/2pE=
 knative.dev/test-infra v0.0.0-20200707183444-aed09e56ddc7/go.mod h1:RjYAhXnZqeHw9+B0zsbqSPlae0lCvjekO/nw5ZMpLCs=
-knative.dev/test-infra v0.0.0-20201022003632-7d3ea6019158 h1:i6DIeWY1imJVNS6OH+VcBvYpVOkYWDe/AR2rUYTxcxE=
-knative.dev/test-infra v0.0.0-20201022003632-7d3ea6019158/go.mod h1:lm0U0k6ARXr8Po0LcSTCfETg63LOF3ajUxcoqy5JSH0=
-knative.dev/test-infra v0.0.0-20201026182042-46291de4ab66 h1:4GjjfWLzfsxN7xm+vkdC4AWqgTlw5mSQmTdSqPVfjlM=
-knative.dev/test-infra v0.0.0-20201026182042-46291de4ab66/go.mod h1:84HgSlMIp+oCx//g2Js61OxSVgdvrRYQMfMMr9kSSn4=
 mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=
 mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=
 mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw=
diff --git a/hack/release.sh b/hack/release.sh
index 7973e699c..9b348a09c 100755
--- a/hack/release.sh
+++ b/hack/release.sh
@@ -17,7 +17,7 @@
 # Documentation about this script and how to use it can be found
 # at https://github.com/knative/test-infra/tree/master/ci
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/release.sh
+source $(dirname $0)/../vendor/knative.dev/hack/release.sh
 
 export GO111MODULE=on
 
diff --git a/hack/tools.go b/hack/tools.go
index 1cce47317..997722228 100644
--- a/hack/tools.go
+++ b/hack/tools.go
@@ -19,8 +19,8 @@ limitations under the License.
 package tools
 
 import (
+	_ "knative.dev/hack"
 	_ "knative.dev/pkg/hack"
-	_ "knative.dev/test-infra/scripts"
 
 	// Test images from eventing
 	_ "knative.dev/eventing/test/test_images/event-sender"
diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh
index a46c14039..8678c234e 100755
--- a/hack/update-codegen.sh
+++ b/hack/update-codegen.sh
@@ -26,7 +26,7 @@ if [ -z "${GOPATH:-}" ]; then
   export GOPATH=$(go env GOPATH)
 fi
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/library.sh
+source $(dirname $0)/../vendor/knative.dev/hack/library.sh
 
 CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${REPO_ROOT_DIR}; ls -d -1 $(dirname $0)/../vendor/k8s.io/code-generator 2>/dev/null || echo ../../../k8s.io/code-generator)}
 
diff --git a/hack/update-deps.sh b/hack/update-deps.sh
index 68cc37b49..569fcc395 100755
--- a/hack/update-deps.sh
+++ b/hack/update-deps.sh
@@ -18,6 +18,6 @@ set -o errexit
 set -o nounset
 set -o pipefail
 
-source $(dirname "$0")/../vendor/knative.dev/test-infra/scripts/library.sh
+source $(dirname "$0")/../vendor/knative.dev/hack/library.sh
 
 go_update_deps "$@"
diff --git a/hack/verify-codegen.sh b/hack/verify-codegen.sh
index b404d14a7..1d2c19f50 100755
--- a/hack/verify-codegen.sh
+++ b/hack/verify-codegen.sh
@@ -20,7 +20,7 @@ set -o pipefail
 
 export GO111MODULE=on
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/library.sh
+source $(dirname $0)/../vendor/knative.dev/hack/library.sh
 
 readonly TMP_DIFFROOT="$(mktemp -d ${REPO_ROOT_DIR}/tmpdiffroot.XXXXXX)"
 
diff --git a/pkg/apis/bindings/v1alpha1/kafka_conversion.go b/pkg/apis/bindings/v1alpha1/kafka_conversion.go
index 04128d523..9f4cf718d 100644
--- a/pkg/apis/bindings/v1alpha1/kafka_conversion.go
+++ b/pkg/apis/bindings/v1alpha1/kafka_conversion.go
@@ -39,8 +39,7 @@ func (source *KafkaBinding) ConvertTo(ctx context.Context, obj apis.Convertible)
 			BindingSpec:   source.Spec.BindingSpec,
 			KafkaAuthSpec: kafkaAuthSpec,
 		}
-		sink.Status.Status = source.Status.Status
-		source.Status.Status.ConvertTo(ctx, &sink.Status.Status)
+		source.Status.Status.DeepCopyInto(&sink.Status.Status)
 		return nil
 	default:
 		return fmt.Errorf("Unknown conversion, got: %T", sink)
@@ -62,8 +61,7 @@ func (sink *KafkaBinding) ConvertFrom(ctx context.Context, obj apis.Convertible)
 			BindingSpec:   source.Spec.BindingSpec,
 			KafkaAuthSpec: kafkaAuthSpec,
 		}
-		sink.Status.Status = source.Status.Status
-		source.Status.Status.ConvertTo(ctx, &source.Status.Status)
+		source.Status.Status.DeepCopyInto(&sink.Status.Status)
 		return nil
 	default:
 		return fmt.Errorf("Unknown conversion, got: %T", source)
diff --git a/vendor/knative.dev/eventing/pkg/apis/duck/v1/fuzzer.go b/vendor/knative.dev/eventing/pkg/apis/duck/v1/fuzzer.go
deleted file mode 100644
index 919324b97..000000000
--- a/vendor/knative.dev/eventing/pkg/apis/duck/v1/fuzzer.go
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-Copyright 2020 The Knative Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1
-
-import (
-	"math/rand"
-
-	fuzz "github.com/google/gofuzz"
-	"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
-	"k8s.io/apimachinery/pkg/runtime/serializer"
-)
-
-var linear = BackoffPolicyLinear
-var exponential = BackoffPolicyExponential
-var bops = []*BackoffPolicyType{nil, &linear, &exponential}
-
-// FuzzerFuncs includes fuzzing funcs for knative.dev/duck v1 types
-// In particular it makes sure that Delivery has only valid BackoffPolicyType in it.
-//
-// For other examples see
-// https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/fuzzer/fuzzer.go
-var FuzzerFuncs = fuzzer.MergeFuzzerFuncs(
-	func(codecs serializer.CodecFactory) []interface{} {
-		return []interface{}{
-			func(ds *DeliverySpec, c fuzz.Continue) {
-				c.FuzzNoCustom(ds) // fuzz the DeliverySpec
-				if ds.BackoffPolicy != nil && *ds.BackoffPolicy == "" {
-					ds.BackoffPolicy = nil
-				} else {
-					//nolint:gosec // Cryptographic randomness is not necessary.
-					ds.BackoffPolicy = bops[rand.Intn(3)]
-				}
-			},
-		}
-	},
-)
diff --git a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/fuzzer.go b/vendor/knative.dev/eventing/pkg/apis/eventing/v1/fuzzer.go
deleted file mode 100644
index ef53d194b..000000000
--- a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/fuzzer.go
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-Copyright 2020 The Knative Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1
-
-import (
-	fuzz "github.com/google/gofuzz"
-	"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
-	"k8s.io/apimachinery/pkg/runtime/serializer"
-	pkgfuzzer "knative.dev/pkg/apis/testing/fuzzer"
-)
-
-// FuzzerFuncs includes fuzzing funcs for knative.dev/eventing v1 types
-//
-// For other examples see
-// https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/fuzzer/fuzzer.go
-var FuzzerFuncs = fuzzer.MergeFuzzerFuncs(
-	func(codecs serializer.CodecFactory) []interface{} {
-		return []interface{}{
-			func(s *TriggerStatus, c fuzz.Continue) {
-				c.FuzzNoCustom(s) // fuzz the status object
-
-				// Clear the random fuzzed condition
-				s.Status.SetConditions(nil)
-
-				// Fuzz the known conditions except their type value
-				s.InitializeConditions()
-				pkgfuzzer.FuzzConditions(&s.Status, c)
-			},
-			func(s *BrokerStatus, c fuzz.Continue) {
-				c.FuzzNoCustom(s) // fuzz the status object
-
-				// Clear the random fuzzed condition
-				s.Status.SetConditions(nil)
-
-				// Fuzz the known conditions except their type value
-				s.InitializeConditions()
-				pkgfuzzer.FuzzConditions(&s.Status, c)
-			},
-		}
-	},
-)
diff --git a/vendor/knative.dev/eventing/pkg/apis/flows/v1/fuzzer.go b/vendor/knative.dev/eventing/pkg/apis/flows/v1/fuzzer.go
deleted file mode 100644
index f859f94c4..000000000
--- a/vendor/knative.dev/eventing/pkg/apis/flows/v1/fuzzer.go
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-Copyright 2020 The Knative Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1
-
-import (
-	fuzz "github.com/google/gofuzz"
-	"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
-	"k8s.io/apimachinery/pkg/runtime/serializer"
-	pkgfuzzer "knative.dev/pkg/apis/testing/fuzzer"
-)
-
-// FuzzerFuncs includes fuzzing funcs for knative.dev/flows v1 types
-//
-// For other examples see
-// https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/fuzzer/fuzzer.go
-var FuzzerFuncs = fuzzer.MergeFuzzerFuncs(
-	func(codecs serializer.CodecFactory) []interface{} {
-		return []interface{}{
-			func(s *SequenceStatus, c fuzz.Continue) {
-				c.FuzzNoCustom(s) // fuzz the status object
-
-				// Clear the random fuzzed condition
-				s.Status.SetConditions(nil)
-
-				// Fuzz the known conditions except their type value
-				s.InitializeConditions()
-				pkgfuzzer.FuzzConditions(&s.Status, c)
-			},
-			func(s *ParallelStatus, c fuzz.Continue) {
-				c.FuzzNoCustom(s) // fuzz the status object
-
-				// Clear the random fuzzed condition
-				s.Status.SetConditions(nil)
-
-				// Fuzz the known conditions except their type value
-				s.InitializeConditions()
-				pkgfuzzer.FuzzConditions(&s.Status, c)
-			},
-		}
-	},
-)
diff --git a/vendor/knative.dev/eventing/pkg/apis/messaging/v1/fuzzer.go b/vendor/knative.dev/eventing/pkg/apis/messaging/v1/fuzzer.go
deleted file mode 100644
index baecec17e..000000000
--- a/vendor/knative.dev/eventing/pkg/apis/messaging/v1/fuzzer.go
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-Copyright 2020 The Knative Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1
-
-import (
-	fuzz "github.com/google/gofuzz"
-	"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
-	"k8s.io/apimachinery/pkg/runtime/serializer"
-	"knative.dev/eventing/pkg/apis/messaging"
-	pkgfuzzer "knative.dev/pkg/apis/testing/fuzzer"
-)
-
-// FuzzerFuncs includes fuzzing funcs for knative.dev/messaging v1 types
-//
-// For other examples see
-// https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/fuzzer/fuzzer.go
-var FuzzerFuncs = fuzzer.MergeFuzzerFuncs(
-	func(codecs serializer.CodecFactory) []interface{} {
-		return []interface{}{
-			func(ch *Channel, c fuzz.Continue) {
-				c.FuzzNoCustom(ch) // fuzz the Channel
-				if ch != nil {
-					if ch.Annotations == nil {
-						ch.Annotations = make(map[string]string)
-					}
-					ch.Annotations[messaging.SubscribableDuckVersionAnnotation] = "v1"
-				}
-				// Clear the random fuzzed condition
-				ch.Status.SetConditions(nil)
-
-				// Fuzz the known conditions except their type value
-				ch.Status.InitializeConditions()
-				pkgfuzzer.FuzzConditions(&ch.Status, c)
-			},
-			func(imc *InMemoryChannel, c fuzz.Continue) {
-				c.FuzzNoCustom(imc) // fuzz the InMemoryChannel
-				if imc != nil {
-					if imc.Annotations == nil {
-						imc.Annotations = make(map[string]string)
-					}
-					imc.Annotations[messaging.SubscribableDuckVersionAnnotation] = "v1"
-				}
-				// Clear the random fuzzed condition
-				imc.Status.SetConditions(nil)
-
-				// Fuzz the known conditions except their type value
-				imc.Status.InitializeConditions()
-				pkgfuzzer.FuzzConditions(&imc.Status, c)
-			},
-			func(s *SubscriptionStatus, c fuzz.Continue) {
-				c.FuzzNoCustom(s) // fuzz the status object
-
-				// Clear the random fuzzed condition
-				s.Status.SetConditions(nil)
-
-				// Fuzz the known conditions except their type value
-				s.InitializeConditions()
-				pkgfuzzer.FuzzConditions(&s.Status, c)
-			},
-		}
-	},
-)
diff --git a/vendor/knative.dev/hack/CODE_OF_CONDUCT.md b/vendor/knative.dev/hack/CODE_OF_CONDUCT.md
new file mode 100644
index 000000000..4649e6aed
--- /dev/null
+++ b/vendor/knative.dev/hack/CODE_OF_CONDUCT.md
@@ -0,0 +1,4 @@
+# Contributor Covenant Code of Conduct
+
+Please see the Knative Community
+[Contributor Covenant Code of Conduct](https://www.knative.dev/contributing/code-of-conduct/).
diff --git a/vendor/knative.dev/test-infra/scripts/e2e-tests.sh b/vendor/knative.dev/hack/e2e-tests.sh
similarity index 100%
rename from vendor/knative.dev/test-infra/scripts/e2e-tests.sh
rename to vendor/knative.dev/hack/e2e-tests.sh
diff --git a/vendor/knative.dev/hack/go.mod b/vendor/knative.dev/hack/go.mod
new file mode 100644
index 000000000..5bef87726
--- /dev/null
+++ b/vendor/knative.dev/hack/go.mod
@@ -0,0 +1,3 @@
+module knative.dev/hack
+
+go 1.14
diff --git a/vendor/knative.dev/test-infra/scripts/shellcheck-presubmit.sh b/vendor/knative.dev/hack/shellcheck-presubmit.sh
similarity index 100%
rename from vendor/knative.dev/test-infra/scripts/shellcheck-presubmit.sh
rename to vendor/knative.dev/hack/shellcheck-presubmit.sh
diff --git a/vendor/knative.dev/pkg/apis/duck/v1/fuzzer.go b/vendor/knative.dev/pkg/apis/duck/v1/fuzzer.go
deleted file mode 100644
index 4ef66e589..000000000
--- a/vendor/knative.dev/pkg/apis/duck/v1/fuzzer.go
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-Copyright 2020 The Knative Authors
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1
-
-import (
-	fuzz "github.com/google/gofuzz"
-	"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
-	"k8s.io/apimachinery/pkg/runtime/serializer"
-	"knative.dev/pkg/apis"
-	pkgfuzzer "knative.dev/pkg/apis/testing/fuzzer"
-)
-
-var testConditions = apis.Conditions{{Type: apis.ConditionReady}, {Type: apis.ConditionSucceeded}}
-
-// FuzzerFuncs includes fuzzing funcs for knative.dev/duck v1 types
-// In particular it makes sure that Delivery has only valid BackoffPolicyType in it.
-//
-// For other examples see
-// https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/fuzzer/fuzzer.go
-var FuzzerFuncs = fuzzer.MergeFuzzerFuncs(
-	func(codecs serializer.CodecFactory) []interface{} {
-		return []interface{}{
-			func(status *Status, c fuzz.Continue) {
-				c.FuzzNoCustom(status) // fuzz the Status
-				status.SetConditions(testConditions)
-				pkgfuzzer.FuzzConditions(status, c)
-			},
-		}
-	},
-)
diff --git a/vendor/knative.dev/pkg/apis/duck/v1beta1/fuzzer.go b/vendor/knative.dev/pkg/apis/duck/v1beta1/fuzzer.go
deleted file mode 100644
index efc8be973..000000000
--- a/vendor/knative.dev/pkg/apis/duck/v1beta1/fuzzer.go
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright 2020 The Knative Authors
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package v1beta1
-
-import (
-	fuzz "github.com/google/gofuzz"
-	"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
-	"k8s.io/apimachinery/pkg/runtime/serializer"
-	"knative.dev/pkg/apis"
-	pkgfuzzer "knative.dev/pkg/apis/testing/fuzzer"
-)
-
-var testConditions = apis.Conditions{{Type: apis.ConditionReady}, {Type: apis.ConditionSucceeded}}
-
-// FuzzerFuncs includes fuzzing funcs for knative.dev/duck v1beta1 Status types
-//
-// For other examples see
-// https://github.com/kubernetes/apimachinery/blob/master/pkg/apis/meta/fuzzer/fuzzer.go
-var FuzzerFuncs = fuzzer.MergeFuzzerFuncs(
-	func(codecs serializer.CodecFactory) []interface{} {
-		return []interface{}{
-			func(status *Status, c fuzz.Continue) {
-				c.FuzzNoCustom(status) // fuzz the Status
-				status.SetConditions(testConditions)
-				pkgfuzzer.FuzzConditions(status, c)
-			},
-		}
-	},
-)
diff --git a/vendor/knative.dev/pkg/hack/tools.go b/vendor/knative.dev/pkg/hack/tools.go
index 22763c5a8..60a01af8b 100644
--- a/vendor/knative.dev/pkg/hack/tools.go
+++ b/vendor/knative.dev/pkg/hack/tools.go
@@ -27,6 +27,6 @@ import (
 	_ "k8s.io/code-generator/cmd/informer-gen"
 	_ "k8s.io/code-generator/cmd/lister-gen"
 
+	_ "knative.dev/hack"
 	_ "knative.dev/pkg/codegen/cmd/injection-gen"
-	_ "knative.dev/test-infra/scripts"
 )
diff --git a/vendor/knative.dev/pkg/hack/update-codegen.sh b/vendor/knative.dev/pkg/hack/update-codegen.sh
index 0743ad689..8ba165d1e 100644
--- a/vendor/knative.dev/pkg/hack/update-codegen.sh
+++ b/vendor/knative.dev/pkg/hack/update-codegen.sh
@@ -26,7 +26,7 @@ if [ -z "${GOPATH:-}" ]; then
   export GOPATH=$(go env GOPATH)
 fi
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/library.sh
+source $(dirname $0)/../vendor/knative.dev/hack/library.sh
 
 CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${REPO_ROOT_DIR}; ls -d -1 $(dirname $0)/../vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator)}
 
diff --git a/vendor/knative.dev/pkg/hack/update-deps.sh b/vendor/knative.dev/pkg/hack/update-deps.sh
index 0d69b87c8..68bfa5f6a 100644
--- a/vendor/knative.dev/pkg/hack/update-deps.sh
+++ b/vendor/knative.dev/pkg/hack/update-deps.sh
@@ -18,6 +18,6 @@ set -o errexit
 set -o nounset
 set -o pipefail
 
-source $(dirname "$0")/../vendor/knative.dev/test-infra/scripts/library.sh
+source $(dirname "$0")/../vendor/knative.dev/hack/library.sh
 
 go_update_deps "$@"
diff --git a/vendor/knative.dev/pkg/hack/verify-codegen.sh b/vendor/knative.dev/pkg/hack/verify-codegen.sh
index 055a1091a..59fbeea85 100644
--- a/vendor/knative.dev/pkg/hack/verify-codegen.sh
+++ b/vendor/knative.dev/pkg/hack/verify-codegen.sh
@@ -18,7 +18,7 @@ set -o errexit
 set -o nounset
 set -o pipefail
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/library.sh
+source $(dirname $0)/../vendor/knative.dev/hack/library.sh
 
 readonly TMP_DIFFROOT="$(mktemp -d ${REPO_ROOT_DIR}/tmpdiffroot.XXXXXX)"
 
diff --git a/vendor/knative.dev/pkg/logging/config.go b/vendor/knative.dev/pkg/logging/config.go
index 9f6183bdd..5162eec5c 100644
--- a/vendor/knative.dev/pkg/logging/config.go
+++ b/vendor/knative.dev/pkg/logging/config.go
@@ -238,13 +238,6 @@ func ConfigMapName() string {
 	return "config-logging"
 }
 
-// JsonToLoggingConfig converts a JSON string of a Config.
-// Always returns a non-nil Config.
-// TODO(vagababov): remove after downstream conversion.
-func JsonToLoggingConfig(jsonCfg string) (*Config, error) { //nolint No rename due to backwards incompatibility.
-	return JSONToConfig(jsonCfg)
-}
-
 // JSONToConfig converts a JSON string of a Config.
 // Always returns a non-nil Config.
 func JSONToConfig(jsonCfg string) (*Config, error) {
@@ -265,12 +258,6 @@ func JSONToConfig(jsonCfg string) (*Config, error) {
 	return cfg, nil
 }
 
-// LoggingConfigToJson converts a Config to a JSON string.
-// TODO(vagababov): remove after downstream conversion.
-func LoggingConfigToJson(cfg *Config) (string, error) { //nolint No rename due to backwards incompatibility.
-	return ConfigToJSON(cfg)
-}
-
 // ConfigToJSON  converts a Config to a JSON string.
 func ConfigToJSON(cfg *Config) (string, error) {
 	if cfg == nil || cfg.LoggingConfig == "" {
diff --git a/vendor/knative.dev/pkg/tracing/config/tracing.go b/vendor/knative.dev/pkg/tracing/config/tracing.go
index 0f635f42a..db60cf00b 100644
--- a/vendor/knative.dev/pkg/tracing/config/tracing.go
+++ b/vendor/knative.dev/pkg/tracing/config/tracing.go
@@ -134,12 +134,6 @@ func NewTracingConfigFromConfigMap(config *corev1.ConfigMap) (*Config, error) {
 	return NewTracingConfigFromMap(config.Data)
 }
 
-// JsonToTracingConfig converts a json string of a Config.
-// Returns a non-nil Config always and an eventual error.
-func JsonToTracingConfig(jsonCfg string) (*Config, error) { //nolint // for backcompat.
-	return JSONToTracingConfig(jsonCfg)
-}
-
 // JSONToTracingConfig converts a json string of a Config.
 // Returns a non-nil Config always and an eventual error.
 func JSONToTracingConfig(jsonCfg string) (*Config, error) {
@@ -159,11 +153,6 @@ func JSONToTracingConfig(jsonCfg string) (*Config, error) {
 	return cfg, nil
 }
 
-// TracingConfigToJson converts a Config to a json string.
-func TracingConfigToJson(cfg *Config) (string, error) { //nolint // for backcompat.
-	return TracingConfigToJSON(cfg)
-}
-
 func TracingConfigToJSON(cfg *Config) (string, error) { //nolint // for backcompat.
 	if cfg == nil {
 		return "", nil
diff --git a/vendor/modules.txt b/vendor/modules.txt
index b81fad3fa..76d07a2d6 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1068,7 +1068,7 @@ k8s.io/utils/buffer
 k8s.io/utils/integer
 k8s.io/utils/pointer
 k8s.io/utils/trace
-# knative.dev/eventing v0.18.1-0.20201027082733-0422b999bcda
+# knative.dev/eventing v0.18.1-0.20201027234734-7ba58ca471c0
 ## explicit
 knative.dev/eventing/pkg/adapter/v2
 knative.dev/eventing/pkg/adapter/v2/util/crstatusevent
@@ -1178,6 +1178,7 @@ knative.dev/eventing/test/lib/dropevents/dropeventsfibonacci
 knative.dev/eventing/test/lib/dropevents/dropeventsfirst
 knative.dev/eventing/test/lib/duck
 knative.dev/eventing/test/lib/recordevents
+knative.dev/eventing/test/lib/recordevents/logger_vent
 knative.dev/eventing/test/lib/recordevents/observer
 knative.dev/eventing/test/lib/recordevents/recorder_vent
 knative.dev/eventing/test/lib/resources
@@ -1194,7 +1195,10 @@ knative.dev/eventing/test/test_images/heartbeats
 knative.dev/eventing/test/test_images/performance
 knative.dev/eventing/test/test_images/print
 knative.dev/eventing/test/test_images/recordevents
-# knative.dev/pkg v0.0.0-20201027020033-875095c42ee0
+# knative.dev/hack v0.0.0-20201027221733-0d7f2f064b7b
+## explicit
+knative.dev/hack
+# knative.dev/pkg v0.0.0-20201028000034-e39bfc4544a8
 ## explicit
 knative.dev/pkg/apis
 knative.dev/pkg/apis/duck
@@ -1292,9 +1296,6 @@ knative.dev/pkg/webhook/resourcesemantics
 knative.dev/pkg/webhook/resourcesemantics/conversion
 knative.dev/pkg/webhook/resourcesemantics/defaulting
 knative.dev/pkg/webhook/resourcesemantics/validation
-# knative.dev/test-infra v0.0.0-20201026182042-46291de4ab66
-## explicit
-knative.dev/test-infra/scripts
 # sigs.k8s.io/structured-merge-diff/v3 v3.0.1-0.20200706213357-43c19bbb7fba
 sigs.k8s.io/structured-merge-diff/v3/value
 # sigs.k8s.io/yaml v1.2.0


Test patch:
diff --git a/.github/workflows/knative-go-test.yaml b/.github/workflows/knative-go-test.yaml
index 8810ba7db..9a77276c1 100644
--- a/.github/workflows/knative-go-test.yaml
+++ b/.github/workflows/knative-go-test.yaml
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # This file is automagically synced here from github.com/knative-sandbox/.github
-# repo by knobots: https://github.com/mattmoor/knobots and will be overwritten.
+# repo by knobots: https://github.com/knative-sandbox/knobots and will be overwritten.
 
 name: Test
 
diff --git a/pkg/apis/bindings/v1alpha1/kafka_conversion_test.go b/pkg/apis/bindings/v1alpha1/kafka_conversion_test.go
index c614f5807..215435191 100644
--- a/pkg/apis/bindings/v1alpha1/kafka_conversion_test.go
+++ b/pkg/apis/bindings/v1alpha1/kafka_conversion_test.go
@@ -147,6 +147,9 @@ func TestKafkaBindingConversionRoundTripV1alpha1(t *testing.T) {
 					Conditions: duckv1.Conditions{{
 						Type:   "Ready",
 						Status: "True",
+					}, {
+						Type:   "DoesNotReallyExistButHereItIsForTestingStatusCopy",
+						Status: "False",
 					}},
 					Annotations: map[string]string{
 						"foo": "bar",
@@ -285,6 +288,9 @@ func TestKafkaBindingConversionRoundTripV1beta1(t *testing.T) {
 					Conditions: duckv1.Conditions{{
 						Type:   "Ready",
 						Status: "True",
+					}, {
+						Type:   "DoesNotReallyExistButHereItIsForTestingStatusCopy",
+						Status: "False",
 					}},
 					Annotations: map[string]string{
 						"foo": "bar",
diff --git a/test/e2e-tests.sh b/test/e2e-tests.sh
index 14a9274d9..f2da2595e 100755
--- a/test/e2e-tests.sh
+++ b/test/e2e-tests.sh
@@ -25,7 +25,7 @@
 # project $PROJECT_ID, start Knative eventing system, install resources
 # in eventing-contrib, run the tests and delete the cluster.
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/e2e-tests.sh
+source $(dirname $0)/../vendor/knative.dev/hack/e2e-tests.sh
 
 # If gcloud is not available make it a no-op, not an error.
 which gcloud &> /dev/null || gcloud() { echo "[ignore-gcloud $*]" 1>&2; }
diff --git a/test/presubmit-tests.sh b/test/presubmit-tests.sh
index 93e12124c..a92fab196 100755
--- a/test/presubmit-tests.sh
+++ b/test/presubmit-tests.sh
@@ -21,6 +21,6 @@
 # Use the flags --build-tests, --unit-tests and --integration-tests
 # to run a specific set of tests.
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/presubmit-tests.sh
+source $(dirname $0)/../vendor/knative.dev/hack/presubmit-tests.sh
 
 main $@
diff --git a/vendor/knative.dev/eventing/test/e2e-common.sh b/vendor/knative.dev/eventing/test/e2e-common.sh
index 72bd6be62..8d7fd4fa2 100644
--- a/vendor/knative.dev/eventing/test/e2e-common.sh
+++ b/vendor/knative.dev/eventing/test/e2e-common.sh
@@ -18,7 +18,7 @@
 
 export GO111MODULE=on
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/e2e-tests.sh
+source $(dirname $0)/../vendor/knative.dev/hack/e2e-tests.sh
 
 # If gcloud is not available make it a no-op, not an error.
 which gcloud &>/dev/null || gcloud() { echo "[ignore-gcloud $*]" 1>&2; }
diff --git a/vendor/knative.dev/eventing/test/lib/client.go b/vendor/knative.dev/eventing/test/lib/client.go
index f70dae52c..5f19bfa35 100644
--- a/vendor/knative.dev/eventing/test/lib/client.go
+++ b/vendor/knative.dev/eventing/test/lib/client.go
@@ -24,6 +24,7 @@ import (
 	"fmt"
 	"testing"
 
+	"knative.dev/pkg/logging"
 	"knative.dev/pkg/system"
 
 	"github.com/pkg/errors"
@@ -57,6 +58,7 @@ type Client struct {
 	podsCreated []string
 
 	tracingEnv corev1.EnvVar
+	loggingEnv *corev1.EnvVar
 
 	cleanup func()
 }
@@ -104,6 +106,11 @@ func NewClient(configPath string, clusterName string, namespace string, t *testi
 		return nil, err
 	}
 
+	client.loggingEnv, err = getLoggingConfig(client.Kube)
+	if err != nil {
+		t.Log("Cannot retrieve the logging config map: ", err)
+	}
+
 	return client, nil
 }
 
@@ -150,3 +157,22 @@ func getTracingConfig(c kubernetes.Interface) (corev1.EnvVar, error) {
 
 	return corev1.EnvVar{Name: ti.ConfigTracingEnv, Value: configSerialized}, nil
 }
+
+func getLoggingConfig(c kubernetes.Interface) (*corev1.EnvVar, error) {
+	cm, err := c.CoreV1().ConfigMaps(system.Namespace()).Get(context.Background(), logging.ConfigMapName(), metav1.GetOptions{})
+	if err != nil {
+		return nil, fmt.Errorf("error while retrieving the %s config map: %+v", logging.ConfigMapName(), errors.WithStack(err))
+	}
+
+	config, err := logging.NewConfigFromMap(cm.Data)
+	if err != nil {
+		return nil, fmt.Errorf("error while parsing the %s config map: %+v", logging.ConfigMapName(), errors.WithStack(err))
+	}
+
+	configSerialized, err := logging.ConfigToJSON(config)
+	if err != nil {
+		return nil, fmt.Errorf("error while serializing the %s config map: %+v", logging.ConfigMapName(), errors.WithStack(err))
+	}
+
+	return &corev1.EnvVar{Name: ti.ConfigLoggingEnv, Value: configSerialized}, nil
+}
diff --git a/vendor/knative.dev/eventing/test/lib/creation.go b/vendor/knative.dev/eventing/test/lib/creation.go
index 69cc26290..8058cdb6c 100644
--- a/vendor/knative.dev/eventing/test/lib/creation.go
+++ b/vendor/knative.dev/eventing/test/lib/creation.go
@@ -751,7 +751,7 @@ func (c *Client) CreatePodOrFail(pod *corev1.Pod, options ...func(*corev1.Pod, *
 		}
 	}
 
-	c.applyTracingEnv(&pod.Spec)
+	c.applyAdditionalEnv(&pod.Spec)
 
 	err := reconciler.RetryUpdateConflicts(func(attempts int) (err error) {
 		c.T.Logf("Creating pod %+v", pod)
@@ -782,7 +782,7 @@ func (c *Client) CreateDeploymentOrFail(deploy *appsv1.Deployment, options ...fu
 		}
 	}
 
-	c.applyTracingEnv(&deploy.Spec.Template.Spec)
+	c.applyAdditionalEnv(&deploy.Spec.Template.Spec)
 
 	c.T.Logf("Creating deployment %+v", deploy)
 	if _, err := c.Kube.AppsV1().Deployments(deploy.Namespace).Create(context.Background(), deploy, metav1.CreateOptions{}); err != nil {
@@ -803,7 +803,7 @@ func (c *Client) CreateCronJobOrFail(cronjob *batchv1beta1.CronJob, options ...f
 		}
 	}
 
-	c.applyTracingEnv(&cronjob.Spec.JobTemplate.Spec.Template.Spec)
+	c.applyAdditionalEnv(&cronjob.Spec.JobTemplate.Spec.Template.Spec)
 
 	c.T.Logf("Creating cronjob %+v", cronjob)
 	if _, err := c.Kube.BatchV1beta1().CronJobs(cronjob.Namespace).Create(context.Background(), cronjob, metav1.CreateOptions{}); err != nil {
@@ -917,8 +917,11 @@ func (c *Client) CreateRBACResourcesForBrokers() {
 	)
 }
 
-func (c *Client) applyTracingEnv(pod *corev1.PodSpec) {
+func (c *Client) applyAdditionalEnv(pod *corev1.PodSpec) {
 	for i := 0; i < len(pod.Containers); i++ {
 		pod.Containers[i].Env = append(pod.Containers[i].Env, c.tracingEnv)
+		if c.loggingEnv != nil {
+			pod.Containers[i].Env = append(pod.Containers[i].Env, *c.loggingEnv)
+		}
 	}
 }
diff --git a/vendor/knative.dev/eventing/test/lib/dropevents/receiver.go b/vendor/knative.dev/eventing/test/lib/dropevents/receiver.go
index 4453b4f47..6b18f2be1 100644
--- a/vendor/knative.dev/eventing/test/lib/dropevents/receiver.go
+++ b/vendor/knative.dev/eventing/test/lib/dropevents/receiver.go
@@ -32,6 +32,20 @@ const (
 	NumberKey        = "NUMBER"
 )
 
+// count is only used for SKIP_ALGORITHM=Sequence.
+func SkipperAlgorithmWithCount(algorithm string, count uint64) Skipper {
+	switch algorithm {
+	case Fibonacci:
+		return &dropeventsfibonacci.Fibonacci{Prev: 1, Current: 1}
+
+	case Sequence:
+		return dropeventsfirst.First{N: count}
+
+	default:
+		panic("unknown algorithm: " + algorithm)
+	}
+}
+
 func SkipperAlgorithm(algorithm string) Skipper {
 
 	switch algorithm {
diff --git a/vendor/knative.dev/eventing/test/lib/recordevents/event_info.go b/vendor/knative.dev/eventing/test/lib/recordevents/event_info.go
index 4804a5353..e8e721fc4 100644
--- a/vendor/knative.dev/eventing/test/lib/recordevents/event_info.go
+++ b/vendor/knative.dev/eventing/test/lib/recordevents/event_info.go
@@ -42,6 +42,7 @@ type EventInfo struct {
 	Observer    string              `json:"observer,omitempty"`
 	Time        time.Time           `json:"time,omitempty"`
 	Sequence    uint64              `json:"sequence"`
+	Dropped     bool                `json:"dropped"`
 }
 
 // Pretty print the event. Meant for debugging.
@@ -69,6 +70,7 @@ func (ei *EventInfo) String() string {
 	sb.WriteString("--- Observer: '" + ei.Observer + "' ---\n")
 	sb.WriteString("--- Time: " + ei.Time.String() + " ---\n")
 	sb.WriteString(fmt.Sprintf("--- Sequence: %d ---\n", ei.Sequence))
+	sb.WriteString(fmt.Sprintf("--- Dropped: %v ---\n", ei.Dropped))
 	return sb.String()
 }
 
diff --git a/vendor/knative.dev/eventing/test/lib/recordevents/logger_vent/logger.go b/vendor/knative.dev/eventing/test/lib/recordevents/logger_vent/logger.go
new file mode 100644
index 000000000..95d7012f2
--- /dev/null
+++ b/vendor/knative.dev/eventing/test/lib/recordevents/logger_vent/logger.go
@@ -0,0 +1,27 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package logger_vent
+
+import "knative.dev/eventing/test/lib/recordevents"
+
+type Logger func(string, ...interface{})
+
+func (l Logger) Vent(observed recordevents.EventInfo) error {
+	l("Event: \n%s", observed.String())
+
+	return nil
+}
diff --git a/vendor/knative.dev/eventing/test/lib/recordevents/observer/observer.go b/vendor/knative.dev/eventing/test/lib/recordevents/observer/observer.go
index 9933542d9..58e40a1c5 100644
--- a/vendor/knative.dev/eventing/test/lib/recordevents/observer/observer.go
+++ b/vendor/knative.dev/eventing/test/lib/recordevents/observer/observer.go
@@ -19,9 +19,12 @@ package observer
 import (
 	"context"
 	"net/http"
+	"strings"
 	"sync/atomic"
 	"time"
 
+	"knative.dev/eventing/test/lib/dropevents"
+
 	cloudeventsbindings "github.com/cloudevents/sdk-go/v2/binding"
 	cloudeventshttp "github.com/cloudevents/sdk-go/v2/protocol/http"
 	"github.com/kelseyhightower/envconfig"
@@ -42,6 +45,7 @@ type Observer struct {
 	ctx       context.Context
 	seq       uint64
 	replyFunc func(context.Context, http.ResponseWriter, recordevents.EventInfo)
+	counter   *dropevents.CounterHandler
 }
 
 type envConfig struct {
@@ -63,6 +67,13 @@ type envConfig struct {
 	// This string to append in the data field in the reply, if enabled.
 	// This will threat the data as text/plain field
 	ReplyAppendData string `envconfig:"REPLY_APPEND_DATA" default:"" required:"false"`
+
+	// If events should be dropped, specify the strategy here.
+	SkipStrategy string `envconfig:"SKIP_ALGORITHM" default:"" required:"false"`
+
+	// If events should be dropped according to Linear policy, this controls
+	// how many events are dropped.
+	SkipCounter uint64 `envconfig:"SKIP_COUNTER" default:"0" required:"false"`
 }
 
 func NewFromEnv(ctx context.Context, eventLogs ...recordevents.EventLog) *Observer {
@@ -81,12 +92,25 @@ func NewFromEnv(ctx context.Context, eventLogs ...recordevents.EventLog) *Observ
 		logging.FromContext(ctx).Info("Observer won't reply with an event")
 		replyFunc = NoOpReply
 	}
+	var counter *dropevents.CounterHandler
+
+	if env.SkipStrategy != "" {
+		counter = &dropevents.CounterHandler{
+			Skipper: dropevents.SkipperAlgorithmWithCount(env.SkipStrategy, env.SkipCounter),
+		}
+	} else {
+		counter = &dropevents.CounterHandler{
+			// Don't skip anything, since count is 0. nop skipper.
+			Skipper: dropevents.SkipperAlgorithmWithCount(dropevents.Sequence, 0),
+		}
+	}
 
 	return &Observer{
 		Name:      env.ObserverName,
 		EventLogs: eventLogs,
 		ctx:       ctx,
 		replyFunc: replyFunc,
+		counter:   counter,
 	}
 }
 
@@ -119,29 +143,51 @@ func (o *Observer) ServeHTTP(writer http.ResponseWriter, request *http.Request)
 	defer m.Finish(nil)
 
 	event, eventErr := cloudeventsbindings.ToEvent(context.TODO(), m)
-	header := request.Header
+	headers := make(http.Header)
+	for k, v := range request.Header {
+		if !strings.HasPrefix(k, "Ce-") {
+			headers[k] = v
+		}
+	}
 	// Host header is removed from the request.Header map by net/http
 	if request.Host != "" {
-		header.Set("Host", request.Host)
+		headers.Set("Host", request.Host)
 	}
 
 	eventErrStr := ""
 	if eventErr != nil {
 		eventErrStr = eventErr.Error()
 	}
+
+	shouldSkip := o.counter.Skip()
+
 	eventInfo := recordevents.EventInfo{
 		Error:       eventErrStr,
 		Event:       event,
-		HTTPHeaders: header,
+		HTTPHeaders: headers,
 		Origin:      request.RemoteAddr,
 		Observer:    o.Name,
 		Time:        time.Now(),
 		Sequence:    atomic.AddUint64(&o.seq, 1),
+		Dropped:     shouldSkip,
+	}
+
+	// We still want to emit the event to make it easier to see what we had oberved, but
+	// we want to transform it a little bit before emitting so that it does not count
+	// as the real event that we want to emit.
+	if shouldSkip {
+		eventInfo.Event.SetType("dropped-" + eventInfo.Event.Type())
 	}
+
 	err := o.EventLogs.Vent(eventInfo)
 	if err != nil {
-		logging.FromContext(o.ctx).Warnw("Error while venting the recorded event", zap.Error(err))
+		logging.FromContext(o.ctx).Fatalw("Error while venting the recorded event", zap.Error(err))
 	}
 
-	o.replyFunc(o.ctx, writer, eventInfo)
+	if shouldSkip {
+		// Trigger a redelivery
+		writer.WriteHeader(http.StatusConflict)
+	} else {
+		o.replyFunc(o.ctx, writer, eventInfo)
+	}
 }
diff --git a/vendor/knative.dev/eventing/test/lib/recordevents/recorder_vent/constructor.go b/vendor/knative.dev/eventing/test/lib/recordevents/recorder_vent/constructor.go
index 157669e58..50c1acc3f 100644
--- a/vendor/knative.dev/eventing/test/lib/recordevents/recorder_vent/constructor.go
+++ b/vendor/knative.dev/eventing/test/lib/recordevents/recorder_vent/constructor.go
@@ -19,22 +19,16 @@ package recorder_vent
 import (
 	"context"
 	"log"
-	"math/rand"
 	"time"
 
 	"github.com/kelseyhightower/envconfig"
-	"k8s.io/apimachinery/pkg/api/errors"
-	restclient "k8s.io/client-go/rest"
 	"knative.dev/pkg/system"
 
-	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/watch"
 	"k8s.io/client-go/kubernetes/scheme"
-	"k8s.io/client-go/tools/record"
+	ref "k8s.io/client-go/tools/reference"
 
 	kubeclient "knative.dev/pkg/client/injection/kube/client"
-	"knative.dev/pkg/controller"
 	"knative.dev/pkg/logging"
 
 	"knative.dev/eventing/test/lib/recordevents"
@@ -70,86 +64,15 @@ func NewEventLog(ctx context.Context, agentName string, podName string) recordev
 
 	logging.FromContext(ctx).Infof("Going to send events to pod '%s' in namespace '%s'", on.Name, on.Namespace)
 
-	return &recorder{out: createRecorder(ctx, agentName), on: on}
-}
-
-func createRecorder(ctx context.Context, agentName string) record.EventRecorder {
-	logger := logging.FromContext(ctx)
-
-	recorder := controller.GetEventRecorder(ctx)
-	if recorder == nil {
-		// Create event broadcaster
-		logger.Debug("Creating event broadcaster")
-		eventBroadcaster := record.NewBroadcaster()
-		watches := []watch.Interface{
-			eventBroadcaster.StartLogging(logger.Named("event-broadcaster").Infof),
-			eventBroadcaster.StartEventWatcher(
-				sendToSink(ctx, kubeclient.Get(ctx).CoreV1().Events(system.Namespace()).CreateWithEventNamespace),
-			),
-		}
-		recorder = eventBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: agentName})
-		go func() {
-			<-ctx.Done()
-			for _, w := range watches {
-				w.Stop()
-			}
-			logging.FromContext(ctx).Debug("Closed event-broadcaster")
-		}()
-	}
-
-	return recorder
-}
-
-func sendToSink(ctx context.Context, sender func(*corev1.Event) (*corev1.Event, error)) func(*corev1.Event) {
-	return func(event *corev1.Event) {
-		tries := 0
-		for {
-			if recordEvent(ctx, sender, event) {
-				break
-			}
-			tries++
-			if tries >= maxRetry {
-				logging.FromContext(ctx).Errorf("Unable to write event '%s' (retry limit exceeded!)", event.Name)
-				break
-			}
-			// Randomize the first sleep so that various clients won't all be
-			// synced up if the master goes down.
-			if tries == 1 {
-				time.Sleep(time.Duration(float64(sleepDuration) * rand.Float64()))
-			} else {
-				time.Sleep(sleepDuration)
-			}
-		}
-	}
-}
-
-func recordEvent(ctx context.Context, sender func(*corev1.Event) (*corev1.Event, error), event *corev1.Event) bool {
-	newEv, err := sender(event)
-	if err == nil {
-		logging.FromContext(ctx).Infof("Event '%s' sent correctly, uuid: %s", newEv.Name, newEv.UID)
-		return true
+	reference, err := ref.GetReference(scheme.Scheme, on)
+	if err != nil {
+		logging.FromContext(ctx).Fatalf("Could not construct reference to: '%#v' due to: '%v'", on, err)
 	}
 
-	// If we can't contact the server, then hold everything while we keep trying.
-	// Otherwise, something about the event is malformed and we should abandon it.
-	switch err.(type) {
-	case *restclient.RequestConstructionError:
-		// We will construct the request the same next time, so don't keep trying.
-		logging.FromContext(ctx).Errorf("Unable to construct event '%s': '%v' (will not retry!)", event.Name, err)
-		return true
-	case *errors.StatusError:
-		if errors.IsAlreadyExists(err) {
-			logging.FromContext(ctx).Infof("Server rejected event '%s': '%v' (will not retry!)", event.Name, err)
-		} else {
-			logging.FromContext(ctx).Errorf("Server rejected event '%s': '%v' (will not retry!)", event.Name, err)
-		}
-		return true
-	case *errors.UnexpectedObjectError:
-		// We don't expect this; it implies the server's response didn't match a
-		// known pattern. Go ahead and retry.
-	default:
-		// This case includes actual http transport errors. Go ahead and retry.
+	return &recorder{
+		ctx:       ctx,
+		namespace: system.Namespace(),
+		agentName: agentName,
+		ref:       reference,
 	}
-	logging.FromContext(ctx).Errorf("Unable to write event: '%v' (may retry after sleeping)", err)
-	return false
 }
diff --git a/vendor/knative.dev/eventing/test/lib/recordevents/recorder_vent/recorder.go b/vendor/knative.dev/eventing/test/lib/recordevents/recorder_vent/recorder.go
index 9669741f9..117ac2df1 100644
--- a/vendor/knative.dev/eventing/test/lib/recordevents/recorder_vent/recorder.go
+++ b/vendor/knative.dev/eventing/test/lib/recordevents/recorder_vent/recorder.go
@@ -17,18 +17,28 @@ limitations under the License.
 package recorder_vent
 
 import (
+	"context"
 	"encoding/json"
+	"fmt"
+	"math/rand"
+	"time"
 
 	corev1 "k8s.io/api/core/v1"
-	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/client-go/tools/record"
+	apierrors "k8s.io/apimachinery/pkg/api/errors"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	restclient "k8s.io/client-go/rest"
+	kubeclient "knative.dev/pkg/client/injection/kube/client"
+	"knative.dev/pkg/logging"
 
 	"knative.dev/eventing/test/lib/recordevents"
 )
 
 type recorder struct {
-	out record.EventRecorder
-	on  runtime.Object
+	ctx       context.Context
+	namespace string
+	agentName string
+
+	ref *corev1.ObjectReference
 }
 
 func (r *recorder) Vent(observed recordevents.EventInfo) error {
@@ -36,8 +46,75 @@ func (r *recorder) Vent(observed recordevents.EventInfo) error {
 	if err != nil {
 		return err
 	}
+	message := string(b)
+
+	t := time.Now()
+	// Note: DO NOT SET EventTime, or you'll trigger k8s api server hilarity:
+	// - https://github.com/kubernetes/kubernetes/issues/95913
+	// - https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/core/validation/events.go#L122
+	event := &corev1.Event{
+		ObjectMeta: metav1.ObjectMeta{
+			Name:      fmt.Sprintf("%v.%d", r.ref.Name, observed.Sequence),
+			Namespace: r.namespace,
+		},
+		InvolvedObject: *r.ref,
+		Reason:         recordevents.CloudEventObservedReason,
+		Message:        message,
+		Source:         corev1.EventSource{Component: r.agentName},
+		FirstTimestamp: metav1.Time{Time: t},
+		LastTimestamp:  metav1.Time{Time: t},
+		Count:          1,
+		Type:           corev1.EventTypeNormal,
+	}
+
+	return r.recordEvent(event)
+}
+
+func (r *recorder) recordEvent(event *corev1.Event) error {
+	tries := 0
+	for {
+		done, err := r.trySendEvent(event)
+		if done {
+			return nil
+		}
+		tries++
+		if tries >= maxRetry {
+			logging.FromContext(r.ctx).Errorf("Unable to write event '%s' (retry limit exceeded!)", event.Name)
+			return err
+		}
+		// Randomize the first sleep so that various clients won't all be
+		// synced up if the master goes down.
+		if tries == 1 {
+			time.Sleep(time.Duration(float64(sleepDuration) * rand.Float64()))
+		} else {
+			time.Sleep(sleepDuration)
+		}
+	}
+}
 
-	r.out.Eventf(r.on, corev1.EventTypeNormal, recordevents.CloudEventObservedReason, "%s", string(b))
+func (r *recorder) trySendEvent(event *corev1.Event) (bool, error) {
+	newEv, err := kubeclient.Get(r.ctx).CoreV1().Events(r.namespace).CreateWithEventNamespace(event)
+	if err == nil {
+		logging.FromContext(r.ctx).Infof("Event '%s' sent correctly, uuid: %s", newEv.Name, newEv.UID)
+		return true, nil
+	}
 
-	return nil
+	// If we can't contact the server, then hold everything while we keep trying.
+	// Otherwise, something about the event is malformed and we should abandon it.
+	switch err.(type) {
+	case *restclient.RequestConstructionError:
+		// We will construct the request the same next time, so don't keep trying.
+		logging.FromContext(r.ctx).Errorf("Unable to construct event '%s': '%v' (will not retry!)", event.Name, err)
+		return true, err
+	case *apierrors.StatusError:
+		logging.FromContext(r.ctx).Errorf("Server rejected event '%s'. Reason: '%v' (will not retry!). Event: %v", event.Name, err, event)
+		return true, err
+	case *apierrors.UnexpectedObjectError:
+		// We don't expect this; it implies the server's response didn't match a
+		// known pattern. Go ahead and retry.
+	default:
+		// This case includes actual http transport errors. Go ahead and retry.
+	}
+	logging.FromContext(r.ctx).Errorf("Unable to write event: '%v' (may retry after sleeping)", err)
+	return false, err
 }
diff --git a/vendor/knative.dev/eventing/test/presubmit-tests.sh b/vendor/knative.dev/eventing/test/presubmit-tests.sh
index e4e33988d..2c53eb0d0 100644
--- a/vendor/knative.dev/eventing/test/presubmit-tests.sh
+++ b/vendor/knative.dev/eventing/test/presubmit-tests.sh
@@ -27,7 +27,7 @@ export DISABLE_MD_LINTING=1
 
 export GO111MODULE=on
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/presubmit-tests.sh
+source $(dirname $0)/../vendor/knative.dev/hack/presubmit-tests.sh
 
 # We use the default build, unit and integration test runners.
 
diff --git a/vendor/knative.dev/eventing/test/test_images/recordevents/main.go b/vendor/knative.dev/eventing/test/test_images/recordevents/main.go
index 38445c45b..cd95e9563 100644
--- a/vendor/knative.dev/eventing/test/test_images/recordevents/main.go
+++ b/vendor/knative.dev/eventing/test/test_images/recordevents/main.go
@@ -18,8 +18,6 @@ package main
 
 import (
 	"log"
-	"net/http"
-	"os"
 
 	"k8s.io/client-go/rest"
 	"knative.dev/pkg/injection"
@@ -27,7 +25,7 @@ import (
 	_ "knative.dev/pkg/system/testing"
 
 	"knative.dev/eventing/pkg/kncloudevents"
-	"knative.dev/eventing/test/lib/dropevents"
+	"knative.dev/eventing/test/lib/recordevents/logger_vent"
 	"knative.dev/eventing/test/lib/recordevents/observer"
 	"knative.dev/eventing/test/lib/recordevents/recorder_vent"
 	"knative.dev/eventing/test/test_images"
@@ -40,33 +38,18 @@ func main() {
 	}
 	//nolint // nil ctx is fine here, look at the code of EnableInjectionOrDie
 	ctx, _ := injection.EnableInjectionOrDie(nil, cfg)
+	ctx = test_images.ConfigureLogging(ctx, "recordevents")
 
 	if err := test_images.ConfigureTracing(logging.FromContext(ctx), ""); err != nil {
 		logging.FromContext(ctx).Fatal("Unable to setup trace publishing", err)
 	}
 
 	obs := observer.NewFromEnv(ctx,
+		logger_vent.Logger(logging.FromContext(ctx).Infof),
 		recorder_vent.NewFromEnv(ctx),
 	)
 
-	algorithm, ok := os.LookupEnv(dropevents.SkipAlgorithmKey)
-	if ok {
-		skipper := dropevents.SkipperAlgorithm(algorithm)
-		counter := dropevents.CounterHandler{
-			Skipper: skipper,
-		}
-		err = obs.Start(ctx, kncloudevents.CreateHandler, func(handler http.Handler) http.Handler {
-			return http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
-				if counter.Skip() {
-					writer.WriteHeader(http.StatusConflict)
-					return
-				}
-				handler.ServeHTTP(writer, request)
-			})
-		})
-	} else {
-		err = obs.Start(ctx, kncloudevents.CreateHandler)
-	}
+	err = obs.Start(ctx, kncloudevents.CreateHandler)
 
 	if err != nil {
 		logging.FromContext(ctx).Fatal("Error during start", err)
diff --git a/vendor/knative.dev/eventing/test/test_images/utils.go b/vendor/knative.dev/eventing/test/test_images/utils.go
index 0fce61f32..cafde8120 100644
--- a/vendor/knative.dev/eventing/test/test_images/utils.go
+++ b/vendor/knative.dev/eventing/test/test_images/utils.go
@@ -17,6 +17,7 @@ limitations under the License.
 package test_images
 
 import (
+	"context"
 	"net/http"
 	"os"
 	"strconv"
@@ -24,6 +25,7 @@ import (
 	"time"
 
 	"go.uber.org/zap"
+	"knative.dev/pkg/logging"
 	"knative.dev/pkg/tracing"
 	"knative.dev/pkg/tracing/config"
 )
@@ -37,6 +39,8 @@ func ParseHeaders(serializedHeaders string) http.Header {
 	return h
 }
 
+// ParseDurationStr parses `durationStr` as number of seconds (not time.Duration string),
+// if parsing fails, returns back default duration.
 func ParseDurationStr(durationStr string, defaultDuration int) time.Duration {
 	var duration time.Duration
 	if d, err := strconv.Atoi(durationStr); err != nil {
@@ -47,7 +51,10 @@ func ParseDurationStr(durationStr string, defaultDuration int) time.Duration {
 	return duration
 }
 
-const ConfigTracingEnv = "K_CONFIG_TRACING"
+const (
+	ConfigTracingEnv = "K_CONFIG_TRACING"
+	ConfigLoggingEnv = "K_CONFIG_LOGGING"
+)
 
 // ConfigureTracing can be used in test-images to configure tracing
 func ConfigureTracing(logger *zap.SugaredLogger, serviceName string) error {
@@ -64,3 +71,15 @@ func ConfigureTracing(logger *zap.SugaredLogger, serviceName string) error {
 
 	return tracing.SetupStaticPublishing(logger, serviceName, conf)
 }
+
+// ConfigureTracing can be used in test-images to configure tracing
+func ConfigureLogging(ctx context.Context, name string) context.Context {
+	loggingEnv := os.Getenv(ConfigLoggingEnv)
+	conf, err := logging.JSONToConfig(loggingEnv)
+	if err != nil {
+		logging.FromContext(ctx).Warn("Error while trying to read the config logging env: ", err)
+		return ctx
+	}
+	l, _ := logging.NewLoggerFromConfig(conf, name)
+	return logging.WithLogger(ctx, l)
+}
diff --git a/vendor/knative.dev/test-infra/LICENSE b/vendor/knative.dev/hack/LICENSE
similarity index 99%
rename from vendor/knative.dev/test-infra/LICENSE
rename to vendor/knative.dev/hack/LICENSE
index d64569567..261eeb9e9 100644
--- a/vendor/knative.dev/test-infra/LICENSE
+++ b/vendor/knative.dev/hack/LICENSE
@@ -1,4 +1,3 @@
-
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
diff --git a/vendor/knative.dev/test-infra/scripts/README.md b/vendor/knative.dev/hack/README.md
similarity index 91%
rename from vendor/knative.dev/test-infra/scripts/README.md
rename to vendor/knative.dev/hack/README.md
index 1f3aa6f70..af2cbc657 100644
--- a/vendor/knative.dev/test-infra/scripts/README.md
+++ b/vendor/knative.dev/hack/README.md
@@ -1,7 +1,7 @@
-# Helper scripts
+# knative.dev/hack
 
-This directory contains helper scripts used by Prow test jobs, as well as local
-development scripts.
+`hack` is a collection of scripts used to bootstrap CI processes and other vital
+entrypoint functionallity.
 
 ## Using the `presubmit-tests.sh` helper script
 
@@ -19,13 +19,13 @@ This is a helper script to run the presubmit tests. To use it:
 
    The markdown link checker tool doesn't check `localhost` links by default.
    Its configuration file, `markdown-link-check-config.json`, lives in the
-   `test-infra/scripts` directory. To override it, create a file with the same
-   name, containing the custom config in the `/test` directory.
+   `hack` directory. To override it, create a file with the same name,
+   containing the custom config in the `/test` directory.
 
    The markdown lint tool ignores long lines by default. Its configuration file,
-   `markdown-lint-config.rc`, lives in the `test-infra/scripts` directory. To
-   override it, create a file with the same name, containing the custom config
-   in the `/test` directory.
+   `markdown-lint-config.rc`, lives in the `hack` repo. To override it, create a
+   file with the same name, containing the custom config in the `/test`
+   directory.
 
 1. [optional] Customize the default build test runner, if you're using it. Set
    the following environment variables if the default values don't fit your
@@ -85,7 +85,7 @@ skipped.
 ### Sample presubmit test script
 
 ```bash
-source vendor/knative.dev/test-infra/scripts/presubmit-tests.sh
+source vendor/knative.dev/hack/presubmit-tests.sh
 
 function post_build_tests() {
   echo "Cleaning up after build tests"
@@ -176,7 +176,7 @@ test cluster is created in a specific region, `us-west2`.
 
 ```bash
 
-source vendor/knative.dev/test-infra/scripts/e2e-tests.sh
+source vendor/knative.dev/hack/e2e-tests.sh
 
 function knative_setup() {
   start_latest_knative_serving
@@ -247,7 +247,7 @@ benchmarking jobs for each repo. To use it:
 This script will update `Knative serving` and the given benchmark.
 
 ```bash
-source vendor/knative.dev/test-infra/scripts/performance-tests.sh
+source vendor/knative.dev/hack/performance-tests.sh
 
 function update_knative() {
   echo ">> Updating serving"
@@ -322,7 +322,7 @@ This is a helper script for Knative release scripts. To use it:
 ### Sample release script
 
 ```bash
-source vendor/knative.dev/test-infra/scripts/release.sh
+source vendor/knative.dev/hack/release.sh
 
 function build_release() {
   # config/ contains the manifests
@@ -332,3 +332,14 @@ function build_release() {
 
 main "$@"
 ```
+
+# Origins of `hack`
+
+When Kubernetes was first getting started, someone was trying to introduce some
+quick shell scripts and land them into the `./scripts` folder. But there was one
+that opposed this: Ville Aikas. The compromise was to put those quick scripts in
+a folder called `hack` to remind users and developers that there is likely a
+better way to perform the task you are attempting that is not using a shell
+script, like a tested python script.
+
+> "I was like fine, put them in hack not scripts, cause they are hacks." - Ville Aikas
diff --git a/vendor/knative.dev/test-infra/scripts/dummy.go b/vendor/knative.dev/hack/hack.go
similarity index 74%
rename from vendor/knative.dev/test-infra/scripts/dummy.go
rename to vendor/knative.dev/hack/hack.go
index 82c9edfa9..689d1471a 100644
--- a/vendor/knative.dev/test-infra/scripts/dummy.go
+++ b/vendor/knative.dev/hack/hack.go
@@ -1,5 +1,7 @@
+// +build hack
+
 /*
-Copyright 2018 The Knative Authors
+Copyright 2020 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -14,6 +16,7 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
-// Package scripts is a placeholder that allows us to pull the shell scripts
-// via go mod vendor.
-package scripts
+// package hack is a collection of scripts used to bootstrap CI processes and
+// other vital entrypoint functionallity.
+
+package hack
diff --git a/vendor/knative.dev/test-infra/scripts/infra-library.sh b/vendor/knative.dev/hack/infra-library.sh
similarity index 100%
rename from vendor/knative.dev/test-infra/scripts/infra-library.sh
rename to vendor/knative.dev/hack/infra-library.sh
diff --git a/vendor/knative.dev/test-infra/scripts/library.sh b/vendor/knative.dev/hack/library.sh
similarity index 97%
rename from vendor/knative.dev/test-infra/scripts/library.sh
rename to vendor/knative.dev/hack/library.sh
index 0dbe50021..10220e298 100644
--- a/vendor/knative.dev/test-infra/scripts/library.sh
+++ b/vendor/knative.dev/hack/library.sh
@@ -557,11 +557,7 @@ function go_update_deps() {
   echo "--- Removing unwanted vendor files"
 
   # Remove unwanted vendor files
-  find vendor/ \( -name "OWNERS" \
-    -o -name "OWNERS_ALIASES" \
-    -o -name "BUILD" \
-    -o -name "BUILD.bazel" \
-    -o -name "*_test.go" \) -exec rm -f {} +
+  find vendor/ \( -name "OWNERS" -o -name "OWNERS_ALIASES" -o -name "BUILD" -o -name "BUILD.bazel" -o -name "*_test.go" \) -print0 | xargs -0 rm -f
 
   export GOFLAGS=-mod=vendor
 
@@ -575,16 +571,10 @@ function go_update_deps() {
 # Run kntest tool, error out and ask users to install it if it's not currently installed.
 # Parameters: $1..$n - parameters passed to the tool.
 function run_kntest() {
-  # If the current repo is test-infra, run kntest from source.
-  if [[ "${REPO_NAME}" == "test-infra" ]]; then
-    go run "${REPO_ROOT_DIR}"/kntest/cmd/kntest "$@"
-  # Otherwise kntest must be installed.
-  else
-    if [[ ! -x "$(command -v kntest)" ]]; then
-      echo "--- FAIL: kntest not installed, please clone test-infra repo and run \`go install ./kntest/cmd/kntest\` to install it"; return 1;
-    fi
-    kntest "$@"
+  if [[ ! -x "$(command -v kntest)" ]]; then
+    echo "--- FAIL: kntest not installed, please clone knative test-infra repo and run \`go install ./kntest/cmd/kntest\` to install it"; return 1;
   fi
+  kntest "$@"
 }
 
 # Run go-licenses to update licenses.
diff --git a/vendor/knative.dev/test-infra/scripts/performance-tests.sh b/vendor/knative.dev/hack/performance-tests.sh
similarity index 100%
rename from vendor/knative.dev/test-infra/scripts/performance-tests.sh
rename to vendor/knative.dev/hack/performance-tests.sh
diff --git a/vendor/knative.dev/test-infra/scripts/presubmit-tests.sh b/vendor/knative.dev/hack/presubmit-tests.sh
similarity index 100%
rename from vendor/knative.dev/test-infra/scripts/presubmit-tests.sh
rename to vendor/knative.dev/hack/presubmit-tests.sh
diff --git a/vendor/knative.dev/test-infra/scripts/release.sh b/vendor/knative.dev/hack/release.sh
similarity index 99%
rename from vendor/knative.dev/test-infra/scripts/release.sh
rename to vendor/knative.dev/hack/release.sh
index bd05ed8bc..4dcfa9158 100644
--- a/vendor/knative.dev/test-infra/scripts/release.sh
+++ b/vendor/knative.dev/hack/release.sh
@@ -100,6 +100,8 @@ ARTIFACTS_TO_PUBLISH=""
 FROM_NIGHTLY_RELEASE=""
 FROM_NIGHTLY_RELEASE_GCS=""
 export KO_DOCKER_REPO="gcr.io/knative-nightly"
+# Build stripped binary to reduce size
+export GOFLAGS="-ldflags=-s -ldflags=-w"
 export GITHUB_TOKEN=""
 
 # Convenience function to run the hub tool.
diff --git a/vendor/knative.dev/pkg/test/presubmit-tests.sh b/vendor/knative.dev/pkg/test/presubmit-tests.sh
index af8199dd0..dcae993bc 100644
--- a/vendor/knative.dev/pkg/test/presubmit-tests.sh
+++ b/vendor/knative.dev/pkg/test/presubmit-tests.sh
@@ -24,7 +24,7 @@ export DISABLE_MD_LINTING=1
 
 export GO111MODULE=on
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/presubmit-tests.sh
+source $(dirname $0)/../vendor/knative.dev/hack/presubmit-tests.sh
 
 # TODO(#17): Write integration tests.
 
diff --git a/vendor/knative.dev/pkg/test/test-reconciler-codegen.sh b/vendor/knative.dev/pkg/test/test-reconciler-codegen.sh
index cf7f5dfdb..c6bb3e20c 100644
--- a/vendor/knative.dev/pkg/test/test-reconciler-codegen.sh
+++ b/vendor/knative.dev/pkg/test/test-reconciler-codegen.sh
@@ -18,7 +18,7 @@ set -o errexit
 set -o nounset
 set -o pipefail
 
-source $(dirname $0)/../vendor/knative.dev/test-infra/scripts/library.sh
+source $(dirname $0)/../vendor/knative.dev/hack/library.sh
 
 CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${REPO_ROOT_DIR}; ls -d -1 $(dirname $0)/../vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator)}
 KNATIVE_CODEGEN_PKG=${KNATIVE_CODEGEN_PKG:-$(cd ${REPO_ROOT_DIR}; ls -d -1 $(dirname $0)/../vendor/knative.dev/pkg 2>/dev/null || echo ../pkg)}
diff --git a/vendor/knative.dev/test-infra/scripts/update-test-infra.sh b/vendor/knative.dev/test-infra/scripts/update-test-infra.sh
deleted file mode 100644
index d443f3c20..000000000
--- a/vendor/knative.dev/test-infra/scripts/update-test-infra.sh
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright 2020 The Knative Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -e
-
-# This script updates test-infra scripts in-repo.
-# Run it to update (usually from hack/update-deps.sh) the current scripts.
-# Scripts are installed to REPO_ROOT/scripts/test-infra
-
-# The following arguments are accepted:
-# --update
-#  Do the update
-# --ref X
-#  Defines which ref (branch, tag, commit) of test-infra to get scripts from; defaults to master
-# --first-time
-#  Run this script from your repo root directory to install scripts for the first time
-#  Will also sed -i non-vendor scripts in the current repo to point to new path
-# TODO: --verify
-#  Verify the contents of scripts/test-infra match the contents from commit sha in scripts/test-infra/COMMIT
-#  One can verify manually by running the script with '--ref $(cat scripts/test-infra/COMMIT)' and ensuring no files are staged
-
-declare -i FIRST_TIME_SETUP=0
-declare -i DO_UPDATE=0
-declare SCRIPTS_REF=master
-
-while [[ $# -ne 0 ]]; do
-  parameter="$1"
-  case ${parameter} in
-    --ref)
-      shift
-      SCRIPTS_REF="$1"
-      ;;
-    --first-time)
-      FIRST_TIME_SETUP=1
-      ;;
-    --update)
-      DO_UPDATE=1
-      ;;
-    *)
-      echo "unknown option ${parameter}"
-      exit 1
-      ;;
-  esac
-  shift
-done
-
-function do_read_tree() {
-    mkdir -p scripts/test-infra
-    git read-tree --prefix=scripts/test-infra -u "test-infra/${SCRIPTS_REF}:scripts"
-    git show-ref -s -- "refs/remotes/test-infra/${SCRIPTS_REF}" > scripts/test-infra/COMMIT
-    git add scripts/test-infra/COMMIT
-    echo "test-infra scripts installed to scripts/test-infra from branch ${SCRIPTS_REF}"
-}
-
-function run() {
-  if (( FIRST_TIME_SETUP )); then
-    if [[ ! -d .git ]]; then
-      echo "I don't believe you are in a repo root; exiting"
-      exit 5
-    fi
-    git remote add test-infra https://github.com/knative/test-infra.git || echo "test-infra remote already set; not changing"
-    git fetch test-infra "${SCRIPTS_REF}"
-    do_read_tree
-    echo "Attempting to point all scripts to use this new path"
-    grep -RiIl vendor/knative.dev/test-infra | grep -v ^vendor | grep -v ^scripts/test-infra | xargs sed -i 's+vendor/knative.dev/test-infra/scripts+scripts/test-infra+'
-  elif (( DO_UPDATE )); then
-    pushd "$(dirname "${BASH_SOURCE[0]}")/../.."
-    trap popd EXIT
-
-    git remote add test-infra https://github.com/knative/test-infra.git || true
-    git fetch test-infra "${SCRIPTS_REF}"
-    git rm -fr scripts/test-infra
-    rm -fR scripts/test-infra
-    do_read_tree
-  fi
-}
-
-run