pipelines:

  # MUST SET FOR EXTERNAL POSTGRESQL AND VAULT
  global:
    postgresql:
      host: OVERRIDE
      port: OVERRIDE
      database: OVERRIDE
      user: OVERRIDE
      password: OVERRIDE
      ssl: OVERRIDE

  ## Common
  initContainer:
    image: registry.connect.redhat.com/jfrog/pipelines-init:1.8.0
    pullPolicy: IfNotPresent

  # Init containers
  initContainers:
    resources: {}
  #    requests:
  #      memory: "64Mi"
  #      cpu: "10m"
  #    limits:
  #      memory: "128Mi"
  #      cpu: "250m"


  ## Available modes: devmode (enable it for debuging) and production
  runMode: production

  ## Image Registry to pull images for Pipelines components from
  ## You can override it with your private Artifactory registry
  imageRegistry: registry.connect.redhat.com

  ## For supporting pulling from private registries
  ## Secret type: kubernetes.io/dockerconfigjson
  imagePullSecrets:

  ## Existing secret with Pipelines system.yaml
  existingSecret:

  ## String to partially override pipelines.fullname template (will maintain the release name)
  # nameOverride:

  ## String to fully override pipelines.fullname template
  # fullnameOverride:

  ## Set user/group to run Pipelines components with
  securityContext:
    enabled: true
    uid: '1000721117'
    gid: '1000721117'

  ## Pipelines components
  pipelines:
    version: 1.8.0
    ## Artifactory URL - Mandatory
    jfrogUrl: OVERRIDE
    jfrogUrlUI: OVERRIDE

    ## Pipelines requires the join key from Artifactory
    joinKey: OVERRIDE

    ## Pipelines requires a unique master key
    ## You can generate one with the command: "openssl rand -hex 32"
    masterKey: OVERRIDE

    ## Installer Authentication Token
    ## The unique token can be generated with: uuidgen | tr '[:upper:]' '[:lower:]'
    authToken: "c7595edd-b63d-4fd6-9e1e-13924d6637f0"

    ## Pipelines ID in Artifactory
    ## For production, the unique ID should be generated instead of using 12345: openssl rand | tr -dc 1-9 | head -c 10
    serviceId: jfpip@12345

    ## Artifactory Service ID
    ## This should be set to the Artifactory Service ID
    artifactoryServiceId: "FFFFFFFFFFFF"

    ## Artifactory License ID
    ##
    licenseId: "FFFFFFFFF"

    ## A name must be unique if the same Artifactory is shared between different Pipelines
    ## Repository type `Generic` with layout `maven-2-default` must be precreated in advance
    rootBucket: jfrogpipelines

    mountPath: /opt/jfrog/pipelines/var/etc

    logPath: /opt/jfrog/pipelines/var/log

    replicaCount: 1

    # CORS configuration. Default values are artifactory url and www external url
    accessControlAllowOrigins_0: OVERRIDE
    accessControlAllowOrigins_1: OVERRIDE

    # RabbitMQ health check interval in mins
    rabbitmqHealthCheckIntervalInMins: 1
    # Artifactory health check interval in mins
    artifactoryHealthCheckIntervalInMins: 1

    updateStrategy: RollingUpdate

    nodeSelector: {}
    tolerations: []
    affinity: {}

    ## Apply horizontal pod auto scaling on Pipelines pods
    ## Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale
    autoscaling:
      enabled: false
      minReplicas: 1
      maxReplicas: 3
      targetCPUUtilizationPercentage: 70

    api:
      image:
        repository: jfrog/pipelines-api
        pullPolicy: IfNotPresent

      service:
        ## Supported service types: ClusterIP, NodePort and LoadBalancer
        type: LoadBalancer
        port: 30000

        annotations:
        # external-dns.alpha.kubernetes.io/hostname:  example.org
        # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
        # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:XXXXXX:certificate/XXXXXX

        ## Set LB static IP
        loadBalancerIP:

        ## Whitelist IPs allowed to LoadBalancer type services
        ## Example: loadBalancerSourceRanges={82.82.190.51/32,141.141.8.8/32}
        loadBalancerSourceRanges: []
      livenessProbe:
        enabled: true
        initialDelaySeconds: 20
        timeoutSeconds: 10
        periodSeconds: 10
        failureThreshold: 10
        successThreshold: 1
        path: /
        port: api

      readinessProbe:
        enabled: true
        initialDelaySeconds: 20
        timeoutSeconds: 10
        periodSeconds: 10
        failureThreshold: 10
        successThreshold: 1
        path: /
        port: api

      ## External URL, it is ignored if ingress is enabled
      externalUrl:

      ingress:
        enabled: false
        annotations: {}
          # kubernetes.io/ingress.class: nginx
          # kubernetes.io/tls-acme: "true"
        path: /
        hosts:
          - chart-example.local

        tls: []
        #  - secretName: chart-example-tls
        #    hosts:
        #      - chart-example.local

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi
    router:
      image:
        repository: jfrog/pipelines-router
        pullPolicy: IfNotPresent

      internalPort: 8046
      externalPort: 8082

      mountPath: "/opt/jfrog/router/var/etc"

      resources: {}
      #  requests:
      #    memory: "2Gi"
      #    cpu: "500m"
      #  limits:
      #    memory: "4Gi"
      #    cpu: "2"

    www:
      image:
        repository: jfrog/pipelines-www
        pullPolicy: IfNotPresent

      service:
        ## Supported service types: ClusterIP, NodePort and LoadBalancer
        type: LoadBalancer
        port: 30001

        annotations:
        # external-dns.alpha.kubernetes.io/hostname:  example.org
        # service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
        # service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:XXXXXX:certificate/XXXXXX

        ## Set LB static IP
        loadBalancerIP:

        ## Whitelist IPs allowed to LoadBalancer type services
        ## Example: loadBalancerSourceRanges={82.82.190.51/32,141.141.8.8/32}
        loadBalancerSourceRanges: []
      livenessProbe:
        enabled: true
        initialDelaySeconds: 20
        failureThreshold: 10
        timeoutSeconds: 10
        periodSeconds: 10
        successThreshold: 1
        path: /
        port: www


      readinessProbe:
        enabled: true
        initialDelaySeconds: 20
        failureThreshold: 10
        timeoutSeconds: 10
        periodSeconds: 10
        successThreshold: 1
        path: /
        port: www

      ## External URL, it is ignored if ingress is enabled
      externalUrl:

      ingress:
        enabled: false
        annotations: {}
          # kubernetes.io/ingress.class: nginx
          # kubernetes.io/tls-acme: "true"
        path: /
        hosts:
          - chart-example.local

        tls: []
        #  - secretName: chart-example-tls
        #    hosts:
        #      - chart-example.local

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    msg:
      uiUser: OVERRIDE
      uiUserPassword: OVERRIDE

    pipelineSync:
      image:
        repository: jfrog/pipelines-micro
        pullPolicy: Always

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    runTrigger:
      image:
        repository: jfrog/pipelines-micro
        pullPolicy: IfNotPresent

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    stepTrigger:
      image:
        repository: jfrog/pipelines-micro
        pullPolicy: IfNotPresent

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    cron:
      image:
        repository: jfrog/pipelines-micro
        pullPolicy: IfNotPresent

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    nexec:
      image:
        repository: jfrog/pipelines-micro
        pullPolicy: IfNotPresent

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    hookHandler:
      image:
        repository: jfrog/pipelines-micro
        pullPolicy: IfNotPresent

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    marshaller:
      image:
        repository: jfrog/pipelines-micro
        pullPolicy: IfNotPresent

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    logup:
      image:
        repository: jfrog/pipelines-micro
        pullPolicy: IfNotPresent

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    extensionSync:
      image:
        repository: jfrog/pipelines-micro
        pullPolicy: IfNotPresent

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    ## Pipelines installer
    pipelinesInit:
      image:
        repository: jfrog/pipelines-installer
        pullPolicy: IfNotPresent

      resources: {}
        # limits:
        #   cpu: 100m
        #   memory: 128Mi
        # requests:
        #   cpu: 100m
        #   memory: 128Mi

    ## Cluster Role Based Access
    ## Ref: https://kubernetes.io/docs/admin/authorization/rbac/
    rbac:
      role:
        ## Rules to create. It follows the role specification
        rules:
        - apiGroups: ["", "extensions", "apps"]
          resources:
          - deployments
          - persistentvolumes
          - persistentvolumeclaims
          - pods
          - deployments/scale
          verbs: ["*"]

    # Add any list of configmaps to Pipelines
    configMaps: |
    #  posthook-start.sh: |-
    #    echo "This is a post start script"
    #  posthook-end.sh: |-
    #    echo "This is a post end script"

    ## Add custom volumes
    customVolumes: |
    #  - name: custom-script
    #    configMap:
    #      name: custom-script

    ## Add custom volumesMounts
    customVolumeMounts: |
    #  - name: custom-script
    #    mountPath: /scripts/script.sh
    #    subPath: script.sh

    ## Add custom init begin containers - first init container to run
    customInitContainersBegin: |
      - name: "redhat-custom-setup"
        image: {{ .Values.initContainer.image }}
        imagePullPolicy: Always
        command:
          - 'sh'
          - '-c'
          - 'chown -R {{ .Values.securityContext.uid }}:{{ .Values.securityContext.gid }} {{ .Values.pipelines.mountPath }} && chown -R {{ .Values.securityContext.uid }}:{{ .Values.securityContext.gid }} {{ .Values.pipelines.logPath }}'
        securityContext:
            runAsUser: 0
        volumeMounts:
          - name: jfrog-pipelines-folder
            mountPath: "{{ .Values.pipelines.mountPath }}"
          - name: jfrog-pipelines-logs
            mountPath: {{ .Values.pipelines.logPath }}

    ## Add custom init containers - last init container to run
    customInitContainers: |
    #  - name: "custom-setup"
    #    image: "{{ .Values.initContainer.image }}"
    #    imagePullPolicy: "{{ .Values.initContainer.pullPolicy}}"
    #    command:
    #      - 'sh'
    #      - '-c'
    #      - 'touch {{ .Values.pipelines.mountPath }}/example-custom-setup'
    #    volumeMounts:
    #      - mountPath: "{{ .Values.pipelines.mountPath}}"
    #        name: jfrog-pipelines-folder

    ## Add custom sidecar containers
    # - The provided example uses a custom volume (customVolumes)
    customSidecarContainers: |
    #  - name: "sidecar-list-etc"
    #    image: "{{ .Values.initContainer.image }}"
    #    imagePullPolicy: "{{ .Values.initContainer.pullPolicy }}"
    #    securityContext:
    #      allowPrivilegeEscalation: false
    #    command:
    #      - 'sh'
    #      - '-c'
    #      - 'sh /scripts/script.sh'
    #    volumeMounts:
    #      - mountPath: "{{ .Values.pipelines.mountPath }}"
    #        name: volume
    #      - mountPath: "/scripts/script.sh"
    #        name: custom-script
    #        subPath: script.sh
    #    resources:
    #      requests:
    #        memory: "32Mi"
    #        cpu: "50m"
    #      limits:
    #        memory: "128Mi"
    #        cpu: "100m"

    systemYaml: |
      {{- if .Values.router.routerConfiguration }}
      router:
        ## Router configuration
        topology:
          external:
            refresh:
              interval: "{{ .Values.router.topology.external.refresh.interval }}"
        serviceRegistry:
          url: "{{ .Values.router.serviceRegistry.url }}"
      {{- end }}
      shared:
        ## Artifactory configuration
        ##
        artifactory:
          ## Artifactory URL
          ##
          baseUrl: "{{ tpl (required "\n\npipelines.jfrogUrl is required!\n" .Values.pipelines.jfrogUrl) . }}"
          ## Unified UI URL
          ##
          baseUrlUI: "{{ tpl (required "\n\npipelines.jfrogUrlUI is required!\n" .Values.pipelines.jfrogUrlUI) . }}"
          ## Pipelines Service ID
          ##
          serviceId: "{{ .Values.pipelines.serviceId }}"
          ## Artifactory Service ID
          ##
          artifactoryServiceId: "{{ .Values.pipelines.artifactoryServiceId }}"
          ## Artifactory License ID
          ##
          licenseId: "{{ .Values.pipelines.licenseId }}"
          ## Proxy to connect to Artifactory
          ##
          proxy:
            url: ""
            username: ""
            password: ""

        ## Router configuration
        ##
        router:
          ip: ""
          accessPort: {{ .Values.pipelines.router.internalPort }}
          dataPort: {{ .Values.pipelines.router.externalPort }}
          joinKey: "{{ .Values.pipelines.joinKey }}"

        security:
          masterKey: "{{ .Values.pipelines.masterKey }}"

        ## Database configuration
        ##
        db:
          type: "postgres"
          {{- if .Values.postgresql.enabled }}
          ip: {{ tpl .Release.Name . }}-postgresql
          port: "{{ .Values.postgresql.service.port }}"
          name: {{ .Values.postgresql.postgresqlDatabase }}
          username: {{ .Values.postgresql.postgresqlUsername }}
          password: {{ .Values.postgresql.postgresqlPassword }}
          {{- else }}
          ip: {{ tpl .Values.global.postgresql.host . }}
          port: "{{ .Values.global.postgresql.port }}"
          name: {{ .Values.global.postgresql.database }}
          username: {{ .Values.global.postgresql.user }}
          password: {{ .Values.global.postgresql.password }}
          {{- end }}
          externalUrl: ""
          {{- if .Values.postgresql.enabled }}
          connectionString: "{{ tpl (printf "postgres://%s:%s@%s-postgresql:%v/%s" .Values.postgresql.postgresqlUsername .Values.postgresql.postgresqlPassword .Release.Name .Values.postgresql.service.port .Values.postgresql.postgresqlDatabase) . }}"
          {{- else if and (not .Values.postgresql.enabled) (.Values.global.postgresql.ssl) }}
          connectionString: "{{ tpl (printf "postgres://%s:%s@%v:%v/%s?sslmode=require" .Values.global.postgresql.user .Values.global.postgresql.password .Values.global.postgresql.host .Values.global.postgresql.port .Values.global.postgresql.database) . }}"
          {{- else }}
          connectionString: "{{ tpl (printf "postgres://%s:%s@%v:%v/%s" .Values.global.postgresql.user .Values.global.postgresql.password .Values.global.postgresql.host .Values.global.postgresql.port .Values.global.postgresql.database) . }}"
          {{- end }}

        ## RabbitMQ configuration
        ##
        msg:
          {{- if .Values.rabbitmq.enabled }}
          ip: {{ .Release.Name }}-rabbitmq
          port: {{ .Values.rabbitmq.service.port }}
          adminPort: {{ .Values.rabbitmq.service.managerPort }}
          erlangCookie: {{ .Values.rabbitmq.rabbitmq.erlangCookie }}
          username: {{ .Values.rabbitmq.rabbitmq.username }}
          password: {{ .Values.rabbitmq.rabbitmq.password }}
          defaultExchange: pipelinesEx
          amqpVhost: pipelines
          amqpRootVhost: pipelinesRoot
          {{- else }}
          ip: {{ tpl .Values.rabbitmq.internal_ip . }}
          port: {{ .Values.rabbitmq.port}}
          adminPort: {{ .Values.rabbitmq.manager_port }}
          erlangCookie: {{ .Values.rabbitmq.erlang_cookie }}
          username: {{ .Values.rabbitmq.ms_username }}
          password: {{ .Values.rabbitmq.ms_password }}
          defaultExchange: {{ .Values.rabbitmq.root_vhost_exchange_name }}
          amqpVhost: {{ .Values.rabbitmq.build_vhost_name}}
          amqpRootVhost: {{ .Values.rabbitmq.root_vhost_name }}
          protocol: {{ .Values.rabbitmq.protocol }}
          {{- end }}
          queues:
            - "core.pipelineSync"
            - "core.runTrigger"
            - "core.stepTrigger"
            - "core.marshaller"
            - "cluster.init"
            - "core.logup"
            - "www.signals"
            - "core.nexec"
            - "core.hookHandler"
            - "core.extensionSync"
          ui:
            {{- if .Values.rabbitmq.enabled }}
            username: {{ .Values.pipelines.msg.uiUser }}
            password: {{ .Values.pipelines.msg.uiUserPassword }}
            {{- else }}
            protocol: http
            username: {{ .Values.rabbitmq.cp_username }}
            password: {{ .Values.rabbitmq.cp_password }}
            {{- end }}
          external:
            ## URL for build plane VMs to access RabbitMQ
            {{- if .Values.rabbitmq.externalUrl }}
            url: {{ .Values.rabbitmq.externalUrl }}
            {{- else if (and .Values.rabbitmq.serviceVmLb.enabled .Values.rabbitmq.serviceVmLb.loadBalancerIP) }}
            url: amqp://{{ .Values.rabbitmq.serviceVmLb.loadBalancerIP }}
            {{- else if .Values.rabbitmq.enabled }}
            url: amqp://{{ tpl .Release.Name . }}-rabbitmq
            {{- else }}
            url: {{ .Values.rabbitmq.protocol }}://{{ tpl .Values.rabbitmq.msg_hostname . }}:{{ .Values.rabbitmq.port }}
            {{- end }}
            rootUrl: ""
            adminUrl: ""
          {{- if not .Values.rabbitmq.enabled }}
          build:
            username: {{ .Values.rabbitmq.build_username }}
            password: {{ .Values.rabbitmq.build_password }}
          {{- end }}

        ## Vault configuration
        ##
        vault:
          {{- if .Values.vault.enabled }}
          ip: {{ include "pipelines.vault.name" . }}
          port: {{ .Values.vault.service.port }}
          {{- else }}
          ip: {{ .Values.global.vault.host }}
          port: {{ .Values.global.vault.port }}
          {{- end }}
          ## DO NOT CHANGE THE TOKEN VALUE!!!
          token: "_VAULT_TOKEN_"
          unsealKeys:
            - ""
            - ""
            - ""
            - ""
            - ""

        ## Redis configuration
        ##
        redis:
          ip: {{ .Release.Name }}-redis-master
          port: 6379
          clusterEnabled: false

      ## This section is used for bringing up the core services and setting up
      ## configurations required by the installer & the services
      ##
      core:
        ## id is automatically determined based on the current hostname
        ## or set using the SHARED_NODE_ID environment variable.
        ##
        id: "afd8df9d08bf257ae9b7d7dbbf348b7a3a574ebdd3a61d350d4b64e3129dee85"
        installerIP: "1.2.3.4"
        installerAuthToken: "{{ .Values.pipelines.authToken }}"
        installerImage: "jfrog/pipelines-installer"
        registryUrl: "{{ .Values.imageRegistry }}"
        os: "Ubuntu_16.04"
        osDistribution: "xenial"
        architecture: "x86_64"
        dockerVersion: ""
        runMode: "{{ .Values.runMode }}"
        user: ""
        group: ""
        noVerifySsl: false
        ignoreTLSErrors: false
        controlplaneVersion: "{{ default .Chart.AppVersion .Values.pipelines.version }}"
        buildplaneVersion: "{{ default .Chart.AppVersion .Values.pipelines.version }}"
        accessControlAllowOrigins:
          - {{ .Values.pipelines.accessControlAllowOrigins_0 }}
          - {{ .Values.pipelines.accessControlAllowOrigins_1 }}
        rabbitmqHealthCheckIntervalInMins: {{ .Values.pipelines.rabbitmqHealthCheckIntervalInMins}}
        artifactoryHealthCheckIntervalInMins: {{ .Values.pipelines.artifactoryHealthCheckIntervalInMins}}
        ## Global proxy settings, to be applied to all services
        ##
        proxy:
          httpProxy: ""
          httpsProxy: ""
          noProxy: ""
          username: ""
          password: ""

        ## Mailserver settings
        ##
        mailserver:
          host: ""
          port: ""
          username: ""
          password: ""
          tls: ""
          ssl: ""
        apiRetryIntervalMs: 3000
        accountSyncFrequencyHr: 1
        imageRegistrySecret: "{{ .Values.imagePullSecrets }}"
        hardDeleteIntervalInMins: 60
        configBackupCount: 5
        lastUpdateTime: ""
        callHomeUrl:  "https://api.bintray.com/products/jfrog/pipelines/stats/usage"
        allowCallHome: true
        serviceInstanceHealthCheckIntervalInMins: 1
        serviceInstanceStatsCutOffIntervalInHours: 24

        ## Service configuration
        ##
        services:
          api:
            name: {{ include "pipelines.api.name" . }}
            port: {{ .Values.pipelines.api.service.port }}
            {{- if (and .Values.pipelines.api.ingress.enabled .Values.pipelines.api.ingress.tls) }}
            {{- range .Values.pipelines.api.ingress.hosts }}
            externalUrl: https://{{ . }}
            {{- end }}
            {{- else if .Values.pipelines.api.ingress.enabled }}
            {{- range .Values.pipelines.api.ingress.hosts }}
            externalUrl: http://{{ . }}
            {{- end }}
            {{- else }}
            externalUrl: {{ .Values.pipelines.api.externalUrl }}
            {{- end }}
          www:
            name: {{ include "pipelines.www.name" . }}
            port: {{ .Values.pipelines.www.service.port }}
            {{- if (and .Values.pipelines.www.ingress.enabled .Values.pipelines.www.ingress.tls) }}
            {{- range .Values.pipelines.www.ingress.hosts }}
            externalUrl: https://{{ . }}
            {{- end }}
            {{- else if .Values.pipelines.www.ingress.enabled }}
            {{- range .Values.pipelines.www.ingress.hosts }}
            externalUrl: http://{{ . }}
            {{- end }}
            {{- else }}
            externalUrl: {{ .Values.pipelines.www.externalUrl }}
            {{- end }}
            sessionSecret: "{{ .Values.pipelines.authToken }}"
          pipelineSync:
            name: pipelineSync
          runTrigger:
            name: runTrigger
          stepTrigger:
            name: stepTrigger
          cron:
            name: cron
          nexec:
            name: nexec
          hookHandler:
            name: hookHandler
          marshaller:
            name: marshaller
          extensionSync:
            name: extensionSync

      ## Runtime configuration
      ##
      runtime:
        rootBucket: "{{ .Values.pipelines.rootBucket }}"
        defaultMinionCount: 1
        nodeCacheIntervalMS: 600000
        jobConsoleBatchSize: 10
        jobConsoleBufferIntervalMs: 3
        maxDiskUsagePercentage: 90
        stepTimeoutMS: 3600000
        nodeStopDayOfWeek: 0
        nodeStopIntervalDays: 30
        maxNodeCheckInDelayMin: 15
        defaultMinionInstanceSize: "c4.large"
        allowDynamicNodes: true
        allowCustomNodes: true
        {{- range $key, $value := .Values.runtimeOverride }}
        {{ $key }}: {{ $value | quote }}
        {{- end }}
        languageImages:
          - architecture: x86_64
            os: Ubuntu_16.04
            language: node
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-u16node
            isDefault: true
            defaultVersion: 10.18.0
          - architecture: x86_64
            os: Ubuntu_16.04
            language: java
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-u16java
            defaultVersion: 13
          - architecture: x86_64
            os: Ubuntu_16.04
            language: cpp
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-u16cpp
            defaultVersion: 9.0.0
          - architecture: x86_64
            os: Ubuntu_16.04
            language: go
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-u16go
            defaultVersion: 1.12.14
          - architecture: x86_64
            os: Ubuntu_18.04
            language: node
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-u18node
            isDefault: true
            defaultVersion: 10.18.0
          - architecture: x86_64
            os: Ubuntu_18.04
            language: java
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-u18java
            defaultVersion: 13
          - architecture: x86_64
            os: Ubuntu_18.04
            language: cpp
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-u18cpp
            defaultVersion: 9.0.0
          - architecture: x86_64
            os: Ubuntu_18.04
            language: go
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-u18go
            defaultVersion: 1.12.14
          - architecture: x86_64
            os: CentOS_7
            language: node
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-c7node
            isDefault: true
            defaultVersion: 10.18.0
          - architecture: x86_64
            os: CentOS_7
            language: java
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-c7java
            defaultVersion: 11
          - architecture: x86_64
            os: CentOS_7
            language: cpp
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-c7cpp
            defaultVersion: 3.4.2
          - architecture: x86_64
            os: CentOS_7
            language: go
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-c7go
            defaultVersion: 1.12.14
          - architecture: x86_64
            os: WindowsServer_2019
            language: node
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-w19node
            defaultVersion: 10.18.0
          - architecture: x86_64
            os: WindowsServer_2019
            language: java
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-w19java
            defaultVersion: 11
          - architecture: x86_64
            os: WindowsServer_2019
            language: cpp
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-w19cpp
            defaultVersion: 9.0.0
          - architecture: x86_64
            os: WindowsServer_2019
            language: go
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-w19go
            defaultVersion: 1.12.14
          - architecture: x86_64
            os: WindowsServer_2019
            language: dotnetcore
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-w19dotnetcore
            isDefault: true
            defaultVersion: 3.1
          - architecture: x86_64
            os: RHEL_7
            language: node
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-c7node
            isDefault: true
            defaultVersion: 10.18.0
          - architecture: x86_64
            os: RHEL_7
            language: java
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-c7java
            defaultVersion: 11
          - architecture: x86_64
            os: RHEL_7
            language: cpp
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-c7cpp
            defaultVersion: 3.4.2
          - architecture: x86_64
            os: RHEL_7
            language: go
            registryUrl: docker.bintray.io
            image: jfrog/pipelines-c7go
            defaultVersion: 1.12.14

  ## Runtime Override Properties Section
  runtimeOverride: {}

  # Router Configuration
  router:
    routerConfiguration: false
    topology:
      external:
        refresh:
          interval: "3s"
    serviceRegistry:
      url:

  # PostgreSQL
  ## https://hub.helm.sh/charts/bitnami/postgresql
  ## Configuration values for the postgresql dependency
  ## ref: https://github.com/kubernetes/charts/blob/master/stable/postgresql/README.md
  ##
  postgresql:
    enabled: false

  ## RabbitMQ HA
  ## https://hub.helm.sh/charts/bitnami/rabbitmq
  ## Configuration values for the rabbitmq dependency
  ## ref: https://github.com/kubernetes/charts/blob/master/stable/rabbitmq/README.md
  ##
  rabbitmq:
    enabled: true
    protocol: amqps
    replicas: 1

    image:
      registry: registry.connect.redhat.com
      repository: jfrog/pipelines-rabbitmq
      tag: 3.8.9


    # DO NOT CHANGE CUSTOM INIT USER
    rabbitmq:
      username: user
      password: bitnami
      erlangCookie: PIPELINESRABBITMQCLUSTER
      extraPlugins: ""

    service:
      type: LoadBalancer
      annotations: {}

    persistence:
      enabled: true
      size: 20Gi

    resources: {}
    affinity: {}
    ingress:
      ## Set to true to enable ingress record generation
      enabled: false

      ## The list of hostnames to be covered with this ingress record.
      ## Most likely this will be just one host, but in the event more hosts are needed, this is an array
      # hostName: foo.bar.com
      path: /

      ## Set this to true in order to enable TLS on the ingress record
      ## A side effect of this will be that the backend wordpress service will be connected at port 443
      tls: true

      ## If TLS is set to true, you must declare what secret will store the key/certificate for TLS
      tlsSecret: myTlsSecret

      ## Ingress annotations done as key:value pairs
      annotations:
      #  kubernetes.io/ingress.class: nginx
      #  kubernetes.io/tls-acme: true


    externalUrl: OVERRIDE

    ## Service with external/internal LoadBalancer to access RabbitMQ by Node-pool VMs
    serviceVmLb:
      enabled: false

      annotations:
      ## Set internal LB for Azure
      #  service.beta.kubernetes.io/azure-load-balancer-internal: "true"
      ## Set internal LB for AWS
      #  service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
      ## Set internal LB for GCP
      #  cloud.google.com/load-balancer-type: "Internal"

      ## You must to provide internal LB static IP
      loadBalancerIP:

      ## Whitelist IPs allowed to LoadBalancer type services
      ## Example: loadBalancerSourceRanges={82.82.190.51/32,141.141.8.8/32}
      loadBalancerSourceRanges: []

  ## Redis
  ## Configuration values for the redis dependency
  ## ref: https://github.com/bitnami/charts/tree/master/bitnami/redis
  ##
  redis:
    enabled: true
    image:
      registry: registry.redhat.io
      repository: rhel8/redis-5
      tag: 1-98

    redisPort: 6379

    cluster:
      enabled: false
      slaveCount: 2

    usePassword: false

    master:
      command: "container-entrypoint run-redis"
      configmap: |-
        appendonly yes
        loglevel notice

      resources: {}
      #  requests:
      #    memory: 200Mi
      #    cpu: 100m
      #  limits:
      #    memory: 700Mi

      affinity: {}

    slave:
      resources: {}
      #  requests:
      #    memory: 200Mi
      #    cpu: 100m
      #  limits:
      #    memory: 200Mi

      affinity: {}

  ## Vault
  vault:
    enabled: true
    updateStrategy: RollingUpdate

    image:
      repository: registry.connect.redhat.com/jfrog/pipelines-vault
      tag: 1.8.0
      pullPolicy: IfNotPresent

    init:
      image:
        repository: jfrog/pipelines-vault-init
        pullPolicy: IfNotPresent

    service:
      # Supported service types: ClusterIP and NodePort
      type: ClusterIP
      port: 30100

    # Disable mlock only in non-prod environments
    disablemlock: false

    resources: {}
    #  requests:
    #    memory: 256Mi
    #    cpu: 200m
    #  limits:
    #    memory: 1Gi
    #    cpu: 600m

    affinity: {}
    nodeSelector: {}
    tolerations: []

    ## Role Based Access
    ## Ref: https://kubernetes.io/docs/admin/authorization/rbac/
    rbac:
      role:
        ## Rules to create. It follows the role specification
        rules:
        - apiGroups:
          - ''
          resources:
          - secrets
          verbs:
          - "*"

    # Add any list of configmaps to vault
    configMaps: |
    #  posthook-start.sh: |-
    #    echo "This is a post start script"
    #  posthook-end.sh: |-
    #    echo "This is a post end script"

    ## Add custom volumes
    customVolumes: |
    #  - name: custom-script
    #    configMap:
    #      name: custom-script

    ## Add custom volumesMounts
    customVolumeMounts: |
    #  - name: custom-script
    #    mountPath: /scripts/script.sh
    #    subPath: script.sh

    ## Add custom init begin containers - first init container to run
    customInitContainersBegin: |
    #  - name: "custom-begin-setup"
    #    image: "{{ .Values.initContainer.image }}"
    #    imagePullPolicy: "{{ .Values.initContainer.pullPolicy}}"
    #    command:
    #      - 'sh'
    #      - '-c'
    #      - 'touch {{ .Values.pipelines.mountPath }}/example-custom-setup'
    #    volumeMounts:
    #      - mountPath: "{{ .Values.pipelines.mountPath}}"
    #        name: jfrog-pipelines-folder

    ## Add custom init containers - last init container to run
    customInitContainers: |
    #  - name: "custom-setup"
    #    image: "{{ .Values.initContainer.image }}"
    #    imagePullPolicy: "{{ .Values.initContainer.pullPolicy}}"
    #    command:
    #      - 'sh'
    #      - '-c'
    #      - 'touch {{ .Values.pipelines.mountPath }}/example-custom-setup'
    #    volumeMounts:
    #      - mountPath: "{{ .Values.pipelines.mountPath}}"
    #        name: jfrog-pipelines-folder


  # Filebeat Sidecar container
  ## The provided filebeat configuration is for Pipeline logs. It assumes you have a logstash installed and configured properly.
  filebeat:
    enabled: false

  ##
  rbac:
    create: true

  ## The Build Plane is where the actual builds will run
  buildPlane:
    ## Dynamic Build Plane integration for the initial bootstrapping of the build planes.
    ## Any required changes post install need to be done in UI: Administration/Pipelines/Integrations
    dynamic:
      ## customer part is not needed for on-prem install
      customer:
        accountId: ""
        nodePoolName: ""
        nodelimit: ""
      provider:
        aws:
          enabled: false
          ## Replace the dummy values with the real ones
          nodePoolName: "aws-dynamic-node-pool"
          nodelimit: "3"
          instanceType: c4.xlarge
          securityGroupId: testsecuritygroupId
          subnetId: test-subnetId
          keyPairName: testaccountSSHKeyPair
          vpcId: testVPCId
          region: us-east-1
          ##
          accessKey: ""
          secretKey: ""
          ## Existing secret with AWS keys
          existingSecret:
        k8s:
          enabled: false
          ## Replace the dummy values with the real ones
          nodePoolName: "k8s-dynamic-node-pool"
          nodelimit: "3"
          cpu: "1"
          memory: "1000"
          namespace: default
          storageClass: standard
          ## Node Affinity values: {key1:value1,key2:value2}
          labels:
          ## Kubernetes node pool kubeconfig base64 encoded
          kubeconfig: ""
          ## Existing secret with kubeconfig
          existingSecret:
