apiVersion: tekton.dev/v1
kind: Task
metadata:
  name: platform-browsers
  annotations:
    description: |
      A task that does something cool with platforms and browsers
spec:
  params:
    - name: platform
    - name: browser
    - name: url
  steps:
    - name: echo
      image: alpine
      script: |
        echo "Visit $(params.url) on $(params.platform) using $(params.browser)."
---
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  generateName: matrixed-pr-
spec:
  taskRunTemplate:
    serviceAccountName: "default"
  pipelineSpec:
    tasks:
      - name: get-platforms
        taskSpec:
          results:
            - name: platforms
              type: array
          steps:
            - name: produce-a-list-of-platforms
              image: bash:latest
              script: |
                #!/usr/bin/env bash
                echo -n "[\"linux\",\"mac\",\"windows\"]" | tee $(results.platforms.path)
      - name: get-browsers-and-url
        taskSpec:
          results:
            - name: browsers
              type: array
            - name: url
          steps:
            - name: produce-a-list-of-browsers
              image: bash:latest
              script: |
                #!/usr/bin/env bash
                echo -n "[\"chrome\",\"safari\",\"firefox\"]" | tee $(results.browsers.path)
            - name: produce-url
              image: bash:latest
              script: |
                #!/usr/bin/env bash
                echo -n "myfavoritesitedotcom" | tee $(results.url.path)
      - name: platforms-and-browsers-dag
        matrix:
          params:
            - name: platform
              value: $(tasks.get-platforms.results.platforms[*])
            - name: browser
              value:
                - $(tasks.get-browsers-and-url.results.browsers[0])
                - $(tasks.get-browsers-and-url.results.browsers[2])
            - name: url
              value:
                - $(tasks.get-browsers-and-url.results.url)
        taskRef:
          name: platform-browsers