Skip to content

Commit

Permalink
[doc] Update devnotes (#2745)
Browse files Browse the repository at this point in the history
  • Loading branch information
snf2ye authored Dec 5, 2024
1 parent 3ec86ff commit 0b8f37a
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 33 deletions.
46 changes: 23 additions & 23 deletions DEVNOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,41 +12,40 @@ volta install 22.11.0
npm install
```

3. Install configs for an environment. This example is for the `alpha` environment, but you can use values from any
3. Generate configuration files and populate certificates by running the [render-configs.sh](scripts/render-configs.sh) script. This requires
connection to the Broad VPN. By default, this points the DUOS UI to the dev environment.

```
cd scripts
./render-configs.sh --write_env true --write_config true
```

#### Notes on render-configs:
* Ensure that HOST is not set in your shell environment, as it will override the value in `.env.local`.
* **Development against other envs**: If you want to point to other envs, you can populate public/config.json with the values from any
environment by looking at the deployed configs in https://duos-k8s.dsde-{%ENV%}.broadinstitute.org/config.json where
{%ENV%} is any of `dev`, `staging`, `alpha`, or `prod`. Remember to set the `env` value appropriately, for example,
`dev`. Certain features are available only in specific environments. Setting the `env` value to the desired environment
will simulate it for local development. The installation steps outlined in this step can also be completed using the
[render-configs.sh](scripts/render-configs.sh) script which can generate all required files for local development.
```
cp config/base_config.json public/config.json
will simulate it for local development.
* **Refresh certs on rotation**: render-config.sh populates local certificate files. The certificates are rotated every
3 months and can be repopulated by re-running the script. Again, you'll need to be on the broad VPN.

```shell
cd scripts
./render-configs.sh
```

Ensure that your `/etc/hosts` file has an entry for `local.dsde-dev.broadinstitute.org`
4. Ensure that your `/etc/hosts` file has an entry for `local.dsde-dev.broadinstitute.org`

```properties
127.0.0.1 local.dsde-dev.broadinstitute.org
```

Download cert files from dev project (requires access to correct project - see [DUOS team members](https://github.com/orgs/DataBiosphere/teams/duos) for more specifics). Cert files are regenerated on a 3-month rotation so these will need to be updated when they are expired. The following commands need to be done on the Broad VPN.
```shell
gcloud container clusters get-credentials --zone us-central1-a --project <project> terra-dev
kubectl -n local-dev get secrets local-dev-cert -o 'go-template={{ index .data "tls.crt" | base64decode }}' > server.crt
kubectl -n local-dev get secrets local-dev-cert -o 'go-template={{ index .data "tls.key" | base64decode }}' > server.key
kubectl -n local-dev get configmaps kube-root-ca.crt -o 'go-template={{ index .data "ca.crt" }}' > ca-bundle.crt
```
5. Create a `site.conf` file in the project root directory using https://github.com/broadinstitute/terra-helmfile/blob/master/charts/duos/templates/_site.conf.tpl as a model.

Create a `site.conf` file in the project root directory using https://github.com/broadinstitute/terra-helmfile/blob/master/charts/duos/templates/_site.conf.tpl as a model.

Create a local environment file, `.env.local`
```properties
HOST=local.dsde-dev.broadinstitute.org
HTTPS=true
SSL_CRT_FILE=server.crt
SSL_KEY_FILE=server.key
```
Ensure that HOST is not set in your shell environment, as it will override the value in `.env.local`.

4. Start development server:
6. Start development server:

```shell
npm start
Expand Down Expand Up @@ -82,6 +81,7 @@ testing can be run headless or viewed interactively.
Cypress integration (e2e) tests run locally require a different `baseUrl` than those
run in GitHub Actions. Create a `cypress.env.json` file in the root of your
local repo that looks like this:

```json
{
"baseUrl": "https://local.dsde-dev.broadinstitute.org:3000/"
Expand Down
20 changes: 10 additions & 10 deletions scripts/render-configs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ usage() {
Usage: $0 [OPTION]...
Generate cert files for local development
--project PROJECT Google project where cert files are stored
--env ENV Write an .env.local file to project root. true|false. Defaults to false
--config CONFIG Write a config.json file in public. true|false. Defaults to false
--write_env WRITE_ENV Write an .env.local file to project root. true|false. Defaults to false
--write_config WRITE_CONFIG Write a config.json file in public. true|false. Defaults to false
--help Display this help and exit
EOF
exit 0
Expand All @@ -29,8 +29,8 @@ error() {

# default values that may be overridden by command line arguments
PROJECT="broad-dsde-dev"
ENV="false"
CONFIG="false"
WRITE_ENV="false"
WRITE_CONFIG="false"

parse_cli_args() {
while [ $# -gt 0 ]; do
Expand All @@ -39,12 +39,12 @@ parse_cli_args() {
PROJECT=$2
shift 2
;;
--env)
ENV=$2
--write_env)
WRITE_ENV=$2
shift 2
;;
--config)
CONFIG=$2
--write_config)
WRITE_CONFIG=$2
shift 2
;;
--help)
Expand Down Expand Up @@ -90,11 +90,11 @@ write_config() {
parse_cli_args "$@"
auth_gcloud
write_certs
if [ "$ENV" == "true" ]
if [ "$WRITE_ENV" == "true" ]
then
write_env
fi
if [ "$CONFIG" == "true" ]
if [ "$WRITE_CONFIG" == "true" ]
then
write_config
fi

0 comments on commit 0b8f37a

Please sign in to comment.