0.1.11 • Published 5 years ago

@metabit/deploy v0.1.11

Weekly downloads
21
License
MIT
Repository
github
Last release
5 years ago

Deploy. with examples

This package aims to fill a minor void of programmable deployment steps built in NodeJS. Why NodeJS? Because that's one of the only languages I know best, and it's not in a container on my computer.

./deploy.gif

What can this do?

Initially this was meant to be a code deployment tool. Where you set up steps to be ran on your servers, and have it all facilitated from your computer.

But it doesn't have to relate to code deployments. It could be scheduling tasks on servers, or moving around log files, scheduling updates, really the only limit here is what you want to do with a server.

Installation

npm i -g @metabit/deploy

Usage

deploy start

or if you're on version > 0.1.0

deploy step deploy:cleanup

Configuration

When running deploy start for the first time we create a .deploy.js file by default. In that file we export a variable called hosts, and one called scripts.

type host = {
    name: string;
    ip: string;
    identityFile: string;
    user: string;
}

and

type script = {
   name: string;
   file: string;
}

Something you may want to keep in mind is that git will send things to stderr even when things are successful and the ssh2 lib can't handle that too well. So I recommend redirecting all output to stdout and just look over the logs.

GIT_REPO=git@github.com:austinkregel/finance.git
DEPLOY_NAME=$(date +"%Y%m%d%H%M%S")

git clone "$GIT_REPO" "$DEPLOY_NAME" 2>&1

for each script denoted, it will be ran on each server once. Scripts will be ran on servers in order.

Deploy file created on first start:

module.exports = {
    hosts: [
        {
            name: "strontium",
            ip: "198.168.1.20",
            identityFile: "/home/ubuntu/.ssh/id_rsa",
            user: "ubuntu"
        },
    ],
    scripts: [
        {
            name: "updates",
            file: ".scripts/system-updates.sh",
        },
        {
            name: "deploy",
            file: ".scripts/git-clone-composer-install-deploy.sh",
        },
        {
            name: "deploy:prepare",
            file: ".scripts/build-npm.sh",
        },
        {
            name: "deploy:release",
            file: ".scripts/tag-release-deploy.sh",
        }
    ]
}

Scripts

Scripts are located in a .scripts directory in your current working directory. Scripts are expected to be bash scripts and are not fed any extra parameters by default.

Scripts cannot be ran in parallel, and is not planned to be a supported feature.

Hosts

Hosts are expected to be your own. Don't use this tool to do things on other peoples hosts... That's not nice.

Logging into a host with a password will not be supported by this package.

The ip address field for hosts can be either ip addresses or domain names.

Host users can be any valid user with access to a TTY session.

0.1.11

5 years ago

0.1.10

5 years ago

0.1.9

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago