To be honest, I wasn’t sure what to think when CodeStar was announced this year at the AWS Summit in San Francisco. It reminded me of Cloud9, which AWS purchased in July 2016, and I was sure CodeStar was going to be an online editor that would tie in with the AWS ecosystem.
But that doesn’t seem to be the case. CodeStar is actually an effort at centralized project management and all that is required for team management, security, continuous integration and continuous delivery. At first glance, it looks like a DevOps nerd’s dream, so I decided to take a quick pass at it, which I’ll share here.
Setting up a project
When setting up a new project with CodeStar, you’re immediately presented with many different options. You get to choose from different languages like Ruby, Java, Node, Python and PHP, as well as frameworks such as Express (Node), Slim (PHP), Flask (Python) and Laraval (PHP). You then choose what you want to build.
This can be something like a static website, web application, Alexa skill or maybe a web service. Finally, you choose from AWS Elastic Beanstalk, Amazon EC2 or AWS Lambda as your final architecture. In this example, I chose a Node.js application targeted for Lambda.
After choosing your project type, pick your connectivity type. I chose “Command Line Tools”. Once you’ve made your choice, you’re then given a set of instructions on how to set up and configure your GIT client to connect with the private AWS CodeCommit repo that has been created for your project.
One thing I appreciate here is that CodeStar automatically handles the permission settings required in IAM to allow my user to connect to the repo. Having manually configured this before, I found it a bit confusing. Here, AWS provides clear instructions on client-side configuration and then handles the AWS side for you. Thank you AWS!
That’s it! Once you have finished the configuration of your chosen client and hit the “skip” button, you’re then taken to your own project dashboard.
From the dashboard, you can see several links which take you to services CodeStar has pre-configured. Code, as mentioned in the setup, is the CodeCommit repo where your code will be stored. The Build link takes you directly to your build project where you can check the status of individual builds. The Pipeline link takes you to the CodePipeline dashboard where your full continuous integration and continuous deployment process has been configured and is already watching for code changes.
In addition to the preconfigured services, you also have links to manage your development team and add extensions. Currently, the only extension available is Jira from Atlassian. At the time of this writing, Atlassian was giving away free five-user licenses in connection to CodeStar, see here for more details on that.
On the dashboard itself, you will find monitoring windows into the various services that have been configured for your CodeStar project. From a simple markdown wiki, to GIT commit activity and CICD status, the dashboard provides a quick view into the status of your project and the work that is being done there. The dashboard is also configurable to fit your priority needs.
I often look to AWS native tools when I’m working with customers to create a functioning CICD. We use CodePipeline for orchestration, CodeBuild for build and test and CodeDeploy or CloudFormation for release. However, we generally steer them towards GitHub over CodeCommit because of the project management and peer review tools that are tied to GitHub.
I think CodeStar is a good step towards encouraging companies to adopt a fully native AWS development pipeline. With the dashboard and the Atlassian issue tracking availability, project management becomes completely centralized to the AWS dashboard. Additionally, the automation of a CICD with very little effort provides a shortened ramp-up time that is very attractive.
My only lingering wish is for AWS to provide a good peer review process into CodeCommit with an integration into CodeStar. However, at the AWS rate of innovation, I’m sure I won’t have to wait long.