From 27457cbcb9e7c0ff4d58c1b5ec67f9099b7302ba Mon Sep 17 00:00:00 2001 From: Samuel Paccoud - FUN MOOC Date: Mon, 27 Aug 2018 23:04:52 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(edxapp)=20add=20theme=20to=20edxapp?= =?UTF-8?q?=20LMS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The theme is added in a build step specific to each customer upon deployment. The same build will be used to add functionalities on the common image that are either specific to our OpenShift deployment (e.g. adding Datadog monitoring) our specific to a customer (theme). It is a good idea to use a common image stream for the CMS and the LMS even if no customization is made because it allows keeping a copy of the image in our local registry and avoid downloading it from Doker Hub upon each deployment. --- apps/edxapp/templates/cms/_dc_base.yml.j2 | 11 ++++++++- apps/edxapp/templates/lms/bc.yml.j2 | 30 +++++++++++++++++++++++ apps/edxapp/templates/lms/is.yml.j2 | 7 ++++++ apps/edxapp/vars/all/main.yml | 3 +++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 apps/edxapp/templates/lms/bc.yml.j2 create mode 100644 apps/edxapp/templates/lms/is.yml.j2 diff --git a/apps/edxapp/templates/cms/_dc_base.yml.j2 b/apps/edxapp/templates/cms/_dc_base.yml.j2 index 18e583a2d..cd8b77bc6 100644 --- a/apps/edxapp/templates/cms/_dc_base.yml.j2 +++ b/apps/edxapp/templates/cms/_dc_base.yml.j2 @@ -57,7 +57,7 @@ spec: value: {{ service_variant }} - name: DJANGO_SETTINGS_MODULE value: {{ service_variant }}.envs.fun.docker_run - image: "{{ edxapp_image_name }}:{{ edxapp_image_tag }}" + image: "" imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /config @@ -115,3 +115,12 @@ spec: - name: edxapp-v-data persistentVolumeClaim: claimName: edxapp-pvc-data + triggers: + - type: ImageChange + imageChangeParams: + automatic: true + containerNames: + - "{{ service_variant }}" + from: + kind: ImageStreamTag + name: "augmented-{{ edxapp_image_name }}:{{ edxapp_image_tag }}" diff --git a/apps/edxapp/templates/lms/bc.yml.j2 b/apps/edxapp/templates/lms/bc.yml.j2 new file mode 100644 index 000000000..6e6bdeeae --- /dev/null +++ b/apps/edxapp/templates/lms/bc.yml.j2 @@ -0,0 +1,30 @@ +apiVersion: "v1" +kind: "BuildConfig" +metadata: + name: "edxapp-lms" + labels: + app: "edxapp" + service: "lms" +spec: + strategy: + dockerStrategy: + source: + {% if edxapp_theme_url is defined and edxapp_theme_url %} + git: + uri: "{{ edxapp_theme_url }}" + ref: "{{ edxapp_theme_tag | default("master") }}" + sourceSecret: + name: "edxapp_theme_ssh_key" + {% endif %} + dockerfile: |- + FROM {{ edxapp_image_name }}:{{ edxapp_image_tag }} + USER 0 + {% if edxapp_theme_url is defined and edxapp_theme_url %} + COPY . /edx/app/edxapp/edx-platform/themes/custom-theme + NO_PREREQ_INSTALL=1 DEFAULT_SITE_THEME="custom-theme" paver update_assets --settings={{ edxapp_build_settings }} --skip-collect + {% endif %} + USER 10000 + output: + to: + kind: "ImageStreamTag" + name: "augmented-{{ edxapp_image_name }}:{{ edxapp_image_tag }}" diff --git a/apps/edxapp/templates/lms/is.yml.j2 b/apps/edxapp/templates/lms/is.yml.j2 new file mode 100644 index 000000000..b367cf170 --- /dev/null +++ b/apps/edxapp/templates/lms/is.yml.j2 @@ -0,0 +1,7 @@ +apiVersion: "v1" +kind: "ImageStream" +metadata: + name: "augmented-{{ edxapp_image_name }}" + labels: + app: "edxapp" + service: "lms" diff --git a/apps/edxapp/vars/all/main.yml b/apps/edxapp/vars/all/main.yml index 764a6b9bc..bac590f19 100644 --- a/apps/edxapp/vars/all/main.yml +++ b/apps/edxapp/vars/all/main.yml @@ -9,6 +9,9 @@ edxapp_image_name: "fundocker/edxapp" edxapp_image_tag: "ginkgo.1-1.0.6" edxapp_django_port: 8000 edxapp_sql_dump_url: "https://gist.github.com/jmaupetit/1f9d270d7d2106774fd94ba89a51ab78/raw/b0004f2825623d03de58710bf936db175e96bc90/edx-database-ginko.sql" +edxapp_theme_url: "git@git.alt.openfun.fr:openfun/cnfpt.git" +edxapp_theme_tag: "master" +edxapp_build_settings: "fun.docker_build_production" # -- memcached edxapp_memcached_image_name: memcached