Yaydoc takes as its input the information about a user’s repository containing the documentation in Markup files and generates a static website from it. The website also includes search functionality within the documentation. It supports various built-in and custom Sphinx themes.
Since the Web User Interface is now prepared with some solid features, it was time to deploy. We chose Heroku for this because of the ease with which we can build and scale the application at free of cost.
Yaydoc consists of two components; A Web User Interface and the Generation and Deployment Scripts. The Web UI being developed with NodeJs and the scripts involving Python modules, require us to include the following buildpacks
We need to set certain Environment Variables in Heroku for proper functioning of the Yaydoc. These include
- CALLBACKURL – URL where Github must return to after successful authentication
- CLIENTID – Unique Client-Id generated by Github OAuth Application
- CLIENTSECRET – Unique Client-Secret generated by Github OAuth Application
- ENCRYPTION_KEY – Required to encrypt Personal Access Token of the user
- ON_HEROKU – True, since the application is deployed to Heroku
- PYPANDOC_PANDOC – Location of Pandoc binaries
- SECRET – A very secret token
Steps for Manual Deployment
Install Heroku on your local machine.
- If you have a linux based Operating Systems, type the following command in the terminal
wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh
- Details for other Operating Systems can be found at https://devcenter.heroku.com/articles/heroku-cli
Login to Heroku Server (Create an account if it doesn’t exist)
- Type in the following command in your server
- Enter your credentials and login.
Deploy Yaydoc to Heroku
- Clone the original yaydoc repository or your own fork
git clone https://github.com/<username>/yaydoc.git
- Move to the directory of the cloned repository
- Create a Heroku application using the following command
heroku create <your-app-name>
- Add buildpacks to the application using the following commands
heroku buildpacks:set heroku/nodejs heroku buildpacks:add --index 2 heroku/python heroku buildpacks:add --index 3 https://github.com/imujjwal96/heroku-buildpack-pandoc.git
- Set Environment Variables using the following commands
heroku config:set CALLBACKURL=https://<your-app-name>.herokuapp.com/callback heroku config:set CLIENTID=<github-generated> heroku config:set CLIENTSECRET=<github-generated> heroku config:set ENCRYPTION_KEY=AVERYSECRETTOKENOFSPECIFICLENGTH heroku config:set ON_HEROKU=true heroku config:set PYPANDOC_PANDOC=~/vendor/pandoc/bin/pandoc heroku config:set SECRET=averysecrettoken
- Now deploy your code
git push heroku master
- Visit the app at the URL generated by its app name