Puppet Class: jenkins::cli

Defined in:
manifests/cli.pp

Summary

Allow Jenkins commands to be issued from the command line

Overview



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'manifests/cli.pp', line 3

class jenkins::cli {
  assert_private()

  include jenkins

  # XXX Classes/defines which include the jenkins::cli class assume that they
  # can use the cli even if $jenkins::cli == false.  This breaks the top
  # level anchor pattern.  The cli param should either be deprecated and
  # essentially hardwired to true or attempting to use cli functionality
  # without this param set should fail; either option is a backwards
  # incompatible change.
  #
  # As an attempt to preserve backwards compatibility, there are includes and
  # resource relationships being scattered throughout this module.
  if $jenkins::manage_service {
    Class['jenkins::service']
    -> Class['jenkins::cli']
    -> Anchor['jenkins::end']
  }

  $jar = "${jenkins::libdir}/jenkins-cli.jar"
  $extract_jar = "jar -xf ${jenkins::libdir}/jenkins.war WEB-INF/lib/"
  $move_jar = "mv WEB-INF/lib/cli-*.jar ${jar}"
  $remove_dir = 'rm -rf WEB-INF'
  $cli_tries = $jenkins::cli_tries
  $cli_try_sleep = $jenkins::cli_try_sleep

  # make sure we always call Exec[jenlins-cli] in case
  # the binary does not exist
  exec { 'check-jenkins-cli':
    command => '/bin/true',
    creates => $jar,
  }
  ~> exec { 'jenkins-cli' :
    command     => "${extract_jar} && ${move_jar} && ${remove_dir}",
    path        => ['/bin', '/usr/bin'],
    cwd         => '/tmp',
    refreshonly => true,
  }
  # Extract latest CLI in case package is updated / downgraded
  Package[$jenkins::package_name] ~> Exec['jenkins-cli']

  file { $jar:
    ensure  => file,
    mode    => '0644',
    require => Exec['jenkins-cli'],
  }

  $port = jenkins_port()
  $prefix = jenkins_prefix()

  # The jenkins cli command with required parameter(s)
  $cmd = join(
    delete_undef_values([
        'java',
        "-jar ${jar}",
        "-s http://localhost:${port}${prefix}",
        $jenkins::_cli_auth_arg,
    ]),
    ' '
  )

  # Do a safe restart of Jenkins (only when notified)
  exec { 'safe-restart-jenkins':
    command     => "${cmd} safe-restart && /bin/sleep 10",
    path        => ['/bin', '/usr/bin'],
    tries       => $cli_tries,
    try_sleep   => $cli_try_sleep,
    refreshonly => true,
    require     => File[$jar],
  }

  # jenkins::cli::reload should be included only after $jenkins::cli::cmd is
  # defined
  include jenkins::cli::reload
}