Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/defra/ffc-sfd-data

Data for the Single Front Door
https://github.com/defra/ffc-sfd-data

Last synced: 6 days ago
JSON representation

Data for the Single Front Door

Awesome Lists containing this project

README

        

# ffc-sfd-data

## Prerequisites

- Docker
- Docker Compose

Optional:
- Kubernetes
- Helm

## Azure Cosmos DB

For local development, the Azure Cosmos DB Emulator Docker image is used to create a local instance of Cosmos. This can be very slow to start up so if Cosmos fails to create the necessary databases because the time allocated is too short, update the [cosmos-wait script](https://github.com/DEFRA/ffc-sfd-data/blob/main/scripts/cosmos-wait) to increase the wait time for Cosmos DB to start.

Unused databases are disabled due to the lack of current RU's for the Cosmos DB instance in SND4. These can be renabled using the [same pattern](https://github.com/DEFRA/ffc-sfd-data/blob/main/app/cosmos/index.js).

## Running the application

The application is designed to run in containerised environments, using Docker Compose in development and Kubernetes in production.

- A Helm chart is provided for production deployments to Kubernetes.

### Build container image

Container images are built using Docker Compose, with the same images used to run the service with either Docker Compose or Kubernetes.

When using the Docker Compose files in development the local `app` folder will
be mounted on top of the `app` folder within the Docker container, hiding the CSS files that were generated during the Docker build. For the site to render correctly locally `npm run build` must be run on the host system.

By default, the start script will build (or rebuild) images so there will
rarely be a need to build images manually. However, this can be achieved
through the Docker Compose
[build](https://docs.docker.com/compose/reference/build/) command:

```
# Build container images
docker-compose build
```

### Start

Use Docker Compose to run service locally.

* run migrations
* `docker-compose -f docker-compose.migrate.yaml run --rm database-up`
* start
* `docker-compose up`
* stop
* `docker-compose down` or CTRL-C

## Test structure

The tests have been structured into subfolders of `./test` as per the
[Microservice test approach and repository structure](https://eaflood.atlassian.net/wiki/spaces/FPS/pages/1845396477/Microservice+test+approach+and+repository+structure)

### Running tests

A convenience script is provided to run automated tests in a containerised
environment. This will rebuild images before running tests via docker-compose,
using a combination of `docker-compose.yaml` and `docker-compose.test.yaml`.
The command given to `docker-compose run` may be customised by passing
arguments to the test script.

Examples:

```
# Run all tests
scripts/test

# Run tests with file watch
scripts/test -w
```

## CI & CD Pipeline

This service uses the [ADP Common Pipelines](https://github.com/DEFRA/adp-pipeline-common) for Builds and Deployments.

### AppConfig - KeyVault References
If the application uses `keyvault references` in `appConfig.env.yaml`, please make sure the variable to be added to keyvault is created in ADO Library variable groups and the reference for the variable groups and variables are provided in `build.yaml` like below.

```
variableGroups:
- ffc-sfd-data-snd1
- ffc-sfd-data-snd2
- ffc-sfd-data-snd3
variables:
- ffc-sfd-data-APPINSIGHTS_CONNECTIONSTRING
```

## Licence

THIS INFORMATION IS LICENSED UNDER THE CONDITIONS OF THE OPEN GOVERNMENT LICENCE found at:

The following attribution statement MUST be cited in your products and applications when using this information.

> Contains public sector information licensed under the Open Government license v3

### About the licence

The Open Government Licence (OGL) was developed by the Controller of Her Majesty's Stationery Office (HMSO) to enable information providers in the public sector to license the use and re-use of their information under a common open licence.

It is designed to encourage use and re-use of information freely and flexibly, with only a few conditions.