Files
archived-hipudding-teslamate/website/docs/development.md
JakobLichterfeld a0ad5c4276 doc: add testing with ci build docker images to contributing guide (#3856)
* doc: add testing with ci build docker images to contributing guide

* doc: update changelog
2024-04-17 15:33:39 +02:00

2.8 KiB

id, title, sidebar_label
id title sidebar_label
development Development and Contributing Development and Contributing

Requirements

  • Elixir >= 1.12
  • Postgres >= 10
  • An MQTT broker e.g. mosquitto (optional)
  • NodeJS >= 14

Initial Setup

To run the TeslaMate test suite you need a database named teslamate_test:

# download dependencies, create the dev database and run migrations
mix setup

# create the test database
MIX_ENV=test mix ecto.setup

Running locally

Start an iex session in another terminal window:

iex -S mix phx.server

Then sign in with a Tesla account.

Hot reloading

To immediately apply your local changes open or reload http://localhost:4000. You can also reload specific modules via iex, for example:

iex> r TeslaMate.Vehicles.Vehicle

To only compile the changes:

mix compile

Code formatting

mix format

Update pot files (extract messages for translation)

mix gettext.extract --merge

Testing

To ensure a commit passes CI you should run mix ci locally, which executes the following commands:

  • Check formatting (mix format --check-formatted)
  • Run all tests (mix test)

Testing with our CI which builds the Docker images automatically per PR

Our CI automatically builds the Docker images for each PR. To test the changes introduce by a PR you can edit your docker-compose.yml file as follows (replace pr-3836 with the PR number):

For TeslaMate:

teslamate:
       # image: teslamate/teslamate:latest
      image: ghcr.io/teslamate-org/teslamate/teslamate:pr-3836

For Grafana:

grafana:
       # image: teslamate/grafana:latest
      image: ghcr.io/teslamate-org/teslamate/grafana:pr-3836

Making Changes to Grafana Dashboards

To update dashboards you need Grafana running locally. The following docker-compose.yml can be used for this purpose:

services:
  grafana:
    image: teslamate-grafana:latest
    environment:
      - DATABASE_USER=postgres
      - DATABASE_PASS=postgres
      - DATABASE_NAME=teslamate_dev
      - DATABASE_HOST=host.docker.internal
    ports:
      - 3000:3000
    volumes:
      - grafana-data:/var/lib/grafana

volumes:
  grafana-data:

(on Linux use the actual IP address of the host as DATABASE_HOSTinstead of host.docker.internal)

Then build the image with make grafana and run the container via docker compose up grafana.

Access the Grafana at http://localhost:3000 and sign in with the default user admin and password admin.

Then edit the respective dashboard(s) locally. To export a dashboard hit the 'Save' button and select Save JSON to file. The final JSON file belongs in the directory ./grafana/dashboards/. To apply the changes rebuild the image and start the container.