System Admin Guide to Continuous Integration

Continuous integration, continuous delivery, and continuous deployment (CI/CD) have existed in the developer community for decades. Some organizations have involved their operations counterparts, but many haven’t. For most organizations, it’s imperative for their operations teams to become just as familiar with CI/CD tools and practices.

Continuous Integration is a coding practice that essentially enables the development team to make and implement small changes in the code and version control methods quite frequently.

CI allows developers to continuously update changes to a single repository, from where automated builds and tests are made.

Usually, traditional system admins roles do not involve developing continuous integration pipelines, but if you are looking to dive into DevOps, getting hands-on experience with continuous integration tools is a must. Because most modern applications require developing code in different platforms and tools, the team needs a mechanism to integrate and validate its changes. The technical goal of CI is to establish a consistent and automated way to build, package, and test applications. With consistency in the integration process in place, teams are more likely to commit code changes more frequently, which leads to better collaboration and software quality.

Why use Continuous Integration?

  • Reduction of integration links: All projects employ more than one person to develop and it greatly increases the risk of errors during integration. Depending on the complexity of the code, it is possible that a lot of changes would have to be made. Here comes CI to the rescue and helps alleviate the issues as it allows for regular integration.
  • Higher quality of code: As the risks drastically reduce, a lot of the time and manpower can be diverted to creating a much more functionality-oriented code.
  • Code in version control works: Committing something that breaks the build immediately triggers a notification thereby preventing anyone from pulling a broken code.
  • Ease of testers: Retaining the different versions and builds of the code eases the work of QAs to understand, locate, and trace bugs efficiently.
  • Decreased deployment time: Automating the process of deployment eases and frees up a lot of time and manpower.
  • Increased confidence: The absence of a possible failure or breakdown gives developers peace of mind and thereby helps in delivering greater productivity and higher quality products.

As you learn more about these tools and start bringing these practices into your company or your operations division, you’ll quickly understand the need and importance of CI tools. You will increase your own productivity as well as that of others. With the growing number of available CI / CD tools on the market, teams may find it difficult to make decisions to select the right tools. Let’s get into the tools a bit more. We’ll briefly cover some highly-rated tools and share links to more information.

Jenkins

Jenkins is an automation tool written in Java with built-in plugins for continuous integration tasks. It is used to continuously build and test projects making it easier to integrate the changing codes to it.

Jenkins allows for faster delivery of software by working with a large number of deployment and testing technologies. It also accelerates the development phase via the automation of tasks. It is primarily a server-based app and requires a web server like Tomcat.

It allows a lot of flexibility and additional plugins that provide extra features, quite often not possible to find elsewhere unless you want to spend time on providing that by yourself. One of the key features is pipelines that allow you to easily chain different jobs even across different repositories/projects.

Circle CI

CircleCI is a strong SaaS-based CI product that enables testing in the cloud. The YAML-based configuration system allows individual developers to test CI/CD changes and push changes effectively and quickly. The variety of different platforms that are supported allows multiple people to centralize on a single solution to avoid spread to other products. CircleCI is the world’s largest shared continuous integration and continuous delivery (CI/CD) platform, and the central hub where code moves from idea to delivery. As one of the most-used DevOps tools that process more than 1 million builds a day, CircleCI has unique access to data on how engineering teams work, and how their code runs. Companies like Spotify, Coinbase, Stitch Fix, and BuzzFeed use us to improve engineering team productivity, release better products, and get to market faster.

Automated builds! This is really why you get CircleCI, to automate the build process. This makes building your application far more reliable and repeatable. It can also run tests and verify your application is working as expected.

Straightforward CI tooling. No need to spin up a CI server like Jenkins/ TeamCity to get things moving.

Bamboo

Bamboo provides the facility of automatic build generation. Using Bamboo a lot of time and manual efforts can be saved. Bamboo is very easy to use and has a simple user interface. Bamboo provides the facility of continuous integration and continuous deployment. So whenever any change is there in the bitbucket it automatically gets integrated with the previous code and generates the build. Bamboo provides the feature of running the automation test case on the build which saves a lot of time. Bamboo provides various options for configuration management. One can easily configure multiple branches, write a script, and can execute it. Bamboo provides various agents for building the build. The bamboo support community is always ready to help.

  • Versatility. I can use bamboo to manage my Java, node, or .NET build plans. I can use it to spin up Windows or Linux build agents, or install it on a Mac to build there as well.
  • Bamboo integrates with other Atlassian products like Bitbucket, Stash, JIRA, etc. If a company commits to the entire Atlassian stack then work can be tracked through the whole development lifecycle which is really useful.
  • Continuous Integration – Bamboo kicks off builds with each check in to our source control system, enabling faster consumption of changes, and quicker turnaround times when we encounter a problem.
  • Extensibility – Bamboo is capable of triggering multiple additional processes on completion of a build, including integration tests, deployment tests, and the like. This extensibility took us from a scheduled based system to a trigger-based system with little time waste.
  • Suite Integration – Bamboo’s easy integration with the rest of the Atlassian suite makes for huge efficiency gains. Being able to see which check-in triggered the build, as well as seeing what JIRA issues went into that check-in makes for complete traceability.

TeamCity

TeamCity is the go-to tool for getting the Builds and Deployments packages for a variety of platforms like .NET, Java and JS, etc. It unifies the build and deployments needs of all the diverse projects to a single platform and solves the build and release issues previously we faced and reduces the time to go to Prod. TeamCity will make sure your software gets built, tested, and deployed, and you get notified about that appropriately, in any way you choose. It’s a continuous integration and deployment server from JetBrains which takes moments to set up, shows your build results on-the-fly, and works out of the box. And best of all – it’s free by default.

Once set up and configured, it’s incredibly easy to test and release a piece of code, and diagnose problems across multiple teams using the online platform. Highly customizable, such as which outputs to test, what to save, and on which machines the tests should be run. Non-regression tests can also be run locally when developing them, to ensure they meet your requirements for robustness, before executing them remotely.

GitLab

Gitlab is well suited for any project that requires revision tracking along with collaboration with other contributors. It supports the standard features of Git and adds its own recipe to the features that other Git SaaS providers offer as well. This includes issue tracking, pull request management, and recent artifact and package management. Gitlab has also been a leader in bringing CI to the repo ahead of its competitors. Of course, not all of these features need to be used. If all a dev needs are to track code, Gitlab can handle that just as well as any other cloud or self-hosted repo.

  • Pipelines: Gitlab Pipelines is an excellent way to get started with pipelines easily and without much overhead. And with it being all encapsulated within Gitlab itself, it makes integrating your code into that pipeline even easier. Just a little bit of code and VOILA. You have at least a minimum viable pipeline.
  • VCS: Gitlab is, of course, a great version control system.
  • Usability: Gitlab has really put a significant amount of focus on usability. They’ve drilled down and ensured that the way companies and individuals need to use the tool, they can.
  • Groups: Gitlab makes setting permissions on projects extremely easy. Other version control systems make it more difficult to set things granular enough, but GitLab allows you to group things in a granular enough way for your projects.

Travis CI

Travis works great for CI/CD pipelines. It’s easy to configure and has great integrations with tools you are probably already using like Github. It’s also compatible with many popular languages. It automates the build process and handles test cases. You can run test cases on mac and Linux both at the same time. Configuring Travis is easy using a lightweight YAML file. We don’t need to set up our own server to run it. It also provides free support for public repositories. Ready and easy to use, you don’t need any extra configuration like other CI tools like Jenkins. simply integrate GitHub or version control system, whenever you push the code it’s tested and integrated. Multiple jobs allow you to run and test simultaneously on different environments and OS. Free for your public projects, you don’t have to pay for your test and open source projects. You don’t have to maintain hosting server, Travis CI handle, and maintain updates and hosting server. Plugin and integration with third-party tools are available but it’s limited.

Buddy

The best thing about Buddy is its intuitive UI where you can set up deployment pipelines easily. The UI really helps when we want to introduce CI/CD culture to the whole engineering team since they can try to set up themselves using a few button clicks, rather than learning about some YAML configuration (it’s still available for some advanced users though).

It also has a plethora of built-in actions that connect with so many services that cover almost all of our use cases. Even if when we can’t find what we need, its integration with Docker Hub is really helpful so we can set up our own custom Docker image.

Buddy’s GUI is really awesome and to create pipeline’s using Buddy is really really simple. For a beginner who doesn’t understand CICD much, start using Buddy and you will get to know everything related to CICD in a day. Buddy is also constantly improving and new features every day.

Must-Have Windows System Admin Tools in 2018

Open source applications and tools simplify the lives of Windows system administrators considerably. You will find plenty of open source system admin tools that improve the performance and efficiency of system administrators. While some automate the basic administration functions, others help with troubleshooting and maintenance.

 

Thanks to the introduction of new technologies and web services, system administrators are keeping busy nowadays. Not only must they configure, upkeep, and ensure smooth operations of computer systems within a limited budget, but they must also contend with the growing number of digital threats, changing security policies, training, and technical support. No wonder these individuals need all the support they can get!

Thankfully, we’ve compiled a list of open source tools that will not only serve this purpose in 2018 but for the next few years as well.

 

  1. Git

 

System administrators will find it easier to handle projects of varying sizes with Git, an open source distributed version control tool. This free system is not only easy to use but fast and efficient. You get access to lots of handy features, such as staging areas, different workflows, enhanced GPG signing for commits and tags, colour controls, etc. for a more powerful performance. Thanks to Git, you don’t have to spend the whole day creating a test setup; you can simply develop a branch and then clone it. And thanks to the Change history option, the configuration changes can easily be monitored.

System administrators can now maintain numerous independent local branches due to Git’s branching model. Developing, merging, and deleting a particular takes just a few seconds. Plus, users can form a branch whenever they wish to test out a new idea, and delete it quickly in case it doesn’t live up to expectations. Perhaps the most surprising aspect is, Git’s internal data formatting is capable of supporting dates beyond 2100.

 

  1. Kubernetes

Google’s Kubernetes is an incredibly powerful system offering horizontal scaling features to Windows system admins. Now, depending on the CPU usage, they can control a user interface to scale the app up and down with a single command. Kubernetes is capable of automating functions like scaling, deployment, and management of containerized apps. Thanks to this tool, sysadmins can place containers as per their infrastructure and other requirements automatically without losing any of their availability.

Nodes are servers in Kubernetes that configure container networking and take care of assigned workloads. Using the Kubernetes, the nodes stay connected to the cluster group. When a container fails to respond to the user-defined source, it gets removed. And if a particular container fails, it is immediately restarted. Upon the death of nodes, they are replaced and rescheduled.

 

 

A unique IP address is assigned to containers with Kubernetes, while a set of containers gets one DNS name. So, creating clusters only requires two commands.

 

  1. Eclipse

One of the most commonly used integrated development environments (IDEs), Eclipse started off as a Java development tool but soon evolved into something that could be used to create apps in other programming languages, such as Perl, PHP, Python, C/C++. Eclipse’s cloud versions support web technologies, like HTML, CSS, and JavaScript. And system administrators are benefitted from the support of more than 250 open source projects, most of which are connected to development tools.

 

  1. Docker

 

 

Developed using open source technology, Docker addresses different kinds of infrastructure and applications for both developers and system administrators. Now, apps can be created easily, deployed, and then run in virtual containers with Linux servers. Due to the low overhead and small footprint, sysadmins enjoy plenty of flexibility and require fewer systems. If you are moderately skilled in developing software, Docker can be used to create Linux container easily. All that is required is a working Dockerfile and Docker setup.

 

There are two editions of Docker available – the Community Edition and the Enterprise Edition. While the former provides developers with the tools necessary to create applications, the latter offers multi-architecture operations to IT. Many big tech companies like Microsoft and Red Hat use Docker in collaboration with their services.

 

  1. PowerShell

This is a task-based scripting language and command-line shell developed by Microsoft and built using the .NET framework. System administrators use PowerShell to control and automate Windows administration. Loaded with amazing features, like Get-Module, Get-Help, remote management, among others, PowerShell allows system administrators to remotely manage and run Windows PCs, Windows Server, and PowerShell commands or access complete PowerShell sessions on Windows.

 

To use this remote management tool, you must download Remove Server Administration Tools Active Directory PowerShell module on your system along with the WinRM tool. Due to the Filter parameter, you can apply filters in PowerShell and locate what you’re searching for easily.

 

  1. NetBeans

A well-known open source IDE, NetBeans allows system administrators to develop mobile, web, and desktop applications quickly and easily. The major features include code generating, code editing, debugging tools, a GUI builder, etc. NetBeans supports JavaScript, HTML5, Java, PHP, and C/C++. The small size of this admin tool makes installation simple and convenient; all you need to do is download the program and install it. The IDE features are all fully-integrated, which means you won’t have to hunt anymore for plug-ins. Plus, all the features work simultaneously upon launching NetBeans.

  1. Vim

 

 

Vi Improved, popularly known as Vim, is an open source text editing app that supports command-line interface, and apps in a graphical user interface (GUI). Vim offers plugin support and system for numerous file formats and programming languages. It is quite speedy and works great on its own as the tool relies less on Cntrl/Alt sequences, enabling you to focus more on the modes. Vim also boasts of great keyboard macro facility for automating editing tasks. Developers might take a while to get the hang of this tool, but once they do, they will realize just how versatile Vim is.

 

  1. Bootstrap

Earlier known as Twitter Blueprint, the Bootstrap framework was developed by Twitter developers to improve reliability throughout open source toolkits. Thanks to Bootstrap, you can develop CSS, HTML, and JavaScript-based apps quickly and efficiently. The framework features a 12-column grid system and a responsive layout for dynamically adjusting the site to a compatible screen resolution. The results work consistently across different browsers and the output is uniform.  A lot of customization options are present, and if you encounter any issues, you can seek help from the extended support community.

 

  1. Cordova

This free Apache-sponsored open source tool can be used for developing mobile apps with JS, CSS, and HTML. Cordova wraps the application into a native container so it can access system functions across different platforms. The best part is, moderately-skilled web developers don’t need to learn any new programming languages. Prototyping can also be done fairly quickly. Apart from the various library options, you can create vector graphics to design specifications.

 

 

Any system administrator worth his salt will know that certain tools are important for the job as well as peace of mind since they make him more agile and efficient. The more you become familiar with those tools, the more you can improve upon your OS’ default set of tools and perform various functions.