Class: JenkinsFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/jenkins_factory.rb

Instance Method Summary collapse

Instance Method Details

#create(controller_ip:, ec2_keypair_name:, vpc_id:, subnet_id:, job_repo:, job_repo_branch: 'master', job_definition_relative_path:, jenkins_admin_username:, jenkins_admin_password:, extra_user_data_provisioning: [], associate_public_ip_address: true) ⇒ Object



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
# File 'lib/jenkins_factory.rb', line 7

def create(controller_ip:,
           ec2_keypair_name:,
           vpc_id:,
           subnet_id:,

           job_repo:,
           job_repo_branch: 'master',
           job_definition_relative_path:,

           # this is currently baked into the AMI
           jenkins_admin_username:,
           jenkins_admin_password:,

           # crude bash commands, but maybe consider scp a tar of cookbooks?
           extra_user_data_provisioning: [],
           associate_public_ip_address: true)

  customisations = {
    'jenkins_base_ami_id' => BaseJenkinsAmi.new.discover_base_ami,
    'jenkins_ingress_ssh_cidr' => controller_ip,
    'jenkins_ec2_key_pair_name' => ec2_keypair_name,
    'subnet_id' => subnet_id,
    'vpc_id' => vpc_id,
    'associate_public_ip_address' => associate_public_ip_address.to_s,
    'extra_userdata' => extra_user_data_provisioning
  }

  stack_outputs = converge_jenkins_stack customisations: customisations

  jenkins_connection_info = {
    'jenkins_url' => stack_outputs['JenkinsURL'],
    'jenkins_user' => jenkins_admin_username,
    'jenkins_pass' => jenkins_admin_password
  }

  jobs_location = {
    'job_repo' => job_repo,
    'job_repo_branch' => job_repo_branch,
    'job_definition_relative_path' => job_definition_relative_path
  }

  JobSeeder.new.seed_jobs jenkins_connection_info: jenkins_connection_info,
                          jobs_location: jobs_location

  stack_outputs['JenkinsURL']
end