Skip to content

Migrate Jenkins to Dragon

In our CI jobs, we do a lot of copying artifacts back and forth between Jenkins and its workers. The performance of all such operations (possibly happening concurrently) is bound by the speed of 1 single CPU core on the Jenkins orchestrator. lizard's CPU cores are individually slow, so it would help quite a bit if we migrated it to Dragon.

Preparation:

  • set up nginx locally on jenkins.lizard to serve jenkins.tails.boum.org and nightly.tails.boum.org
  • manually copy letsencrypt certificates from www to jenkins
  • coordinate downtime
  • prepare a base install jenkins.dragon VM on dragon
  • prepare firewalling on dragon to forward port 80/443 to jenkins.dragon
  • prepare static html on www to serve during downtime (a simple maintenance page)

Migration steps:

  • shut down both jenkins.lizard and jenkins.dragon
  • shut down all isotesters/builders/workers
  • let www serve the maintenance page
  • rsync all data except puppet keys/certs from jenkins.lizard to jenkins.dragon
  • replace jenkins.lizard with jenkins.dragon everywhere in hiera, puppet-tails, and jenkins-jobs
  • rename the node entry in manifests/nodes.pp from jenkins.lizard to jenkins.dragon
  • remove the NFS service from jenkins.dragon
  • fix networking on jenkins.dragon (both manually and in puppet)
  • spin up jenkins.dragon and fix whatever is broken / breaks during puppet run
  • spin up all isotesters/builders/workers
  • change DNS entries for jenkins.tails.boum.org and nightly.tails.boum.org
  • test/debug/fix jenkins
  • set up backups for jenkins.dragon
  • update documentation

Cleanup:

  • remove the NFS mount on www
  • remove the jenkins.tails.boum.org and nightly.tails.boum.org vhosts on www
  • remove the jenkins.lizard VM
  • remove the backup job for jenkins.lizard
  • remove monitoring for jenkins.lizard
Edited by groente
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information