{"id":29461884,"url":"https://github.com/function61/deployer","last_synced_at":"2025-07-14T03:33:22.242Z","repository":{"id":57530364,"uuid":"187213165","full_name":"function61/deployer","owner":"function61","description":"Deploy anything with this container-based deployment tool","archived":false,"fork":false,"pushed_at":"2024-08-18T09:03:17.000Z","size":4075,"stargazers_count":3,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-17T03:14:56.168Z","etag":null,"topics":["container","deployment","deployment-automation"],"latest_commit_sha":null,"homepage":"https://function61.com/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/function61.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-17T12:33:20.000Z","updated_at":"2024-08-15T21:55:06.000Z","dependencies_parsed_at":"2024-08-18T10:22:44.943Z","dependency_job_id":"a5a3ede6-fb20-4382-a083-c8dd405b11a9","html_url":"https://github.com/function61/deployer","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/function61/deployer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Fdeployer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Fdeployer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Fdeployer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Fdeployer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/function61","download_url":"https://codeload.github.com/function61/deployer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/function61%2Fdeployer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265237695,"owners_count":23732514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["container","deployment","deployment-automation"],"created_at":"2025-07-14T03:31:04.634Z","updated_at":"2025-07-14T03:33:22.228Z","avatar_url":"https://github.com/function61.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"⬆️ For table of contents, click the above icon\n\n![Build status](https://github.com/function61/deployer/workflows/Build/badge.svg)\n[![Download](https://img.shields.io/github/downloads/function61/deployer/total.svg?style=for-the-badge)](https://github.com/function61/deployer/releases)\n\nDeploy anything with this container-based deployment tool. It supports using different\ncontainer images to contain the deployment tooling.\n\nUse cases:\n\n- Deploy static website\n- Deploy AWS Lambda function + required permissions/config + API gateway with help of Terraform\n- Anything else where each version of your project has files that you want to put somewhere\n\n![](docs/hold-on-to-your-butts.gif)\n\n\nArchitecture\n------------\n\n![](docs/architecture.png)\n\n\nExample project using Deployer\n------------------------------\n\nSee example project, [Happy-API](https://github.com/function61/happy-api), using Deployer\n(it also has instructions).\n\n\nHow does it work?\n-----------------\n\nBasically, deploying anything is downloading a `deployerspec.zip`. The minimum it contains:\n\n- manifest.json\n  * Tells which Docker image and a command inside it to use to do the deployment itself\n  * Tells which build artefacts to download from the version\n- version.json\n\nBasically, the `deployerspec.zip` tells **how to do the deployment**, but doesn't contain\nthe  files to deploy. `deployerspec.zip` is same as `deployerspec/` directory but with\nbuild-time generated `version.json` added.\n\nIn Happy-API's case [this directory](https://github.com/function61/happy-api/tree/master/deployerspec)\nis zipped at build-time and uploaded as a build\nartefact to Bintray which is downloadable at `https://dl.bintray.com/function61/dl/happy-api/$version/deployerspec.zip`.\n\nTherefore when you run `$ deployer deploy happy-api https://url/to/the.zip`, it will download \u0026\nunzip to read the\n[manifest.json](https://github.com/function61/happy-api/blob/master/deployerspec/manifest.json)\nto find out which `deployer_image` to use, ask you about user-specific deployment settings\n(like API credentials), inject them and finally hand off the dirty work to the container.\n\nIn Happy-API's case the container image contains [Terraform](https://www.terraform.io/) which\nultimately takes care of the heavy lifting to call all the relevant AWS APIs.\n\n\nAlternatives\n------------\n\n- [CNAB](https://cnab.io/)?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunction61%2Fdeployer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffunction61%2Fdeployer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunction61%2Fdeployer/lists"}