Origami Registry UI
Get information about Origami components, services, and repositories.
Table Of Contents
- Running Locally
- Operational Documentation
Before we can run the application, we'll need to install dependencies:
In order to bundle the JS and CSS that the application will be using locally, we will then need to run:
Run the application in development mode with:
Now you can access the app over HTTP on port
We configure Origami Registry UI using environment variables. In development, configurations are set in a
.env file. In production, these are set through Heroku config. Further documentation on the available options can be found in the Origami Service documentation.
NODE_ENV: The environment to run the application in. One of
test(for use in automated tests).
PORT: The port to run the application on.
REPO_DATA_API_KEY: The Repo Data API key to use when authenticating with that service.
REPO_DATA_API_SECRET: The Repo Data API secret to use when authenticating with that service.
CODEDOCS_ENDPOINT: The Origami Codedocs endpoint.
CODEDOCS_API_KEY: The Origami Codedocs API key used to authenticate.
Required in Heroku
CMDB_API_KEY: The CMDB API key to use when updating health checks and the application runbook (TODO not implemented yet)
FASTLY_PURGE_API_KEY: A Fastly API key which is used to purge URLs (when somebody POSTs to the
/purgeendpoint) (TODO not implemented yet)
GRAPHITE_API_KEY: The FT's internal Graphite API key.
PURGE_API_KEY: The API key to require when somebody POSTs to the
/purgeendpoint. This should be a non-memorable string, for example a UUID (TODO not implemented yet)
REGION: The region the application is running in. One of
RELEASE_LOG_API_KEY: The change request API key to use when creating and closing release logs
RELEASE_LOG_ENVIRONMENT: The Salesforce environment to include in release logs. One of
SENTRY_DSN: The Sentry URL to send error information to.
GRAFANA_API_KEY: The API key to use when using Grafana push/pull
The service can also be configured by sending HTTP headers, these would normally be set in your CDN config:
FT-Origami-Service-Base-Path: The base path for the service, this gets prepended to all paths in the HTML and ensures that redirects work when the CDN rewrites URLs.
TODO everything in this section is a lie until we make the
The source documentation for the runbook and healthcheck endpoints (EU/US) are stored in the
operational-documentation folder. These files are pushed to CMDB upon every promotion to production. You can push them to CMDB manually by running the following command:
The tests are split into unit tests and integration tests. To run tests on your machine you'll need to install Node.js and run
make install. Then you can run the following commands:
make test # run all the tests make test-unit # run the unit tests make test-integration # run the integration tests
You can run the unit tests with coverage reporting, which expects 90% coverage or more:
make test-unit-coverage verify-coverage
The code will also need to pass linting on CI, you can run the linter locally with:
We run the tests and linter on CI, you can view results on CircleCI.
make test and
make lint must pass before we merge a pull request.
The production (EU/US) and QA applications run on Heroku. We deploy continuously to QA via CircleCI, you should never need to deploy to QA manually. We use a Heroku pipeline to promote QA deployments to production.
You can promote either through the Heroku interface, or by running the following command locally:
- Grafana dashboard: graph memory, load, and number of requests
- Pingdom check (Production EU): checks that the EU production app is responding
- Pingdom check (Production US): checks that the US production app is responding
- Sentry dashboard (Production): records application errors in the production app
- Sentry dashboard (QA): records application errors in the QA app
- Splunk (Production): query application logs
We've outlined some common issues that can occur in the running of the Origami Registry UI:
What do I do if memory usage is high?
For now, restart the Heroku dynos:
heroku restart --app origami-registry-ui-eu heroku restart --app origami-registry-ui-us
If this doesn't help, then a temporary measure could be to add more dynos to the production applications, or switch the existing ones to higher performance dynos.
What if I need to deploy manually?
If you really need to deploy manually, you should only do so to QA (production deploys should always be a promotion). Use the following command to deploy to QA manually:
The Financial Times has published this software under the MIT license.