I’ve installed Drone server and an agent in a multicontainer AWS Elastic Beanstalk environment.
I can login to Drone. I can connect it to my repository. I can configure the repository and add secrets to the repository with the Drone CLI. So it appears that all is well with Drone.
I’ve created a test PHP source bundle for a simple Hello world application for Beanstalk. I can deploy it to Beanstalk manually using the Beanstalk CLI as well as the AWS console. It’s just a single index.html file and it deploys and runs fine.
I create a drone.yml file for the AWS Elastic Beanstalk plugin from the market place and add it to the repo that holds the index.html file. It looks like this:
description: Deployed with DroneCI
secrets: [aws_access_key_id, aws_secret_access_key]
When I push to the repo the Drone build runs. I know the AWS keys are pulled from Drone secrets and they work because if I enter them wrong I get an error. I know the build can read the Beanstalk source bundle from the AWS S3 bucket because if I enter a incorrect bucket key the build fails. The AWS keys I’m using are for an IAM roll with Administrative rights so the AWS Access key and secret should have sufficient power to deploy the application. It can stand up the application manually from the console no problem.
The build runs all successful when I view the build in Drone. The plugin DOES create the Beanstalk Application. It shows up in the console. The build DOES seem to deploy the source bundle meaning that if I choose “View application versions” the source bundle is there and intact.
However it does not create the Beanstalk Environment. No instances. No load balancer. No EC2 or ECS resources are ever actually deployed. Drone seems to think the build was successful and the plugin did do something, it create thes Beanstalk Application and delivers the source bundle but it doesn’t actually ever create the Environment.