Skip to content

API for Lando (An automatic code lander for Mozilla)

Notifications You must be signed in to change notification settings

mozilla-conduit/lando-api

Repository files navigation

Lando API

A microservice to land Phabricator revisions to version control repositories.

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:

      ```yaml
      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):

```shell
docker-compose up -d
```

To create a database:

```shell
invoke setup-db
```

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

To stop the containers run

```shell
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:

```shell
invoke test
```

You can provide options to pytest in testargs argument:

```shell
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

```shell
invoke add-migration "{description of applied changes}"
```

Upgrade to the newest revision

```shell
invoke upgrade
```

Deployed server

Upgrade to the newest migration:

```shell
docker run [OPTIONS] IMAGE lando-cli db upgrade
```

Accessing the database

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

```shell
docker-compose up -d lando-api.db
```

Access the database server (password is password)

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

Updating Requirements

Requirements are managed with pip-compile. To add or update requirements in Lando, update requirements.in as needed, then run the following docker-compose recipe:

```shell
docker-compose run build-requirements
```

Useful Links

Transplant Conduit docker docker-compose Docker for Mac Docker for Windows Homebrew formula docker-compose.override.yml httpie

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