/FLINT.Cloud

The project aims to demonstrate a continuous deployment pipeline for FLINT.

Primary LanguagePythonMozilla Public License 2.0MPL-2.0

FLINT.Cloud

The project aims to build a continuous deployment pipeline to offer FLINT on cloud resources. The project also aims to simplify the process of installation by supporting a single command or step installation process. This is not offered as a service (Saas) but rather provides deployment templates for new users to install on common infrastructure architectures.


Table of Contents
  1. Technology Stack
  2. Layered Architecture Setup on Google Cloud
  3. FAQ and Other Questions
  4. Contributors
  5. Maintainers Reviewers Ambassadors Coaches

Technology Stack

Production Setup - Layered Architecture Setup on Google Cloud

Deploying

  1. Create a service account with project owner permissions in your project. This is used by Terraform to provision all the necessary resources.
  2. Copy main.tf from the layered directory of this repository to your Cloud Console machine.
  3. In main.tf, change the project variable to your project ID. Change any other variables if necessary.
  4. Download the key for the service account created in step 1 (in JSON format) to your project's Cloud Console machine. Rename it as service_account.json.
  5. Run terraform apply. After this command finishes, it should output the URL to FLINT Cloud (ingress).

Disabling

  1. In the same directory as where main.tf is present, run terraform destroy. In case this fails, simply run it again.

Local Setup

These steps can be followed to locally setup the API endpoints. This is independent of the above mentioned production setup.

Flask example REST API Setup

In order to run the REST API, navigate to the local/rest_api_flint.example folder. Follow these steps: -

  1. docker build -t flint-api .
  2. docker run --rm -p 8080:8080 flint-api

Currently the REST API has the following endpoints available for access:-

Endpoint Functionality
\help\all Produces a help message with information on all options for moja.CLI.
\help\arg Produces a help message with information on option arg for moja.CLI.
\version Outputs the version number of moja.CLI.
\point Runs point example and outputs point_example.csv as an attachment to be downloaded. Parameters (multipart-form data) file for point_example can be passed to override the default configurations.
\rothc Runs rothc example and outputs point_rothc_example.csv as an attachment to be downloaded. Parameters (multipart-form data) file for rothc_example can be passed to override the default configurations.

This REST API is built using the flask-restful package and has been containerized using Docker.

Flask GCBM REST API Setup

In order to run the Flask GCBM API, navigate to the local/rest_api_gcbm please follow the following steps: -

  1. docker build --build-arg BUILD_TYPE=RELEASE --build-arg NUM_CPU=4 -t gcbm-api .
  2. docker run --rm -p 8080:8080 gcbm-api

Currently the REST API has the following endpoints available for access:-

Endpoint Functionality
\help\all Produces a help message with information on all options for moja.CLI.
\help\arg Produces a help message with information on option arg for moja.CLI.
\version Outputs the version number of moja.CLI.

This REST API is built using the flask-restful package and has been containerized using Docker.

Contributing

Commit Convention

Before you create a Pull Request, please check whether your commits comply with the commit conventions used in this repository.

When you create a commit we kindly ask you to follow the convention category(scope or module): message in your commit message while using one of the following categories:

  • feat / feature: all changes that introduce completely new code or new features
  • fix: changes that fix a bug (ideally you will additionally reference an issue if present)
  • refactor: any code related change that is not a fix nor a feature
  • docs: changing existing or creating new documentation (i.e. README, docs for usage of a lib or cli usage)
  • build: all changes regarding the build of the software, changes to dependencies or the addition of new dependencies
  • test: all changes regarding tests (adding new tests or changing existing ones)
  • ci: all changes regarding the configuration of continuous integration (i.e. github actions, ci system)
  • chore: all changes to the repository that do not fit into any of the above categories

If you are interested in the detailed specification you can visit https://www.conventionalcommits.org/

The project is configured with husky git-hook which on every successive commits checks for linting errors in the codebase and commit convention.

To ease writing conventional commit messages, this repository contains commitizen that assists with that. To commit your changes, run yarn commit in the root of the repository.

Branch-name Convention

We follow the convention [type/scope]. For example fix/lint-error or docs/component-api. type can be either docs, fix, feat, build, or any other conventional commit type. scope is just a short id that describes the scope of work.

Development notes

For the developer environment setup, project structure, best practices etc. you can go through the Development Notes here..

Read More

Find more comprehensive details about Moja Global Contributing Guidelines here..

How to Get Involved?

Feel free to join our Slack community and get to know everyone.

If you would like to volunteer as a mentor, or for any other questions, please contact andrew@moja.global. We'd love to have you involved.

FAQ and Other Questions

Contributors

Thanks goes to these wonderful people (emoji key):

moja global
moja global

📆

This project follows the all-contributors specification. Contributions of any kind welcome!

Maintainers Reviewers Ambassadors Coaches

The following people are Maintainers Reviewers Ambassadors or Coaches

moja global
moja global

📆

Maintainers review and accept proposed changes
Reviewers check proposed changes before they go to the Maintainers
Ambassadors are available to provide training related to this repository
Coaches are available to provide information to new contributors to this repository

License

This project is released under the Mozilla Public License Version 2.0.