From 5abc4525691184469708a0eeafe4e7a904944342 Mon Sep 17 00:00:00 2001
From: matt01671 <matt01671@gmail.com>
Date: Sun, 24 May 2020 15:52:30 +1200
Subject: [PATCH] react build

---
 ansible/roles/react-build/tasks/main.yaml | 226 ++++++++++++++--------
 1 file changed, 148 insertions(+), 78 deletions(-)

diff --git a/ansible/roles/react-build/tasks/main.yaml b/ansible/roles/react-build/tasks/main.yaml
index 5f07c5a..d2733f2 100644
--- a/ansible/roles/react-build/tasks/main.yaml
+++ b/ansible/roles/react-build/tasks/main.yaml
@@ -8,7 +8,7 @@
     become: yes
     apt:
         name: ['nodejs','npm']
-        state: present
+        state: latest
         install_recommends: no
         update_cache: yes
   - debug: 
@@ -20,7 +20,16 @@
     npm:
       name: npm
       global: yes
-      state: present
+      state: latest
+  
+  - name: install pm2 server
+    tags: 'pm2'
+    become: yes
+    npm:
+      name: pm2
+      global: yes
+      state: latest
+  
   
   - name: install react
     tags: 'react'
@@ -29,6 +38,38 @@
       name: create-react-app
       global: yes
       state: present
+  
+  - name: Checking folders
+    tags: 'volumes'
+    become: yes
+    stat:
+      path: "{{ item.mountpoint }}"
+    register: directory_stats
+    with_items:
+      - "{{ volumes }}"
+  
+  - name: Create directory
+    tags: 'volumes'
+    become: yes
+    file:
+      path: "{{ item.item.mountpoint }}"
+      recurse: yes
+      state: directory
+    when: item.stat.exists == false
+    with_items:
+      - "{{ directory_stats.results }}"
+  
+  - name: Mount device
+    tags: 'volumes'
+    become: yes
+    mount:
+      path: "{{ item.mountpoint }}"
+      src: "{{ item.device }}"
+      fstype: xfs
+      state: mounted
+    when: item.device is defined
+    with_items:
+      - "{{ volumes }}"
     
   - name: traverse into the project directory.
     become: yes
@@ -37,127 +78,167 @@
       chdir: /var/lib/react
     register: dir_changed
   
+  - name: create a new directory for git
+    become: yes
+    shell: mkdir react-app
+    args:
+      chdir: /var/lib/react/
+    register: new_dir
+    when: dir_changed.rc == 0
+  
+  - name: traverse into the new directory.
+    become: yes
+    shell: cd
+    args:
+      chdir: /var/lib/react/react-app
+    register: new_dir_changed
+    when: new_dir.rc == 0
+  
+  
   - name: clone git repo
     become: yes
     git:
-      repo: https://github.com/advait22/react-server.git
-      dest: /var/lib/react
+      repo: https://gitlab.eng.unimelb.edu.au/mohalloran/comp90023-assignment-2.git
+      dest: /var/lib/react/react-app/
       force: yes
   - debug:
       msg: 'git repo cloned'
-    when: dir_changed.rc == 0 
+    when: new_dir_changed.rc == 0 
+  
+  - name: navigate into the git directory.
+    become: yes
+    shell: cd
+    args:
+      chdir: /var/lib/react/react-app/
+    register: nav_git
   
-  - name: change working directory to the app
+  - name: delete unnecessary directories
+    become: yes
+    shell: rm -rf ansible/ couchDB/ CouchDB/ twitter_harvest/
+    args:
+      chdir: /var/lib/react/react-app/
+  - debug: 
+      msg: 'delete unnecessary directories'
+    register: del_dir
+    # when: nav_git.rc == 0   
+  
+  - name: navigate to project dir
     become: yes
     shell: cd
     args:
-      chdir: /var/lib/react/express_react_example
-    register: server
+      chdir: /var/lib/react/react-app/reactUI/
+  - debug:
+      msg: 'navigate successfully'
+    register: nav_project
   
   - name: install all the packages for server
     become: yes
     npm:
-      path: /var/lib/react/express_react_example/
+      path: /var/lib/react/react-app/reactUI/
       name: install
   - debug: 
       msg: 'inside server'
-    when: server.rc == 0 
+    register: dep_install
+  
+  - name: install dependencies
+    become: yes
+    command: npm install --save express
+  - debug:
+      msg: 'Client express installed'
   
   - name: change working directory to the client
     become: yes
     shell: cd
     args:
-      chdir: /var/lib/react/express_react_example/client
+      chdir: /var/lib/react/react-app/reactUI/choropleth-map
     register: client
   
   - name: install dependencies
     become: yes
     npm:
-      path: /var/lib/react/express_react_example/client
+      path: /var/lib/react/react-app/reactUI/choropleth-map
       name: install
   - debug:
       msg: 'Client Dependencies installed'
     when: client.rc == 0
   
+  
   - name: Ansible check directory exists build in client.
     stat:
-      path: /var/lib/react/express_react_example/client/build
+      path: /var/lib/react/react-app/reactUI/choropleth-map/build
     register: files_to_delete
   
   - name: delete previous build folder
     become: yes
     shell: rm -rf build
     args:
-      chdir: /var/lib/react/express_react_example/client/
+      chdir: /var/lib/react/react-app/reactUI/choropleth-map/
     register: build_delete
   - debug:
       msg: "build deleted"
     when: files_to_delete.stat.exists == true
-    
-  - name: delete dependencies on client
-    become: yes
-    shell: rm -rf node_modules
-    args:
-      chdir: /var/lib/react/express_react_example/client/
-    register: deleted_modules
-  - debug:
-      msg: 'Client Dependencies delete'
   
-  - name: clear npm cache
-    tags: 'clear cache'
-    become: yes
-    shell: npm cache clean --force
-    args:
-      chdir: /var/lib/react/express_react_example/client
-    register: cache_cleaned
-    when: deleted_modules.rc == 0
+  #   ###workaround for react js bug in build command
   
-  - name: install dependencies
-    become: yes
-    npm:
-      path: /var/lib/react/express_react_example/
-      name: express
-  - debug:
-      msg: 'Client express installed'
+    
+  # - name: delete dependencies on client
+  #   become: yes
+  #   shell: rm -rf node_modules package-lock.json
+  #   args:
+  #     chdir: /var/lib/react/react-app/reactUI/choropleth-map/
+  #   register: deleted_modules
+  # - debug:
+  #     msg: 'Client Dependencies delete'
   
-  - name: install dependencies
-    become: yes
-    npm:
-      path: /var/lib/react/express_react_example/client
-      name: install
-  - debug:
-      msg: 'Client Dependencies installed'
-    when: cache_cleaned.rc == 0
+  # - name: clear npm cache
+  #   tags: 'clear cache'
+  #   become: yes
+  #   shell: npm cache clean --force
+  #   args:
+  #     chdir: /var/lib/react/react-app/reactUI/choropleth-map/
+  #   register: cache_cleaned
+  #   when: deleted_modules.rc == 0
+  
+  # - name: install dependencies
+  #   become: yes
+  #   npm:
+  #     path: /var/lib/react/react-app/reactUI/choropleth-map/
+  #     name: install
+  # - debug:
+  #     msg: 'Client Dependencies installed'
+  #   when: cache_cleaned.rc == 0
   
   - name: install react scripts
     tags: 'react scripts'
     become: yes
-    shell: npm install --save react-scripts@3.0.1 react react-dom
+    shell: npm install --save react-scripts@3.0.1 react react-dom jquery @material-ui/core  react-chartkick chart.js datamaps
     args:
-      chdir: /var/lib/react/express_react_example/client
+      chdir: /var/lib/react/react-app/reactUI/choropleth-map/
     register: react_scripts
-    when: cache_cleaned.rc == 0
+    # when: cache_cleaned.rc == 0
+    
+  # #################################################################
   
   - name : compile the new build
     tags: build
     become: yes
     shell: npm run build
     args:
-      chdir: /var/lib/react/express_react_example/client
+      chdir: /var/lib/react/react-app/reactUI/choropleth-map/
   - debug:
       msg: 'new build successfull'
   
   - name: Ansible check directory exists build in server.
     stat:
-      path: /var/lib/react/express_react_example/build
+      path: /var/lib/react/react-app/reactUI/build
     register: files_to_delete_from_server
   
+  
   - name: delete previous build folder in server
     become: yes
     shell: rm -rf build
     args:
-      chdir: /var/lib/react/express_react_example/
-      warn: false
+      chdir: /var/lib/react/react-app/reactUI/
     register: build_delete_server
   - debug:
       msg: "deleting old build from server"
@@ -165,35 +246,24 @@
   
   - name: copy new build to parent folder
     become: yes
-    command: mv /var/lib/react/express_react_example/client/build /var/lib/react/express_react_example
+    command: cp -r /var/lib/react/react-app/reactUI/choropleth-map/build /var/lib/react/react-app/reactUI/
     register: build_copy
   - debug:
       msg: 'build copied'
     when: build_delete_server.rc == 0
-
-  - name: "Install forever (to run Node.js app)."
-    become: yes
-    npm: 
-      name: forever 
-      global: yes 
-      state: present
-
-  - name: "Check list of Node.js apps running."
-    become: yes
-    command: forever list
-    register: forever_list
-    changed_when: false
   
-  - name: stop if the server is running
+  - name: stop all the running server
     become: yes
-    command: forever stopall 
-  - debug:
-      msg: "server stopped"
-    when: forever_list.stdout.find('/var/lib/react/express_react_example/server.js') == "336"
-
-  - name: "Start react.js app."
+    command: pm2 stop all
+    register: stop_server
+  - debug: 
+      msg: 'all servers stopped'
+  
+  - name: start the server
     become: yes
-    command: forever start /var/lib/react/express_react_example/server.js
-  - debug:
-      msg: "server started"
-    when: forever_list.stdout.find('/var/lib/react/express_react_example/server.js') == -1
+    command: pm2 start /var/lib/react/react-app/reactUI/server.js
+  - debug: 
+      msg: 'yayyyyyyyyyyy app is running'
+    # when: stop_server.rc == 0
+    
+    
\ No newline at end of file
-- 
GitLab