Access Pipelines and Tasks in Private Repositories

Integration Test Scenarios point to their corresponding pipeline with a Git Resolver. The Git Resolver schema is inherited from Tekton and functions in the same way. Users should create an access token for their repository in Github or Gitlab then store that token in a secret in their namespace.

Once this is done, the Resolver should be updated with the fields token and tokenKey, which provide the name of the secret and the key within the data section of that secret in which the access token is stored.

Example of Resolver in IntegrationTestScenario

its.yaml
apiVersion: appstudio.redhat.com/v1beta2
kind: IntegrationTestScenario
metadata:
  name: example-pass
  namespace: default
spec:
  application: application-sample
  contexts:
    - description: Application testing
      name: application
  resolverRef:
    resolver: git
    params:
      - name: org
        value: konflux-ci
      - name: repo
        value: sample-private-repo
      - name: serverURL
        value: https://github.com
      - name: revision
        value: main
      - name: pathInRepo
        value: pipelines/integration_pipeline_pass.yaml
      - name: token
        value: ${SECRET_NAME}
      - name: tokenKey
        value: ${SECRET_KEY}

Example of Resolver in Pipeline

This is an example of how tasks in private repos can be accessed with the Git Resolver using the same method as above.

pipeline.yaml
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: deploy-and-test
spec:
  description: |
    Demonstrates the use of Git Resolvers to access tasks in private repos
  tasks:
    - name: parse-metadata
        taskRef:
          resolver: git
          params:
            - name: org
              value: konflux-ci
            - name: repo
              value: sample-private-repo
            - name: serverURL
              value: https://github.com
            - name: revision
              value: main
            - name: pathInRepo
              value: tasks/test_metadata.yaml
            - name: token
              value: ${SECRET_NAME}
            - name: tokenKey
              value: ${SECRET_KEY}
        params:
          - name: SNAPSHOT
            value: $(params.SNAPSHOT)