# [Bazel](https://bazel.build)

*{Fast, Correct} - Choose two*

Build and test software of any size, quickly and reliably.

* **Speed up your builds and tests**:
  Bazel rebuilds only what is necessary.
  With advanced local and distributed caching, optimized dependency analysis and
  parallel execution, you get fast and incremental builds.

* **One tool, multiple languages**: Build and test Java, C++, Android, iOS, Go,
  and a wide variety of other language platforms. Bazel runs on Windows, macOS,
  and Linux.

* **Scalable**: Bazel helps you scale your organization, codebase, and
  continuous integration solution. It handles codebases of any size, in multiple
  repositories or a huge monorepo.

* **Extensible to your needs**: Easily add support for new languages and
  platforms with Bazel's familiar extension language. Share and re-use language
  rules written by the growing Bazel community.

## Getting Started

  * [Install Bazel](https://bazel.build/install)
  * [Get started with Bazel](https://bazel.build/start)
  * Follow our tutorials:

    - [Build C++](https://bazel.build/tutorials/cpp)
    - [Build Java](https://bazel.build/tutorials/java)
    - [Android](https://bazel.build/tutorials/android-app)
    - [iOS](https://github.com/bazelbuild/rules_apple/blob/master/doc/tutorials/ios-app.md)

## Documentation

  * [Bazel command line](https://bazel.build/docs/user-manual)
  * [Rule reference](https://bazel.build/reference/be/overview)
  * [Use the query command](https://bazel.build/reference/query)
  * [Extend Bazel](https://bazel.build/rules/concepts)
  * [Write tests](https://bazel.build/reference/test-encyclopedia)
  * [Roadmap](https://bazel.build/community/roadmaps)
  * [Who is using Bazel?](https://bazel.build/community/users)

## Reporting a Vulnerability

To report a security issue, please email security@bazel.build with a description
of the issue, the steps you took to create the issue, affected versions, and, if
known, mitigations for the issue. Our vulnerability management team will respond
within 3 working days of your email. If the issue is confirmed as a
vulnerability, we will open a Security Advisory. This project follows a 90 day
disclosure timeline.

## Contributing to Bazel

See [CONTRIBUTING.md](CONTRIBUTING.md)

[![Build status](https://badge.buildkite.com/1fd282f8ad98c3fb10758a821e5313576356709dd7d11e9618.svg?status=master)](https://buildkite.com/bazel/bazel-bazel)
