62 lines
2.3 KiB
Markdown
62 lines
2.3 KiB
Markdown
|
# Building Arukas CLI
|
||
|
|
||
|
This document contains details about the process for building binaries for Arukas CLI
|
||
|
|
||
|
## QuickBuild
|
||
|
|
||
|
**Please note: Replaced by your arukas token and aruaks api secret is
|
||
|
`YOUR_API_TOKEN` and `YOUR_API_SECRET`**
|
||
|
|
||
|
* Clone the repo: `git clone https://github.com/arukasio/cli.git`
|
||
|
* CLI Build: `docker build -t arukasio/arukas:patch .`
|
||
|
* Test execute the CLI: `docker run --rm -e ARUKAS_JSON_API_TOKEN="YOUR_API_TOKEN"
|
||
|
-e ARUKAS_JSON_API_SECRET="YOUR_API_SECRET" arukasio/arukas:patch`
|
||
|
|
||
|
### Godep
|
||
|
|
||
|
You can use the `godep` in order to install the external package that depends.
|
||
|
It will install the package versions specified in `Godeps/Godeps.json` to your `$GOPATH`
|
||
|
|
||
|
```
|
||
|
go get -u github.com/tools/godep
|
||
|
godep restore
|
||
|
```
|
||
|
|
||
|
## Cross Compilation and Building for Distribution
|
||
|
|
||
|
If you wish to cross-compile arukas-cli for another architecture, you can set the `XC_OS` and `XC_ARCH` environment variables to values representing the target operating system and architecture before calling `make`. The output is placed in the `pkg` subdirectory tree both expanded in a directory representing the OS/architecture combination and as a ZIP archive.
|
||
|
|
||
|
For example, to compile 64-bit Linux binaries on Mac OS X Linux, you can run:
|
||
|
|
||
|
```sh
|
||
|
$ XC_OS=linux XC_ARCH=amd64 make bin
|
||
|
...
|
||
|
$ file pkg/linux_amd64/arukas
|
||
|
arukas: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
|
||
|
```
|
||
|
|
||
|
`XC_OS` and `XC_ARCH` can be space separated lists representing different combinations of operating system and architecture. For example, to compile for both Linux and Mac OS X, targeting both 32- and 64-bit architectures, you can run:
|
||
|
|
||
|
```sh
|
||
|
$ XC_OS="linux darwin" XC_ARCH="386 amd64" make bin
|
||
|
...
|
||
|
$ tree ./pkg/ -P "arukas|*.zip"
|
||
|
./pkg/
|
||
|
├── darwin_386
|
||
|
│ └── arukas
|
||
|
├── darwin_386.zip
|
||
|
├── darwin_amd64
|
||
|
│ └── arukas
|
||
|
├── darwin_amd64.zip
|
||
|
├── linux_386
|
||
|
│ └── arukas
|
||
|
├── linux_386.zip
|
||
|
├── linux_amd64
|
||
|
│ └── arukas
|
||
|
└── linux_amd64.zip
|
||
|
|
||
|
4 directories, 8 files
|
||
|
```
|
||
|
|
||
|
_Note: Cross-compilation uses [gox](https://github.com/mitchellh/gox), which requires toolchains to be built with versions of Go prior to 1.5. In order to successfully cross-compile with older versions of Go, you will need to run `gox -build-toolchain` before running the commands detailed above._
|