metadata:
  name: githubCreateIssue
  description: Create a new GitHub issue.
  longDescription: |
    This step allows you to create a new GitHub issue.

    You will be able to use this step for example for regular jobs to report into your repository in case of new security findings.
spec:
  inputs:
    secrets:
      - name: githubTokenCredentialsId
        description: Jenkins 'Secret text' credentials ID containing token to authenticate to GitHub.
        type: jenkins
    params:
      - name: apiUrl
        aliases:
          - name: githubApiUrl
        description: Set the GitHub API url.
        scope:
          - GENERAL
          - PARAMETERS
          - STAGES
          - STEPS
        type: string
        default: https://api.github.com
        mandatory: true
      - name: assignees
        description: Defines the assignees for the Issue.
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
        type: "[]string"
        default: []
        mandatory: false
      - name: body
        description: Defines the content of the issue, e.g. using markdown syntax.
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
        type: string
      - name: bodyFilePath
        description: Defines the path to a file containing the markdown content for the issue. This can be used instead of [`body`](#body)
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
        type: string
      - name: owner
        aliases:
          - name: githubOrg
        description: Name of the GitHub organization.
        resourceRef:
          - name: commonPipelineEnvironment
            param: github/owner
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
        type: string
        mandatory: true
      - name: repository
        aliases:
          - name: githubRepo
        description: Name of the GitHub repository.
        resourceRef:
          - name: commonPipelineEnvironment
            param: github/repository
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
        type: string
        mandatory: true
      - name: title
        description: Defines the title for the Issue.
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
        type: string
        mandatory: true
      - name: updateExisting
        description: Whether to update an existing open issue with the same title by adding a comment instead of creating a new one.
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
        type: bool
        mandatory: false
        default: false
      - name: token
        aliases:
          - name: githubToken
          - name: access_token
        description: GitHub personal access token as per https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line.
        scope:
          - GENERAL
          - PARAMETERS
          - STAGES
          - STEPS
        type: string
        mandatory: true
        secret: true
        resourceRef:
          - name: githubTokenCredentialsId
            type: secret
          - type: vaultSecret
            default: github
            name: githubVaultSecretName
