AWS Code Habits
A library with Make targets, Ansible playbooks, Jinja templates (and more) designed to boost common software development tasks and enhance governance.
![]() |
---|
Installing AWS Code Habits |
Table of Contents
Getting Started
You can adopt AWS Code Habits in two ways:
1. Remote (using Git Submodules)
On a terminal, on your project root directory, execute the following on Ubuntu:
curl -sL https://raw.githubusercontent.com/awslabs/aws-code-habits/main/scripts/remote/init.sh | bash
2. Standalone (without Git Submodules)
On a terminal, on your project root directory, execute the following on Ubuntu:
curl -sL https://raw.githubusercontent.com/awslabs/aws-code-habits/main/scripts/standalone/init.sh | bash
Prerequisites
A list of things you need, or how to install them.
At this stage, we are only supporting Linux (Ubuntu) environments (which can be obtained via WSL (Windows) or DevContainers (Mac/Linux/Windows))
- Ubuntu - Ubuntu is a Linux distribution based on Debian and composed mostly of free and open-source software.
- Python 3 - Whether you're new to programming or an experienced developer, it's easy to learn and use Python.
- Python Virtual Environment - A virtual environment is created on top of an existing Python installation, known as the virtual environment’s “base” Python, and may optionally be isolated from the packages in the base environment, so only those explicitly installed in the virtual environment are available.
- Ansible - Ansible is an open source community project sponsored by Red Hat, it's the simplest way to automate IT.
- Jinja2 - Ansible uses Jinja2 templating to enable dynamic expressions and access to variables and facts.
Usage
make [tab][tab]
make help
For more information about each Make targets available.
How-Tos
Below you can learn
How to import environment variables
Create a .env
file, example:
echo 'ENVIRONMENT=dev' > dev.env
Now include dev.env
into your Makefile, for example:
export WORKSPACE=$(shell pwd)
export HABITS = $(WORKSPACE)/habits
include $(WORKSPACE)/tools.env # pin the version of your tools
include $(WORKSPACE)/dev.env # don't store secrets in git
include $(WORKSPACE)/dev.secrets.env # remember to add *.secrets.env to .gitignore
include $(HABITS)/lib/make/Makefile
include $(HABITS)/lib/make/*/Makefile
How to initialize pre-commit config
make pre-commit/init
To run all pre-commit
rules in all files, simply run:
make pre-commit/run
How to maintain documentation
- First initialize all documentation files:
make doc/init
This will create a folder named doc/
in the root directory of your project and create a file named habits.yaml
inside of it.
- Modify the contents of
doc/habits.yaml
accordingly and execute:
make doc/build
README.md
will be rendered.
How to expand Habits commands
You can use Habits to meet your needs, in your Makefile
you can add the following to ensure code and documentation hygiene:
.PHONY: hygiene
hygiene: doc/build pre-commit/run
Another example, if you want to perform several tasks with AWS CloudFormation
:
.PHONY: hygiene
hygiene: aws/cloudformation/hygiene
.PHONY: plan
plan: aws/cloudformation/create-change-set
.PHONY: discard
discard: aws/cloudformation/delete-change-set
.PHONY: apply
apply: aws/cloudformation/execute-change-set
Testing
To perform habits checks:
make habits/check
References
-
GNU Make - GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files.
-
Windows Subsystem for Linux (Ubuntu) - WSL enables you to use Linux tools, like Bash or Grep, completely integrated with Windows tools, like PowerShell or Visual Studio Code, with no need to dual-boot.
-
Visual Studio Code - Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.
-
VSCode Remote Development Extension Pack - An extension pack that lets you open any folder in a container, on a remote machine, or in WSL and take advantage of VS Code's full feature set.
-
Git Submodules - Submodules allow you to keep a Git repository as a subdirectory of another Git repository.
-
Docker - The fastest way to containerize applications
-
Visual Studio Code - Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.
-
Visual Studio DevContainers - The Visual Studio Code Dev Containers extension lets you use a Docker container as a full-featured development environment.
-
VSCode Remote Development Extension Pack - An extension pack that lets you open any folder in a container, on a remote machine, or in WSL and take advantage of VS Code's full feature set.
-
AWS Code Habits - A library with Make targets, Ansible playbooks, Jinja templates (and more) designed to boost common software development tasks and enhance governance.
License
This project is licensed under the MIT-0 License. See the LICENSE file.
Copyright
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.