Skip to content

API for Lando (An automatic code lander for Mozilla)

Notifications You must be signed in to change notification settings

grottohub/lando-api

 
 

Repository files navigation

Lando API

A microservice that transforms Phabricator revisions into Autoland Transplant requests.

Part of Mozilla Conduit, our code-management microservice ecosystem.

What's Deployed

Building the service

Prerequisites

  • docker and docker-compose (on OS X and Windows you should use the full Docker for Mac or Docker for Windows systems, respectively)
  • pyinvoke
    • Because pyinvoke currently has no backward-compatibility guarantees, it is suggested that you install exactly version 0.21.0 via pip: pip install invoke==0.21.0 or pip install --user invoke==0.21.0.
    • You can use a virtualenv instead of installing it system-wide, but you should create the virtualenv outside of the lando-api source directory so that the linter doesn't check the virtualenv files.
    • If you are running Windows, you will need a special file in your user directory (typically C:\Users\<username>\) called .invoke.yml. It should contain the following:
      run:
        shell: C:\Windows\System32\cmd.exe

Running the development server

To build and start the development services containers (remove -d if logs should be printed out):

$ docker-compose up -d

To create a database:

$ invoke setup-db

You can use a tool like httpie to test the service.

To stop the containers run

$ docker-compose down

Browsing the API documentation

Start the development services and visit http://localhost:8888/ui/ in your browser to view the API documentation.

Testing

lando-api's tests use pytest with pytest-flask, executed within a Docker container. The tests are located in ./tests/. You can run all of them via invoke:

$ invoke test

You can provide options to pytest in testargs argument:

$ invoke test --testargs tests/test_landings.py

Please wrap the testargs with "" if more than one is needed.

Subsets of the tests, e.g. linters, and other commands are also available. Run invoke -l to see all tasks.

Migrations

Developer machine

Please run the lando-api.db container before accessing the database.

Add a new migration:

$ invoke add-migration "{description of applied changes}"

Upgrade to the newest revision:

$ invoke upgrade

Deployed server

Upgrade to the newest migration:

$ docker run [OPTIONS] IMAGE lando-cli db upgrade

Accessing the database

Run lando-api.db container if development containers are down.

$ docker-compose up -d lando-api.db

Access the database server (password is password)

$ psql -h localhost --port 54321 --user postgres -d lando_api_dev
Password for user postgres:

Support

To chat with Lando users and developers, join them on Matrix.

About

API for Lando (An automatic code lander for Mozilla)

Resources

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.6%
  • Other 0.4%