mirror of
https://github.com/prometheus/alertmanager
synced 2024-12-28 09:02:16 +00:00
b3f3ecf803
We generate binaries whenever `make build-all` is run. If they already exist, we only regenerate them if they are outdated. When one makes changes to the front-end and runs the single command `make build-all` on the root level Makefile, the front-end is rebuild accordingly. `make build-all` will use Docker to build the front-end. If someone prefers to install all the dev dependencies on their local machine instead, one can add the `NO_DOCKER=true` flag. For folks that only want to make back-end changes `ui/bindata.go` is checked in, so they do not have to build the front-end. They still use the `make build` command as before.
75 lines
2.6 KiB
Markdown
75 lines
2.6 KiB
Markdown
# Contributing
|
|
|
|
This document describes how to:
|
|
|
|
- Set up your dev environment
|
|
- Become familiar with [Elm](http://elm-lang.org/)
|
|
- Develop against AlertManager
|
|
|
|
## Dev Environment Setup
|
|
|
|
You can either use our default Docker setup or install all dev dependencies
|
|
locally. For the former you only need Docker installed, for the latter you need
|
|
to set the environment flag `NO_DOCKER` to `true` and have the following
|
|
dependencies installed:
|
|
|
|
- [Elm](https://guide.elm-lang.org/install.html#install)
|
|
- [Elm-Format](https://github.com/avh4/elm-format) is installed
|
|
|
|
In addition for easier development you
|
|
can [configure](https://guide.elm-lang.org/install.html#configure-your-editor)
|
|
your editor.
|
|
|
|
**All submitted elm code must be formatted with `elm-format`**. Install and
|
|
execute it however works best for you. We recommend having formatting the file
|
|
on save, similar to how many developers use `gofmt`.
|
|
|
|
If you prefer, there's a make target available to format all elm source files:
|
|
|
|
```
|
|
# make format
|
|
```
|
|
|
|
Once you've installed Elm, install the dependencies listed in
|
|
`elm-package.json`:
|
|
|
|
```
|
|
# elm package install -y
|
|
```
|
|
|
|
## Elm Resources
|
|
|
|
- The [Official Elm Guide](https://guide.elm-lang.org/) is a great place to
|
|
start. Going through the entire guide takes about an hour, and is a good
|
|
primer to get involved in our codebase. Once you've worked through it, you
|
|
should be able to start writing your feature with the help of the compiler.
|
|
- Check the [syntax reference](http://elm-lang.org/docs/syntax) when you need a
|
|
reminder of how the language works.
|
|
- Read up on [how to write elm code](http://elm-lang.org/docs/style-guide).
|
|
- Watch videos from the
|
|
latest [elm-conf](https://www.youtube.com/channel/UCOpGiN9AkczVjlpGDaBwQrQ)
|
|
- Learn how to use the debugger! Elm comes packaged with an excellent
|
|
[debugger](http://elm-lang.org/blog/the-perfect-bug-report). We've found this
|
|
tool to be invaluable in understanding how the app is working as we're
|
|
debugging behavior.
|
|
|
|
## Local development workflow
|
|
|
|
At the top level of this repo, follow the HA AlertManager instructions. Compile
|
|
the binary, then run with `goreman`. Add example alerts with the file provided
|
|
in the HA example folder. Then start the development server:
|
|
|
|
```
|
|
# cd ui/app
|
|
# make dev-server
|
|
```
|
|
|
|
Your app should be available at `http://localhost:<port>`. Navigate to
|
|
`src/Main.elm`. Any changes to the file system are detected automatically,
|
|
triggering a recompile of the project.
|
|
|
|
## Commiting changes
|
|
|
|
Before you commit changes, please run `make build-all` on the root level
|
|
Makefile. Please include `ui/bindata.go` in your commit.
|