code command

code is finks CodeDeploy tool.

Usage

To see available commands, call this:

Usage:
        code bundle [-v]
        code deploy [-v]
        code version

-h --help           show this
-v --verbose        show debug messages

deploy

bundles your code then uploads it to S3 as a new revision and triggers a new deployment

version

will print the version of fink you are using

Folder Layout

codedeploy -> folder containing your deployment bundle

codedeploy_env.conf -> settings for your code

"codedeploy": {
    "applicationName": "mep-dev-cms-stack2-mediaExchangeCms-F5PZ6BM2TI8",
    "deploymentGroupName": "mep-dev-cms-stack2-mediaExchangeCmsDg-1S2MHZ0NEB5MN",
    "deploymentConfigName": "CodeDeployDefaultemplate.AllAtOnce01",
    "artifactsBucket": "7finity-portal-dev-deployment"
}

code configuration

add stack_output.yml to your code bundle

If you need a convenient way of using the stack output during codedeploy on your instance then you can use this feature.

code adds a stack_output.yml to the bundle artifact if you add the following configuration:

{
    'stack_output': 'lookup:stack:<your_stack_name>'
    ...
}

Adding a settings.json file

code supports a settings section. If it is used a settings.json file is added to the zip bundle containing the values. You can specify the settings within the code section.

    ...
    "settings": {
        "MYVALUE": "FOO"
    }

You can use lookups like for the rest of the configuration. Note that the values are looked up BEFORE the the instance is deployed via codedeploy. If values change during the instance lifecycle it does not recognise the changes. For values that must be updated you should lookup the values in your code using for example credstash.

    ...
    "settings": {
        "accountId": "lookup:stack:infra-dev:AWSAccountId"
    }

Configure log group

In case code deploy fails we attempt to provide the log output from the ec2 instance to ease your troubleshooting. The default log group is ‘/var/log/messages’. In case your ec2 instances are configured to log into another log group you can provide the necessary log group configuration to code like this:

"code": {
    ...
    "deployment": {
        "LogGroup": "/my/loggroup"
    }
}

Note: as a convention each ec2 instances has its own log stream with using the instanceId as name of the stream.

Setting the ENV variable

You you need to set an environment variable “ENV” which indicates the account/staging area you want to work with. This parameter tells the tools which config file to use. For example if you want to set the environment variable ENV to ‘DEV’ you can do that as follows:

export ENV=DEV

Signal handling

code receives a SIGINT or SIGTERM signal during a deployment stop_deployment is called for the running deployment with autoRollbackEnabled.