Repository: jenkins-x/lighthouse
Pull request #1215 (2021-01-20 12:11:54)

fix: add support for better step composition
using the `image: uses:sourceURI` syntax using a similar approach to GitHub Actions for reusing versioned steps from git

see the [documentation for details](https://github.com/jstrachan/lighthouse/blob/tekton-actions/docs/pipelines.md)

jenkins-x-bot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by:
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **jstrachan**
You can assign the PR to them by writing `/assign @jstrachan` 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=jenkins-x%2Flighthouse).

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

- **[OWNERS](https://github.com/jenkins-x/lighthouse/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":["jstrachan"]} -->
jenkins-x-bot: @jstrachan: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pr-build | 6e3660d61214f6eb098dc85377036544127347c2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/1) | `/test pr-build`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pr-build | 6e3660d61214f6eb098dc85377036544127347c2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/1) | `/test pr-build`
bbs | 6e3660d61214f6eb098dc85377036544127347c2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/3) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pr-build | 6e3660d61214f6eb098dc85377036544127347c2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/1) | `/test pr-build`
bbs | 6e3660d61214f6eb098dc85377036544127347c2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/3) | `/test bbs`
ghe | 6e3660d61214f6eb098dc85377036544127347c2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/2) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 6e3660d61214f6eb098dc85377036544127347c2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/3) | `/test bbs`
ghe | 6e3660d61214f6eb098dc85377036544127347c2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/2) | `/test ghe`
jenkins | 9cdbeb9aa2fefada8f9e6527af82cc191b1a1ca8 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/9) | `/test jenkins`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | 6e3660d61214f6eb098dc85377036544127347c2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/2) | `/test ghe`
jenkins | 9cdbeb9aa2fefada8f9e6527af82cc191b1a1ca8 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/9) | `/test jenkins`
bbs | 9cdbeb9aa2fefada8f9e6527af82cc191b1a1ca8 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/8) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
jenkins | 9cdbeb9aa2fefada8f9e6527af82cc191b1a1ca8 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/9) | `/test jenkins`
bbs | 9cdbeb9aa2fefada8f9e6527af82cc191b1a1ca8 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/8) | `/test bbs`
ghe | 9cdbeb9aa2fefada8f9e6527af82cc191b1a1ca8 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/6) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pr-build | bcb8d9e170de0577357bb5a73219036cbc958184 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/17) | `/test pr-build`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pr-build | bcb8d9e170de0577357bb5a73219036cbc958184 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/17) | `/test pr-build`
jenkins | bcb8d9e170de0577357bb5a73219036cbc958184 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/19) | `/test jenkins`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
jenkins | bcb8d9e170de0577357bb5a73219036cbc958184 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/19) | `/test jenkins`
pr-build | a79c35bf670c369996493775c65edf0166172dcc | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/21) | `/test pr-build`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pr-build | a79c35bf670c369996493775c65edf0166172dcc | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/21) | `/test pr-build`
jenkins | a79c35bf670c369996493775c65edf0166172dcc | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/24) | `/test jenkins`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pr-build | a79c35bf670c369996493775c65edf0166172dcc | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/21) | `/test pr-build`
jenkins | a79c35bf670c369996493775c65edf0166172dcc | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/24) | `/test jenkins`
ghe | a79c35bf670c369996493775c65edf0166172dcc | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/22) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
jenkins | a79c35bf670c369996493775c65edf0166172dcc | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/24) | `/test jenkins`
ghe | bcb8d9e170de0577357bb5a73219036cbc958184 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/16) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
jenkins | a79c35bf670c369996493775c65edf0166172dcc | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/24) | `/test jenkins`
ghe | bcb8d9e170de0577357bb5a73219036cbc958184 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/16) | `/test ghe`
bbs | bcb8d9e170de0577357bb5a73219036cbc958184 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/18) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | bcb8d9e170de0577357bb5a73219036cbc958184 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/16) | `/test ghe`
bbs | a79c35bf670c369996493775c65edf0166172dcc | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/23) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following test **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | 51e66b1d04841bf457f846a1a26667c445e22b82 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/31) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | 51e66b1d04841bf457f846a1a26667c445e22b82 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/31) | `/test ghe`
bbs | 51e66b1d04841bf457f846a1a26667c445e22b82 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/33) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | 51e66b1d04841bf457f846a1a26667c445e22b82 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/31) | `/test ghe`
bbs | 74612cdd2261345136e192c9f300de2a1b96b60b | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/38) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 74612cdd2261345136e192c9f300de2a1b96b60b | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/38) | `/test bbs`
ghe | 74612cdd2261345136e192c9f300de2a1b96b60b | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/37) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jstrachan: /test ghe
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 74612cdd2261345136e192c9f300de2a1b96b60b | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/38) | `/test bbs`
ghe | 74612cdd2261345136e192c9f300de2a1b96b60b | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/41) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 74612cdd2261345136e192c9f300de2a1b96b60b | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/38) | `/test bbs`
ghe | acf031e1124d3e272a56d509258e80e1d4d80994 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/43) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | acf031e1124d3e272a56d509258e80e1d4d80994 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/43) | `/test ghe`
bbs | acf031e1124d3e272a56d509258e80e1d4d80994 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/44) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | acf031e1124d3e272a56d509258e80e1d4d80994 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/43) | `/test ghe`
bbs | acf031e1124d3e272a56d509258e80e1d4d80994 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/44) | `/test bbs`
pr-build | acf031e1124d3e272a56d509258e80e1d4d80994 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/42) | `/test pr-build`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | acf031e1124d3e272a56d509258e80e1d4d80994 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/44) | `/test bbs`
pr-build | acf031e1124d3e272a56d509258e80e1d4d80994 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/42) | `/test pr-build`
ghe | 15ce31ac3bd3d4cf7fba2eefdff533665947f4fe | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/48) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pr-build | acf031e1124d3e272a56d509258e80e1d4d80994 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/42) | `/test pr-build`
ghe | 15ce31ac3bd3d4cf7fba2eefdff533665947f4fe | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/48) | `/test ghe`
bbs | 15ce31ac3bd3d4cf7fba2eefdff533665947f4fe | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/49) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jstrachan: /test ghe
jstrachan: /test bbs
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 15ce31ac3bd3d4cf7fba2eefdff533665947f4fe | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/49) | `/test bbs`
ghe | 15ce31ac3bd3d4cf7fba2eefdff533665947f4fe | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/52) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | 15ce31ac3bd3d4cf7fba2eefdff533665947f4fe | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/52) | `/test ghe`
bbs | 15ce31ac3bd3d4cf7fba2eefdff533665947f4fe | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/53) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | 15ce31ac3bd3d4cf7fba2eefdff533665947f4fe | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/52) | `/test ghe`
bbs | 888c94ced5b053bb5cca2eb5c3293912628b65f6 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/56) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 888c94ced5b053bb5cca2eb5c3293912628b65f6 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/56) | `/test bbs`
ghe | 888c94ced5b053bb5cca2eb5c3293912628b65f6 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/54) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 888c94ced5b053bb5cca2eb5c3293912628b65f6 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/56) | `/test bbs`
ghe | 888c94ced5b053bb5cca2eb5c3293912628b65f6 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/54) | `/test ghe`
jenkins | 888c94ced5b053bb5cca2eb5c3293912628b65f6 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/57) | `/test jenkins`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
jenkins | 888c94ced5b053bb5cca2eb5c3293912628b65f6 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/57) | `/test jenkins`
bbs | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/61) | `/test bbs`
ghe | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/60) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jstrachan: /test ghe
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/61) | `/test bbs`
ghe | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/64) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jstrachan: /test ghe
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/61) | `/test bbs`
ghe | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/65) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jstrachan: /test ghe
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/61) | `/test bbs`
ghe | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/66) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jstrachan: /retest 
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/66) | `/test ghe`
bbs | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/68) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/68) | `/test bbs`
ghe | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/67) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
ghe | 1ad70a177f65b839aa1b4311104172155d8ccefa | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/67) | `/test ghe`
bbs | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/71) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/71) | `/test bbs`
ghe | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/70) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/71) | `/test bbs`
ghe | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/70) | `/test ghe`
jenkins | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/72) | `/test jenkins`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jstrachan: /retest
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/71) | `/test bbs`
ghe | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/70) | `/test ghe`
jenkins | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/76) | `/test jenkins`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
jenkins | dfe984b06bf393b3ff742abe53bc993664c1b967 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/76) | `/test jenkins`
pr-build | f311c3a01bd355745c591b67211502d1325c00b2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/82) | `/test pr-build`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pr-build | f311c3a01bd355745c591b67211502d1325c00b2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/82) | `/test pr-build`
jenkins | 53956528aae654464ae7cd88574299a1c56a00f9 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/90) | `/test jenkins`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
jenkins | 53956528aae654464ae7cd88574299a1c56a00f9 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/90) | `/test jenkins`
bbs | 098cb754c62e34706ca596f0b4d8cfaed08cff21 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/79) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jstrachan: /test jenkins
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
jenkins | 53956528aae654464ae7cd88574299a1c56a00f9 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/90) | `/test jenkins`
bbs | f311c3a01bd355745c591b67211502d1325c00b2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/84) | `/test bbs`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
bbs | f311c3a01bd355745c591b67211502d1325c00b2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/84) | `/test bbs`
jenkins | 53956528aae654464ae7cd88574299a1c56a00f9 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/92) | `/test jenkins`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
jstrachan: /retest
jenkins-x-bot: @jstrachan: The following tests **failed**, say `/retest` to rerun them all:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
jenkins | 53956528aae654464ae7cd88574299a1c56a00f9 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/92) | `/test jenkins`
ghe | f311c3a01bd355745c591b67211502d1325c00b2 | [link](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215/83) | `/test ghe`

[View all Builds for this Pull Request](https://dashboard-jx.jenkins-x.live/teams/jx/projects/jenkins-x/lighthouse/PR-1215) 

<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 [jenkins-x/lighthouse](https://github.com/jenkins-x/lighthouse/issues/new?title=Command%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
rawlingsj: /lgtm
jenkins-x-bot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *[rawlingsj](https://github.com/jenkins-x/lighthouse/pull/1215#issuecomment-765376478 "LGTM")*

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

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

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

- ~~[OWNERS](https://github.com#issuecomment-765376478/jenkins-x/lighthouse/blob/master/OWNERS)~~ [rawlingsj]

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":[]} -->

Patch:
diff --git a/docs/pipelines.md b/docs/pipelines.md
new file mode 100644
index 00000000..85aeca24
--- /dev/null
+++ b/docs/pipelines.md
@@ -0,0 +1,229 @@
+# Configuring Pipelines
+
+We want to make it easy to configure pipelines inside each git repository. We also want to make it easy to share pipelines across 
+
+## In Repo configuration
+
+If your repository is configured in lighthouse for in repo so that your repository `myorg/myowner` appears in the configuration like this:
+
+
+```yaml 
+branch-protection:
+  protect-tested-repos: true
+github:
+  LinkURL: null
+in_repo_config:
+  enabled:
+    ...
+    myorg/myowner: true
+    ...
+```
+
+Then lighthouse will find all of the `.lighthouse/*/triggers.yaml` files and use those to setup `presubmits` and `postsubmits`.
+
+
+## Using existing pipeline tasks and steps
+
+### Using a versioned `Task` / `Pipeline` / `PipelineRun`
+
+Inside the `triggers.yaml` you can use the `source` property to reference a local file or a versioned file in git
+
+```yaml
+  presubmits:
+  # use a local file
+  - name: local-file
+    source: pullrequest.yaml
+    
+  # use any URL  
+  - name: url
+    source: https://foo.bar.com/something/mytask.yaml
+   
+  # use a git URI with version information  
+  - name: git
+    source: jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+```
+
+That is a good approach for referencing a versioned `Task` / `Pipeline` / `PipelineRun` but it doesn't offer any ability to make local changes or reuse individual steps.
+
+
+### Source URI
+
+The source URI syntax we use is:
+        
+* treat it as a URL if it can be parsed as a URL (e.g. it contains `https://` or `http://`)
+* if the string contains `@` then it's a git URI of the form: `owner/repository/pathToFile@versionBranchOrSha`
+  * you can use `@HEAD` to mean the latest version from the main branch
+  * you can use `@versionStream` to mean the git SHA of this git repository configured inside your version stream if available; otherwise it defaults to `@HEAD`  
+* otherwise assume the path is a local relative file in git
+
+
+### Referencing Steps inside a `Task` / `Pipeline` / `PipelineRun`
+
+With this approach we reference a `Task` / `Pipeline` / `PipelineRun` inside a single Step using the following syntax.
+
+This borrows on the idea from [ko](https://github.com/google/ko) and [mink](https://github.com/mattmoor/mink) of reusing the **source URI** in the `image:` property using the special **uses:** prefix. 
+
+So we use `image: uses:sourceURI` to enable including versioned steps inside a `Task` / `Pipeline` / `PipelineRun` :
+     
+```yaml 
+steps:
+
+# use a local file
+- image: uses:pullrequest.yaml 
+
+# use a URL 
+- image: uses:https://foo.bar.com/something/mytask.yaml 
+
+# use a git URI with version information
+- image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+```
+
+e.g. here is [an example](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/source.yaml#L8) which generates this [PipelineRun](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/expected.yaml#L154)
+
+### Referencing named steps
+
+But what if we want to override / customise a specific step or add extra steps before, after or in between?
+
+If we include the `name:`  property we can list each individual step to import (and change the order if required).
+
+```yaml 
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        steps:
+        - image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+          name: jx-variables
+        - image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+          name: build-npm-install
+        - image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+          name: build-npm-test
+        - image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+          name: build-container-build
+        - image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+          name: promote-jx-preview
+```
+        
+
+### Concise syntax 
+
+Copying the `image: uses:` line for every step can be a little noisy so you can use the more concise format where you use the `stepTemplate.image` to configure the uses image. 
+
+Then any step which does not have an image will default to reuse the `stepTemplate.image` value:
+
+
+```yaml 
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        stepTemplate:
+          image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+        steps:
+        - name: jx-variables
+        - name: build-npm-install
+        - name: build-npm-test
+        - name: build-container-build
+        - name: promote-jx-preview
+```
+
+
+e.g. here is [an example](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/source.yaml#L8) which uses different URI formats and generates this [PipelineRun](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/expected.yaml#L154)
+
+
+#### Including new steps in between
+
+You can then add extra steps in between these `uses:` steps if you wish to customise the steps in any way - e.g. see `my-prefix-step` which has an explicit `image:` value so isn't inherited from the `stepTemplate.image`
+
+
+```yaml 
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        stepTemplate:
+          image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+        steps:
+        - image: node:12-slim
+          name: my-prefix-step
+          script: |
+            #!/bin/sh
+            npm something        
+        - name: jx-variables
+        - name: build-npm-install
+        - name: build-npm-test
+        - name: build-container-build
+        - name: promote-jx-preview
+```
+
+e.g. here is [an example](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/source.yaml#L8) which generates this [PipelineRun](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/expected.yaml#L154)
+
+
+
+#### Overriding steps
+
+You may wish to modify a step while still reusing the volumes, environment variables and so forth. e.g. to modify just the command line you can do the following:
+
+```yaml 
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        steps:
+        - image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@v1.2.3
+          name: jx-variables
+          script: |
+            #!/usr/bin/env sh
+            echo my replacement command script goes here
+```
+
+Any extra properties in the steps are used to override the underlying uses step.
+
+If you wish to change the `image:`  then currently just copy and paste the entire step inline in your task.
+
+e.g. here is [an example](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/source.yaml#L8) which generates this [PipelineRun](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/expected.yaml#L154)
+
+
+#### Including multiple copies of a step
+
+You may wish to reuse a step multiple times in a pipeline with different parameters. e.g. override the `script`, `command`, `args` or add a different `env` variable value.
+
+For example if you want to build multiple images reusing the same container build step but just changing the image name and/or `Dockefile`
+
+You can use this by using a custom `name` syntax. Use the name of the step you wish to inherit and then add `:something` as a suffix.
+
+```yaml 
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        steps:
+        # lets reuse the 'build-container-build' step 3 times with different values
+        - name: build-container-build
+        - name: build-container-build:cheese
+          env:
+            - name: IMAGE
+              value: gcr.io/myproject/myimage
+        - name: build-container-build:wine
+          env:
+            - name: IMAGE
+              value: gcr.io/myproject/wine
+        - name: promote-jx-preview
+```
+
+e.g. here is [an example](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/source.yaml#L8) which generates this [PipelineRun](../pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/expected.yaml#L154)
diff --git a/pkg/filebrowser/fake/fake_file_browser.go b/pkg/filebrowser/fake/fake_file_browser.go
new file mode 100644
index 00000000..3884a1e5
--- /dev/null
+++ b/pkg/filebrowser/fake/fake_file_browser.go
@@ -0,0 +1,60 @@
+package fake
+
+import (
+	"io/ioutil"
+	"path/filepath"
+
+	"github.com/jenkins-x/go-scm/scm"
+	"github.com/jenkins-x/lighthouse/pkg/filebrowser"
+	"github.com/pkg/errors"
+)
+
+type fakeFileBrowser struct {
+	dir                      string
+	mainAndCurrentBranchRefs []string
+}
+
+// NewFakeFileBrowser a simple fake provider pointing at a folder
+func NewFakeFileBrowser(dir string) filebrowser.Interface {
+	return &fakeFileBrowser{
+		dir:                      dir,
+		mainAndCurrentBranchRefs: []string{"main"},
+	}
+}
+
+func (f *fakeFileBrowser) GetMainAndCurrentBranchRefs(owner, repo, ref string) ([]string, error) {
+	return f.mainAndCurrentBranchRefs, nil
+}
+
+func (f *fakeFileBrowser) GetFile(owner, repo, path, ref string) ([]byte, error) {
+	fileName := filepath.Join(f.dir, path)
+	/* #nosec */
+	return ioutil.ReadFile(fileName)
+}
+
+func (f *fakeFileBrowser) ListFiles(owner, repo, path, ref string) ([]*scm.FileEntry, error) {
+	dir := filepath.Join(f.dir, path)
+	fileNames, err := ioutil.ReadDir(dir)
+	if err != nil {
+		return nil, errors.Wrapf(err, "failed to read dir %s", dir)
+	}
+
+	var answer []*scm.FileEntry
+	for _, f := range fileNames {
+		name := f.Name()
+		t := "file"
+		if f.IsDir() {
+			t = "dir"
+		}
+		path := filepath.Join(dir, name)
+		answer = append(answer, &scm.FileEntry{
+			Name: name,
+			Path: path,
+			Type: t,
+			Size: int(f.Size()),
+			Sha:  ref,
+			Link: "file://" + path,
+		})
+	}
+	return answer, nil
+}
diff --git a/pkg/triggerconfig/inrepo/git_uri.go b/pkg/triggerconfig/inrepo/git_uri.go
new file mode 100644
index 00000000..84d1b0dc
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/git_uri.go
@@ -0,0 +1,66 @@
+package inrepo
+
+import (
+	"strings"
+
+	"github.com/jenkins-x/go-scm/scm"
+
+	"github.com/pkg/errors"
+)
+
+// GitURI the output of parsing Git URIs
+type GitURI struct {
+	Owner      string
+	Repository string
+	Path       string
+	SHA        string
+}
+
+// ParseGitURI parses git source URIs or returns nil if its not a valid URI
+//
+// handles strings of the form "owner/repository(/path)@sha"
+func ParseGitURI(text string) (*GitURI, error) {
+	idx := strings.Index(text, "@")
+	if idx < 0 {
+		return nil, nil
+	}
+
+	sha := text[idx+1:]
+	if sha == "" {
+		return nil, errors.Errorf("missing version, branch or sha after the '@' character in the git URI %s", text)
+	}
+
+	names := text[0:idx]
+	parts := strings.SplitN(names, "/", 3)
+
+	path := ""
+	switch len(parts) {
+	case 0, 1:
+		return nil, errors.Errorf("expecting format 'owner/repository(/path)@sha' but got git URI %s", text)
+	case 3:
+		path = parts[2]
+	}
+	return &GitURI{
+		Owner:      parts[0],
+		Repository: parts[1],
+		Path:       path,
+		SHA:        sha,
+	}, nil
+}
+
+// String returns the string representation of the git URI
+func (u *GitURI) String() string {
+	path := scm.Join(u.Owner, u.Repository)
+	if u.Path != "" {
+		if !strings.HasPrefix(u.Path, "/") {
+			path += "/"
+		}
+		path += u.Path
+	}
+	path = strings.TrimSuffix(path, "/")
+	sha := u.SHA
+	if sha == "" {
+		sha = "head"
+	}
+	return path + "@" + sha
+}
diff --git a/pkg/triggerconfig/inrepo/load_pipelinerun.go b/pkg/triggerconfig/inrepo/load_pipelinerun.go
index 2911a470..07e9c086 100644
--- a/pkg/triggerconfig/inrepo/load_pipelinerun.go
+++ b/pkg/triggerconfig/inrepo/load_pipelinerun.go
@@ -61,14 +61,19 @@ func NewDefaultValues() (*DefaultValues, error) {
 
 // LoadTektonResourceAsPipelineRun loads a PipelineRun, Pipeline, Task or TaskRun and convert it to a PipelineRun
 // if necessary
-func LoadTektonResourceAsPipelineRun(data []byte, dir, message string, getData func(path string) ([]byte, error), defaultValues *DefaultValues) (*tektonv1beta1.PipelineRun, error) {
-	if defaultValues == nil {
+func LoadTektonResourceAsPipelineRun(resolver *UsesResolver, data []byte) (*tektonv1beta1.PipelineRun, error) {
+	if resolver.DefaultValues == nil {
 		var err error
-		defaultValues, err = NewDefaultValues()
+		resolver.DefaultValues, err = NewDefaultValues()
 		if err != nil {
 			return nil, errors.Wrapf(err, "failed to parse default values")
 		}
 	}
+	if resolver.Message == "" {
+		resolver.Message = fmt.Sprintf("in repo %s/%s with sha %s", resolver.OwnerName, resolver.RepoName, resolver.SHA)
+	}
+	message := resolver.Message
+	dir := resolver.Dir
 	kindPrefix := "kind:"
 	kind := "PipelineRun"
 	lines := strings.Split(string(data), "\n")
@@ -89,7 +94,7 @@ func LoadTektonResourceAsPipelineRun(data []byte, dir, message string, getData f
 		if err != nil {
 			return nil, errors.Wrapf(err, "failed to unmarshal Pipeline YAML %s", message)
 		}
-		prs, err := ConvertPipelineToPipelineRun(pipeline, message, defaultValues)
+		prs, err := ConvertPipelineToPipelineRun(pipeline, resolver.Message, resolver.DefaultValues)
 		if err != nil {
 			return prs, err
 		}
@@ -98,12 +103,12 @@ func LoadTektonResourceAsPipelineRun(data []byte, dir, message string, getData f
 			return prs, err
 		}
 		if re != nil {
-			prs, err = loadPipelineRunRefs(prs, dir, message, re, getData)
+			prs, err = loadPipelineRunRefs(resolver, prs, dir, message, re)
 			if err != nil {
 				return prs, err
 			}
 		}
-		prs, err = inheritTaskSteps(prs)
+		prs, err = inheritTaskSteps(resolver, prs)
 		if err != nil {
 			return prs, errors.Wrapf(err, "failed to inherit steps")
 		}
@@ -120,12 +125,12 @@ func LoadTektonResourceAsPipelineRun(data []byte, dir, message string, getData f
 			return prs, err
 		}
 		if re != nil {
-			prs, err = loadPipelineRunRefs(prs, dir, message, re, getData)
+			prs, err = loadPipelineRunRefs(resolver, prs, dir, message, re)
 			if err != nil {
 				return prs, err
 			}
 		}
-		prs, err = inheritTaskSteps(prs)
+		prs, err = inheritTaskSteps(resolver, prs)
 		if err != nil {
 			return prs, errors.Wrapf(err, "failed to inherit steps")
 		}
@@ -137,7 +142,7 @@ func LoadTektonResourceAsPipelineRun(data []byte, dir, message string, getData f
 		if err != nil {
 			return nil, errors.Wrapf(err, "failed to unmarshal Task YAML %s", message)
 		}
-		prs, err := ConvertTaskToPipelineRun(task, message, defaultValues)
+		prs, err := ConvertTaskToPipelineRun(task, message, resolver.DefaultValues)
 		if err != nil {
 			return prs, err
 		}
@@ -146,12 +151,12 @@ func LoadTektonResourceAsPipelineRun(data []byte, dir, message string, getData f
 			return prs, err
 		}
 		if re != nil {
-			prs, err = loadPipelineRunRefs(prs, dir, message, re, getData)
+			prs, err = loadPipelineRunRefs(resolver, prs, dir, message, re)
 			if err != nil {
 				return prs, err
 			}
 		}
-		prs, err = inheritTaskSteps(prs)
+		prs, err = inheritTaskSteps(resolver, prs)
 		if err != nil {
 			return prs, errors.Wrapf(err, "failed to inherit steps")
 		}
@@ -163,7 +168,7 @@ func LoadTektonResourceAsPipelineRun(data []byte, dir, message string, getData f
 		if err != nil {
 			return nil, errors.Wrapf(err, "failed to unmarshal TaskRun YAML %s", message)
 		}
-		prs, err := ConvertTaskRunToPipelineRun(tr, message, defaultValues)
+		prs, err := ConvertTaskRunToPipelineRun(tr, message, resolver.DefaultValues)
 		if err != nil {
 			return prs, err
 		}
@@ -172,12 +177,12 @@ func LoadTektonResourceAsPipelineRun(data []byte, dir, message string, getData f
 			return prs, err
 		}
 		if re != nil {
-			prs, err = loadPipelineRunRefs(prs, dir, message, re, getData)
+			prs, err = loadPipelineRunRefs(resolver, prs, dir, message, re)
 			if err != nil {
 				return prs, err
 			}
 		}
-		prs, err = inheritTaskSteps(prs)
+		prs, err = inheritTaskSteps(resolver, prs)
 		if err != nil {
 			return prs, errors.Wrapf(err, "failed to inherit steps")
 		}
@@ -189,7 +194,11 @@ func LoadTektonResourceAsPipelineRun(data []byte, dir, message string, getData f
 }
 
 // inheritTaskSteps allows Task steps to be prepended or appended if the annotations are present
-func inheritTaskSteps(prs *tektonv1beta1.PipelineRun) (*tektonv1beta1.PipelineRun, error) {
+func inheritTaskSteps(resolver *UsesResolver, prs *tektonv1beta1.PipelineRun) (*tektonv1beta1.PipelineRun, error) {
+	err := processUsesSteps(resolver, prs)
+	if err != nil {
+		return prs, errors.Wrapf(err, "failed to ")
+	}
 	ps := prs.Spec.PipelineSpec
 	if ps == nil || len(ps.Tasks) == 0 {
 		return prs, nil
@@ -202,7 +211,6 @@ func inheritTaskSteps(prs *tektonv1beta1.PipelineRun) (*tektonv1beta1.PipelineRu
 
 	var appendTask *tektonv1beta1.Task
 	var prependTask *tektonv1beta1.Task
-	var err error
 
 	if appendURL != "" {
 		appendTask, err = loadTaskByURL(appendURL)
@@ -229,6 +237,48 @@ func inheritTaskSteps(prs *tektonv1beta1.PipelineRun) (*tektonv1beta1.PipelineRu
 	return prs, nil
 }
 
+// processUsesSteps handles any step which has an image prefixed with "uses:"
+func processUsesSteps(resolver *UsesResolver, prs *tektonv1beta1.PipelineRun) error {
+	ps := prs.Spec.PipelineSpec
+	if ps == nil {
+		return nil
+	}
+	for i := range ps.Tasks {
+		pt := &ps.Tasks[i]
+		if pt.TaskSpec != nil {
+			ts := &pt.TaskSpec.TaskSpec
+			clearStepTemplateImage := false
+			var steps []tektonv1beta1.Step
+			for j := range ts.Steps {
+				step := ts.Steps[j]
+				image := step.Image
+				if image == "" && ts.StepTemplate != nil {
+					// lets default to the step image so we can share uses across steps
+					image = ts.StepTemplate.Image
+					if strings.HasPrefix(image, "uses:") {
+						clearStepTemplateImage = true
+					}
+				}
+				if !strings.HasPrefix(image, "uses:") {
+					steps = append(steps, step)
+					continue
+				}
+				sourceURI := strings.TrimPrefix(image, "uses:")
+				replaceSteps, err := resolver.UsesSteps(sourceURI, pt.Name, step)
+				if err != nil {
+					return errors.Wrapf(err, "failed to resolve git URI %s for step %s", sourceURI, step.Name)
+				}
+				steps = append(steps, replaceSteps...)
+			}
+			ts.Steps = steps
+			if clearStepTemplateImage && ts.StepTemplate != nil {
+				ts.StepTemplate.Image = ""
+			}
+		}
+	}
+	return nil
+}
+
 func loadTaskByURL(uri string) (*tektonv1beta1.Task, error) {
 	resp, err := http.Get(uri) // #nosec
 	if err != nil {
@@ -266,14 +316,14 @@ func loadTektonRefsFromFilesPattern(prs *tektonv1beta1.PipelineRun) (*regexp.Reg
 	return re, nil
 }
 
-func loadPipelineRunRefs(prs *tektonv1beta1.PipelineRun, dir, message string, re *regexp.Regexp, getData func(path string) ([]byte, error)) (*tektonv1beta1.PipelineRun, error) {
+func loadPipelineRunRefs(resolver *UsesResolver, prs *tektonv1beta1.PipelineRun, dir, message string, re *regexp.Regexp) (*tektonv1beta1.PipelineRun, error) {
 	// if we reference a local
 	if prs.Spec.PipelineSpec == nil && prs.Spec.PipelineRef != nil && prs.Spec.PipelineRef.Name != "" && re.MatchString(prs.Spec.PipelineRef.Name) {
 		pipelinePath := filepath.Join(dir, prs.Spec.PipelineRef.Name)
 		if !strings.HasSuffix(pipelinePath, ".yaml") {
 			pipelinePath += ".yaml"
 		}
-		data, err := getData(pipelinePath)
+		data, err := resolver.GetData(pipelinePath, true)
 		if err != nil {
 			return prs, errors.Wrapf(err, "failed to find path %s in PipelineRun", pipelinePath)
 		}
@@ -290,7 +340,7 @@ func loadPipelineRunRefs(prs *tektonv1beta1.PipelineRun, dir, message string, re
 	}
 
 	if prs.Spec.PipelineSpec != nil {
-		err := loadTaskRefs(prs.Spec.PipelineSpec, dir, message, re, getData)
+		err := loadTaskRefs(resolver, prs.Spec.PipelineSpec, dir, message, re)
 		if err != nil {
 			return prs, errors.Wrapf(err, "failed to load Task refs for %s", message)
 		}
@@ -298,7 +348,7 @@ func loadPipelineRunRefs(prs *tektonv1beta1.PipelineRun, dir, message string, re
 	return prs, nil
 }
 
-func loadTaskRefs(pipelineSpec *tektonv1beta1.PipelineSpec, dir, message string, re *regexp.Regexp, getData func(path string) ([]byte, error)) error {
+func loadTaskRefs(resolver *UsesResolver, pipelineSpec *tektonv1beta1.PipelineSpec, dir, message string, re *regexp.Regexp) error {
 	for i := range pipelineSpec.Tasks {
 		t := &pipelineSpec.Tasks[i]
 		if t.TaskSpec == nil && t.TaskRef != nil && t.TaskRef.Name != "" && re.MatchString(t.TaskRef.Name) {
@@ -306,7 +356,7 @@ func loadTaskRefs(pipelineSpec *tektonv1beta1.PipelineSpec, dir, message string,
 			if !strings.HasSuffix(path, ".yaml") {
 				path += ".yaml"
 			}
-			data, err := getData(path)
+			data, err := resolver.GetData(path, false)
 			if err != nil {
 				return errors.Wrapf(err, "failed to find path %s in PipelineSpec", path)
 			}
diff --git a/pkg/triggerconfig/inrepo/load_triggers.go b/pkg/triggerconfig/inrepo/load_triggers.go
index 122525a8..573ed5fa 100644
--- a/pkg/triggerconfig/inrepo/load_triggers.go
+++ b/pkg/triggerconfig/inrepo/load_triggers.go
@@ -182,28 +182,16 @@ func loadJobBaseFromSourcePath(client filebrowser.Interface, j *job.Base, ownerN
 
 	message := fmt.Sprintf("in repo %s/%s with sha %s", ownerName, repoName, sha)
 
-	getData := func(path string) ([]byte, error) {
-		var data []byte
-		_, err := url.ParseRequestURI(path)
-		if err == nil {
-			data, err = getPipelineFromURL(path)
-			if err != nil {
-				return nil, errors.Wrapf(err, "failed to get pipeline from URL %s ", path)
-			}
-		} else {
-			data, err = client.GetFile(ownerName, repoName, path, sha)
-			if err != nil && IsScmNotFound(err) {
-				err = nil
-			}
-			if err != nil {
-				return nil, errors.Wrapf(err, "failed to find file %s in repo %s/%s with sha %s", path, ownerName, repoName, sha)
-			}
-		}
-
-		return data, nil
+	usesResolver := &UsesResolver{
+		Client:    client,
+		OwnerName: ownerName,
+		RepoName:  repoName,
+		SHA:       sha,
+		Dir:       dir,
+		Message:   message,
 	}
 
-	prs, err := LoadTektonResourceAsPipelineRun(data, dir, message, getData, nil)
+	prs, err := LoadTektonResourceAsPipelineRun(usesResolver, data)
 	if err != nil {
 		return errors.Wrapf(err, "failed to unmarshal YAML file %s in repo %s/%s with sha %s", path, ownerName, repoName, sha)
 	}
diff --git a/pkg/triggerconfig/inrepo/uses_resolver.go b/pkg/triggerconfig/inrepo/uses_resolver.go
new file mode 100644
index 00000000..37be3f44
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/uses_resolver.go
@@ -0,0 +1,291 @@
+package inrepo
+
+import (
+	"fmt"
+	"io/ioutil"
+	"net/url"
+	"os"
+	"strings"
+
+	"github.com/jenkins-x/go-scm/scm"
+
+	"github.com/sirupsen/logrus"
+
+	"github.com/jenkins-x/lighthouse/pkg/filebrowser"
+	"github.com/jenkins-x/lighthouse/pkg/util"
+	"github.com/pkg/errors"
+	tektonv1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1"
+	v1 "k8s.io/api/core/v1"
+)
+
+// UsesResolver resolves the `uses:` URI syntax
+type UsesResolver struct {
+	Client           filebrowser.Interface
+	OwnerName        string
+	RepoName         string
+	SHA              string
+	Dir              string
+	Message          string
+	DefaultValues    *DefaultValues
+	LocalFileResolve bool
+
+	cache map[string]*tektonv1beta1.PipelineRun
+}
+
+var (
+	// VersionStreamVersions allows you to register version stream values of ful repository names in the format
+	// `owner/name` mapping to the version SHA/branch/tag
+	VersionStreamVersions = map[string]string{}
+)
+
+// UsesSteps lets resolve the sourceURI to a PipelineRun and find the step or steps
+// for the given task name and/or step name then lets apply any overrides from the step
+func (r *UsesResolver) UsesSteps(sourceURI string, taskName string, step tektonv1beta1.Step) ([]tektonv1beta1.Step, error) {
+	if r.cache == nil {
+		r.cache = map[string]*tektonv1beta1.PipelineRun{}
+	}
+	pr := r.cache[sourceURI]
+	if pr == nil {
+		data, err := r.GetData(sourceURI, false)
+		if err != nil {
+			return nil, errors.Wrapf(err, "failed to load URI %s", sourceURI)
+		}
+		if len(data) == 0 {
+			return nil, errors.Errorf("source URI not found: %s", sourceURI)
+		}
+
+		pr, err = LoadTektonResourceAsPipelineRun(r, data)
+		if err != nil {
+			return nil, errors.Wrapf(err, "failed to resolve %s", sourceURI)
+		}
+		if pr == nil {
+			return nil, errors.Errorf("no PipelineRun for URI %s", sourceURI)
+		}
+		r.cache[sourceURI] = pr
+	}
+
+	return r.findSteps(sourceURI, pr, taskName, step)
+}
+
+// GetData gets the data from the given source URI
+func (r *UsesResolver) GetData(path string, ignoreNotExist bool) ([]byte, error) {
+	var data []byte
+	_, err := url.ParseRequestURI(path)
+	if err == nil {
+		data, err = getPipelineFromURL(path)
+		if err != nil {
+			return nil, errors.Wrapf(err, "failed to get pipeline from URL %s ", path)
+		}
+		return data, nil
+	}
+
+	owner := r.OwnerName
+	repo := r.RepoName
+	sha := r.SHA
+
+	gitURI, err := ParseGitURI(path)
+	if err != nil {
+		return nil, errors.Wrapf(err, "failed to parse git URI %s", path)
+	}
+	if gitURI == nil && r.LocalFileResolve {
+		if ignoreNotExist {
+			exists, err := util.FileExists(path)
+			if err != nil {
+				return nil, errors.Wrapf(err, "failed to check file exists %s", path)
+			}
+			if !exists {
+				return nil, nil
+			}
+		}
+		/* #nosec */
+		data, err := ioutil.ReadFile(path)
+		if err != nil {
+			return nil, errors.Wrapf(err, "failed to read file %s", path)
+		}
+		return data, nil
+	}
+	if gitURI != nil {
+		owner = gitURI.Owner
+		repo = gitURI.Repository
+		path = gitURI.Path
+		sha = resolveCustomSha(owner, repo, gitURI.SHA)
+	}
+	data, err = r.Client.GetFile(owner, repo, path, sha)
+	if err != nil && IsScmNotFound(err) {
+		err = nil
+	}
+	if err != nil {
+		return nil, errors.Wrapf(err, "failed to find file %s in repo %s/%s with sha %s", path, owner, repo, sha)
+	}
+	return data, nil
+}
+
+// lets allow version stream versions to be exposed by environment variables
+func resolveCustomSha(owner string, repo string, sha string) string {
+	if sha != "versionStream" {
+		return sha
+	}
+	fullName := scm.Join(owner, repo)
+	value := VersionStreamVersions[fullName]
+	envVar := VersionStreamEnvVar(owner, repo)
+	if value == "" {
+		value = os.Getenv(envVar)
+	}
+	if value != "" {
+		return value
+	}
+	logrus.WithFields(map[string]interface{}{
+		"Owner": owner,
+		"Repo":  repo,
+	}).Warnf("no version stream version environment variable: %s", envVar)
+	return "HEAD"
+}
+
+// VersionStreamEnvVar creates an environment variable name
+func VersionStreamEnvVar(owner string, repo string) string {
+	envVar := strings.ToUpper(fmt.Sprintf("LIGHTHOUSE_VERSIONSTREAM_%s_%s", owner, repo))
+	envVar = strings.ReplaceAll(envVar, "-", "_")
+	envVar = strings.ReplaceAll(envVar, " ", "_")
+	envVar = strings.ReplaceAll(envVar, ".", "_")
+	return envVar
+}
+
+func (r *UsesResolver) findSteps(sourceURI string, pr *tektonv1beta1.PipelineRun, taskName string, step tektonv1beta1.Step) ([]tektonv1beta1.Step, error) {
+	if pr.Spec.PipelineSpec == nil {
+		return nil, errors.Errorf("source URI %s has no spec.pipelineSpec", sourceURI)
+	}
+	pipelineTasks := pr.Spec.PipelineSpec.Tasks
+	switch len(pipelineTasks) {
+	case 0:
+		return nil, errors.Errorf("source URI %s has no spec.pipelineSpec.tasks", sourceURI)
+	case 1:
+		return r.findTaskStep(sourceURI, pipelineTasks[0], step)
+
+	default:
+		for _, task := range pipelineTasks {
+			if task.Name == taskName {
+				return r.findTaskStep(sourceURI, task, step)
+			}
+		}
+		return nil, errors.Errorf("source URI %s has multiple spec.pipelineSpec.tasks but none match task name %s", sourceURI, taskName)
+	}
+}
+
+func (r *UsesResolver) findTaskStep(sourceURI string, task tektonv1beta1.PipelineTask, step tektonv1beta1.Step) ([]tektonv1beta1.Step, error) {
+	ts := task.TaskSpec
+	if ts == nil {
+		return nil, errors.Errorf("source URI %s has no task spec for task %s", sourceURI, task.Name)
+	}
+	name := step.Name
+	if name == "" {
+		return ts.Steps, nil
+	}
+
+	idx := strings.Index(name, ":")
+	suffix := ""
+	if idx > 0 {
+		suffix = name[idx+1:]
+		name = name[0:idx]
+	}
+
+	for i := range ts.Steps {
+		s := &ts.Steps[i]
+		if s.Name == name {
+			replaceStep := *s
+			OverrideStep(&replaceStep, &step)
+			if suffix != "" {
+				replaceStep.Name = name + "-" + suffix
+			}
+			return []tektonv1beta1.Step{replaceStep}, nil
+		}
+	}
+	return nil, errors.Errorf("source URI %s task %s has no step named %s", sourceURI, task.Name, name)
+}
+
+// OverrideStep overrides the step with the given overrides
+func OverrideStep(step *tektonv1beta1.Step, override *tektonv1beta1.Step) {
+	if len(override.Command) > 0 {
+		step.Script = override.Script
+		step.Command = override.Command
+		step.Args = override.Args
+	}
+	if override.Script != "" {
+		step.Script = override.Script
+		step.Command = nil
+		step.Args = nil
+	}
+	if override.Timeout != nil {
+		step.Timeout = override.Timeout
+	}
+	if override.WorkingDir != "" {
+		step.WorkingDir = override.WorkingDir
+	}
+	if string(override.ImagePullPolicy) != "" {
+		step.ImagePullPolicy = override.ImagePullPolicy
+	}
+	step.Env = OverrideEnv(step.Env, override.Env)
+	step.EnvFrom = OverrideEnvFrom(step.EnvFrom, override.EnvFrom)
+	step.VolumeMounts = OverrideVolumeMounts(step.VolumeMounts, override.VolumeMounts)
+}
+
+// OverrideEnv override either replaces or adds the given env vars
+func OverrideEnv(from []v1.EnvVar, overrides []v1.EnvVar) []v1.EnvVar {
+	for _, override := range overrides {
+		found := false
+		for i := range from {
+			f := &from[i]
+			if f.Name == override.Name {
+				found = true
+				*f = override
+				break
+			}
+		}
+		if !found {
+			from = append(from, override)
+		}
+	}
+	return from
+}
+
+// OverrideEnvFrom override either replaces or adds the given env froms
+func OverrideEnvFrom(from []v1.EnvFromSource, overrides []v1.EnvFromSource) []v1.EnvFromSource {
+	for _, override := range overrides {
+		found := false
+		for i := range from {
+			f := &from[i]
+			if f.ConfigMapRef != nil && override.ConfigMapRef != nil && f.ConfigMapRef.Name == override.ConfigMapRef.Name {
+				found = true
+				*f = override
+				break
+			}
+			if f.SecretRef != nil && override.SecretRef != nil && f.SecretRef.Name == override.SecretRef.Name {
+				found = true
+				*f = override
+				break
+			}
+		}
+		if !found {
+			from = append(from, override)
+		}
+	}
+	return from
+}
+
+// OverrideVolumeMounts override either replaces or adds the given volume mounts
+func OverrideVolumeMounts(from []v1.VolumeMount, overrides []v1.VolumeMount) []v1.VolumeMount {
+	for _, override := range overrides {
+		found := false
+		for i := range from {
+			f := &from[i]
+			if f.Name == override.Name {
+				found = true
+				*f = override
+				break
+			}
+		}
+		if !found {
+			from = append(from, override)
+		}
+	}
+	return from
+}


Test patch:
diff --git a/pkg/triggerconfig/inrepo/git_uri_test.go b/pkg/triggerconfig/inrepo/git_uri_test.go
new file mode 100644
index 00000000..df1ca021
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/git_uri_test.go
@@ -0,0 +1,86 @@
+package inrepo_test
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+
+	"github.com/jenkins-x/lighthouse/pkg/triggerconfig/inrepo"
+)
+
+func TestParseGitURI(t *testing.T) {
+	testCases := []struct {
+		text         string
+		expectedErr  bool
+		expected     *inrepo.GitURI
+		expectedText string
+	}{
+		{
+			text: "myowner/myrepo@v1",
+			expected: &inrepo.GitURI{
+				Owner:      "myowner",
+				Repository: "myrepo",
+				Path:       "",
+				SHA:        "v1",
+			},
+		},
+		{
+			text: "myowner/myrepo/@v1",
+			expected: &inrepo.GitURI{
+				Owner:      "myowner",
+				Repository: "myrepo",
+				Path:       "",
+				SHA:        "v1",
+			},
+			expectedText: "myowner/myrepo@v1",
+		},
+		{
+			text: "myowner/myrepo/myfile.yaml@v1",
+			expected: &inrepo.GitURI{
+				Owner:      "myowner",
+				Repository: "myrepo",
+				Path:       "myfile.yaml",
+				SHA:        "v1",
+			},
+		},
+		{
+			text: "myowner/myrepo/javascript/pullrequest.yaml@v1",
+			expected: &inrepo.GitURI{
+				Owner:      "myowner",
+				Repository: "myrepo",
+				Path:       "javascript/pullrequest.yaml",
+				SHA:        "v1",
+			},
+		},
+		{
+			text:     "foo.yaml",
+			expected: nil,
+		},
+		{
+			text:     "foo/bar/thingy.yaml",
+			expected: nil,
+		},
+	}
+
+	for _, tc := range testCases {
+		text := tc.text
+		gitURI, err := inrepo.ParseGitURI(text)
+		if tc.expectedErr {
+			require.Error(t, err, "should have failed to parse %s", text)
+			t.Logf("parsing %s got expected error: %s\n", text, err.Error())
+		} else {
+			require.NoError(t, err, "should have failed to parse %s", text)
+			assert.Equal(t, tc.expected, gitURI, "when parsing %s", text)
+
+			if tc.expected != nil {
+				actual := tc.expected.String()
+				expectedText := tc.expectedText
+				if expectedText == "" {
+					expectedText = text
+				}
+				assert.Equal(t, expectedText, actual, "generated string for GitURI for parsed %s", text)
+			}
+		}
+	}
+}
diff --git a/pkg/triggerconfig/inrepo/load_pipelinerun_test.go b/pkg/triggerconfig/inrepo/load_pipelinerun_test.go
index e437093e..e9d9f5aa 100644
--- a/pkg/triggerconfig/inrepo/load_pipelinerun_test.go
+++ b/pkg/triggerconfig/inrepo/load_pipelinerun_test.go
@@ -2,10 +2,15 @@ package inrepo
 
 import (
 	"io/ioutil"
+	"os"
 	"path/filepath"
 	"strings"
 	"testing"
 
+	"github.com/jenkins-x/go-scm/scm/driver/fake"
+	"github.com/jenkins-x/lighthouse/pkg/filebrowser"
+	"github.com/jenkins-x/lighthouse/pkg/scmprovider"
+
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/require"
 	"sigs.k8s.io/yaml"
@@ -19,11 +24,22 @@ var (
 func TestLoadPipelineRunTest(t *testing.T) {
 	sourceDir := filepath.Join("test_data", "load_pipelinerun")
 	fs, err := ioutil.ReadDir(sourceDir)
-	require.NoError(t, err, "failed to read source dir %s", sourceDir)
+	require.NoError(t, err, "failed to read source Dir %s", sourceDir)
+
+	scmClient, _ := fake.NewDefault()
+	scmProvider := scmprovider.ToClient(scmClient, "my-bot")
 
-	getData := func(path string) ([]byte, error) {
-		return ioutil.ReadFile(path)
+	resolver := &UsesResolver{
+		Client:           filebrowser.NewFileBrowserFromScmClient(scmProvider),
+		OwnerName:        "myorg",
+		LocalFileResolve: true,
 	}
+
+	// lets use a custom version stream sha
+	os.Setenv("LIGHTHOUSE_VERSIONSTREAM_JENKINS_X_JX3_PIPELINE_CATALOG", "myversionstreamref")
+
+	// make it easy to run a specific test only
+	runTestName := os.Getenv("TEST_NAME")
 	for _, f := range fs {
 		if !f.IsDir() {
 			continue
@@ -32,7 +48,13 @@ func TestLoadPipelineRunTest(t *testing.T) {
 		if strings.HasPrefix(name, ".") {
 			continue
 		}
+		if runTestName != "" && runTestName != name {
+			t.Logf("ignoring test %s\n", name)
+			continue
+		}
 		dir := filepath.Join(sourceDir, name)
+		resolver.Dir = dir
+
 		path := filepath.Join(dir, "source.yaml")
 		expectedPath := filepath.Join(dir, "expected.yaml")
 
@@ -40,7 +62,7 @@ func TestLoadPipelineRunTest(t *testing.T) {
 		data, err := ioutil.ReadFile(path)
 		require.NoError(t, err, "failed to load "+message)
 
-		pr, err := LoadTektonResourceAsPipelineRun(data, dir, message, getData, nil)
+		pr, err := LoadTektonResourceAsPipelineRun(resolver, data)
 		if strings.HasSuffix(name, "-fails") {
 			require.Errorf(t, err, "expected failure for test %s", name)
 			t.Logf("test %s generated expected error %s\n", name, err.Error())
diff --git a/pkg/triggerconfig/inrepo/test_data/jenkins-x/jx3-pipeline-catalog/refs/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml b/pkg/triggerconfig/inrepo/test_data/jenkins-x/jx3-pipeline-catalog/refs/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
new file mode 100644
index 00000000..422fefc0
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/jenkins-x/jx3-pipeline-catalog/refs/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
@@ -0,0 +1,59 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  annotations:
+    lighthouse.jenkins-x.io/prependStepsURL: https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/60bed6408732c1eda91a15713f51a9f97dcb1757/tasks/git-clone/git-clone-pr.yaml
+  name: pullrequest
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      resources: {}
+      taskSpec:
+        metadata: {}
+        stepTemplate:
+          name: ""
+          resources:
+            requests:
+              cpu: 400m
+              memory: 512Mi
+          workingDir: /workspace/source
+        steps:
+        - image: gcr.io/jenkinsxio/jx-boot:3.1.155
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/bin/sh
+            CI=true DISPLAY=:99 npm test
+        - image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+
+  podTemplate: {}
+  serviceAccountName: tekton-bot
+  timeout: 240h0m0s
+status: {}
\ No newline at end of file
diff --git a/pkg/triggerconfig/inrepo/test_data/jenkins-x/jx3-pipeline-catalog/refs/myversionstreamref/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml b/pkg/triggerconfig/inrepo/test_data/jenkins-x/jx3-pipeline-catalog/refs/myversionstreamref/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
new file mode 100644
index 00000000..e5f054c3
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/jenkins-x/jx3-pipeline-catalog/refs/myversionstreamref/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
@@ -0,0 +1,59 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  annotations:
+    lighthouse.jenkins-x.io/prependStepsURL: https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/60bed6408732c1eda91a15713f51a9f97dcb1757/tasks/git-clone/git-clone-pr.yaml
+  name: pullrequest
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      resources: {}
+      taskSpec:
+        metadata: {}
+        stepTemplate:
+          name: ""
+          resources:
+            requests:
+              cpu: 400m
+              memory: 512Mi
+          workingDir: /workspace/source
+        steps:
+        - image: gcr.io/jenkinsxio/jx-boot:latest
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/bin/sh
+            CI=true DISPLAY=:99 npm test
+        - image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+
+  podTemplate: {}
+  serviceAccountName: tekton-bot
+  timeout: 240h0m0s
+status: {}
\ No newline at end of file
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/README.md b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/README.md
new file mode 100644
index 00000000..cac77685
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/README.md
@@ -0,0 +1,3 @@
+## Reuse all steps in a task 
+
+This example shows how we can use `image: uses:sourceURI` to include all the steps in  task 
\ No newline at end of file
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/expected.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/expected.yaml
new file mode 100644
index 00000000..d853e8a9
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/expected.yaml
@@ -0,0 +1,210 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  creationTimestamp: null
+spec:
+  pipelineSpec:
+    params:
+    - description: the unique build number
+      name: BUILD_ID
+      type: string
+    - description: the name of the job which is the trigger context name
+      name: JOB_NAME
+      type: string
+    - description: the specification of the job
+      name: JOB_SPEC
+      type: string
+    - description: '''the kind of job: postsubmit or presubmit'''
+      name: JOB_TYPE
+      type: string
+    - description: the base git reference of the pull request
+      name: PULL_BASE_REF
+      type: string
+    - description: the git sha of the base of the pull request
+      name: PULL_BASE_SHA
+      type: string
+    - default: ""
+      description: git pull request number
+      name: PULL_NUMBER
+      type: string
+    - default: ""
+      description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+      name: PULL_PULL_REF
+      type: string
+    - default: ""
+      description: git revision to checkout (branch, tag, sha, ref…)
+      name: PULL_PULL_SHA
+      type: string
+    - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+      name: PULL_REFS
+      type: string
+    - description: git repository name
+      name: REPO_NAME
+      type: string
+    - description: git repository owner (user or organisation)
+      name: REPO_OWNER
+      type: string
+    - description: git url to clone
+      name: REPO_URL
+      type: string
+    tasks:
+    - name: from-build-pack
+      params:
+      - name: BUILD_ID
+        value: $(params.BUILD_ID)
+      - name: JOB_NAME
+        value: $(params.JOB_NAME)
+      - name: JOB_SPEC
+        value: $(params.JOB_SPEC)
+      - name: JOB_TYPE
+        value: $(params.JOB_TYPE)
+      - name: PULL_BASE_REF
+        value: $(params.PULL_BASE_REF)
+      - name: PULL_BASE_SHA
+        value: $(params.PULL_BASE_SHA)
+      - name: PULL_NUMBER
+        value: $(params.PULL_NUMBER)
+      - name: PULL_PULL_REF
+        value: $(params.PULL_PULL_REF)
+      - name: PULL_PULL_SHA
+        value: $(params.PULL_PULL_SHA)
+      - name: PULL_REFS
+        value: $(params.PULL_REFS)
+      - name: REPO_NAME
+        value: $(params.REPO_NAME)
+      - name: REPO_OWNER
+        value: $(params.REPO_OWNER)
+      - name: REPO_URL
+        value: $(params.REPO_URL)
+      taskSpec:
+        metadata: {}
+        params:
+        - description: the unique build number
+          name: BUILD_ID
+          type: string
+        - description: the name of the job which is the trigger context name
+          name: JOB_NAME
+          type: string
+        - description: the specification of the job
+          name: JOB_SPEC
+          type: string
+        - description: '''the kind of job: postsubmit or presubmit'''
+          name: JOB_TYPE
+          type: string
+        - description: the base git reference of the pull request
+          name: PULL_BASE_REF
+          type: string
+        - description: the git sha of the base of the pull request
+          name: PULL_BASE_SHA
+          type: string
+        - default: ""
+          description: git pull request number
+          name: PULL_NUMBER
+          type: string
+        - default: ""
+          description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+          name: PULL_PULL_REF
+          type: string
+        - default: ""
+          description: git revision to checkout (branch, tag, sha, ref…)
+          name: PULL_PULL_SHA
+          type: string
+        - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+          name: PULL_REFS
+          type: string
+        - description: git repository name
+          name: REPO_NAME
+          type: string
+        - description: git repository owner (user or organisation)
+          name: REPO_OWNER
+          type: string
+        - description: git url to clone
+          name: REPO_URL
+          type: string
+        stepTemplate:
+          env:
+          - name: BUILD_ID
+            value: $(params.BUILD_ID)
+          - name: JOB_NAME
+            value: $(params.JOB_NAME)
+          - name: JOB_SPEC
+            value: $(params.JOB_SPEC)
+          - name: JOB_TYPE
+            value: $(params.JOB_TYPE)
+          - name: PULL_BASE_REF
+            value: $(params.PULL_BASE_REF)
+          - name: PULL_BASE_SHA
+            value: $(params.PULL_BASE_SHA)
+          - name: PULL_NUMBER
+            value: $(params.PULL_NUMBER)
+          - name: PULL_PULL_REF
+            value: $(params.PULL_PULL_REF)
+          - name: PULL_PULL_SHA
+            value: $(params.PULL_PULL_SHA)
+          - name: PULL_REFS
+            value: $(params.PULL_REFS)
+          - name: REPO_NAME
+            value: $(params.REPO_NAME)
+          - name: REPO_OWNER
+            value: $(params.REPO_OWNER)
+          - name: REPO_URL
+            value: $(params.REPO_URL)
+          name: ""
+          resources: {}
+        steps:
+        - image: gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:v0.19.0
+          name: git-clone
+          resources: {}
+          script: |
+            #!/bin/sh
+            export SUBDIR="source"
+            echo "git cloning url: $REPO_URL version $PULL_PULL_SHA to dir: $SUBDIR"
+            git config --global --add user.name ${GIT_AUTHOR_NAME:-jenkins-x-bot}
+            git config --global --add user.email ${GIT_AUTHOR_EMAIL:-jenkins-x@googlegroups.com}
+            git config --global credential.helper store
+            git clone $REPO_URL $SUBDIR
+            cd $SUBDIR
+            git checkout $PULL_PULL_SHA
+            echo "checked out revision: $PULL_PULL_SHA to dir: $SUBDIR"
+          workingDir: /workspace
+        - image: gcr.io/jenkinsxio/jx-boot:3.1.62
+          name: git-merge
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops git merge variables
+          workingDir: /workspace/source
+        - image: gcr.io/jenkinsxio/jx-boot:3.1.155
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/bin/sh
+            CI=true DISPLAY=:99 npm test
+        - image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+status: {}
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/source.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/source.yaml
new file mode 100644
index 00000000..7b21aaaa
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-all-steps/source.yaml
@@ -0,0 +1,9 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        steps:
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom-explict/README.md b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom-explict/README.md
new file mode 100644
index 00000000..bf0ba01a
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom-explict/README.md
@@ -0,0 +1,5 @@
+## Reuse steps in a task mixed with custom tasks 
+
+This example shows how we can use `image: uses:sourceURI` and a `name: mystep` to include individual the steps in task and mix them with custom local steps (which don't use `uses:`)
+
+This example uses the verbose syntax where each step always has an image (rather than inheriting from `stepTemplate.image`)
\ No newline at end of file
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom-explict/expected.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom-explict/expected.yaml
new file mode 100644
index 00000000..922370b9
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom-explict/expected.yaml
@@ -0,0 +1,206 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  creationTimestamp: null
+spec:
+  pipelineSpec:
+    params:
+    - description: the unique build number
+      name: BUILD_ID
+      type: string
+    - description: the name of the job which is the trigger context name
+      name: JOB_NAME
+      type: string
+    - description: the specification of the job
+      name: JOB_SPEC
+      type: string
+    - description: '''the kind of job: postsubmit or presubmit'''
+      name: JOB_TYPE
+      type: string
+    - description: the base git reference of the pull request
+      name: PULL_BASE_REF
+      type: string
+    - description: the git sha of the base of the pull request
+      name: PULL_BASE_SHA
+      type: string
+    - default: ""
+      description: git pull request number
+      name: PULL_NUMBER
+      type: string
+    - default: ""
+      description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+      name: PULL_PULL_REF
+      type: string
+    - default: ""
+      description: git revision to checkout (branch, tag, sha, ref…)
+      name: PULL_PULL_SHA
+      type: string
+    - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+      name: PULL_REFS
+      type: string
+    - description: git repository name
+      name: REPO_NAME
+      type: string
+    - description: git repository owner (user or organisation)
+      name: REPO_OWNER
+      type: string
+    - description: git url to clone
+      name: REPO_URL
+      type: string
+    tasks:
+    - name: from-build-pack
+      params:
+      - name: BUILD_ID
+        value: $(params.BUILD_ID)
+      - name: JOB_NAME
+        value: $(params.JOB_NAME)
+      - name: JOB_SPEC
+        value: $(params.JOB_SPEC)
+      - name: JOB_TYPE
+        value: $(params.JOB_TYPE)
+      - name: PULL_BASE_REF
+        value: $(params.PULL_BASE_REF)
+      - name: PULL_BASE_SHA
+        value: $(params.PULL_BASE_SHA)
+      - name: PULL_NUMBER
+        value: $(params.PULL_NUMBER)
+      - name: PULL_PULL_REF
+        value: $(params.PULL_PULL_REF)
+      - name: PULL_PULL_SHA
+        value: $(params.PULL_PULL_SHA)
+      - name: PULL_REFS
+        value: $(params.PULL_REFS)
+      - name: REPO_NAME
+        value: $(params.REPO_NAME)
+      - name: REPO_OWNER
+        value: $(params.REPO_OWNER)
+      - name: REPO_URL
+        value: $(params.REPO_URL)
+      taskSpec:
+        metadata: {}
+        params:
+        - description: the unique build number
+          name: BUILD_ID
+          type: string
+        - description: the name of the job which is the trigger context name
+          name: JOB_NAME
+          type: string
+        - description: the specification of the job
+          name: JOB_SPEC
+          type: string
+        - description: '''the kind of job: postsubmit or presubmit'''
+          name: JOB_TYPE
+          type: string
+        - description: the base git reference of the pull request
+          name: PULL_BASE_REF
+          type: string
+        - description: the git sha of the base of the pull request
+          name: PULL_BASE_SHA
+          type: string
+        - default: ""
+          description: git pull request number
+          name: PULL_NUMBER
+          type: string
+        - default: ""
+          description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+          name: PULL_PULL_REF
+          type: string
+        - default: ""
+          description: git revision to checkout (branch, tag, sha, ref…)
+          name: PULL_PULL_SHA
+          type: string
+        - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+          name: PULL_REFS
+          type: string
+        - description: git repository name
+          name: REPO_NAME
+          type: string
+        - description: git repository owner (user or organisation)
+          name: REPO_OWNER
+          type: string
+        - description: git url to clone
+          name: REPO_URL
+          type: string
+        stepTemplate:
+          env:
+          - name: BUILD_ID
+            value: $(params.BUILD_ID)
+          - name: JOB_NAME
+            value: $(params.JOB_NAME)
+          - name: JOB_SPEC
+            value: $(params.JOB_SPEC)
+          - name: JOB_TYPE
+            value: $(params.JOB_TYPE)
+          - name: PULL_BASE_REF
+            value: $(params.PULL_BASE_REF)
+          - name: PULL_BASE_SHA
+            value: $(params.PULL_BASE_SHA)
+          - name: PULL_NUMBER
+            value: $(params.PULL_NUMBER)
+          - name: PULL_PULL_REF
+            value: $(params.PULL_PULL_REF)
+          - name: PULL_PULL_SHA
+            value: $(params.PULL_PULL_SHA)
+          - name: PULL_REFS
+            value: $(params.PULL_REFS)
+          - name: REPO_NAME
+            value: $(params.REPO_NAME)
+          - name: REPO_OWNER
+            value: $(params.REPO_OWNER)
+          - name: REPO_URL
+            value: $(params.REPO_URL)
+          name: ""
+          resources: {}
+        steps:
+        - image: node:12-slim
+          name: my-first-step
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm first thing
+        - image: gcr.io/jenkinsxio/jx-boot:3.1.155
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/bin/sh
+            CI=true DISPLAY=:99 npm test
+        - image: node:12-slim
+          name: my-pre-build-container
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm pre build container
+        - image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+        - image: node:12-slim
+          name: my-final-step
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm final thing
+status: {}
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom-explict/source.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom-explict/source.yaml
new file mode 100644
index 00000000..51c56589
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom-explict/source.yaml
@@ -0,0 +1,33 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        steps:
+        - image: node:12-slim
+          name: my-first-step
+          script: |
+            #!/bin/sh
+            npm first thing
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: jx-variables
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-npm-install
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-npm-test
+        - image: node:12-slim
+          name: my-pre-build-container
+          script: |
+            #!/bin/sh
+            npm pre build container
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-container-build
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: promote-jx-preview
+        - image: node:12-slim
+          name: my-final-step
+          script: |
+            #!/bin/sh
+            npm final thing
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/README.md b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/README.md
new file mode 100644
index 00000000..ebe47f4c
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/README.md
@@ -0,0 +1,5 @@
+## Reuse steps in a task mixed with custom tasks 
+
+This example shows how we can use `image: uses:sourceURI` and a `name: mystep` to include individual the steps in task and mix them with custom local steps (which don't use `uses:`)
+
+This example uses the concise syntax; where empty `image:` values get inherited from the `stepTemplate.image`
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/expected.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/expected.yaml
new file mode 100644
index 00000000..922370b9
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/expected.yaml
@@ -0,0 +1,206 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  creationTimestamp: null
+spec:
+  pipelineSpec:
+    params:
+    - description: the unique build number
+      name: BUILD_ID
+      type: string
+    - description: the name of the job which is the trigger context name
+      name: JOB_NAME
+      type: string
+    - description: the specification of the job
+      name: JOB_SPEC
+      type: string
+    - description: '''the kind of job: postsubmit or presubmit'''
+      name: JOB_TYPE
+      type: string
+    - description: the base git reference of the pull request
+      name: PULL_BASE_REF
+      type: string
+    - description: the git sha of the base of the pull request
+      name: PULL_BASE_SHA
+      type: string
+    - default: ""
+      description: git pull request number
+      name: PULL_NUMBER
+      type: string
+    - default: ""
+      description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+      name: PULL_PULL_REF
+      type: string
+    - default: ""
+      description: git revision to checkout (branch, tag, sha, ref…)
+      name: PULL_PULL_SHA
+      type: string
+    - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+      name: PULL_REFS
+      type: string
+    - description: git repository name
+      name: REPO_NAME
+      type: string
+    - description: git repository owner (user or organisation)
+      name: REPO_OWNER
+      type: string
+    - description: git url to clone
+      name: REPO_URL
+      type: string
+    tasks:
+    - name: from-build-pack
+      params:
+      - name: BUILD_ID
+        value: $(params.BUILD_ID)
+      - name: JOB_NAME
+        value: $(params.JOB_NAME)
+      - name: JOB_SPEC
+        value: $(params.JOB_SPEC)
+      - name: JOB_TYPE
+        value: $(params.JOB_TYPE)
+      - name: PULL_BASE_REF
+        value: $(params.PULL_BASE_REF)
+      - name: PULL_BASE_SHA
+        value: $(params.PULL_BASE_SHA)
+      - name: PULL_NUMBER
+        value: $(params.PULL_NUMBER)
+      - name: PULL_PULL_REF
+        value: $(params.PULL_PULL_REF)
+      - name: PULL_PULL_SHA
+        value: $(params.PULL_PULL_SHA)
+      - name: PULL_REFS
+        value: $(params.PULL_REFS)
+      - name: REPO_NAME
+        value: $(params.REPO_NAME)
+      - name: REPO_OWNER
+        value: $(params.REPO_OWNER)
+      - name: REPO_URL
+        value: $(params.REPO_URL)
+      taskSpec:
+        metadata: {}
+        params:
+        - description: the unique build number
+          name: BUILD_ID
+          type: string
+        - description: the name of the job which is the trigger context name
+          name: JOB_NAME
+          type: string
+        - description: the specification of the job
+          name: JOB_SPEC
+          type: string
+        - description: '''the kind of job: postsubmit or presubmit'''
+          name: JOB_TYPE
+          type: string
+        - description: the base git reference of the pull request
+          name: PULL_BASE_REF
+          type: string
+        - description: the git sha of the base of the pull request
+          name: PULL_BASE_SHA
+          type: string
+        - default: ""
+          description: git pull request number
+          name: PULL_NUMBER
+          type: string
+        - default: ""
+          description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+          name: PULL_PULL_REF
+          type: string
+        - default: ""
+          description: git revision to checkout (branch, tag, sha, ref…)
+          name: PULL_PULL_SHA
+          type: string
+        - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+          name: PULL_REFS
+          type: string
+        - description: git repository name
+          name: REPO_NAME
+          type: string
+        - description: git repository owner (user or organisation)
+          name: REPO_OWNER
+          type: string
+        - description: git url to clone
+          name: REPO_URL
+          type: string
+        stepTemplate:
+          env:
+          - name: BUILD_ID
+            value: $(params.BUILD_ID)
+          - name: JOB_NAME
+            value: $(params.JOB_NAME)
+          - name: JOB_SPEC
+            value: $(params.JOB_SPEC)
+          - name: JOB_TYPE
+            value: $(params.JOB_TYPE)
+          - name: PULL_BASE_REF
+            value: $(params.PULL_BASE_REF)
+          - name: PULL_BASE_SHA
+            value: $(params.PULL_BASE_SHA)
+          - name: PULL_NUMBER
+            value: $(params.PULL_NUMBER)
+          - name: PULL_PULL_REF
+            value: $(params.PULL_PULL_REF)
+          - name: PULL_PULL_SHA
+            value: $(params.PULL_PULL_SHA)
+          - name: PULL_REFS
+            value: $(params.PULL_REFS)
+          - name: REPO_NAME
+            value: $(params.REPO_NAME)
+          - name: REPO_OWNER
+            value: $(params.REPO_OWNER)
+          - name: REPO_URL
+            value: $(params.REPO_URL)
+          name: ""
+          resources: {}
+        steps:
+        - image: node:12-slim
+          name: my-first-step
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm first thing
+        - image: gcr.io/jenkinsxio/jx-boot:3.1.155
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/bin/sh
+            CI=true DISPLAY=:99 npm test
+        - image: node:12-slim
+          name: my-pre-build-container
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm pre build container
+        - image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+        - image: node:12-slim
+          name: my-final-step
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm final thing
+status: {}
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/source.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/source.yaml
new file mode 100644
index 00000000..af2ceea2
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-add-custom/source.yaml
@@ -0,0 +1,30 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        stepTemplate:
+          image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+        steps:
+        - image: node:12-slim
+          name: my-first-step
+          script: |
+            #!/bin/sh
+            npm first thing
+        - name: jx-variables
+        - name: build-npm-install
+        - name: build-npm-test
+        - image: node:12-slim
+          name: my-pre-build-container
+          script: |
+            #!/bin/sh
+            npm pre build container
+        - name: build-container-build
+        - name: promote-jx-preview
+        - image: node:12-slim
+          name: my-final-step
+          script: |
+            #!/bin/sh
+            npm final thing
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-explicit/README.md b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-explicit/README.md
new file mode 100644
index 00000000..e4b79ec8
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-explicit/README.md
@@ -0,0 +1,5 @@
+## Reuse steps in a task 
+
+This example shows how we can use `image: uses:sourceURI` and a `name: mystep` to include individual the steps in task
+
+This example uses the verbose syntax where each step always has an image (rather than inheriting from `stepTemplate.image`)
\ No newline at end of file
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-explicit/expected.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-explicit/expected.yaml
new file mode 100644
index 00000000..cb723396
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-explicit/expected.yaml
@@ -0,0 +1,188 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  creationTimestamp: null
+spec:
+  pipelineSpec:
+    params:
+    - description: the unique build number
+      name: BUILD_ID
+      type: string
+    - description: the name of the job which is the trigger context name
+      name: JOB_NAME
+      type: string
+    - description: the specification of the job
+      name: JOB_SPEC
+      type: string
+    - description: '''the kind of job: postsubmit or presubmit'''
+      name: JOB_TYPE
+      type: string
+    - description: the base git reference of the pull request
+      name: PULL_BASE_REF
+      type: string
+    - description: the git sha of the base of the pull request
+      name: PULL_BASE_SHA
+      type: string
+    - default: ""
+      description: git pull request number
+      name: PULL_NUMBER
+      type: string
+    - default: ""
+      description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+      name: PULL_PULL_REF
+      type: string
+    - default: ""
+      description: git revision to checkout (branch, tag, sha, ref…)
+      name: PULL_PULL_SHA
+      type: string
+    - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+      name: PULL_REFS
+      type: string
+    - description: git repository name
+      name: REPO_NAME
+      type: string
+    - description: git repository owner (user or organisation)
+      name: REPO_OWNER
+      type: string
+    - description: git url to clone
+      name: REPO_URL
+      type: string
+    tasks:
+    - name: from-build-pack
+      params:
+      - name: BUILD_ID
+        value: $(params.BUILD_ID)
+      - name: JOB_NAME
+        value: $(params.JOB_NAME)
+      - name: JOB_SPEC
+        value: $(params.JOB_SPEC)
+      - name: JOB_TYPE
+        value: $(params.JOB_TYPE)
+      - name: PULL_BASE_REF
+        value: $(params.PULL_BASE_REF)
+      - name: PULL_BASE_SHA
+        value: $(params.PULL_BASE_SHA)
+      - name: PULL_NUMBER
+        value: $(params.PULL_NUMBER)
+      - name: PULL_PULL_REF
+        value: $(params.PULL_PULL_REF)
+      - name: PULL_PULL_SHA
+        value: $(params.PULL_PULL_SHA)
+      - name: PULL_REFS
+        value: $(params.PULL_REFS)
+      - name: REPO_NAME
+        value: $(params.REPO_NAME)
+      - name: REPO_OWNER
+        value: $(params.REPO_OWNER)
+      - name: REPO_URL
+        value: $(params.REPO_URL)
+      taskSpec:
+        metadata: {}
+        params:
+        - description: the unique build number
+          name: BUILD_ID
+          type: string
+        - description: the name of the job which is the trigger context name
+          name: JOB_NAME
+          type: string
+        - description: the specification of the job
+          name: JOB_SPEC
+          type: string
+        - description: '''the kind of job: postsubmit or presubmit'''
+          name: JOB_TYPE
+          type: string
+        - description: the base git reference of the pull request
+          name: PULL_BASE_REF
+          type: string
+        - description: the git sha of the base of the pull request
+          name: PULL_BASE_SHA
+          type: string
+        - default: ""
+          description: git pull request number
+          name: PULL_NUMBER
+          type: string
+        - default: ""
+          description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+          name: PULL_PULL_REF
+          type: string
+        - default: ""
+          description: git revision to checkout (branch, tag, sha, ref…)
+          name: PULL_PULL_SHA
+          type: string
+        - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+          name: PULL_REFS
+          type: string
+        - description: git repository name
+          name: REPO_NAME
+          type: string
+        - description: git repository owner (user or organisation)
+          name: REPO_OWNER
+          type: string
+        - description: git url to clone
+          name: REPO_URL
+          type: string
+        stepTemplate:
+          env:
+          - name: BUILD_ID
+            value: $(params.BUILD_ID)
+          - name: JOB_NAME
+            value: $(params.JOB_NAME)
+          - name: JOB_SPEC
+            value: $(params.JOB_SPEC)
+          - name: JOB_TYPE
+            value: $(params.JOB_TYPE)
+          - name: PULL_BASE_REF
+            value: $(params.PULL_BASE_REF)
+          - name: PULL_BASE_SHA
+            value: $(params.PULL_BASE_SHA)
+          - name: PULL_NUMBER
+            value: $(params.PULL_NUMBER)
+          - name: PULL_PULL_REF
+            value: $(params.PULL_PULL_REF)
+          - name: PULL_PULL_SHA
+            value: $(params.PULL_PULL_SHA)
+          - name: PULL_REFS
+            value: $(params.PULL_REFS)
+          - name: REPO_NAME
+            value: $(params.REPO_NAME)
+          - name: REPO_OWNER
+            value: $(params.REPO_OWNER)
+          - name: REPO_URL
+            value: $(params.REPO_URL)
+          name: ""
+          resources: {}
+        steps:
+        - image: gcr.io/jenkinsxio/jx-boot:3.1.155
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/bin/sh
+            CI=true DISPLAY=:99 npm test
+        - image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+status: {}
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-explicit/source.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-explicit/source.yaml
new file mode 100644
index 00000000..dbc2f34b
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-explicit/source.yaml
@@ -0,0 +1,18 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        steps:
+        - image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@1d39235ee9235d7d52d4025a8e59cb8bda04306a
+          name: jx-variables
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-npm-install
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-npm-test
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-container-build
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: promote-jx-preview
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/README.md b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/README.md
new file mode 100644
index 00000000..bc10218e
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/README.md
@@ -0,0 +1,3 @@
+## Reuse steps in a task 
+
+This example shows how we can reuse the same step multiple times by using the `name:` syntax of `reuseStepName:uniqueSuffix`
\ No newline at end of file
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/expected.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/expected.yaml
new file mode 100644
index 00000000..2e87645a
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/expected.yaml
@@ -0,0 +1,210 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  creationTimestamp: null
+spec:
+  pipelineSpec:
+    params:
+    - description: the unique build number
+      name: BUILD_ID
+      type: string
+    - description: the name of the job which is the trigger context name
+      name: JOB_NAME
+      type: string
+    - description: the specification of the job
+      name: JOB_SPEC
+      type: string
+    - description: '''the kind of job: postsubmit or presubmit'''
+      name: JOB_TYPE
+      type: string
+    - description: the base git reference of the pull request
+      name: PULL_BASE_REF
+      type: string
+    - description: the git sha of the base of the pull request
+      name: PULL_BASE_SHA
+      type: string
+    - default: ""
+      description: git pull request number
+      name: PULL_NUMBER
+      type: string
+    - default: ""
+      description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+      name: PULL_PULL_REF
+      type: string
+    - default: ""
+      description: git revision to checkout (branch, tag, sha, ref…)
+      name: PULL_PULL_SHA
+      type: string
+    - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+      name: PULL_REFS
+      type: string
+    - description: git repository name
+      name: REPO_NAME
+      type: string
+    - description: git repository owner (user or organisation)
+      name: REPO_OWNER
+      type: string
+    - description: git url to clone
+      name: REPO_URL
+      type: string
+    tasks:
+    - name: from-build-pack
+      params:
+      - name: BUILD_ID
+        value: $(params.BUILD_ID)
+      - name: JOB_NAME
+        value: $(params.JOB_NAME)
+      - name: JOB_SPEC
+        value: $(params.JOB_SPEC)
+      - name: JOB_TYPE
+        value: $(params.JOB_TYPE)
+      - name: PULL_BASE_REF
+        value: $(params.PULL_BASE_REF)
+      - name: PULL_BASE_SHA
+        value: $(params.PULL_BASE_SHA)
+      - name: PULL_NUMBER
+        value: $(params.PULL_NUMBER)
+      - name: PULL_PULL_REF
+        value: $(params.PULL_PULL_REF)
+      - name: PULL_PULL_SHA
+        value: $(params.PULL_PULL_SHA)
+      - name: PULL_REFS
+        value: $(params.PULL_REFS)
+      - name: REPO_NAME
+        value: $(params.REPO_NAME)
+      - name: REPO_OWNER
+        value: $(params.REPO_OWNER)
+      - name: REPO_URL
+        value: $(params.REPO_URL)
+      taskSpec:
+        metadata: {}
+        params:
+        - description: the unique build number
+          name: BUILD_ID
+          type: string
+        - description: the name of the job which is the trigger context name
+          name: JOB_NAME
+          type: string
+        - description: the specification of the job
+          name: JOB_SPEC
+          type: string
+        - description: '''the kind of job: postsubmit or presubmit'''
+          name: JOB_TYPE
+          type: string
+        - description: the base git reference of the pull request
+          name: PULL_BASE_REF
+          type: string
+        - description: the git sha of the base of the pull request
+          name: PULL_BASE_SHA
+          type: string
+        - default: ""
+          description: git pull request number
+          name: PULL_NUMBER
+          type: string
+        - default: ""
+          description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+          name: PULL_PULL_REF
+          type: string
+        - default: ""
+          description: git revision to checkout (branch, tag, sha, ref…)
+          name: PULL_PULL_SHA
+          type: string
+        - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+          name: PULL_REFS
+          type: string
+        - description: git repository name
+          name: REPO_NAME
+          type: string
+        - description: git repository owner (user or organisation)
+          name: REPO_OWNER
+          type: string
+        - description: git url to clone
+          name: REPO_URL
+          type: string
+        stepTemplate:
+          env:
+          - name: BUILD_ID
+            value: $(params.BUILD_ID)
+          - name: JOB_NAME
+            value: $(params.JOB_NAME)
+          - name: JOB_SPEC
+            value: $(params.JOB_SPEC)
+          - name: JOB_TYPE
+            value: $(params.JOB_TYPE)
+          - name: PULL_BASE_REF
+            value: $(params.PULL_BASE_REF)
+          - name: PULL_BASE_SHA
+            value: $(params.PULL_BASE_SHA)
+          - name: PULL_NUMBER
+            value: $(params.PULL_NUMBER)
+          - name: PULL_PULL_REF
+            value: $(params.PULL_PULL_REF)
+          - name: PULL_PULL_SHA
+            value: $(params.PULL_PULL_SHA)
+          - name: PULL_REFS
+            value: $(params.PULL_REFS)
+          - name: REPO_NAME
+            value: $(params.REPO_NAME)
+          - name: REPO_OWNER
+            value: $(params.REPO_OWNER)
+          - name: REPO_URL
+            value: $(params.REPO_URL)
+          name: ""
+          resources: {}
+        steps:
+        - image: gcr.io/jenkinsxio/jx-boot:3.1.155
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/bin/sh
+            CI=true DISPLAY=:99 npm test
+        - image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - env:
+          - name: IMAGE
+            value: gcr.io/myproject/myimage
+          image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build-cheese
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - env:
+          - name: IMAGE
+            value: gcr.io/myproject/wine
+          image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build-wine
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+status: {}
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/source.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/source.yaml
new file mode 100644
index 00000000..1413684b
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-multiple-copies/source.yaml
@@ -0,0 +1,24 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        stepTemplate:
+          image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@1d39235ee9235d7d52d4025a8e59cb8bda04306a
+        steps:
+        - name: jx-variables
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-npm-install
+        - name: build-npm-test
+        - name: build-container-build
+        - name: build-container-build:cheese
+          env:
+            - name: IMAGE
+              value: gcr.io/myproject/myimage
+        - name: build-container-build:wine
+          env:
+            - name: IMAGE
+              value: gcr.io/myproject/wine
+        - name: promote-jx-preview
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/README.md b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/README.md
new file mode 100644
index 00000000..1a71ffe2
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/README.md
@@ -0,0 +1,8 @@
+## Reuse steps in a task and override them
+
+This example shows how we can use `image: uses:sourceURI` and a `name: mystep` to include individual the steps in task and then override (add/replace) properties:
+
+* command to run (either via `script` or `command` and optionally `args`)
+* working directory via `workingDir:`  
+* environment variables via `env:` or `envFrom:`
+* volume mounts via `volumeMounts:`
\ No newline at end of file
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/expected.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/expected.yaml
new file mode 100644
index 00000000..ae507a03
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/expected.yaml
@@ -0,0 +1,199 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  creationTimestamp: null
+spec:
+  pipelineSpec:
+    params:
+    - description: the unique build number
+      name: BUILD_ID
+      type: string
+    - description: the name of the job which is the trigger context name
+      name: JOB_NAME
+      type: string
+    - description: the specification of the job
+      name: JOB_SPEC
+      type: string
+    - description: '''the kind of job: postsubmit or presubmit'''
+      name: JOB_TYPE
+      type: string
+    - description: the base git reference of the pull request
+      name: PULL_BASE_REF
+      type: string
+    - description: the git sha of the base of the pull request
+      name: PULL_BASE_SHA
+      type: string
+    - default: ""
+      description: git pull request number
+      name: PULL_NUMBER
+      type: string
+    - default: ""
+      description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+      name: PULL_PULL_REF
+      type: string
+    - default: ""
+      description: git revision to checkout (branch, tag, sha, ref…)
+      name: PULL_PULL_SHA
+      type: string
+    - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+      name: PULL_REFS
+      type: string
+    - description: git repository name
+      name: REPO_NAME
+      type: string
+    - description: git repository owner (user or organisation)
+      name: REPO_OWNER
+      type: string
+    - description: git url to clone
+      name: REPO_URL
+      type: string
+    tasks:
+    - name: from-build-pack
+      params:
+      - name: BUILD_ID
+        value: $(params.BUILD_ID)
+      - name: JOB_NAME
+        value: $(params.JOB_NAME)
+      - name: JOB_SPEC
+        value: $(params.JOB_SPEC)
+      - name: JOB_TYPE
+        value: $(params.JOB_TYPE)
+      - name: PULL_BASE_REF
+        value: $(params.PULL_BASE_REF)
+      - name: PULL_BASE_SHA
+        value: $(params.PULL_BASE_SHA)
+      - name: PULL_NUMBER
+        value: $(params.PULL_NUMBER)
+      - name: PULL_PULL_REF
+        value: $(params.PULL_PULL_REF)
+      - name: PULL_PULL_SHA
+        value: $(params.PULL_PULL_SHA)
+      - name: PULL_REFS
+        value: $(params.PULL_REFS)
+      - name: REPO_NAME
+        value: $(params.REPO_NAME)
+      - name: REPO_OWNER
+        value: $(params.REPO_OWNER)
+      - name: REPO_URL
+        value: $(params.REPO_URL)
+      taskSpec:
+        metadata: {}
+        params:
+        - description: the unique build number
+          name: BUILD_ID
+          type: string
+        - description: the name of the job which is the trigger context name
+          name: JOB_NAME
+          type: string
+        - description: the specification of the job
+          name: JOB_SPEC
+          type: string
+        - description: '''the kind of job: postsubmit or presubmit'''
+          name: JOB_TYPE
+          type: string
+        - description: the base git reference of the pull request
+          name: PULL_BASE_REF
+          type: string
+        - description: the git sha of the base of the pull request
+          name: PULL_BASE_SHA
+          type: string
+        - default: ""
+          description: git pull request number
+          name: PULL_NUMBER
+          type: string
+        - default: ""
+          description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+          name: PULL_PULL_REF
+          type: string
+        - default: ""
+          description: git revision to checkout (branch, tag, sha, ref…)
+          name: PULL_PULL_SHA
+          type: string
+        - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+          name: PULL_REFS
+          type: string
+        - description: git repository name
+          name: REPO_NAME
+          type: string
+        - description: git repository owner (user or organisation)
+          name: REPO_OWNER
+          type: string
+        - description: git url to clone
+          name: REPO_URL
+          type: string
+        stepTemplate:
+          env:
+          - name: BUILD_ID
+            value: $(params.BUILD_ID)
+          - name: JOB_NAME
+            value: $(params.JOB_NAME)
+          - name: JOB_SPEC
+            value: $(params.JOB_SPEC)
+          - name: JOB_TYPE
+            value: $(params.JOB_TYPE)
+          - name: PULL_BASE_REF
+            value: $(params.PULL_BASE_REF)
+          - name: PULL_BASE_SHA
+            value: $(params.PULL_BASE_SHA)
+          - name: PULL_NUMBER
+            value: $(params.PULL_NUMBER)
+          - name: PULL_PULL_REF
+            value: $(params.PULL_PULL_REF)
+          - name: PULL_PULL_SHA
+            value: $(params.PULL_PULL_SHA)
+          - name: PULL_REFS
+            value: $(params.PULL_REFS)
+          - name: REPO_NAME
+            value: $(params.REPO_NAME)
+          - name: REPO_OWNER
+            value: $(params.REPO_OWNER)
+          - name: REPO_URL
+            value: $(params.REPO_URL)
+          name: ""
+          resources: {}
+        steps:
+        - env:
+          - name: MY_NEW_ENV_VAR
+            value: this-is-a-new-value
+          image: gcr.io/jenkinsxio/jx-boot:3.1.155
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - envFrom:
+          - configMapRef:
+              name: myconfigmap
+              optional: true
+          image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            echo "this is my custom script"
+          workingDir: /workspace/mynewdir
+        - args:
+          - -c
+          - echo this is a new custom command
+          command:
+          - bash
+          image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+          volumeMounts:
+          - mountPath: /foo/bar
+            name: my-new-volume
+status: {}
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/source.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/source.yaml
new file mode 100644
index 00000000..28fe072a
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-override/source.yaml
@@ -0,0 +1,37 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        steps:
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: jx-variables
+          env:
+            - name: MY_NEW_ENV_VAR
+              value: this-is-a-new-value
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-npm-install
+          envFrom:
+            - configMapRef:
+                name: myconfigmap
+                optional: true
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-npm-test
+          script: |
+            #!/usr/bin/env sh
+            echo "this is my custom script"
+          workingDir: /workspace/mynewdir
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-container-build
+          command:
+            - bash
+          args:
+            - -c
+            - "echo this is a new custom command"
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: promote-jx-preview
+          volumeMounts:
+            - mountPath: /foo/bar
+              name: my-new-volume
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-version-stream/README.md b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-version-stream/README.md
new file mode 100644
index 00000000..f7a7a718
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-version-stream/README.md
@@ -0,0 +1,3 @@
+## Reuse steps in a task 
+
+This example shows how we can use `image: uses:sourceURI` and a `name: mystep` to include individual the steps in task - and using the `@versionStream` which is resolved with the version stream to find the actual git tag to use.
\ No newline at end of file
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-version-stream/expected.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-version-stream/expected.yaml
new file mode 100644
index 00000000..89aa0fd4
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-version-stream/expected.yaml
@@ -0,0 +1,188 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  creationTimestamp: null
+spec:
+  pipelineSpec:
+    params:
+    - description: the unique build number
+      name: BUILD_ID
+      type: string
+    - description: the name of the job which is the trigger context name
+      name: JOB_NAME
+      type: string
+    - description: the specification of the job
+      name: JOB_SPEC
+      type: string
+    - description: '''the kind of job: postsubmit or presubmit'''
+      name: JOB_TYPE
+      type: string
+    - description: the base git reference of the pull request
+      name: PULL_BASE_REF
+      type: string
+    - description: the git sha of the base of the pull request
+      name: PULL_BASE_SHA
+      type: string
+    - default: ""
+      description: git pull request number
+      name: PULL_NUMBER
+      type: string
+    - default: ""
+      description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+      name: PULL_PULL_REF
+      type: string
+    - default: ""
+      description: git revision to checkout (branch, tag, sha, ref…)
+      name: PULL_PULL_SHA
+      type: string
+    - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+      name: PULL_REFS
+      type: string
+    - description: git repository name
+      name: REPO_NAME
+      type: string
+    - description: git repository owner (user or organisation)
+      name: REPO_OWNER
+      type: string
+    - description: git url to clone
+      name: REPO_URL
+      type: string
+    tasks:
+    - name: from-build-pack
+      params:
+      - name: BUILD_ID
+        value: $(params.BUILD_ID)
+      - name: JOB_NAME
+        value: $(params.JOB_NAME)
+      - name: JOB_SPEC
+        value: $(params.JOB_SPEC)
+      - name: JOB_TYPE
+        value: $(params.JOB_TYPE)
+      - name: PULL_BASE_REF
+        value: $(params.PULL_BASE_REF)
+      - name: PULL_BASE_SHA
+        value: $(params.PULL_BASE_SHA)
+      - name: PULL_NUMBER
+        value: $(params.PULL_NUMBER)
+      - name: PULL_PULL_REF
+        value: $(params.PULL_PULL_REF)
+      - name: PULL_PULL_SHA
+        value: $(params.PULL_PULL_SHA)
+      - name: PULL_REFS
+        value: $(params.PULL_REFS)
+      - name: REPO_NAME
+        value: $(params.REPO_NAME)
+      - name: REPO_OWNER
+        value: $(params.REPO_OWNER)
+      - name: REPO_URL
+        value: $(params.REPO_URL)
+      taskSpec:
+        metadata: {}
+        params:
+        - description: the unique build number
+          name: BUILD_ID
+          type: string
+        - description: the name of the job which is the trigger context name
+          name: JOB_NAME
+          type: string
+        - description: the specification of the job
+          name: JOB_SPEC
+          type: string
+        - description: '''the kind of job: postsubmit or presubmit'''
+          name: JOB_TYPE
+          type: string
+        - description: the base git reference of the pull request
+          name: PULL_BASE_REF
+          type: string
+        - description: the git sha of the base of the pull request
+          name: PULL_BASE_SHA
+          type: string
+        - default: ""
+          description: git pull request number
+          name: PULL_NUMBER
+          type: string
+        - default: ""
+          description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+          name: PULL_PULL_REF
+          type: string
+        - default: ""
+          description: git revision to checkout (branch, tag, sha, ref…)
+          name: PULL_PULL_SHA
+          type: string
+        - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+          name: PULL_REFS
+          type: string
+        - description: git repository name
+          name: REPO_NAME
+          type: string
+        - description: git repository owner (user or organisation)
+          name: REPO_OWNER
+          type: string
+        - description: git url to clone
+          name: REPO_URL
+          type: string
+        stepTemplate:
+          env:
+          - name: BUILD_ID
+            value: $(params.BUILD_ID)
+          - name: JOB_NAME
+            value: $(params.JOB_NAME)
+          - name: JOB_SPEC
+            value: $(params.JOB_SPEC)
+          - name: JOB_TYPE
+            value: $(params.JOB_TYPE)
+          - name: PULL_BASE_REF
+            value: $(params.PULL_BASE_REF)
+          - name: PULL_BASE_SHA
+            value: $(params.PULL_BASE_SHA)
+          - name: PULL_NUMBER
+            value: $(params.PULL_NUMBER)
+          - name: PULL_PULL_REF
+            value: $(params.PULL_PULL_REF)
+          - name: PULL_PULL_SHA
+            value: $(params.PULL_PULL_SHA)
+          - name: PULL_REFS
+            value: $(params.PULL_REFS)
+          - name: REPO_NAME
+            value: $(params.REPO_NAME)
+          - name: REPO_OWNER
+            value: $(params.REPO_OWNER)
+          - name: REPO_URL
+            value: $(params.REPO_URL)
+          name: ""
+          resources: {}
+        steps:
+        - image: gcr.io/jenkinsxio/jx-boot:latest
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/bin/sh
+            CI=true DISPLAY=:99 npm test
+        - image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+status: {}
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-version-stream/source.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-version-stream/source.yaml
new file mode 100644
index 00000000..6ab8facc
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps-version-stream/source.yaml
@@ -0,0 +1,15 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        stepTemplate:
+          image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@versionStream
+        steps:
+        - name: jx-variables
+        - name: build-npm-install
+        - name: build-npm-test
+        - name: build-container-build
+        - name: promote-jx-preview
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/README.md b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/README.md
new file mode 100644
index 00000000..ea1fcbfe
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/README.md
@@ -0,0 +1,3 @@
+## Reuse steps in a task 
+
+This example shows how we can use `image: uses:sourceURI` and a `name: mystep` to include individual the steps in task 
\ No newline at end of file
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/expected.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/expected.yaml
new file mode 100644
index 00000000..cb723396
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/expected.yaml
@@ -0,0 +1,188 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+metadata:
+  creationTimestamp: null
+spec:
+  pipelineSpec:
+    params:
+    - description: the unique build number
+      name: BUILD_ID
+      type: string
+    - description: the name of the job which is the trigger context name
+      name: JOB_NAME
+      type: string
+    - description: the specification of the job
+      name: JOB_SPEC
+      type: string
+    - description: '''the kind of job: postsubmit or presubmit'''
+      name: JOB_TYPE
+      type: string
+    - description: the base git reference of the pull request
+      name: PULL_BASE_REF
+      type: string
+    - description: the git sha of the base of the pull request
+      name: PULL_BASE_SHA
+      type: string
+    - default: ""
+      description: git pull request number
+      name: PULL_NUMBER
+      type: string
+    - default: ""
+      description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+      name: PULL_PULL_REF
+      type: string
+    - default: ""
+      description: git revision to checkout (branch, tag, sha, ref…)
+      name: PULL_PULL_SHA
+      type: string
+    - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+      name: PULL_REFS
+      type: string
+    - description: git repository name
+      name: REPO_NAME
+      type: string
+    - description: git repository owner (user or organisation)
+      name: REPO_OWNER
+      type: string
+    - description: git url to clone
+      name: REPO_URL
+      type: string
+    tasks:
+    - name: from-build-pack
+      params:
+      - name: BUILD_ID
+        value: $(params.BUILD_ID)
+      - name: JOB_NAME
+        value: $(params.JOB_NAME)
+      - name: JOB_SPEC
+        value: $(params.JOB_SPEC)
+      - name: JOB_TYPE
+        value: $(params.JOB_TYPE)
+      - name: PULL_BASE_REF
+        value: $(params.PULL_BASE_REF)
+      - name: PULL_BASE_SHA
+        value: $(params.PULL_BASE_SHA)
+      - name: PULL_NUMBER
+        value: $(params.PULL_NUMBER)
+      - name: PULL_PULL_REF
+        value: $(params.PULL_PULL_REF)
+      - name: PULL_PULL_SHA
+        value: $(params.PULL_PULL_SHA)
+      - name: PULL_REFS
+        value: $(params.PULL_REFS)
+      - name: REPO_NAME
+        value: $(params.REPO_NAME)
+      - name: REPO_OWNER
+        value: $(params.REPO_OWNER)
+      - name: REPO_URL
+        value: $(params.REPO_URL)
+      taskSpec:
+        metadata: {}
+        params:
+        - description: the unique build number
+          name: BUILD_ID
+          type: string
+        - description: the name of the job which is the trigger context name
+          name: JOB_NAME
+          type: string
+        - description: the specification of the job
+          name: JOB_SPEC
+          type: string
+        - description: '''the kind of job: postsubmit or presubmit'''
+          name: JOB_TYPE
+          type: string
+        - description: the base git reference of the pull request
+          name: PULL_BASE_REF
+          type: string
+        - description: the git sha of the base of the pull request
+          name: PULL_BASE_SHA
+          type: string
+        - default: ""
+          description: git pull request number
+          name: PULL_NUMBER
+          type: string
+        - default: ""
+          description: git pull request ref in the form 'refs/pull/$PULL_NUMBER/head'
+          name: PULL_PULL_REF
+          type: string
+        - default: ""
+          description: git revision to checkout (branch, tag, sha, ref…)
+          name: PULL_PULL_SHA
+          type: string
+        - description: git pull reference strings of base and latest in the form 'master:$PULL_BASE_SHA,$PULL_NUMBER:$PULL_PULL_SHA:refs/pull/$PULL_NUMBER/head'
+          name: PULL_REFS
+          type: string
+        - description: git repository name
+          name: REPO_NAME
+          type: string
+        - description: git repository owner (user or organisation)
+          name: REPO_OWNER
+          type: string
+        - description: git url to clone
+          name: REPO_URL
+          type: string
+        stepTemplate:
+          env:
+          - name: BUILD_ID
+            value: $(params.BUILD_ID)
+          - name: JOB_NAME
+            value: $(params.JOB_NAME)
+          - name: JOB_SPEC
+            value: $(params.JOB_SPEC)
+          - name: JOB_TYPE
+            value: $(params.JOB_TYPE)
+          - name: PULL_BASE_REF
+            value: $(params.PULL_BASE_REF)
+          - name: PULL_BASE_SHA
+            value: $(params.PULL_BASE_SHA)
+          - name: PULL_NUMBER
+            value: $(params.PULL_NUMBER)
+          - name: PULL_PULL_REF
+            value: $(params.PULL_PULL_REF)
+          - name: PULL_PULL_SHA
+            value: $(params.PULL_PULL_SHA)
+          - name: PULL_REFS
+            value: $(params.PULL_REFS)
+          - name: REPO_NAME
+            value: $(params.REPO_NAME)
+          - name: REPO_OWNER
+            value: $(params.REPO_OWNER)
+          - name: REPO_URL
+            value: $(params.REPO_URL)
+          name: ""
+          resources: {}
+        steps:
+        - image: gcr.io/jenkinsxio/jx-boot:3.1.155
+          name: jx-variables
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            jx gitops variables
+        - image: node:12-slim
+          name: build-npm-install
+          resources: {}
+          script: |
+            #!/bin/sh
+            npm install
+        - image: node:12-slim
+          name: build-npm-test
+          resources: {}
+          script: |
+            #!/bin/sh
+            CI=true DISPLAY=:99 npm test
+        - image: gcr.io/kaniko-project/executor:debug-v1.3.0
+          name: build-container-build
+          resources: {}
+          script: |
+            #!/busybox/sh
+            source .jx/variables.sh
+            cp /tekton/creds-secrets/tekton-container-registry-auth/.dockerconfigjson /kaniko/.docker/config.json
+            /kaniko/executor $KANIKO_FLAGS --context=/workspace/source --dockerfile=Dockerfile --destination=$DOCKER_REGISTRY/$DOCKER_REGISTRY_ORG/$APP_NAME:$VERSION
+        - image: gcr.io/jenkinsxio/jx-preview:0.0.143
+          name: promote-jx-preview
+          resources: {}
+          script: |
+            #!/usr/bin/env sh
+            source .jx/variables.sh
+            jx preview create
+status: {}
diff --git a/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/source.yaml b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/source.yaml
new file mode 100644
index 00000000..731e349c
--- /dev/null
+++ b/pkg/triggerconfig/inrepo/test_data/load_pipelinerun/uses-steps/source.yaml
@@ -0,0 +1,16 @@
+apiVersion: tekton.dev/v1beta1
+kind: PipelineRun
+spec:
+  pipelineSpec:
+    tasks:
+    - name: from-build-pack
+      taskSpec:
+        stepTemplate:
+          image: uses:jenkins-x/jx3-pipeline-catalog/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml@1d39235ee9235d7d52d4025a8e59cb8bda04306a
+        steps:
+        - name: jx-variables
+        - image: uses:https://raw.githubusercontent.com/jenkins-x/jx3-pipeline-catalog/1d39235ee9235d7d52d4025a8e59cb8bda04306a/packs/javascript/.lighthouse/jenkins-x/pullrequest.yaml
+          name: build-npm-install
+        - name: build-npm-test
+        - name: build-container-build
+        - name: promote-jx-preview