A wise buildmaster once said, “You never let a junior engineer manage the build. If the build goes down, the company goes out of business.” It’s so true. A buildmaster has to know many things and have a lot of experience with different tools and technologies to keep the build running smoothly.
The buildmaster must continually manage and improve the system as new features are introduced, and legacy ones are removed. For this reason, we are seeking a dedicated engineer to run and manage everything to do with the build, tests, packaging, and deployment of our flagship product — the Curity Identity Server.
We write code primarily in Java, Kotlin, and Groovy. This means we’re a “Java shop,” but we develop parts of the product in an increasing number of other languages (e.g., rust, TypeScript, Swift, etc.). This combo means that we have builds and test systems using an array of tools. For instance, we use Fastlane with real iOS devices, Android SDK to test real Android and emulated hardware, Protractor and Cypress to test Web apps, Mocha to test JSON schema conformance in APIs, and more. Primarily though, we use Gradle as our build tool; usually, the others are driven by Gradle, so knowing this really well is essential. This, in turn, means that you’ll need to know Groovy.
We bring together all these tools in a sophisticated Jenkins build, which will be a big part of your job. That system is using the latest version of Jenkins and runs parts of the build in parallel. We have 10’s of thousands of tests, so devs can’t wait a long time for feedback. To avoid this, Jenkins runs Docker Swarm to fanout testing across a bunch of different containers. The results are brought together to produce a report and other artifacts in less than half an hour. Scheduled jobs run every night, testing various database configurations, standardized tests, and other scenarios. Jenkins is always running hot, so zero downtime of this critical system is a must.
To ship high-quality software, we use other tools and systems as well. These scan open source dependencies, check for known vulnerabilities, and other such things. When issues are found, it is important to fix quickly, in order to avoid impeding the team’s work. How this is done varies and can sometimes require help from the product development team; other times though, it might mean adding an exception to silence a false alarm. Either way, it will mean that you must be on your toes.
Another primary tool that we use is git. Git is an easy tool to learn the basics of but a hard one to master. There is so much that this tool can do that people never learn. As a result, they often work harder than they have to because they aren’t able to use git to its full potential. This is your chance to share your git ninjitsu with a receptive and eager team. When someone gets stuck on a challenging 3-way merge, you’ll swoop in and octopus it like a pro.
Our builds are performed on some beefy servers that we maintain ourselves. This means that you’ll have to upgrade and maintain these from time to time. This may involve running cables or swapping out RAM. If hardware stuff isn’t your cup of tea and the servers go down, the build will be offline. So, being able to hack hardware will be important, even if you won’t be fiddling with it every day.
At Curity, we are devoted to quality and craftsmanship. We are driven by a mission and a desire to work with a team of like-minded professionals. If, after reading all of this, it sounds like a fun place to work and a cool job, please apply to the right. The process is front-heavy, so be prepared. If you get by the first few gates, it’ll be easy and welcoming by the end.
- Master of Jenkins
- Expert in Gradle
- In-depth knowledge of the Groovy programming language
- Git ninja
- Ability to update and improve our existing build system
- Adept with Linux and Mac
- Uncomfortable in GUIs and primary a CLI wonk
- Aware and familiar with
- Docker, Docker Swarm, and K8S
- Various test systems like Fastlane, Selenium, Cyprus, etc.
- Hardware maintenance (e.g., servers, UPS, networking)