shipit-cli v5.3.0
shipit-cli
Shipit command line interface.
npm install --save-dev shipit-cli
Usage
Usage: shipit <environment> <tasks...>
Options:
-V, --version output the version number
--shipitfile <file> Specify a custom shipitfile to use
--require <files...> Script required before launching Shipit
--tasks List available tasks
--environments List available environments
-h, --help output usage information
shipitfile.js
module.exports = shipit => {
shipit.initConfig({
staging: {
servers: 'myproject.com',
},
})
shipit.task('pwd', async () => {
await shipit.remote('pwd')
})
}
API
shipit.task(name, deps, fn)
Create a new Shipit task. If a promise is returned task will wait for completion.
shipit.task('hello', async () => {
await shipit.remote('echo "hello on remote"')
await shipit.local('echo "hello from local"')
})
shipit.blTask(name, deps, fn)
Create a new Shipit task that will block other tasks during its execution. If a promise is returned other task will wait before start.
shipit.blTask('hello', async () => {
await shipit.remote('echo "hello on remote"')
await shipit.local('echo "hello from local"')
})
shipit.start(tasks)
Run Shipit tasks.
shipit.start('task')
shipit.start('task1', 'task2')
shipit.start(['task1', 'task2'])
shipit.local(command, options)
Run a command locally and streams the result. See ssh-pool#exec.
shipit
.local('ls -lah', {
cwd: '/tmp/deploy/workspace',
})
.then(({ stdout }) => console.log(stdout))
.catch(({ stderr }) => console.error(stderr))
shipit.remote(command, options)
Run a command remotely and streams the result. Run a command locally and streams the result. See ssh-pool#connection.run.
shipit
.remote('ls -lah')
.then(([server1Result, server2Result]) => {
console.log(server1Result.stdout)
console.log(server2Result.stdout)
})
.catch(error => {
console.error(error.stderr)
})
shipit.copyToRemote(src, dest, options)
Make a remote copy from a local path to a remote path. See ssh-pool#connection.copyToRemote.
shipit.copyToRemote('/tmp/workspace', '/opt/web/myapp')
shipit.copyFromRemote(src, dest, options)
Make a remote copy from a remote path to a local path. See ssh-pool#connection.copyFromRemote.
shipit.copyFromRemote('/opt/web/myapp', '/tmp/workspace')
shipit.log(...args)
Log using Shipit, same API as console.log
.
shipit.log('hello %s', 'world')
Workflow tasks
When the system initializes it automatically emits events:
- Emit event "init"
- Emit event "init:after_ssh_pool"
Each shipit task also generates events:
- Emit event "task_start"
- Emit event "task_stop"
- Emit event "task_err"
- Emit event "task_not_found"
Inside the task events, you can test for the task name.
shipit.on('task_start', event => {
if (event.task == 'first_task') {
shipit.log("I'm the first task")
}
})
License
MIT
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago