This is a guest post written by Nick Janetakis. It originally appeared on his blog, and has been published here with his permission. Nick is a self-taught full-stack developer and teacher, and has created a course for Docker beginners called Dive into Docker.
Testing is a critical piece of any CI/CD pipeline. Most teams do pretty well with application level testing, and there are plenty of frameworks (JUnit, RSpec, etc.) to support it. But server-level testing–the validation of server configuration and services–is, too often, omitted. In this blog post, we’ll explore an approach to execute tests against our custom Docker images as part of a CircleCI pipeline using Goss.
This is a guest post written by Vicenç García-Altés. It originally appeared on his blog, and has been re-published here with his permission. We hope you enjoy it!
Starting with AWS Lambda is really easy. You can even write a function in the browser! But that’s not how you should work on a daily basis. You must have a CI/CD pipeline set up, you probably have two accounts (one for production and another one for development), you need a repeatable and reliable way to create your infrastructure and so on. In this article I’ll show you how to create a simple continuous delivery pipeline that brings us closer to a professional application development.
I’ve been using CircleCI version 1.0 to build, test and upload Scala application packages to S3 for over 2 years. The CircleCI 1.0 template for the Scala apps are easy to understand and implement quickly which was a huge benefit over the older CI/CD solutions I was using. In July 2017, CircleCI 2.0 was released.
CircleCI 2.0 features dramatically reduced build times and gives users more flexibility regarding the build environments than 1.0. Having said all this, there is a cost in upgrading, in that you need to migrate your 1.0 configuration file to the new 2.0 schema.
In this post I’ll walk you through how I migrated a Scala application from 1.0 to 2.0. Below is my CircleCI 1.0 yaml file for a Scala-based app named
samplescala. The source code for the
samplescalaapp can be found in this github repo.
When developing software solo, you don’t have to spend time communicating your decisions to anyone, and you’re likely to format your code today the way you formatted it yesterday. However, when working in a shared codebase, it becomes much more important to create and follow standards of behavior. Having a shared understanding of “the way we do things” ultimately saves time by eliminating unnecessary back-and-forth, confusing code reviews, and having to re-do PRs on incorrect branches.
However, new rules and standards can be difficult to adopt. CircleCI can help by automating the process and creating built-in alerts when standards are violated. Read on for three ways CircleCI can help you enforce build standards on your team.
The umbrella term “DevOps” has grown so much over the last few years that the word now strains to mean the same thing for all people. This is less a semantic issue and more a reflection of the growing scope of software delivery automation. At the helm of this growth are the operators who manage the tooling and practices that enable today’s software delivery methods. Their role has morphed and grown immensely, even over just the last two years that CircleCI has been running behind their firewalls. These operators’ responsibilities are myriad: they are responsible for keeping the tool chains that developers use every day humming along while answering to the business for security, cost control, and compliance. Behind the scenes, they are keeping inevitable technical fires at bay while facing increasing pressure from senior management to deliver on Digital Transformation.
This is a guest post written by Armando Canals, co-founder at packagecloud.
This post will cover the necessary steps to implement a continuous deployment pipeline for NodeJS projects using CircleCI 2.0.
We’ll go over setting up a project using the new CircleCI 2.0 configuration, running tests in CircleCI, and deploying packages to the official npm registry when a tagged commit is pushed to a git repository.
This article was originally posted on Forestry.io’s blog. Forestry.io is a Git-backed CMS (content management system) providing editors and other non-technical users with a custom UI for websites and web products built using static site generators.
Tools like Hugo, Jekyll, and Gatsby have made building static sites a popular and practical choice for developers. One major disadvantage these tools have, however, is the need to regenerate and redeploy their files every time there is new content to publish.
Automating this process will go a long way toward making your static site feel like a dynamic CMS. It will also save you time and improve the reliability of your deployments, as the exact same steps will run every time you deploy. For this reason, automated deployment is a cornerstone of modern web development.
Our favorite deployment tool is CircleCI, we’re using it at Forestry.io every day to deploy our Hugo site. For our tutorial today we’ll be using CircleCI to deploy a Hugo site but you can use CircleCI for any static site that needs automated deployment.
The benefits of continuous delivery are well-documented elsewhere. In this post I want to share some of the practices that we use at CircleCI to ensure that our services can safely be deployed continuously.
Our stack is composed of services deployed on Kubernetes. Each service is largely contained in its own git repository and deployed independently of other services. When we deploy a new version of a service, the new code is rolled out pod by pod, by Kubernetes. This means that at any one time, there can be more than one version of the code in production at once.
What follows is a list of practices that we find work well for us as team.
- Prevent Broken Code From Being Deployed
- Know When Code Is Being Deployed
- Ensure Messages Are Delivered
Since the beginning of 2018, we have had over a thousand candidates pass through the engineering hiring process. Our engineering interview consists of four stages following an initial screen. We broke down the percentages of candidates that pass through each stage of our hiring process, and it looks like this.
Out of any group of 1000 applicants:
250 will pass the initial screen.
117 will pass the hiring manager phone screen.
44 will pass the micro-skills assessment portion of the interview.
7 will pass the macro-skills assessment.
Fewer than 3 will pass the on-site interview and receive offers.
Following our Series C, we’ve ramped up our hiring further, building on what we’ve learned so far. We’ve been talking a lot internally lately about how we interview, and thought folks might be interested in what our interview process looks like for engineering roles, and why.