#jinja2: trim_blocks: "true", lstrip_blocks: "false" --- {% set app = app | default('{}') %} {% set have_triggers = 0 %} apiVersion: v1 kind: Template metadata: name: {{ appname | default(kaas_project) }}-builders annotations: descriptions: {{ kaas_project_config.description | default(appname | default(kaas_project) ~ " auto-generated image-builder template") }} {% set applabels = ( app.labels | default({}) | combine( { 'app': appname }) ) if appname is defined else (app.labels | default({})) %} {% if applabels | length > 0 %} labels: {{ applabels | to_json }} {% endif %} objects: {% for name, builder in builders.items() %} {% set isname = builder.name | default(name) | regex_replace('_','-') %} {% set istag = builder.version | default("latest") %} {% set bcname = isname if istag == 'latest' else isname + '-' + istag %} {% set type = builder.type | default("Docker") %} {% set src_type = builder.src_type | default("git") %} {% set image_type = builder.image_type | default("ImageStreamTag") %} {% if builder.name is not defined or builder.name == name %} - kind: ImageStream apiVersion: v1 metadata: name: {{ isname }} labels: app: {{ appname | default(kaas_project) }} name: {{ isname }} {% endif %} - kind: "BuildConfig" apiVersion: v1 metadata: name: {{ bcname }} labels: app: {{ appname | default(kaas_project) }} name: {{ isname }} spec: successfulBuildsHistoryLimit: "{{ kaas_pod_history_limit }}" failedBuildsHistoryLimit: "{{ kaas_pod_history_limit }}" triggers: - type: "ConfigChange" source: type: {{ src_type }} {{ src_type }}: uri: "{{ builder.src }}" {% if builder.src_path is defined %} contextDir: "{{ builder.src_path }}" {% endif %} strategy: {% if type == 'Docker' %} type: {{ type }} {{ type | lower }}Strategy: dockerfilePath: "{{ builder.dockerfile | default('Dockerfile') }}" {% if builder.args is defined %} buildArgs: {% for arg_name, arg_val in builder.args.items() %} - name: "{{ arg_name }}" value: "{{ arg_val }}" {% endfor %} {% endif %} {% else %} type: {{ type }} {{ type | lower }}Strategy: {% if builder.image is defined %} from: kind: {{ image_type }} name: "{{ builder.image }}" {% if image_type == 'ImageStreamTag' %} namespace: "{{ builder.image_namespace | default('openshift') }}" {% endif %} {% endif %} {% endif %} {% if builder.env is defined %} env: {{ builder.env | to_json }} {% endif %} output: to: kind: "ImageStreamTag" name: "{{ isname }}:{{ istag }}" imageLabels: - name: "vendor" value: "{{ builder.vendor | default(ands_info.vendor) }}" - name: "author" value: "{{ builder.author | default(ands_info.admin) }}" - name: "authoritative-source-url" value: "{{ builder.url | default(ands_info.git_url) }}" triggers: - type: ConfigChange - type: ImageChange {% if builder.trigger is defined %} {% set have_triggers = 1 %} {% set trigger_type = "Generic" if 'github.com' in builder.src else "Generic" %} - type: {{ trigger_type }} {{ trigger_type | lower }}: secret: ${TRIGGER_SECRET} {% endif %} {% endfor %} parameters: {% if have_triggers %} - description: Trigger secret from: '[a-zA-Z0-9]{8}' generate: expression name: TRIGGER_SECRET {% endif %}