Skip to content

node-ci/nci-ssh-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nci ssh node

SSH node for nci.

This plugin allows to execute build on remote host via ssh.

Build Status

nci host requirements

This plugins requires only ssh client which should accessible as ssh command for user from which nci was started.

Remote host requirements

  • running ssh server
  • git client >= 1.9 (only for building git projects)
  • mercurial client >= 2.8 (only for building mercurial projects)

Installation

npm install nci-ssh-node

Usage

Add this plugin to the plugins section at server config, configure specific node by adding it to nodes section e.g.:

    "plugins": [
        "nci-ssh-node"
    ],
    "nodes": [
        {
            "type": "ssh",
            "name": "localNetworkRemote",
            "usageStrategy": "maximum",
            "maxExecutorsCount": 3,
            "options": {
                "host": "192.168.0.1",
                "user": "ci",
                "identityFile": "/home/ci/.ssh/id_rsa_test",
                "baseDir": "/var/tmp/nci/data/projects"
            }
        }
    ],

After that localNetworkRemote node will be used for building projects according to usageStrategy. During build nci will run commands at options.host as options.user trying to authenticate using options.identityFile. options.baseDir at localNetworkRemote will be used as base for storing project workspaces.

For correct escaping inside your build steps please use double quotes for command arguments e.g. use echo "1 2 3" not echo '1 2 3'.

Also note that it will be non-interactive ssh session, some linux distributions comes with ~/.bashrc which prevents it's loading in this case, e.g. default ~/.bashrc on ubuntu 14.04 contains:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

So if you care about ~/.bashrc been loaded for nci session please check it out on remote host.