spinnaker-plugins / aws-lambda-deployment-plugin-spinnaker

Spinnaker plugin to support deployment of AWS Lambda functions via Spinnaker pipelines
Apache License 2.0
23 stars 22 forks source link

Spinnaker Plugin for AWS Lambda Deployment

This plugin provides support for AWS Lambda Deployment via Pipelines in Spinnaker. This repository is in transition from its current distribution as a plugin into to the core Spinnaker project. Updates will be less frequent until the migration is complete and feature parity is achieved in future Spinnaker releases.

Version Compatibility

Plugin Spinnaker Platform
1.0.11 >= 1.29.x
1.2.0 >= 1.30.x
1.2.0 <= 1.32.x

This plugin is currently only compatible with Spinnaker platform 1.28.x and up.

Major changes

Requirements

  1. This plugin requires Java 11
  2. AWS Lambda functions must be enabled in your spinnaker environment and for all required AWS accounts. Find more information here or within samples.

Plugin Deployment Guide

  1. Add the following to the Halyard config (typically found at ~/.hal/config) to load the Orca backend

    spinnaker:
    extensibility:
      plugins:
        Aws.LambdaDeploymentPlugin:
          enabled: true
          version: <<VERSION_NUMBER>> 
          extensions:
            Aws.LambdaDeploymentStage:
              enabled: true
      repositories:
        awsLambdaDeploymentPluginRepo:
          id: awsLambdaDeploymentPluginRepo
          url: https://raw.githubusercontent.com/spinnaker-plugins/aws-lambda-deployment-plugin-spinnaker/master/plugins.json
    
    # you can also optionally configure cache refresh retries and timeouts.  Several settings are for 
    # overall service communication timeouts should be set globally.   
    # https://github.com/spinnaker/kork/blob/master/kork-web/src/main/groovy/com/netflix/spinnaker/okhttp/OkHttpClientConfigurationProperties.groovy#L29-L32
    lambdaPluginConfig:
    cacheRefreshRetryWaitTime: 15 # defaults to 15 sec
    cacheOnDemandRetryWaitTime: 15 # defaults to 15 sec
    cloudDriverPostRequestRetries: 5 # defaults to 5.  Disable if you don't want duplicates.
    cloudDriverRetrieveNewPublishedLambdaWaitSeconds: 40 # defaults to 40 sec
    cloudDriverRetrieveMaxValidateWeightsTimeSeconds: 240 # defaults to 240 sec
  2. Add the following to gate-local.yml in the necessary profile to load the Deck frontend
    spinnaker:
    extensibility:
    deck-proxy:
      enabled: true
      plugins:
        Aws.LambdaDeploymentPlugin:
          enabled: true
          version: <<VERSION NUMBER>>
    repositories:
      awsLambdaDeploymentPluginRepo:
        url: https://raw.githubusercontent.com/spinnaker-plugins/aws-lambda-deployment-plugin-spinnaker/master/plugins.json
  3. Execute hal deploy apply to deploy the changes.
  4. You should now be able to see 3 new stages provided by this plugin in the Deck UI when adding a new stage to your pipeline.

Plugin User Guide

See the plugin user guide here

Plugin TroubleShooting Guide

See the plugin user guide for troubleshooting instructions here

Plugin Developer Guide

See the plugin developers guide here

Releasing New Versions

git tag 1.2.3
git push --tag

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.