Skip to content

Instantly share code, notes, and snippets.

@jimklimov
jimklimov / README.md
Created November 4, 2026 08:18 — forked from nmbro/README.md
NUT CI farm: where the time goes (findings behind networkupstools/nut#3810-#3812, jenkins-dynamatrix#56)

NUT CI farm: where the time goes

Where time goes on the NUT CI farm (ci.networkupstools.org, job nut/nut), from the builds that started in the 45 days to 2026-10-28. Every number here comes from nutci-stats run on that data; its full output is in report-2026-10-28.txt. These issues came out of it:

@jimklimov
jimklimov / README.md
Created November 4, 2026 08:18 — forked from nmbro/README.md
nutci-stats: where the time goes on a jenkins-dynamatrix CI farm (NUT CI)

nutci-stats

Where the time goes on a jenkins-dynamatrix CI farm, such as the NUT CI farm at ci.networkupstools.org. It fetches build data for one multibranch job from Jenkins, then reports on it. One file, Python 3.8+, standard library only.

nutci-stats.py fetch --until 2026-10-28 --days 45     # into ./nutci-data
nutci-stats.py queue      # orchestrator wait, and how builds ended
nutci-stats.py capacity   # agent-hours and builds a day per agent pool
nutci-stats.py entries    # agent-hours per slowBuild entry
nutci-stats.py unstash # time in "Unstash sources", and how much is paused

🛠 groovy scripts for jenkins credentials

... keeping update ...

@jimklimov
jimklimov / backup-github.sh
Created May 11, 2023 19:08 — forked from rodw/backup-github.sh
A simple script to backup an organization's GitHub repositories, wikis and issues.
#!/bin/bash
# A simple script to backup an organization's GitHub repositories.
#-------------------------------------------------------------------------------
# NOTES:
#-------------------------------------------------------------------------------
# * Under the heading "CONFIG" below you'll find a number of configuration
# parameters that must be personalized for your GitHub account and org.
# Replace the `<CHANGE-ME>` strings with the value described in the comments
# (or overwrite those values at run-time by providing environment variables).

How to GPG as a Scala OSS Maintainer

tl;dr Generate a GPG key pair (exercising appropriate paranoia). Send it to key servers. Create a Keybase account with the public part of that key. Use your keypair to sign git tags and SBT artifacts.

GPG is probably one of the least understood day-to-day pieces of software in the modern developer's toolshed. It's certainly the least understood of the important pieces of software (literally no one cares that you can't remember grep's regex variant), and this is a testament to the mightily terrible user interface it exposes to its otherwise extremely simple functionality. It's almost like cryptographers think that part of the security comes from the fact that bad guys can't figure it out any more than the good guys can.

Anyway, GPG is important for open source in particular because of one specific feature of public/private key cryptography: signing. Any published software should be signed by the developer (or company) who published it. Ideally, consu

@jimklimov
jimklimov / Jenkinsfile
Created November 8, 2021 18:42 — forked from oifland/Jenkinsfile
Loops in Jenkinsfiles
// Related to https://issues.jenkins-ci.org/browse/JENKINS-26481
abcs = ['a', 'b', 'c']
node('master') {
stage('Test 1: loop of echo statements') {
echo_all(abcs)
}
stage('Test 2: loop of sh commands') {

omnios pxe install notes

The goal was to be able to perform a network install of OmniOS from a Debian system.

I know there is refinement that can take place in this process (and these notes), but this got me up and running.

All testing took place on a Mac running VirtualBox with the extra extensions installed to allow for PXE booting. However I cannot see why this wouldn't work on real hardware in a network that is already setup to do PXE installs.

I setup:

@jimklimov
jimklimov / _INSTALL.md
Created March 19, 2021 18:50 — forked from robinsmidsrod/_INSTALL.md
Bootstrapping full iPXE native menu with customizable default option with timeout (also includes working Ubuntu 12.04 preseed install)

Add the following chunk to your existing ISC dhcpd.conf file.

if exists user-class and ( option user-class = "iPXE" ) {
    filename "http://boot.smidsrod.lan/boot.ipxe";
}
else {
    filename "undionly.kpxe";
}

(or see https://gist.github.com/4008017 for a more elaborate setup

@jimklimov
jimklimov / config
Created February 10, 2021 15:42 — forked from terrywang/config
~/.ssh/config behind firewall (ssh via HTTP proxy) and faster session creation by reusing already established connection
# User ssh configuration file ~/.ssh/config
# Gist https://gist.github.com/terrywang/3997931
# man ssh_config for more information
# Inspired by the blog post below to fight the NSA
# https://stribika.github.io/2015/01/04/secure-secure-shell.html
# Outside of the firewall, with HTTPS proxy
# Package connect-proxy is required.
# Amazon EC2
@jimklimov
jimklimov / ssh_config
Created April 9, 2020 09:27 — forked from rbenaley/ssh_config
GitHub ssh access via HTTP Proxy
host github.com
user git
hostname ssh.github.com
port 443
proxycommand socat - PROXY:<hostname>:%h:%p,proxyport=<port>