# Runway
[![CI/CD](https://github.com/onicagroup/runway/workflows/CI/CD/badge.svg?branch=master)](https://github.com/onicagroup/runway/actions?query=workflow%3ACI%2FCD)
[![codecov](https://codecov.io/gh/onicagroup/runway/branch/master/graph/badge.svg?token=Ku28I0RY80)](https://codecov.io/gh/onicagroup/runway)
[![PyPi](https://img.shields.io/pypi/v/runway?style=flat)](https://pypi.org/project/runway/)
[![npm](https://img.shields.io/npm/v/@onica/runway?style=flat)](https://www.npmjs.com/package/@onica/runway)
[![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat)](https://github.com/psf/black)
![runway-example.gif](https://raw.githubusercontent.com/onicagroup/runway/master/docs/source/images/runway-example.gif)
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
* CFNgin (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: # Environments
dev: "123456789012" # AWS development Account ID
prod: "234567890123" # AWS production Account ID
regions:
- us-east-1
```
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 new
```
**Suggested use:** CloudFormation or Terraform projects
### npm
```shell
$ npm i -D @onica/runway
$ npx runway new
```
**Suggested use:** Serverless or AWS CDK projects
### pip (or poetry, etc)
```shell
$ pip install runway
$ runway new
# OR
$ poetry add --dev runway
$ poetry run runway new
```
**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/page/quickstart/index.html)
Raw data
{
"_id": null,
"home_page": "https://github.com/onicagroup/runway",
"name": "runway",
"maintainer": "Kyle Finley",
"docs_url": null,
"requires_python": ">=3.9,<3.13",
"maintainer_email": "kyle@finley.sh",
"keywords": "cli",
"author": "Onica Group LLC",
"author_email": "opensource@onica.com",
"download_url": "https://files.pythonhosted.org/packages/43/c8/7f1c84babc87e79b38ed477969677a3ffc25867d5f7d8fed22f669bf8cb5/runway-2.6.14.tar.gz",
"platform": null,
"description": "# Runway\n\n[![CI/CD](https://github.com/onicagroup/runway/workflows/CI/CD/badge.svg?branch=master)](https://github.com/onicagroup/runway/actions?query=workflow%3ACI%2FCD)\n[![codecov](https://codecov.io/gh/onicagroup/runway/branch/master/graph/badge.svg?token=Ku28I0RY80)](https://codecov.io/gh/onicagroup/runway)\n[![PyPi](https://img.shields.io/pypi/v/runway?style=flat)](https://pypi.org/project/runway/)\n[![npm](https://img.shields.io/npm/v/@onica/runway?style=flat)](https://www.npmjs.com/package/@onica/runway)\n[![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat)](https://github.com/psf/black)\n\n![runway-example.gif](https://raw.githubusercontent.com/onicagroup/runway/master/docs/source/images/runway-example.gif)\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* CFNgin (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: # Environments\n dev: \"123456789012\" # AWS development Account ID\n prod: \"234567890123\" # AWS production Account ID\n regions:\n - us-east-1\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 new\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 new\n```\n\n**Suggested use:** Serverless or AWS CDK projects\n\n\n### pip (or poetry, etc)\n\n```shell\n$ pip install runway\n$ runway new\n# OR\n$ poetry add --dev runway\n$ poetry run runway new\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/page/quickstart/index.html)\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Simplify infrastructure/app testing/deployment",
"version": "2.6.14",
"project_urls": {
"Bug Tracker": "https://github.com/onicagroup/runway/issues",
"Documentation": "https://docs.onica.com/projects/runway",
"Homepage": "https://github.com/onicagroup/runway",
"Repository": "https://github.com/onicagroup/runway"
},
"split_keywords": [
"cli"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1d01f1b41824e39f0e3ee5a4f51084f6e89f445d62e3b4579a6f332614c1f600",
"md5": "61b9f8542907ab1b9e913af59df3b29b",
"sha256": "f5f032cfe4b4f9ce865f3f52f1b5c58a106799be8e963dd1adfd118749c146de"
},
"downloads": -1,
"filename": "runway-2.6.14-py3-none-any.whl",
"has_sig": false,
"md5_digest": "61b9f8542907ab1b9e913af59df3b29b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<3.13",
"size": 781345,
"upload_time": "2024-03-11T21:38:07",
"upload_time_iso_8601": "2024-03-11T21:38:07.370016Z",
"url": "https://files.pythonhosted.org/packages/1d/01/f1b41824e39f0e3ee5a4f51084f6e89f445d62e3b4579a6f332614c1f600/runway-2.6.14-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "43c87f1c84babc87e79b38ed477969677a3ffc25867d5f7d8fed22f669bf8cb5",
"md5": "5fffd141bdbb0a4b487dc8ad27f8d9b8",
"sha256": "3c9e6ec462ea4b18de69f929bd38c3b9e7ccb4e9ba0312656cdfec6093915503"
},
"downloads": -1,
"filename": "runway-2.6.14.tar.gz",
"has_sig": false,
"md5_digest": "5fffd141bdbb0a4b487dc8ad27f8d9b8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<3.13",
"size": 583467,
"upload_time": "2024-03-11T21:38:11",
"upload_time_iso_8601": "2024-03-11T21:38:11.060616Z",
"url": "https://files.pythonhosted.org/packages/43/c8/7f1c84babc87e79b38ed477969677a3ffc25867d5f7d8fed22f669bf8cb5/runway-2.6.14.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-11 21:38:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "onicagroup",
"github_project": "runway",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "runway"
}