This repository contains an internal TypeScript library for deploying functions in DigitalOcean. It is used by the doctl serverless
deployer plugin and in remote builds.
The contents were jumpstarted by migrating the original Nimbella deployer from nimbella/nimbella-deployer
. The commit history (and version history) was preserved. Thus, the first version sourced from this repo is a new major version, 5.0.0.
There are three artifacts that are derived from this source:
- A
nodejs
library for incorporation into other node-based tools. Currently, this is uploaded to a DigitalOcean space object store for later incorporation but it should eventually be published tonpm
. - The
doctl serverless
deployer-plugin. Currently, this is built from (1) in the separate repodigitalocean/doctl-sandbox-plugin
. - An install image for installing the deployer into container images (currently just runtime containers) with an outer shell called
dosls
. We do not install a completedoctl
into those images unless it is needed for another purpose.
Artifacts (1) and (3) are built by the script internalRelease.sh
with no arguments. That script is driven by a GitHub action on every push to the main
branch. It only builds the artifacts if the current version (in package.json
) is not yet uploaded to the tools Space. After building the artifacts, it uploads them as well. So, new versions are "published" only on pushes to main
with a new version number.
The internalRelease.sh
script can also be run with a --test
flag, in which case is builds the artifacts unconditionally but does not upload them.
To test changes locally
npm install
npm run build
after which the deployer shell can be run as /path/to/repo/bin/run
. It is often convenient to make a symbolic link in your path pointing to that location (e.g. as dosls
). Then, you can test with
dosls deploy <projectDir>
dosls get-metadata <projectDir>
dosls watch <projectDir>