Angel scripts for deploying organic cell on vps
infrastructure.
Designed to work with a cell within monorepo following stem skeleton 2.1.0.
The minimal version of nodejs is: Nodejs version 8+
Open your terminal and run:
cd /path/to/cell
npm install angelscripts-cell-mitosis --save-dev
Ubuntu
version 14.04+ or Debian version 7+ server with ssh access
ssh
scp
git
tar
Start a cell mitosis. This essentially deploys the current working cell to a remote outlined by the mitosis structure in cell's dna:
{
cwd: '...',
build: { ... },
mitosis: {
name: String,
target: {
domain: String,
ip: String
},
versionChange: String, // "major", "minor", "patch", "current", "prerelease-<identifier>"
mode: String,
zygote: Boolean,
mergeDNAFrom: String
}
}
short way is using $ angel cell mitosis :mitosisName
having versionChange defined in mitosis dna.
- uses
versionChange
to setpackagejson.version
and git commits/pushes.
Note you need to have git configured to push to default remote.
- using
current
as versionChange indicates to skip version bump - using
prerelease-<identifier>
as versionChange indicates to bump a prerelease with providedidentifier
- packs current working cell by reading its name from
packagejson.name
Note that having packagejson.scripts.build
present will flag that the cell can be build via npm run build
and will engage mitosis using cell's build artifact expected at /dist
folder. Otherwise packs:
/dna
/cells/{cwd}
/cells/node_modules
/package.json
- uploads to
mitosis.target.ip
at/home/node/deployments/cells/{cellName}-{packagejson.version}-{cellMode}/deployment.tar.gz
- unpacks
deployment.tar.gz
into its containing directory
Note that having mergeDNAFrom
present indicates a source directory location which will be copied over the unpacked /dna
folder. This is usually used to provide server stored secrets.
For cells which are not build npm i --production
is performed for the monorepo and the deployed cell.
- writes delpoymentJSON having contents:
Located at /home/node/deployments/enabled/{name}-{version}-{mitosis.mode}.json
{
name: packagejson.name,
cwd: process.cwd(),
version: packagejson.version,
nodeVersion: packagejson.engines.node,
endpoint: String, // computed based on mitosisDNA
port: '@cell-ports.{cellName}',
mountpoint: '@cell-mountpoints.{cellName}',
mitosis: MitosisDNA
domain: MitosisDNA.target.domain
}
Optionally for zygote mitosis writes the same deploymentJSON to /home/node/deployments/running/{name}-{version}-{mitosis.mode}.json
This essentially deletes on the remote:
/home/node/deployments/enabled/{name}-{version}-{mitosis.mode}.json
/home/node/deployments/running/{name}-{version}-{mitosis.mode}.json
You're more than welcome to contribute tests for this repo.
We
- Keep the
README.md
up-to-date with changes - Have fun 🔥🚀