summaryrefslogtreecommitdiffstats
path: root/roles/ands_kaas/templates/40-kaas-app-builders.yml.j2
diff options
context:
space:
mode:
Diffstat (limited to 'roles/ands_kaas/templates/40-kaas-app-builders.yml.j2')
-rw-r--r--roles/ands_kaas/templates/40-kaas-app-builders.yml.j293
1 files changed, 93 insertions, 0 deletions
diff --git a/roles/ands_kaas/templates/40-kaas-app-builders.yml.j2 b/roles/ands_kaas/templates/40-kaas-app-builders.yml.j2
new file mode 100644
index 0000000..090f15a
--- /dev/null
+++ b/roles/ands_kaas/templates/40-kaas-app-builders.yml.j2
@@ -0,0 +1,93 @@
+#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.iteritems() %}
+ {% set isname = builder.name | default(name) | regex_replace('_','-') %}
+ {% set istag = builder.version | default("latest") %}
+ {% set type = builder.type | default("Docker") %}
+ {% set src_type = builder.src_type | default("git") %}
+ {% set image_type = builder.image_type | default("ImageStreamTag") %}
+ - kind: ImageStream
+ apiVersion: v1
+ metadata:
+ name: {{ isname }}
+ - kind: "BuildConfig"
+ apiVersion: v1
+ metadata:
+ 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: {{ builder.args | to_json }}
+ {% 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 %}