Posts by graham

Website automation with Selenium and JMeter: part 1

December 12th, 2018 Posted by DevOps No Comment yet

This post is part 1 of a series:

One of our customers asked us to troubleshoot their web application: “out of memory” errors were causing page loads to fail. To understand and isolate the problem we needed a way to reproduce it, and observe it in a monitored scenario. We decided on a strategy for both server and web user:

  • Server: deploy a build that monitors for memory leaks, a first-pass step to diagnose the out of memory errors.
  • Client: simulate web requests from one or more users.

It was straightforward to monitor the server application for memory leaks. On the client side we needed a way to generate repeating user requests, potentially at high volume, because the errors didn’t occur for every request. This post describes how we built a client-side process to automate web requests.

(more…)

Website automation with Selenium and JMeter: part 2

December 12th, 2018 Posted by DevOps No Comment yet

This is the final post, part 2 of a series:

In this post I show how to script Selenium for handling asynchronous browser behaviour, and how to install the tools.

(more…)

Jenkins Log Recorders

May 7th, 2018 Posted by Cloudbees, DevOps No Comment yet

My Jenkins job was set to trigger a build automatically from a simple GitHub webhook, but the job didn’t build when code changes were pushed to GitHub. Was the problem in Jenkins, GitHub, or something else? I investigated using Jenkins log recorders.

(more…)

Enterprise Jenkins on Azure, Part 2

Enterprise Jenkins on Azure, Part 3

March 29th, 2018 Posted by Cloudbees, DevOps 1 comment

This is the final post, part 3 of a series:

Part 1: Overview and Deploy Azure Resources
Part 2: Deploy Jenkins Operations Center, Master and Shared Agent
Part 3: The Jenkinsfile, tweaks and tips

In this post I describe the Jenkinsfile that defines the build pipeline, a little troubleshooting and tweaking, and wrap up the series. (more…)

Enterprise Jenkins on Azure Part 2

Enterprise Jenkins on Azure, Part 2

July 20th, 2017 Posted by Cloudbees, DevOps 2 comments

This post is part 2 of a series:

Part 1: Overview and Deploy Azure Resources
Part 2: Deploy Jenkins Operations Center, Master and Shared Agent
Part 3: The Jenkinsfile, tweaks and tips

In this post I deploy the Jenkins distributed builds model: a Jenkins client master will delegate build jobs to one or more Jenkins agents.  In addition, I deploy a Jenkins Operations Center to manage all client masters in one place. (more…)

Enterprise Jenkins on Azure Part 1

Enterprise Jenkins on Azure, Part 1

July 14th, 2017 Posted by Cloudbees, DevOps 2 comments

I’ve been trying out Enterprise Jenkins on Azure. The inspiration was a webinar, Achieving Continuous Delivery on Microsoft Azure, about the “four quadrants of DevOps maturity”, and how to address the needs of different teams in the delivery pipeline using tools from Azure and Enterprise Jenkins. The webinar includes a demo of a cloud-based Jenkins Pipeline job, and the source code is freely available.

I tried out the demo and got it working with minor changes and a few workarounds. This post is part 1 of a series:

Part 1: Overview and Deploy Azure Resources
Part 2: Deploy Jenkins Operations Center, Master and Shared Agent
Part 3: The Jenkinsfile, tweaks and tips

(more…)

It's a UNIX system

Running a background process as a specific user on Linux startup

May 22nd, 2017 Posted by DevOps No Comment yet

Long, long ago when I was a student, I knew how to recognise a UNIX system. Sorry: overused in-joke. I’ve been brushing up on Linux (Ubuntu 14.04 on Azure) while doing some ops stuff involving a machine which, on startup, automatically runs a background process as a specific user. A few minutes of research revealed several ways to do this. Probably the technically rigorous option is a Linux service; I found a much easier option that works well for my purposes.

(more…)

Stage View - Pipeline Job

Gotcha with Jenkins Pipeline as Code

January 4th, 2017 Posted by Cloudbees, DevOps 2 comments

What you need to know

Manually build a Jenkins Pipeline job at least once, if you’ve set up the job to build automatically when a change is pushed to an SCM like Git. I scratched my head for some time about this, checking logs and double-checking configurations before I figured out why. The short answer: RTFM.

The long answer

Now that everyone’s using continuous integration (CI) a logical move is to apply CI principles to software build automation, not only to source code. The Jenkins Pipeline job was introduced a couple of years ago, and defines a job entirely in Groovy script. There’s an option to include the job definition as a file, Jenkinsfile, in a source code repository; then a change to Jenkinsfile (not only code files) in the repository can trigger a new build. (more…)