UNPKG

@octopusdeploy/octojs

Version:

A nodejs cli tool for packaging and pushing projects to an Octopus Deploy instance.

154 lines (124 loc) 6.07 kB
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 ```