https://github.com/function61/deployer
Deploy anything with this container-based deployment tool
https://github.com/function61/deployer
container deployment deployment-automation
Last synced: 6 months ago
JSON representation
Deploy anything with this container-based deployment tool
- Host: GitHub
- URL: https://github.com/function61/deployer
- Owner: function61
- License: apache-2.0
- Created: 2019-05-17T12:33:20.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-08-18T09:03:17.000Z (over 1 year ago)
- Last Synced: 2025-05-17T03:14:56.168Z (8 months ago)
- Topics: container, deployment, deployment-automation
- Language: Go
- Homepage: https://function61.com/
- Size: 3.89 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
⬆️ For table of contents, click the above icon

[](https://github.com/function61/deployer/releases)
Deploy anything with this container-based deployment tool. It supports using different
container images to contain the deployment tooling.
Use cases:
- Deploy static website
- Deploy AWS Lambda function + required permissions/config + API gateway with help of Terraform
- Anything else where each version of your project has files that you want to put somewhere

Architecture
------------

Example project using Deployer
------------------------------
See example project, [Happy-API](https://github.com/function61/happy-api), using Deployer
(it also has instructions).
How does it work?
-----------------
Basically, deploying anything is downloading a `deployerspec.zip`. The minimum it contains:
- manifest.json
* Tells which Docker image and a command inside it to use to do the deployment itself
* Tells which build artefacts to download from the version
- version.json
Basically, the `deployerspec.zip` tells **how to do the deployment**, but doesn't contain
the files to deploy. `deployerspec.zip` is same as `deployerspec/` directory but with
build-time generated `version.json` added.
In Happy-API's case [this directory](https://github.com/function61/happy-api/tree/master/deployerspec)
is zipped at build-time and uploaded as a build
artefact to Bintray which is downloadable at `https://dl.bintray.com/function61/dl/happy-api/$version/deployerspec.zip`.
Therefore when you run `$ deployer deploy happy-api https://url/to/the.zip`, it will download &
unzip to read the
[manifest.json](https://github.com/function61/happy-api/blob/master/deployerspec/manifest.json)
to find out which `deployer_image` to use, ask you about user-specific deployment settings
(like API credentials), inject them and finally hand off the dirty work to the container.
In Happy-API's case the container image contains [Terraform](https://www.terraform.io/) which
ultimately takes care of the heavy lifting to call all the relevant AWS APIs.
Alternatives
------------
- [CNAB](https://cnab.io/)?