metadata:
  name: abapEnvironmentCloneGitRepo
  description: Clones a git repository to a SAP BTP ABAP Environment system
  longDescription: |
    Clones a git repository (Software Component) to a SAP BTP ABAP Environment system. If the repository is already cloned, the step will checkout the configured branch and pull the specified commit, instead.
    Please provide either of the following options:

    * The host and credentials the BTP ABAP Environment system itself. The credentials must be configured for the Communication Scenario [SAP_COM_0510](https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/b04a9ae412894725a2fc539bfb1ca055.html).
    * The Cloud Foundry parameters (API endpoint, organization, space), credentials, the service instance for the ABAP service and the service key for the Communication Scenario SAP_COM_0510.
    * Only provide one of those options with the respective credentials. If all values are provided, the direct communication (via host) has priority.

spec:
  inputs:
    secrets:
      - name: abapCredentialsId
        description: Jenkins credentials ID containing user and password to authenticate to the BTP ABAP Environment system or the Cloud Foundry API
        type: jenkins
        aliases:
          - name: cfCredentialsId
          - name: credentialsId
    params:
      - name: username
        type: string
        description: User for either the Cloud Foundry API or the Communication Arrangement for SAP_COM_0510
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
        mandatory: true
        secret: true
        resourceRef:
          - name: abapCredentialsId
            type: secret
            param: username
      - name: password
        type: string
        description: Password for either the Cloud Foundry API or the Communication Arrangement for SAP_COM_0510
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
        mandatory: true
        secret: true
        resourceRef:
          - name: abapCredentialsId
            type: secret
            param: password
      - name: repositories
        type: string
        description: Specifies a YAML file containing the repositories configuration
        scope:
          - GENERAL
          - PARAMETERS
          - STAGES
          - STEPS
      - name: repositoryName
        type: string
        description: Specifies a repository (Software Components) on the SAP BTP ABAP Environment system
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
      - name: branchName
        type: string
        description: Specifies a branch of a repository (Software Components) on the SAP BTP ABAP Environment system
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
      - name: host
        type: string
        description: Specifies the host address of the SAP BTP ABAP Environment system
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
          - GENERAL
      - name: cfApiEndpoint
        type: string
        description: Cloud Foundry API Enpoint
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
          - GENERAL
        aliases:
          - name: cloudFoundry/apiEndpoint
      - name: cfOrg
        type: string
        description: Cloud Foundry target organization
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
          - GENERAL
        aliases:
          - name: cloudFoundry/org
      - name: cfSpace
        type: string
        description: Cloud Foundry target space
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
          - GENERAL
        aliases:
          - name: cloudFoundry/space
      - name: cfServiceInstance
        type: string
        description: Cloud Foundry Service Instance
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
          - GENERAL
        aliases:
          - name: cloudFoundry/serviceInstance
      - name: cfServiceKeyName
        type: string
        description: Cloud Foundry Service Key
        scope:
          - PARAMETERS
          - STAGES
          - STEPS
          - GENERAL
        aliases:
          - name: cloudFoundry/serviceKey
          - name: cloudFoundry/serviceKeyName
          - name: cfServiceKey
  containers:
    - name: cf
      image: ppiper/cf-cli:7
