devie-bot icon indicating copy to clipboard operation
devie-bot copied to clipboard

We should setup some CI/CD for this project

Open AidenMontgomery opened this issue 4 years ago • 0 comments

CI and Software Quality

@crondinini has done a great job getting us started with software quality checks, introducing a testing approac and linting with tsc and ESLint. These checks run on every PR using GitHub Actions and are reported as part of the PR which is really helpful.

CD

The application is currently deployed to a Heroku account that I setup for this project. The code has so far been deployed manually from a forked repo, to which Heroku has been granted access.

Issues

In the Heroku project setting it is possible to connect to a GitHub repository, after which manual or automatic deployments can be made. To enable this integration Heroku requests permissions at an organisation level.

By requesting this approval, you are asking owners of the Developer-DAO organization to allow this application to access private organization data and modify public organization data.

This feels like it might be too intrusive for integrating to this organisation, so we have not requested permission.

Options

1) Heroku -> GitHub integration

If the integration with Heroku and the permissions that it requests are deemed acceptable by the core maintainers of this organisation, then we could go ahead and setup automatic deployments this way.

2) GitHub Actions - Heroku API

It is possible to setup an Action that deploys to Heroku on every push to a specific branch. #16 Is a PR that would add such an action. Additionally we would need to configure some secrets in the project to support connecting to the Heroku API to perform the deployment.

secrets.HEROKU_API_KEY
secrets.HEROKU_APP_NAME
secrets.HEROKU_EMAIL

3) Git Push

It is possible to add a Heroku application as a remote on a git repo and push code to perform a deployment. This would require a process that could checkout the repository and push it to Heroku. I don't know if this is something that can be done in GitHub Actions, but is something I have configured previously in CI systems like Jenkins, Bamboo, etc.

Heroku has a document outlining 6 options for deploying where some other options are discussed. The only other one that might be of interest is dockerizing the application, but I don't know how well this would work with the heroku free plans.

AidenMontgomery avatar Nov 25 '21 22:11 AidenMontgomery