# Runway
[](https://github.com/onicagroup/runway/actions?query=workflow%3ACI%2FCD)
[](https://pypi.org/project/runway/)
[](https://www.npmjs.com/package/@onica/runway)
[](https://github.com/psf/black)

Runway is a lightweight integration app designed to ease management of infrastructure tools.
Its main goals are to encourage GitOps best-practices, avoid convoluted Makefiles/scripts (enabling identical deployments from a workstation or CI job), and enable developers/admins to use the best tool for any given job.
## Features
* Centralized environment-specific configuration
* Automatic environment identification from git branches
* Automatic linting/verification
* Support of IAM roles to assume for each deployment
* Terraform backend/workspace config management w/per-environment tfvars
* Automatic kubectl/terraform version management per-environment
### Supported Deployment Tools
* AWS CDK
* Kubectl
* Serverless Framework
* Stacker (CloudFormation)
* Static websites (build & deploy to S3+CloudFront)
* Terraform
## Example
A typical Runway configuration is unobtrusive -- it just lists the deployment order and locations (regions).
```yml
deployments:
- modules:
- resources.tf # terraform resources
- backend.sls # serverless lambda functions
- frontend # static web site
environments: # Environment settings
dev:
foo: dev-bar
prod:
foo: prod-bar
```
The example above contains enough information for Runway to deploy all resources, lambda functions and a static website backed by S3 and Cloudfront in either dev or prod environments
## Install
Runway is available via any of the following installation methods. Use whatever works best for your project/team (it's the same application no matter how you obtain it).
### HTTPS Download (e.g cURL)
Use one of the endpoints below to download a single-binary executable version of Runway based on your operating system.
| Operating System | Endpoint |
|------------------|----------------------------------------|
| Linux | <https://oni.ca/runway/latest/linux> |
| macOS | <https://oni.ca/runway/latest/osx> |
| Windows | <https://oni.ca/runway/latest/windows> |
```shell
$ curl -L oni.ca/runway/latest/osx -o runway
$ chmod +x runway
$ ./runway init
```
**Suggested use:** CloudFormation or Terraform projects
### npm
```shell
$ npm i -D @onica/runway
$ npx runway init
```
**Suggested use:** Serverless or AWS CDK projects
### pip (or pipenv,poetry,etc)
```shell
$ pip install runway
$ runway init
# OR
$ pipenv install runway
$ pipenv run runway init
```
**Suggested use:** Python projects
## Documentation
See the [doc site](https://docs.onica.com/projects/runway) for full documentation.
Quickstart documentation, including CloudFormation templates and walkthrough can be found [here](https://docs.onica.com/projects/runway/en/release/quickstart/index.html)
## Community Chat
Drop into the [#runway channel](https://kiwiirc.com/client/irc.freenode.net/?nick=RunwayHelp?#runway) for discussion/questions.
Raw data
{
"_id": null,
"home_page": "https://github.com/onicagroup/runway",
"name": "runway",
"maintainer": "",
"docs_url": null,
"requires_python": ">=2.6",
"maintainer_email": "",
"keywords": "cli",
"author": "Onica Group LLC",
"author_email": "opensource@onica.com",
"download_url": "https://files.pythonhosted.org/packages/31/05/a4af7b32c6e6189f3c41e0269160a362f9d6369efbca452fe88d15d671af/runway-1.18.0.tar.gz",
"platform": "",
"description": "# Runway\n\n[](https://github.com/onicagroup/runway/actions?query=workflow%3ACI%2FCD)\n[](https://pypi.org/project/runway/)\n[](https://www.npmjs.com/package/@onica/runway)\n[](https://github.com/psf/black)\n\n\n\nRunway is a lightweight integration app designed to ease management of infrastructure tools.\n\nIts main goals are to encourage GitOps best-practices, avoid convoluted Makefiles/scripts (enabling identical deployments from a workstation or CI job), and enable developers/admins to use the best tool for any given job.\n\n\n## Features\n\n* Centralized environment-specific configuration\n* Automatic environment identification from git branches\n* Automatic linting/verification\n* Support of IAM roles to assume for each deployment\n* Terraform backend/workspace config management w/per-environment tfvars\n* Automatic kubectl/terraform version management per-environment\n\n### Supported Deployment Tools\n\n* AWS CDK\n* Kubectl\n* Serverless Framework\n* Stacker (CloudFormation)\n* Static websites (build & deploy to S3+CloudFront)\n* Terraform\n\n\n## Example\n\nA typical Runway configuration is unobtrusive -- it just lists the deployment order and locations (regions).\n\n```yml\ndeployments:\n - modules:\n - resources.tf # terraform resources\n - backend.sls # serverless lambda functions\n - frontend # static web site\n environments: # Environment settings\n dev:\n foo: dev-bar\n prod:\n foo: prod-bar\n```\n\nThe example above contains enough information for Runway to deploy all resources, lambda functions and a static website backed by S3 and Cloudfront in either dev or prod environments\n\n\n## Install\n\nRunway is available via any of the following installation methods. Use whatever works best for your project/team (it's the same application no matter how you obtain it).\n\n### HTTPS Download (e.g cURL)\n\nUse one of the endpoints below to download a single-binary executable version of Runway based on your operating system.\n\n| Operating System | Endpoint |\n|------------------|----------------------------------------|\n| Linux | <https://oni.ca/runway/latest/linux> |\n| macOS | <https://oni.ca/runway/latest/osx> |\n| Windows | <https://oni.ca/runway/latest/windows> |\n\n```shell\n$ curl -L oni.ca/runway/latest/osx -o runway\n$ chmod +x runway\n$ ./runway init\n```\n\n**Suggested use:** CloudFormation or Terraform projects\n\n\n### npm\n\n```shell\n$ npm i -D @onica/runway\n$ npx runway init\n```\n\n**Suggested use:** Serverless or AWS CDK projects\n\n\n### pip (or pipenv,poetry,etc)\n\n```shell\n$ pip install runway\n$ runway init\n# OR\n$ pipenv install runway\n$ pipenv run runway init\n```\n\n**Suggested use:** Python projects\n\n\n## Documentation\n\nSee the [doc site](https://docs.onica.com/projects/runway) for full documentation.\n\nQuickstart documentation, including CloudFormation templates and walkthrough can be found [here](https://docs.onica.com/projects/runway/en/release/quickstart/index.html)\n\n## Community Chat\n\nDrop into the [#runway channel](https://kiwiirc.com/client/irc.freenode.net/?nick=RunwayHelp?#runway) for discussion/questions.",
"bugtrack_url": null,
"license": "Apache License 2.0",
"summary": "Simplify infrastructure/app testing/deployment",
"version": "1.18.0",
"split_keywords": [
"cli"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "af1b7a2a25f2577bbd21a070fb214bde",
"sha256": "7ff5d09b9030ccf360ed8abe709174a395ac8dd22ca184842d6cea04c247edc9"
},
"downloads": -1,
"filename": "runway-1.18.0.tar.gz",
"has_sig": false,
"md5_digest": "af1b7a2a25f2577bbd21a070fb214bde",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.6",
"size": 11298939,
"upload_time": "2021-01-14T02:07:01",
"upload_time_iso_8601": "2021-01-14T02:07:01.394711Z",
"url": "https://files.pythonhosted.org/packages/31/05/a4af7b32c6e6189f3c41e0269160a362f9d6369efbca452fe88d15d671af/runway-1.18.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2021-01-14 02:07:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": null,
"github_project": "onicagroup",
"error": "Could not fetch GitHub repository",
"lcname": "runway"
}