How to Configure SonarQube Scanner for HTTPS Sonar Server?

              · ·

Issue I have a Sonar server configured with HTTPS and want to configure the SonarQube plugin in Jenkins to use it My job fails to build because of the following exception with the Sonar Scanner: 10:05:19.726 ERROR: Error during SonarQube Scanner execution org.sonarsource.scanner.api.internal.ScannerException: Unable to execute SonarQube at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory$ at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory$ at Method) at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher( at org.sonarsource.scanner.api.internal.IsolatedLauncherFactory.createLauncher( at org.sonarsource.scanner.api.EmbeddedScanner.doStart( at org.sonarsource.scanner.api.EmbeddedScanner.start( at org.sonarsource.scanner.cli.Main.execute( at org.sonarsource.scanner.cli.Main.main( Caused by: java.

How we perform Continuous Integration (CI) on Jupyter Notebooks


I first wrote this blog when I was working at City Science Why do we need CI? It works on my machine… I bet you’ve all heard that one before! I’m not going to explain all the benefits of CI here because there’s a great page over on the ThoughtWorks website. The features that we’re interested in are; reproducibility and validation. The Jupyter notebook can be a blessing and a curse.

Building a Private Conda Channel

         ·      · ·

I first wrote this blog when I was working at City Science Why we need a private conda channel Here at City Science we build a large number of reusable Python modules. For developers to consume these libraries, we needed to host the different versions at a central location. There are public hosting solutions available, but for now we needed our libraries to remain private. For that reason we opted to create our own channel.

Tool Mastery


Whilst working with a new client which had some green developers, it struck me that they only knew about 20% (totally arbitrary for this example) of the tools features they were using on a daily basis. For example, when asking them if they preferred merge vs rebase, I was often met with blank stares. Similarly, when using their editor I would often find them manually searching and replacing renamed variables, rather than using the built-in feature of the editor.

Awesome Jenkins Pipelines

              · · ·

A curated list of awesome Jenkins reusable pipeline code. jenkinsci buildit Invoca Docker team Funkwerk Spring Cloud kitconcept SAP

Override Systemd Config


I was faced with the task of enabling the remote API for Docker. Whilst trying a few different solutions (adding hosts to daemon.json), I quickly learnt that I needed to pass parameters to the dockerd command like /usr/bin/dockerd -H tcp:// -H unix:///var/run/docker.sock. As I’m using Systemd I knew I needed to edit the service file, but I was also mindful that any future updates to Docker would blow my changes away.

Git reset last commit


Sometimes I get carried away with git and its high power features. I was working between 2 repos and realised I had a change I hadn’t saved and wanted to add to my last commit. This was my blog, of which im the only contributor, and so I made the save (resulting in an unstaged change) and run git add . && git commit --amend --no-edit. To those who dont know this command will stage all new changes and add them to the previous commit without making you edit the commit message.

SBT to Gradle


Here’s how I made the switch from sbt to gradle for a play project. Sbt works, there’s no denying that, but having spent many years working with Gradle I found it frustrating to replicate what was very simple with Gradle. My current clients play application is built with sbt; you can find a link to the build here. Here’s a snippet from build.sbt import play.sbt.PlayScala import sbtbuildinfo.BuildInfoPlugin.autoImport._ import sbtassembly.AssemblyPlugin.autoImport._ import com.

log tips and tricks

              · ·

As engineers we’re constantly trawling through logs. Here’s some tips for making that task a little easier. Searching logs For larger logs we may want to scroll by page: cat mylog.log | less We can then use PgUp or PgDn or the mac equivalent. Regex search in less /<regex> Find error with grep $ grep -I error /var/log/messages or find firewall related stuff sudo tail -f /var/log/messages |grep FIREWALL

Bulk find and copy in Bash


I needed to move a bunch of files from an old blog to the new one for conversion. Here’s how: find . -name \*.asciidoc -exec cp {} /home/sionwilliams_com/site/content/post \; From the current directory it searched for files ending .asciidoc and moved them to the new location. Once in the new location I was able to change the extension of the files with: for f in *.asciidoc; do mv -- "$f" "${f%.