docs(docs-infra): improve docs on creating/updating the preview server Docker image (#37015)
This commit includes the following improvements: - Document that the `create-image.sh` script (and by extention the `update-preview-server.sh` script) need to have access to a `yarn` executable. - Add a note on cron jobs running in non-interactive, non-login shells (which affects their execution context and have different behavior vs running the same commands in an interactive, login shell). - Change the Node.js and `yarn` installation instructions to ensure the `yarn` executable will be available on the `PATH` and not require an interactive, login shell (as happens, for example, when installing it via [nvm](https://github.com/nvm-sh/nvm)). This makes it easier to set up a cron job that runs the `update-preview-server.sh` script. NOTE: The equivalent updates have been made on the GCE VM that hosts the PR preview server. PR Close #37015
This commit is contained in:
parent
fcb68cc139
commit
2d065a32ec
|
@ -4,9 +4,8 @@
|
||||||
## Install git, Node.js and yarn
|
## Install git, Node.js and yarn
|
||||||
- `sudo apt-get update`
|
- `sudo apt-get update`
|
||||||
- `sudo apt-get install -y git`
|
- `sudo apt-get install -y git`
|
||||||
- Install [nvm](https://github.com/nvm-sh/nvm#installing-and-updating).
|
- Install the latest stable version of [Node.js](https://nodejs.org/en/download).
|
||||||
- Install Node.js: `nvm install 12`
|
- Install the latest stable version of [yarn](https://classic.yarnpkg.com/en/docs/install).
|
||||||
- Install yarn: `npm install --global yarn`
|
|
||||||
|
|
||||||
|
|
||||||
## Checkout repository
|
## Checkout repository
|
||||||
|
@ -18,7 +17,11 @@
|
||||||
- You can overwrite the default environment variables inside the image, by passing new values using
|
- You can overwrite the default environment variables inside the image, by passing new values using
|
||||||
`--build-arg`.
|
`--build-arg`.
|
||||||
|
|
||||||
**Note:** The script has to execute docker commands with `sudo`.
|
**Note 1:** The script has to execute docker commands with `sudo`.
|
||||||
|
|
||||||
|
**Note 2:**
|
||||||
|
The script has to execute `yarn` commands, so make sure `yarn` is on the `PATH` when invoking the
|
||||||
|
script.
|
||||||
|
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
|
@ -8,7 +8,7 @@ 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
|
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,
|
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
|
it will create a new image and verify that it works as expected. Finally, it will stop and remove
|
||||||
the old docker container and image, create a new container based on the new image and start it.
|
the old docker container and image, create a new container based on the new image and start it.
|
||||||
|
|
||||||
The script assumes that the preview server source code is in the repository's
|
The script assumes that the preview server source code is in the repository's
|
||||||
|
@ -25,7 +25,11 @@ used for.
|
||||||
|
|
||||||
**Note 1:** The script has to execute docker commands with `sudo`.
|
**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
|
**Note 2:**
|
||||||
|
The script has to execute `yarn` commands, so make sure `yarn` is on the `PATH` when invoking the
|
||||||
|
script.
|
||||||
|
|
||||||
|
**Note 3:** Make sure the user that executes the script has access to update the repository.
|
||||||
|
|
||||||
|
|
||||||
## Run the script manually
|
## Run the script manually
|
||||||
|
@ -50,3 +54,9 @@ log its output to `update-preview-server.log` (assuming the user has the necessa
|
||||||
# Periodically check for changes and update the preview server (if necessary)
|
# Periodically check for changes and update the preview server (if necessary)
|
||||||
*/30 * * * * /path/to/update-preview-server.sh /path/to/repo /path/to/secrets /path/to/builds /path/to/localcerts /path/to/logs >> /path/to/update-preview-server.log 2>&1
|
*/30 * * * * /path/to/update-preview-server.sh /path/to/repo /path/to/secrets /path/to/builds /path/to/localcerts /path/to/logs >> /path/to/update-preview-server.log 2>&1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Note:**
|
||||||
|
Keep in mind that cron jobs run in non-interactive, non-login shells. This means that the execution
|
||||||
|
context might be different compared to when running the same commands from an interactive, login
|
||||||
|
shell. For example, `.bashrc` files are normally _not_ sourced automatically in cron jobs. See
|
||||||
|
[here](http://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html) for more info.
|
||||||
|
|
Loading…
Reference in New Issue