| 
									
										
										
										
											2017-05-17 17:09:53 +03:00
										 |  |  | # VM setup - Update docker container
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Overview
 | 
					
						
							|  |  |  | Assuming you have cloned the repository containing the preview server code (as described | 
					
						
							|  |  |  | [here](vm-setup--create-docker-image.md)), you can use the `update-preview-server.sh` script on the | 
					
						
							|  |  |  | VM host to update the preview server based on changes in the source code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The script will pull the latest changes from the origin's master branch and examine if there have | 
					
						
							|  |  |  | been any changes in files inside the preview server source code directory (see below). If there are, | 
					
						
							|  |  |  | it will create a new image and verify that is works as expected. Finally, it will stop and remove | 
					
						
							| 
									
										
										
										
											2017-10-04 12:38:12 +03:00
										 |  |  | the old docker container and image, create a new container based on the new image and start it. | 
					
						
							| 
									
										
										
										
											2017-05-17 17:09:53 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | The script assumes that the preview server source code is in the repository's | 
					
						
							|  |  |  | `aio/aio-builds-setup/` directory and expects the following inputs: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - **$1**: `HOST_REPO_DIR` | 
					
						
							|  |  |  | - **$2**: `HOST_LOCALCERTS_DIR` | 
					
						
							|  |  |  | - **$3**: `HOST_SECRETS_DIR` | 
					
						
							|  |  |  | - **$4**: `HOST_BUILDS_DIR` | 
					
						
							|  |  |  | - **$5**: `HOST_LOGS_DIR` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | See [here](vm-setup--create-host-dirs-and-files.md) for more info on what each input directory is | 
					
						
							|  |  |  | used for. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | **Note 1:** The script has to execute docker commands with `sudo`. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | **Note 2:** Make sure the user that executes the script has access to update the repository | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Run the script manually
 | 
					
						
							|  |  |  | You may choose to manually run the script, when necessary. Example: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | update-preview-server.sh \ | 
					
						
							|  |  |  |     /path/to/repo \ | 
					
						
							|  |  |  |     /path/to/localcerts \ | 
					
						
							|  |  |  |     /path/to/secrets \ | 
					
						
							|  |  |  |     /path/to/builds \ | 
					
						
							|  |  |  |     /path/to/logs | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Run the script automatically
 | 
					
						
							|  |  |  | You may choose to automatically trigger the script, e.g. using a cronjob. For example, the following | 
					
						
							|  |  |  | cronjob entry would run the script every hour and update the preview server (assuming the user has | 
					
						
							|  |  |  | the necessary permissions): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | # Periodically check for changes and update the preview server (if necessary)
 | 
					
						
							|  |  |  | */30 *  * * *   /path/to/update-preview-server.sh /path/to/repo /path/to/localcerts /path/to/secrets /path/to/builds /path/to/logs | 
					
						
							|  |  |  | ``` |