diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml index 2b038206fc597b2f1ba0e76b454655dabe36c178..573900b2b5965959726473b272e3201bbfcceb4b 100644 --- a/ansible/roles/stack-sunbird/defaults/main.yml +++ b/ansible/roles/stack-sunbird/defaults/main.yml @@ -102,3 +102,4 @@ sunbird_analytics_blob_account_name: sunbird_analytics_blob_account_key: sunbird_portal_player_cdn_enabled: sunbird_portal_preview_cdn_url: +cdn_file_path: diff --git a/ansible/roles/stack-sunbird/tasks/service_stack.yml b/ansible/roles/stack-sunbird/tasks/service_stack.yml index ec763dd0c1be8a3677a027e3d69c2c5f138da3bc..92daab1e8f7ef0ccc6bf4351f7f90a2234cb2e9b 100644 --- a/ansible/roles/stack-sunbird/tasks/service_stack.yml +++ b/ansible/roles/stack-sunbird/tasks/service_stack.yml @@ -3,42 +3,43 @@ template: src="stack_{{service_name}}.yml" dest="/home/deployer/stack/stack_{{service_name}}.yml" mode=0644 - name: Save config file - copy: src="{{inventory_dir}}/../../../sunbird-portal/src/app/dist/index_cdn.ejs" dest="/home/deployer/config/index_cdn.ejs" mode=0644 + copy: src="{{cdn_file_path}}" dest="/home/deployer/config/index_cdn.ejs" mode=0644 when: sunbird_portal_cdn_url is defined register: copy_file ignore_errors: yes -- name: Remove the cdn file from player if it's present - shell: docker service update --config-rm index.ejs player_player - when: copy_file.changed +- debug: + msg: "{{copy_file}}" + +- name: check if player is running + shell: docker service ps player_player + become: yes + register: playerRunning ignore_errors: yes +- name: Remove the cdn file from player if it's present + shell: docker service update --config-rm index_cdn.ejs player_player + when: copy_file.changed and playerRunning.rc == 0 and sunbird_portal_cdn_url is defined + - name: Remove the existing config if it is present shell: docker config rm index_cdn.ejs - when: copy_file.changed - ignore_errors: yes + when: copy_file.changed and playerRunning.rc == 0 and sunbird_portal_cdn_url is defined - name: Create the index_cdn.ejs file as a config shell: "docker config create index_cdn.ejs /home/deployer/config/index_cdn.ejs" - when: sunbird_portal_cdn_url is defined and copy_file.changed - ignore_errors: yes - -- name: Create the index_cdn.ejs file as a config - shell: "docker config create index_cdn.ejs /home/deployer/config/index_cdn.ejs" - when: sunbird_portal_cdn_url is defined and copy_file.changed - ignore_errors: yes + when: sunbird_portal_cdn_url is defined and copy_file.changed and playerRunning.rc == 0 - name: Deploy Player with updated player config - shell: docker service update --config-add source=index.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs - when: sunbird_portal_cdn_url is defined and copy_file.changed - register: update_player + shell: docker service update --config-add source=index_cdn.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs player_player + when: sunbird_portal_cdn_url is defined and copy_file.changed and playerRunning.rc == 0 - name: Deploy stack shell: "docker stack deploy -c stack_{{service_name}}.yml {{service_name}} --with-registry-auth" args: chdir: /home/deployer/stack - when: not update_player.changed + register: stackDeployed - name: Inject config file for the first player deploy - shell: docker service update --config-add source=index.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs - when: sunbird_portal_cdn_url is defined and not update_player.changed + shell: docker service update --config-add source=index_cdn.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs player_player + when: stackDeployed.changed + diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile index e5ce7eb37a08d259f1903589e65d69c8c4ec36b4..ec5895aad6bedc87a30e60b9545070d8a9da38f2 100644 --- a/pipelines/deploy/player/Jenkinsfile +++ b/pipelines/deploy/player/Jenkinsfile @@ -49,7 +49,7 @@ node() { } // Uploading cdn assets to blob ansiblePlaybook = "$currentWs/ansible/assets-upload.yml" - ansibleExtraArgs = "--extra-vars assets=$currentWs/sunbird-portal/src/app/dist --vault-password-file /var/lib/jenkins/secrets/vault-pass" + ansibleExtraArgs = "--extra-vars assets=$currentWs/sunbird-portal/src/app/dist --extra-vars cdn_file_path=$currentWs/sunbird-portal/src/app/dist/index_cdn.ejs --vault-password-file /var/lib/jenkins/secrets/vault-pass" values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values) @@ -58,7 +58,12 @@ node() { } stage('deploy') { ansiblePlaybook = "$currentWs/ansible/deploy.yml" - ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + if ( cdnUrl == '' ) { + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + } + else { + ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True cdn_file_path=$currentWs/sunbird-portal/src/app/dist/index_cdn.ejs\" --vault-password-file /var/lib/jenkins/secrets/vault-pass" + } values.put('ansiblePlaybook', ansiblePlaybook) values.put('ansibleExtraArgs', ansibleExtraArgs) ansible_playbook_run(values)