This repository contains scripts and configuration templates for deployment of Hypothesis applications to AWS Elastic Beanstalk (EB).
The repository is designed to act as the SCM source for a Jenkins job which is responsible for:
- deploying our applications to a named environment (
qa
orprod
) - applying updates to the environment configuration
As such, the main entrypoint for the repository is the
Jenkinsfile
, which defines how the Jenkins job runs.
The script which orchestrates the deployments is bin/jenkins
,
which in turn calls a number of other helper scripts which live in the bin/
directory:
Name | Description |
---|---|
eb-deploy |
Triggers a deployment of a specific application version to a specific environment in EB. |
eb-env-create |
Create an EB environment from scratch based on a YAML configuration file. |
eb-env-exists |
Check if an EB environment exists. |
eb-env-sync |
Trigger an environment update to synchronise configuration with the YAML configuration file. |
eb-env-version |
Report the deployed application version label in a specific environment. |
eb-env-wait |
Wait for an EB environment to return to the Ready state while tailing the event log. |
eb-manifest-platform |
Extract the the "Platform ARN" from a YAML environment configuration file. |
eb-manifest-settings |
Extract "option settings" from a YAML environment configuration file in a format suitable for the AWS CLI. |
eb-release |
Create a new application version in Elastic Beanstalk based on a specific Docker tag. |
eb-task-run |
Run a command inside the Docker container of a running EB instance and tail the output. |
eb-task-wait |
Wait for an AWS SSM Run Command invocation to finish and print the log output. |
Some of these scripts rely on application-specific configuration files which
live in a directory with the same name as the application. For example, the EB
environments for the bouncer
application are defined in
bouncer/env-qa.yml
and
bouncer/env-prod.yml
All code contained in this repository is released under the 2-Clause BSD
License, sometimes referred to
as the "Simplified BSD License" or the "FreeBSD License". A copy of the license
text can be found in the included LICENSE
file.