@octopusdeploy/octojs
Version:
A nodejs cli tool for packaging and pushing projects to an Octopus Deploy instance.
154 lines (124 loc) • 6.07 kB
Markdown
octopack
====
> A nodejs cli tool for packaging and pushing projects to an Octopus Deploy instance.
**NOTE: This project is currently in a pre-release state and its api is subject to change at any time.**
# Installation
Either through cloning with git or by using [npm](http://npmjs.org) (the recommended way):
```bash
npm install -g @octopusdeploy/octojs
```
And octojs will be installed globally to your system path.
You can also install octojs as a developement dependency:
```bash
npm install --save-dev @octopusdeploy/octojs
```
With a local installation, octojs will not be available in your system path. Instead, the local installation of octojs can be run by calling it from within an npm script (such as `npm start`).
# Usage
The simplest way to get started is to ask for help
```bash
octojs help
```
each command will also return help details detailing the valid arguments
```bash
octojs help pack
```
## Pack
By default the pack command all files from the base path (defaults to cwd).
To exclude files:
- The `--dependencies` parameter allows you to define precisely which `npm_modules` you want to include
- `prod` will include just those modules that are defined as non dev dependencies. This is the recommended value.
- `both` will include all `npm_modules` files. This is the default option
- `none` will exclude the whole `npm_modules` directory.
- Passing the `--gitignore` flag will result in the `.gitignore` file at the root location being read, and being used to exclude files from the archive.
To include additional files:
- provide the `octopack.json` file (automatically looked for in working directory or via explicit reference) and include an `includes` array of glob paths.
- if executing through the cli then the `--include` argument can be provided multiple times to specify multiple glob paths.
- if executing through code, then the files can individually be provided by using the `.append()` method. This method allows globs, file paths, buffers or streams.
### cli
```bash
Usage: octo pack [<options>] [basePath]
Options:
--id <packageId> Override ID of the package
--version <packageVersion> Override the version of the packag (default from package.json or timestamp)
-O, --outFolder <directory> The folder into which the generated package will be written (default '.')
-D, --dependencies <prod|p|both|b|none|n> Configure which node_module dependencies should be packaged (default both)
-G, --gitignore Exclude files mathced from .gitignore
-C, --config <path> Path to config file
-q --quiet Provide minimal output
-v --verbose Provide detailed output
-d --debug Spam the console with logs
-h, --help output usage information
Examples:
$ octojs pack
$ octojs pack --outFolder ./dist --format zip
$ octojs pack -v --dependencies prod --gitignore -O C:\bin
$ octojs pack --version 2.0.0 C:\Development\OtherApp
NOTE: If the config file is detected at the basePath location or is provided, then its values will be included with cli arguments taking precedence.
```
### code
```javascript
var octo = require('@octopusdeploy\\octojs');
octo.pack({outFolder: "./"}, (err, result) => {
if(err){
console.error(err);
} else {
console.log('Package: '+ result.name);
console.log('Path to package: '+ result.path);
}})
.append('buffer files/hello.txt', new Buffer('hello world'), {date: new Date(2011, 11, 11)})
.append('stream.txt', fs.createReadStream('./package.json'))
.append('lib/pack.js')
.finalize();
```
### configuration
The octojs commands will look for a file named `octopack.json` and additional arguments will be automatically included in the execution. Arguments supplied via CLI or in-code will override values provided in `octopack.json`
A simple example file might be
```json
{
"format": "zip",
"outFolder": "./bin",
"verbose": false,
"include": ["dist/**/*", "config/**/*", "nodemon.json", "ReadMe.md", "start.bat"]
}
```
allowing the command to be as simple as
```shell
octojs pack
```
## push
### cli
```bash
Options:
--package <file> Package file to push
--server <url> The base URL for your Octopus server - e.g., http://your-octopus/
--apiKey <key> Your API key. Get this from the user profile page. If the guest account is enabled, a key of API-GUEST can be used.
--replace If the package already exists in the repository, the default behavior is to reject the new package being pushed. You can pass this flag to overwrite the existing package.
--space Name or Id of the target space.
--timeout <seconds> Timeout in seconds for network operations. (default 600)
-C, --config <path> Path to config file
-q --quiet Provide minimal output
-v --verbose Provide detailed output
-d --debug Spam the console with logs
-h, --help output usage information
Examples:
$ octojs push --package C:\Out\Acme.Web.1.0.zip --apiKey API-SFJ23JSD2312 --server http://octopusserver.acme.com
NOTE: If the config file is detected at the basePath location or is provided, then its values will be included with cli arguments taking precedence.
```
### code
```javascript
var octo = require('@octopusdeploy\\octojs');
octo.push("./AcmeProject.1.0.0.zip", {
apiKey: 'API-XXX223123',
server: 'http://octopus-server',
space: 'My Octopus Space' // optional
}, (err, result) => {
if(err){
console.error(err);
} else {
console.log("Success!")
}});
```
# Tests
```shell
npm test
```