Map & Explore your organization's System Architecture
Map and Explore your organization's System Architecture
Proudly built by:
The FYI application was built by the Architecture Team at CondΓ© Nast to stay on top of their growing technology portfolio of systems (sites, apps, apis) distributed across hundreds of repositories in multiple GitHub organizations.
This application has two parts:
The goal of this step is to setup the required services for the FYI application, and populate the files in the config
directory.
A note about configurations
The configuration is split across 2 files: default.js
and secrets.json
.
default.js
stores non-sensitive configuration settings and feature flags. Since we use node-config
, these defaults can be overidden by the environment specific files: staging.json
and production.json
.
secrets.json
stores sensitive account information like app keys and api tokens. The application first tries to use node-vault
to connect to a Vault instance and get the secrets, incase it fails to do so, it uses the secrets.json
. The instructions below guide you towards creating your own secrets.json
to start the application. If you later want to move it to a secure and shareable location, consider setting up Vault and moving the secrets there.
Lets get started...
cp config/secrets.json.example config/secrets.json
https://smee.io/new
secrets.json
, copy this smee channel url as the value for webhook-proxy-url
https://github.com/organizations/new
to start a new onedefault.js
, add your organization name to the github.subscribedOrgs
list & github.adminOrg
https://github.com/settings/apps/new
and create a new Github AppApplication Name
as per your choice, can be something like archbot-test-<random number>
Homepage URL
as per your choice, this will not be required for the application to workWebhook URL
to the webhook proxy url from aboveWebhook secret
as per your choice and then in secrets.json
copy this as the value for webhook-secret
.env
file, copy this ID as the value for APP_ID
\n
. Run this command on your key file: sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g' <your-key-file>.pem
. In secrets.json
copy the output of the sed
command as the value for github-private-key
https://github.com/settings/apps/<your github app name>/installations
and install this application to your organizationhttps://github.com/organizations/<your github org name>/repositories/new
and create a new repository called fyi-admin
default.js
, add your Confluence Site name (only the part before .attlassian.net) as hostname
, your Confluence Space name as spaceKey
, and your Confluence Page id as fyiPageId
.secrets.json
, add you Confluence account email as confluence-username
and API token as confluence-access-token
default.js
for slack.enabled
to be false
secrets.json
, copy the Slack webhook url as the value for slack-webhook-url
default.js
, set the channel name as value for slack.channel
default.js
for datadog.enabled
to be false
docker build -t fyi-image .
docker-compose up
http://localhost:3001
easy-fyi-development
npm i
npm run install:client
npm start
http://localhost:3001
There are 2 ways to create a new FYI:
New
button, add the FYI name and click Submit
. This will create a FYI page for you to add dependencies, repositories and tags.Request FYI
command by Admins will create a new FYI.A dependency for a FYI can only be from a set of other existing FYIs. A new dependency can be added through that FYI's detail page in the toolbar.
When a new repository is created in the GitHub organization, the bot automatically detects it and sends a notification to the Admins who can choose to Request a new FYI
or Request to link to FYI
from the repository owner directly through Github issues.
A request to add an existing repository can be submitted through the FYI's detail page in the toolbar. This triggers a notification to the Admins who can choose to pass the request to the repository owner or skip it.
A new tag can be added through the FYI's detail page in the toolbar.
We would like to thank the Probot team and community for giving us a solid foundation of code and inspiration on top of which we could build this application.
See the list of contributors who participated in writing this tool.