Quality time w/CodeCommit
So instead of writing my inaugural post on my “inaugural post”; writing about everything I may choose to talk about in the future. I decided that it be best to just jump in and start picking topics at random. Today’s spin wheel of fun landed on AWS’ answer to private repositories, CodeCommit.
Recently I have been working towards my professional AWS certification. However, with everything, theory is never enough and sometimes you need to just jump into the mud with the pigs and figure out what the fun is all about, or something like that…
So for the uninitiated, CodeCommit as defined by Amazon:
“AWS CodeCommit is a fully-managed source control service that makes it easy for companies to host secure and highly scalable private Git repositories.”
Fair enough; but Amazon, what makes you so unique from Github, Bitbucket, or even Gitlabs? I ask … Well it turns out as you write this, the uniqueness in my lack of features, answers Amazon …
Now depending on your requirements and what you are looking for in a DVCS interface, the mass lack of bells and whistles could be viewed as a positive, like a essentialist approach to version control interfaces, maybe?
Logging in gets you simple dashboard, sporting a list of your repos and its associated meta data.
You get a standard “Create New” button, some filtering options, and a sidebar help section. This is a stark contrast with the likes of Github or even Bitbucket.
The details view offers a even simpler read, given only a small subset of base links for simple operations you can invoke on your stored code. Settings lets you view and update the basic meta of your repository, limiting your choices to name, description, default branch, and deletion.
Triggers allow you to hook into certain lifecycle events on a branch, be it code pushes, cloning, and deletion to name a few. That’s it, simple, focused and to the point.
The UNIX philosophy?
“Do one thing, and do it well” or is this simply a case of “one more thing…”; Right now CodeCommit seems bare, offering little to no reason for spending the time to even consider the platform given its competitor’s feature sets or is this really just a “Steve Jobs” waiting to reveal more?
From what I learned, it’s definitely the latter; let me explain …
CodeCommit like all of AWS PAAS are designed in some way to work together to overcome each services deficiency. With feature sets being decoupled in this nature, CodeCommit gains an advantage that other platforms don’t have.
Don’t show, tell… I mean… you know what I mean
So let me throw out some examples; Basic authentication and authorization is handled by AWS IAM. This allows you to set you user details, access keys, and even upload you pubkey for ssh access.
Continuous integration and deployment are handled by CodePipeline and CodeDeploy, respectfully. Allowing you to automate a lot of your process within one platform. What!? only three you say…Not at all by any means a exhaust list of the “plug-in” services that maybe available, but you get the idea.
With all of that said, there are still some missing “out of the box” features that many may come to expect. Like other services, CodeCommit is only really a interface for Git; giving you the full power of your GUI or command-line in a cloud based format. However, social features like issues, forking, pull request, and wiki’s are missing. Even as a private repo platform, these features can be useful in a team environment, and although they are missing now, they may be added later.
The wrap up
This is not a extensive review on what CodeCommit is, nor the most exciting I am sure. It was just good to get a look at one of the many services that AWS offers you for getting work done and deployed.
I am currently using this as a “release” repo, per se; Since all of my new applications will be hosted as either a AWS Lambda function or running on a EC2 instance. I figured adding a second remote origin to commit to, attaching a trigger kicking off the deploy process was a good process to have.
It’s worth noting that CodeCommit as well as the other two services are free or low cost and you are only charged for the compute resource you may use, be it EC2 or Lambda. So if you are already on using bare AWS, why not give it a try.