Skip to content

CI with ClearCase Base: The Road Less Traveled

We spent the last year or so building and maintaining a Continuous Integration (CI) system for our major development group. And it was incredibly daunting and frustrating, considering we had to build it around a legacy and problematic version control system like ClearCase Base.

In the textbooks it seems pretty simple: every commit (check-in) to the repository triggers a build, which in turn checks out the latest version of the repository from source control, and run the build process. This way, if a build fail, you know exactly who broke the build – the person who performed the last commit – and if it the build passes, you have full traceability between the build artifacts and the source code they were built from.

Now, let’s try that with ClearCase Base.

Read more…

Why use an installation technology

This is a question that I get asked from time to time, usually after someone who is not familiar with the deployment world encounters problems with a certain installation. “We could just write a script that extracts the files to the right place, what’s the big deal?”

Well, it’s a big deal. Generally speaking, an installation framework (compared to a script) provides a lot of benefits, such as:

  • Modelling the application deployment into sub-modules – allowing to add or remove parts of the applications, define dependencies etc.
  • Built-in support for many deployment actions – from simple things like copy files, edit text files, or run some OS command, to configuring web servers and databases
  • Ability to rollback each action – which gives you the ability to rollback changes in case of installation error, and provide an uninstaller, with (theoretically) no additional effort.
  • Built-in detection of files in use, including the ability (in some cases) to replace such files (upon reboot, or by automatically restart the interfering process)
  • Various levels of UI (from completely silent deployment to a full user-driven interface)
  • Versioning and update management (upgrades/patches)
  • Built-in logging
  • Integration with the Operating System software management tools (such as the ‘programs and features’ in Windows)
  • And more… (your comments are welcomed)

So, it’s so great, so why not everyone love it?

Read more…

Jenkins User Conference 2016 – Impressions

20160703_161012 20160703_214802

Today I attended the Jenkins User Conference, held in Israel, hosted by JFrog.

First off I have to say the event was very well organized. Great location, everything on schedule, no technical issues, some nice swag, and excellent food and drinks throughout the day (including afternoon beer!). Considering there were about 450 people there, that is no small task…

The guest of honor was Kohsuke Kawaguchi (KK), the creator of Jenkins, who gave an interesting keynote, with overview about the concepts behind Jenkins 2.0, and some anecdotes from the history of Jenkins.

The main theme of the conference was that Speed is Everything, as you can figure from JFrog’s motto, “Release fast or die”. Their view is that software today is about continuous update – you basically deploy your products once, and from there onward you struggle to update them as often as possible, as seamlessly as possible, without negative effects on the user experience. This raises numerous challenges which various vendors and open source projects are striving to solve.

There conference was packed with sessions related to the DevOps world, mostly about making things faster without losing control on the process. Liveperson, for example, discussed how they manage 6000 releases a year, with over 10K builds per week.

Read more…

Code reviews are not just for catching bugs

An interesting post by FullStory.

 

Git in Visual Studio: Prevent Fast-Forward Merge

A useful feature of git merge is the –no-ff flag. What it does is always generate a merge commit, even if it was a fast-forward (trivial) merge.

The main point of using this feature is avoid losing information about the historical existence of a certain branch, and (to some degree) being able to associate commits with the branches they were created on.

Turns out, this feature existed in Team Explorer for quite some time, but you would never guessed it if you didn’t stumble upon this User Voice entry.

By unchecking the “commit changes after merging” option, you’ll prevent a fast-forward merge and have the ability supply a custom commit message.

Why not just call it ‘prevent fast-forward merge’? 🙂

 

Python in Visual Studio 2015

When I first heard that Visual Studio 2015 is going to support developing with Python, I wasn’t sure how to react. Microsoft? Python? it just doesn’t seem related. I was very skeptical about working in Python within Visual Studio.

Recently I started a new pet project in GitHub to play around with VS integration to GitHub. So I figured, let’s include some Python code just to see how it feels working with Python in VS.

And it feels great, actually! Visual Studio users would feel right at home with IntelliSense-like auto completion and tooltips, debugging capabilities, unit testing with Test Explorer, advanced searching and editing, and more. I would dare comparing it to some of the best Python IDEs out there like PyCharm. GitHub integration also work seamlessly.

This Python support (a.k.a Python Tools for Visual Studio) is included in the free Visual Studio 2015 Community edition, and even available as open source on GitHub.

Microsoft! on GitHub! Times are changing, indeed.

Netflix build process

Netflix are well known for their excellent deployment capabilities.

In this article they go over their build process and tools, from compiling code all the way to production, and presenting their current challenges and future plans.

A highly recommend read for anyone who is interested in doing DevOps the right way.