mirror of
https://github.com/balena-io/balena-cli.git
synced 2024-12-23 15:32:22 +00:00
4907fccf48
Change-type: major
138 lines
7.3 KiB
Markdown
138 lines
7.3 KiB
Markdown
Balena CLI
|
|
=========
|
|
|
|
> The official balena CLI tool.
|
|
|
|
[![npm version](https://badge.fury.io/js/balena-cli.svg)](http://badge.fury.io/js/balena-cli)
|
|
[![dependencies](https://david-dm.org/balena-io/balena-cli.svg)](https://david-dm.org/balena-io/balena-cli)
|
|
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/balena-io/chat)
|
|
|
|
Requisites
|
|
----------
|
|
|
|
If you want to install the CLI directly through npm, you'll need the below. If this looks difficult,
|
|
we do now have an experimental standalone binary release available, see ['Standalone install'](#standalone-install) below.
|
|
|
|
- [NodeJS](https://nodejs.org) (>= v6)
|
|
- [Git](https://git-scm.com)
|
|
- The following executables should be correctly installed in your shell environment:
|
|
- `ssh`: Any recent version of the OpenSSH ssh client (required by `balena sync` and `balena ssh`)
|
|
- if you need `ssh` to work behind the proxy you also need [`proxytunnel`](http://proxytunnel.sourceforge.net/) installed (available as `proxytunnel` package for Ubuntu, for example)
|
|
- `rsync`: >= 2.6.9 (required by `balena sync`)
|
|
|
|
##### Windows Support
|
|
|
|
Before installing balena-cli, you'll need a working node-gyp environment. If you don't already have one you'll see native module build errors during installation. To fix this, run `npm install -g --production windows-build-tools` in an administrator console (available as 'Command Prompt (Admin)' when pressing windows+x in Windows 7+).
|
|
|
|
`balena sync` and `balena ssh` have not been thoroughly tested on the standard Windows cmd.exe shell. We recommend using bash (or a similar) shell, like Bash for Windows 10 or [Git for Windows](https://git-for-windows.github.io/).
|
|
|
|
If you still want to use `cmd.exe` you will have to use a package manager like MinGW or chocolatey. For MinGW the steps are:
|
|
|
|
1. Install [MinGW](http://www.mingw.org).
|
|
2. Install the `msys-rsync` and `msys-openssh` packages.
|
|
3. Add MinGW to the `%PATH%` if this hasn't been done by the installer already. The location where the binaries are places is usually `C:\MinGW\msys\1.0\bin`, but it can vary if you selected a different location in the installer.
|
|
4. Copy your SSH keys to `%homedrive%%homepath\.ssh`.
|
|
5. If you need `ssh` to work behind the proxy you also need to install [proxytunnel](http://proxytunnel.sourceforge.net/)
|
|
|
|
Getting Started
|
|
---------------
|
|
|
|
### NPM install
|
|
|
|
If you've got all the requirements above, you should be able to install the CLI directly from npm. If not,
|
|
or if you have any trouble with this, please try the new standalone install steps just below.
|
|
|
|
This might require elevated privileges in some environments.
|
|
|
|
```sh
|
|
$ npm install balena-cli -g --production --unsafe-perm
|
|
```
|
|
|
|
`--unsafe-perm` is only required on systems where the global install directory is not user-writable.
|
|
This allows npm install steps to download and save prebuilt native binaries. You may be able to omit it,
|
|
especially if you're using a user-managed node install such as [nvm](https://github.com/creationix/nvm).
|
|
|
|
In some environments, this process will need to build native modules. This may require a more complex build
|
|
environment, and notably requires Python 2.7. If you hit any problems with this, we recommend you try the
|
|
alternative standalone install below instead.
|
|
|
|
### Standalone install
|
|
|
|
If you don't have node or a working pre-gyp environment, you can still install the CLI as a standalone
|
|
binary. **This is experimental and may not work perfectly yet in all environments**, but it seems to work
|
|
well in initial cross-platform testing, so it may be useful, and we'd love your feedback if you hit any issues.
|
|
|
|
To install the CLI as a standalone binary:
|
|
|
|
* Download the latest zip for your OS from https://github.com/balena-io/balena-cli/releases.
|
|
* Extract the contents, putting the `balena-cli` folder somewhere appropriate for your system (e.g. `C:/balena-cli`, `/usr/local/lib/balena-cli`, etc).
|
|
* Add the `balena-cli` folder to your `PATH` ([Windows instructions](https://www.computerhope.com/issues/ch000549.htm), [Linux instructions](https://stackoverflow.com/questions/14637979/how-to-permanently-set-path-on-linux-unix), [OSX instructions](https://stackoverflow.com/questions/22465332/setting-path-environment-variable-in-osx-permanently))
|
|
* Running `balena` in a fresh command line should print the balena CLI help.
|
|
|
|
To update in future, simply download a new release and replace the extracted folder.
|
|
|
|
Have any problems, or see any unexpected behaviour? [Please file an issue!](https://github.com/balena-io/balena-cli/issues/new)
|
|
|
|
### Login
|
|
|
|
```sh
|
|
$ balena login
|
|
```
|
|
|
|
_(Typically useful, but not strictly required for all commands)_
|
|
|
|
### Run commands
|
|
|
|
Take a look at the full command documentation at [https://balena.io/docs/tools/cli/](https://balena.io/docs/tools/cli/#table-of-contents
|
|
), or by running `balena help`.
|
|
|
|
### Bash completions
|
|
|
|
Optionally you can enable tab completions for the bash shell, enabling the shell to provide additional context and automatically complete arguments to`balena`. To enable bash completions, copy the `balena-completion.bash` file to the default bash completions directory (usually `/etc/bash_completion.d/`) or append it to the end of `~/.bash_completion`.
|
|
|
|
FAQ
|
|
---
|
|
|
|
### Where is my configuration file?
|
|
|
|
The per-user configuration file lives in `$HOME/.balenarc.yml` or `%UserProfile%\_balenarc.yml`, in Unix based operating systems and Windows respectively.
|
|
|
|
The balena CLI also attempts to read a `balenarc.yml` file in the current directory, which takes precedence over the per-user configuration file.
|
|
|
|
### How do I point the balena CLI to staging?
|
|
|
|
The easiest way is to set the `BALENARC_BALENA_URL=balena-staging.com` environment variable.
|
|
|
|
Alternatively, you can edit your configuration file and set `balenaUrl: balena-staging.com` to persist this setting.
|
|
|
|
### How do I make the balena CLI persist data in another directory?
|
|
|
|
The balena CLI persists your session token, as well as cached images in `$HOME/.balena` or `%UserProfile%\_balena`.
|
|
|
|
Pointing the balena CLI to persist data in another location is necessary in certain environments, like a server, where there is no home directory, or a device running balenaOS, which erases all data after a restart.
|
|
|
|
You can accomplish this by setting `BALENARC_DATA_DIRECTORY=/opt/balena` or adding `dataDirectory: /opt/balena` to your configuration file, replacing `/opt/balena` with your desired directory.
|
|
|
|
Support
|
|
-------
|
|
|
|
If you're having any problems, check our [troubleshooting guide](https://github.com/balena-io/balena-cli/blob/master/TROUBLESHOOTING.md) and if your problem is not addressed there, please [raise an issue](https://github.com/balena-io/balena-cli/issues/new) on GitHub and the balena team will be happy to help.
|
|
|
|
You can also get in touch with us in the balena [forums](https://forums.balena.io/).
|
|
|
|
Development guidelines
|
|
----------------------
|
|
|
|
After cloning this repository and running `npm install` you can build the CLI using `npm run build`.
|
|
You can then run the generated build using `./bin/balena`.
|
|
In order to ease development:
|
|
* you can build the CLI using the `npm run build:fast` variant which skips some of the build steps or
|
|
* you can use `./bin/balena-dev` which live transpiles the sources of the CLI.
|
|
|
|
In either case, before opening a PR make sure to also test your changes after doing a full build with `npm run build`.
|
|
|
|
License
|
|
-------
|
|
|
|
The project is licensed under the Apache 2.0 license.
|