Stephen Connolly's blog

Stephen Connolly's picture

Watch Me Code, Episode 12

So here we are, two weeks after Episode 11 was recorded and the plugin has been deployed on the Apache Jenkins build server and used by the Apache Maven project for more than one week. What have we learned from this series, what should we keep doing, what could we do better? This episode is a retrospective on the series as a whole: This episode was moderated by Arnaud Héritier and...
Stephen Connolly's picture

Watch Me Code, Episode 11

Continuing on from Episode 10 , I review the additional tests I wrote and the bugs found in writing those tests before adding a final piece of flourish to the plugin. This episode reviews some of the more interesting bugs I found while adding additional test cases. To make navigating the Jenkins instance easier, we add a small visual feature that allows us to provide a custom icon...
Stephen Connolly's picture

Watch Me Code, Episode 10

With Episode 9 we have a plugin providing almost all the functionality we need. Now is the time for testing! This episode reviews the different strategies we could employ to test an online service such as the Apache hosted GitWeb service that we are using. In the end, we select one strategy and implement a few tests using that strategy. If you are interested in examining my work so...
Stephen Connolly's picture

Watch Me Code, Episode 9

At the end of Episode 8 we had found some bugs. The plugin code was not being called at all, so it’s time to call in our investigative skills and try and figure out what is going wrong. This episode starts with just enough fixing of the plugin issue to let us continue developing the features. Then we fill out the functionality to get our Git telescope to MVP. We use a debugger to...
Stephen Connolly's picture

Watch Me Code, Episode 8

In Episode 7 of “Watch Me Code,” we parsed some dates by scraping HTML, not content with just scraping a date, we continue scraping more details from various HTML pages in the GitWeb view. This episode starts with some explanation as to how we can safely assume the RFC 2822 date format from Episode 7. After that we proceed to implement the HTML scraping methods required to list the...
Stephen Connolly's picture

Watch Me Code, Episode 7

What do software engineers hate? Parsing strings into dates and scraping HTML! After the setting up our classpath in Episode 6 of “Watch Me Code,” we start to tackle writing the implementation… This time we start by extracting the last modified timestamp of a branch or tag by HTML scraping a gitweb commit view page and parsing the text date. As expected, we don’t exactly get the...
Stephen Connolly's picture

Watch Me Code, Episode 6

Episode 4 and Episode 5 of “Watch Me Code” were focused on the Jenkinsfile techniques we will need when we start using the Organization folder that we developed in Episode 3 . This episode returns focus to that Organization folder functionality. When we left the plugin last, we had a plugin that was functional, but not as efficient as it could be. In order to make a better...
Stephen Connolly's picture

Watch Me Code, Episode 5

Today’s episode of “Watch Me Code,” continues on from Episode 4 in developing the shared pipeline library to use for building projects for the Apache Maven project. The mission of the Apache Software Foundation is to provide software for the public good. Since the Jenkinsfile will be part of the source code and hence released with the Apache Maven project, the Apache Maven project...
Stephen Connolly's picture

Watch Me Code, Episode 4

Unlike the previous episodes 2 and 3 of “Watch Me Code,” where I was working on a Jenkins plugin, this episode is concentrating more on how we can use Jenkins more effectively. When we only have a few repositories to deal with, it is reasonable to allow each repository to have its own build process. The Apache Maven project has many repositories to manage, so we need an easier way...
Stephen Connolly's picture

Watch Me Code, Episode 3

Continuing on from Episodes 1 and 2 of “Watch Me Code.” In Episode 2, we set up the MVP for and ASF Git Organization folder functionality. The MVP will only discover new repositories when we trigger a scan. What we’d really like is to wire this up to event notification so that the repository is discovered as soon as it has a branch with a Jenkinsfile. My plan for the “Watch Me Code...