morafabio / jenkins-vagrant

Vagrant Environment for a Jenkins Continuous Integration server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This is a Vagrant Environment for a Continuous Integration server using the Jenkins daemon.

This configures Jenkins through CLI/JNLP and Groovy scripts to:

  • Enable the simple Logged-in users can do anything Authorization security policy.
  • Add a SSH public key to vagrant user account and use it to access the CLI.
  • Optionally use LDAP user authentication.
  • Add and list users.
  • Install and configure plugins.
  • Setup nginx as a Jenkins HTTPS proxy and static file server.
  • Create Freestyle project job.
  • Create Pipeline job.
  • Create Multibranch Pipeline job.
  • Add a Ubuntu Linux slave node.
  • Add a Windows slave node.
  • Add a macOS slave node.

NB If you are new to Groovy, be sure to check the Groovy Learn X in Y minutes page.

These are the machines and how they are connected with each other:

Usage

Build and install the Ubuntu Base Box.

Build and install the Windows Base Box.

Build and install the macOS Base Box.

Add the following entry to your /etc/hosts file:

10.10.10.100 jenkins.example.com

If you want to use LDAP for user authentication, you have to:

  1. have rgl/windows-domain-controller-vagrant up and running at ../windows-domain-controller-vagrant.
  2. uncomment the config_authentication='ldap' line inside provision.sh.

Run vagrant up jenkins to launch the master. See its output to known how to login at the local Jenkins home page as admin (you can also login with one of the example accounts, e.g. alice.doe and password password).

NB nginx is setup with a self-signed certificate that you have to trust before being able to access the local Jenkins home page.

Run vagrant up ubuntu to launch the Ubuntu slave.

Run vagrant up windows to launch the Windows slave.

Run vagrant up macos to launch the macOS slave. NB you first need to download Xcode_8.1.xip. After provisioning you can delete it, as Xcode_8.1.cpio.xz will take its place as a more efficient way to install Xcode.

Email notifications are sent to a local MailHog SMTP server running at localhost:1025 and you can browse them at http://jenkins.example.com:8025.

Groovy Snippets

def getObjectProperties(obj) {
    def filtered = ['class', 'active']

    properties = obj.metaClass.properties
        .findAll {it.name != 'class' && it.name != 'metaClass'}
        .inject([:]) {acc, e -> acc[e.name] = e.getProperty(obj); acc}

    properties
        .sort {it.key}
        .collect {it}
        .findAll {!filtered.contains(it.key)}
        .join('\n')
}

project = Jenkins.instance.getItem('MailBounceDetector-multibranch-pipeline')
getObjectProperties(project)

Reference

About

Vagrant Environment for a Jenkins Continuous Integration server


Languages

Language:Shell 62.0%Language:PowerShell 36.4%Language:HTML 1.7%