55 lines
1.6 KiB
Markdown
55 lines
1.6 KiB
Markdown
# bazel-example-golang
|
|
|
|
An example project demonstrating bazel build rules for go with
|
|
a local binary (go_binary) and a local library (go_library).
|
|
|
|
This requires bazel release > `bazel-0.20`.
|
|
|
|
```
|
|
$ git clone https://github.com/laramiel/bazel-example-golang.git
|
|
$ cd bazel-example-golang
|
|
$ git submodule init
|
|
$ git submodule foreach git pull origin master
|
|
|
|
$ bazel run :hello
|
|
|
|
$ bazel run :remote
|
|
$ bazel run :bare
|
|
|
|
$ git submodule update --init --recursive
|
|
$ bazel run //submodule:bare
|
|
$ bazel run //submodule:remote
|
|
|
|
$ bazel run //with_vendor:remote
|
|
$ bazel run //with_vendor:bare
|
|
|
|
```
|
|
|
|
# Explanation
|
|
|
|
This repository works in conjunction with other git repositories to
|
|
provide a demonstration of Bazel BUILD rules for golang.
|
|
|
|
* [bazel-example-golang](https://github.com/laramiel/bazel-example-golang)
|
|
The main repository, demonstrating binary, local, and remote repository usage.
|
|
|
|
* [bazel-example-golang-remote](https://github.com/laramiel/bazel-example-golang-remote)
|
|
An example remote repository which includes Bazel rules.
|
|
|
|
* [bazel-example-golang-bare](https://github.com/laramiel/bazel-example-golang-bare)
|
|
An example remote repository without any Bazel rules.
|
|
|
|
|
|
Each of the remote repositories is linked into `go_binary()` targets in several
|
|
ways:
|
|
|
|
1. Using the WORKSPACE file to define `git_repository()` rules.
|
|
This accounts for the `:remote` and `:bare` targets.
|
|
|
|
2. Using git submodules to import the repository source, and
|
|
using those paths. This accounts for the `//submodule:bare`
|
|
and `//submodule:remote` targets.
|
|
|
|
3. Using the VENDOR extension introduced in go1.6.
|
|
|