# Notes: Golang Makefile

This `Makefile` consists of all the important commands required by **developers** and **DevOps** team for any Golang project:

%[https://gist.github.com/kkumar326/696e4f507e78d034f308c370fa44f5c7]

Run `make` in the terminal to go through all the available commands:
![Screenshot 2022-01-16 at 8.08.11 PM.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1642343966710/C0kfHz9Bc.png)

The commands include:
- `build` commands to build *binaries* for the current system and various other platform architectures and OS.

- `setup` commands to set up *dev dependencies* and packages required for linting, documentation, etc.

- `docs` commands to generate documentation on **swagger** and start local **swagger UI**.

- `formatting` commands to format go files.

- `test and coverage` commands to output status of **unit tests**, **benchmarks**, and **code coverage** in different available formats like *JSON*, *HTML*, etc.

- `static check` commands to find **security** and **linting** issues in code in different available formats like *JSON*, *HTML*, etc.

- `run` commands to run the application for different environments, *dev*, *staging* and *prod*, etc.

- `clean` commands to run cleanup on go application and by removing generated binaries and reports.

- `docker` commands to build, run, remove... **Docker** image and container.

- `help` command to open up the above terminal output.
