.
├── attini-config.yaml
├── deployment-plan.yaml
├── database.yaml
└── sam-app
├── template.yaml
├── hello_world/...
└── tests/...
An Attini Distribution is the source of all Attini Deployments, it includes your code, config, web content etc.
The Attini Distribution should be considered an immutable package that you build/packade once, then deploy multiple times into different enviroments.
The Distribution always includes a attini-config.yaml which contins 3 things.
Name, id, version and tags so that we can keep track of the distribution.
Build commands, build image configuration etc. which enables lightweight CI capabilities.
Instructions for the Attini Framework on how to create the Attini Deployment Plan.
AppDeploymentPlan:
Type: Attini::Deploy::DeploymentPlan
Properties:
DeploymentPlan:
- Name: Database
Type: AttiniCfn
Properties:
StackName: !Sub ${Env}-database
Template: database.yaml
- Name: API
Type: AttiniSam
Properties:
StackName: !Sub ${Env}-api-app
Project:
Path: /api-app
Parameters:
DatabaseARN.$:
$.output.Database.DatabaseARN
Attini Deployment Plan is a serverless pipeline that executes your deployment. It can orchestrate any technology and requires no maintenance, so you can use it to manage your legacy or to adopt new tooling.
The first time you deploy the Attini Distribution, the Attini Framework will create the Deployment Plan within your AWS Account, dedicated to this distribution and environment. This differs from other CI/CD tools where the deployment is executed from outside the application environment and the pipelines are often shared between them.
Next time you deploy the Distribution, Attini will update the Deployment Plan only if its definition has changed. This makes the Attini Deployment Plans easy to maintain at scale while allowing you to re-deploy quickly.
The Attini Deployment Plan Types makes it easy to do normal deployment tasks like deploying CloudFormation / AWS SAM apps, running scripts, requiring manual approvals and more.
The Deployment Plan is built on top of AWS StepFunctions and fully supports all its features such as parallel executions, choices, re-tries and all its AWS Service integrations.
> attini deploy run hello-world.zip -e prod
Current state for hello-world in prod:
DistributionId: ee022740aa0ee
Version: 1.0.0
DistributionTags:
Owner: Carl
Distribution being deployed:
DistributionId: fc380c67fc59c
Version: 1.0.1
DistributionTags:
Owner: Carl
You're about to deploy hello-world into prod.
Continue? (Y/N)
An Attini Environment is a required logical target for all Attini deployments.
Attini Environments can be of 2 different types: production
or test
.
When you deploy to production environments, you always get a confirmation prompt showing you what you
are going to deploy. In test environments, the deployment runs directly.
This is designed to speed up development while preventing mistakes.