Skip to main content

The code behind https://api.pub.build.mozilla.org

Project description

Continuous Integration: https://travis-ci.org/mozilla/build-relengapi

Your Interface to Release Engineering Automation.

This is the framework behind https://api.pub.build.mozilla.org/. It is a Flask-based framework for building and hosting releng-related APIs.

Goals

  • Simple self-service usage for consumers * Industry-standard access mechanisms (REST, oAuth2, etc.) that require no client-side custom libraries * One or very few endpoints (e.g., https://api.pub.build.mozilla.org) * Self-documenting tools * Semantic versioning

  • Simple, rapid implementation of new apps * Common requirements such as authentication, database access, scheduled tasks, configuration handling are already satisfied * All apps use the same technologies (language, web framework, DB framework, etc.), so the learning curve from one app to the next is small * Tailored for easy local development - minimal requirements, minimal installed components, etc.

  • Operations-friendly * Horizontally scalable using normal webops techniques * Easily deployed in multiple environments with normal devops processes * Resilient to failure: no in-memory state

Documentation

RelengAPI documents itself. See https://api.pub.build.mozilla.org/docs for the documentation of the currently-deployed version.

Info for Developers

### Structure

RelengAPI is a [Flask](http://flask.pocoo.org/) application. It is composed of several Python distributions (packages). Each distribution can contain several [Flask Blueprints](http://flask.pocoo.org/docs/blueprints/) – web application components. Each Git repository can contain multiple distributions.

The base is in the relengapi distribution, implemented in this package. It implements the root app, with lots of common support functionality, and a number of blueprints. It also searches its python environment for other distributions that can provide blueprints for the Releng API. These act as plugins, adding extra endpoints and other functionality to the API.

Other top-level directories of this repository contain other related distributions with more blueprints. Other repositories contain even more distributions, with even more blueprints.

All of this is drawn together in production by installing the appropriate distributions on the releng web cluster. When developing, though, only the relengapi distribution and the distribution you’re hacking on are required.

### Running RelengAPI

To run the tool for development, pip install the base into your virtualenv:

pip install -e base[test]

The [test] installs the requirements for testing as well. Omit this if you won’t be running tests. Install any additional packages you want as well:

pip install -e docs[test]

Set up your settings file:

cp settings_example.py settings.py vim settings.py export RELENGAPI_SETTINGS=$PWD/settings.py

Create the databases for the installed blueprints:

relengapi createdb

And finally run the server:

relengapi serve -p 8010

The relengapi tool has many useful subcommands. See its help for more information.

### More

See the Releng API documentation for more information on development and deployment of the releng API. This is available at https://api.pub.build.mozilla.org/docs or, If you’ve installed the docs blueprint, at the same path on your own instance.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

relengapi-0.3.tar.gz (317.5 kB view details)

Uploaded Source

File details

Details for the file relengapi-0.3.tar.gz.

File metadata

  • Download URL: relengapi-0.3.tar.gz
  • Upload date:
  • Size: 317.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for relengapi-0.3.tar.gz
Algorithm Hash digest
SHA256 0c865fc3010c872d47b84cd01baf2ea5f86001e1193f3f7939312622a9a5aa6f
MD5 acff24d625b46b7f0d65921fc859a3c4
BLAKE2b-256 31fa47b7c8017845739737ec2241f4bc7ab631307e177ee00b9203ca116496ff

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page