
Several seconds saved and looks better. Change-Id: I8ae5fe2c73a106bc28567d86e51db9e4bf1147ed
255 lines
9.4 KiB
YAML
255 lines
9.4 KiB
YAML
Namespaces:
|
|
=: org.openstack.ci_cd_pipeline_murano_app
|
|
std: io.murano
|
|
sys: io.murano.system
|
|
ci_cd_pipeline_murano_app: org.openstack.ci_cd_pipeline_murano_app
|
|
puppet: org.openstack.ci_cd_pipeline_murano_app.puppet
|
|
conf: io.murano.configuration
|
|
|
|
Name: Jenkins
|
|
|
|
Extends: std:Application
|
|
|
|
Properties:
|
|
name:
|
|
Contract: $.string().notNull()
|
|
ldap:
|
|
Contract: $.class(OpenLDAP)
|
|
gerrit:
|
|
Contract: $.class(ci_cd_pipeline_murano_app:Gerrit)
|
|
instance:
|
|
Contract: $.class(puppet:PuppetInstance).notNull()
|
|
cfplugin:
|
|
Contract: $.bool()
|
|
Default: false
|
|
dockerplugin:
|
|
Contract: $.bool()
|
|
Default: false
|
|
gitUser:
|
|
Contract: $.string()
|
|
gitEmail:
|
|
Contract: $.string()
|
|
|
|
Methods:
|
|
initialize:
|
|
Body:
|
|
- $._environment: $.find(std:Environment).require()
|
|
|
|
deploy:
|
|
Body:
|
|
- $.super($.deploy())
|
|
- If: not $.getAttr(deployed, false)
|
|
Then:
|
|
- $._environment.reporter.report($this, 'Creating security group for Jenkins')
|
|
- $securityGroupIngress:
|
|
- ToPort: 8080
|
|
FromPort: 8080
|
|
IpProtocol: tcp
|
|
External: true
|
|
- $._environment.securityGroupManager.addGroupIngress($securityGroupIngress)
|
|
|
|
- $._environment.reporter.report($this, 'Creating VM for Jenkins "{0}"'.format($.instance.name))
|
|
- $.instance.deploy()
|
|
- $._environment.reporter.report($this, 'Jenkins VM "{0}" with id {1} created'.format($.instance.name, $.instance.openstackId))
|
|
|
|
- $this.systemConfig: new(puppet:SystemConfig)
|
|
- $this.systemConfig.installOnTheNode($this.instance)
|
|
|
|
- $resources: new(sys:Resources)
|
|
- $template: $resources.yaml('DeployJenkins.template')
|
|
- $._environment.reporter.report($this, 'Jenkins is deploying...')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
- If: $.ldap != null
|
|
Then:
|
|
- $._environment.reporter.report($this, 'Jenkins waits OpenLDAP to be deployed...')
|
|
- $.ldap.deploy()
|
|
- $.connectLDAP()
|
|
|
|
- If: $.cfplugin
|
|
Then:
|
|
- $._environment.reporter.report($this, 'Installing CF plugin...')
|
|
- $template: $resources.yaml('InstallCFPlugin.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
- If: $.dockerplugin
|
|
Then:
|
|
- $._environment.reporter.report($this, 'Installing Docker Build and Publish plugin...')
|
|
- $template: $resources.yaml('InstallDockerPlugin.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
- If: $.gitUser != null and $.gitEmail != null
|
|
Then:
|
|
- $.configureGitPlugin($.gitUser, $.gitEmail)
|
|
|
|
- $.configureZMQPlugin()
|
|
- $.configureMavenPlugin()
|
|
|
|
- If: $.gerrit != null
|
|
Then:
|
|
- If: $.gerrit.instance.assignFloatingIp
|
|
Then:
|
|
- $host: $.gerrit.instance.floatingIpAddress
|
|
Else:
|
|
- $host: $.gerrit.instance.ipAddresses[0]
|
|
- $.instance.setHieraValue('gerrit_host', $host)
|
|
- $.installGerritPlugin()
|
|
- $._environment.reporter.report($this, 'Wait while Gerrit is being deployed...')
|
|
- $.gerrit.deploy()
|
|
- $._environment.reporter.report($this, 'Creating "jenkins" account in Gerrit...')
|
|
- $.createGerritAccount()
|
|
- $.configureGerritPlugin()
|
|
- $.gerrit.createLabels()
|
|
- $._upgradeGitPlugin()
|
|
|
|
- $.configureUser()
|
|
|
|
- $.installJJB()
|
|
|
|
- If: $.instance.assignFloatingIp
|
|
Then:
|
|
- $host: $.instance.floatingIpAddress
|
|
Else:
|
|
- $host: $.instance.ipAddresses[0]
|
|
- $._environment.reporter.report($this, 'Jenkins is available at http://{0}:8080'.format($host))
|
|
- $.setAttr(deployed, true)
|
|
|
|
connectLDAP:
|
|
Body:
|
|
- $ldapInstance: $.ldap.instance
|
|
- If: $ldapInstance.assignFloatingIp
|
|
Then:
|
|
- $ldapHost: $ldapInstance.floatingIpAddress
|
|
Else:
|
|
- $ldapHost: $ldapInstance.ipAddresses[0]
|
|
|
|
- $data:
|
|
ldap_ip: $ldapHost
|
|
ldap_domain: $.ldap.domain
|
|
ldap_root_user: $.ldap.ldapRootUser
|
|
ldap_root_password: $.ldap.ldapRootPass
|
|
|
|
- $this.instance.putHieraData($data)
|
|
|
|
- $resources: new(sys:Resources)
|
|
- $._environment.reporter.report($this, 'Connecting Jenkins to OpenLDAP server')
|
|
- $template: $resources.yaml('ConnectLDAP.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
- $._environment.reporter.report($this, 'Jenkins is connected to OpenLDAP server!')
|
|
|
|
createGerritAccount:
|
|
Body:
|
|
- $key: $.instance.getHieraValue('jenkins_ssh_pubkey_contents')
|
|
- $.gerrit.createAccount('Non-Interactive Users', 'jenkins', 'jenkins@mail.com', $key, 'jenkins')
|
|
|
|
configureZMQPlugin:
|
|
Body:
|
|
- $._environment.reporter.report($this, 'Creating security group for ZMQ Event publisher')
|
|
- $securityGroupIngress:
|
|
- ToPort: 8888
|
|
FromPort: 8888
|
|
IpProtocol: tcp
|
|
External: true
|
|
- $._environment.securityGroupManager.addGroupIngress($securityGroupIngress)
|
|
- $._environment.stack.push()
|
|
- $resources: new(sys:Resources)
|
|
- $._environment.reporter.report($this, 'Configure Jenkins ZMQ Event Publisher plugin...')
|
|
- $template: $resources.yaml('ConfigureZMQ.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
configureGearmanPlugin:
|
|
Arguments:
|
|
- host:
|
|
Contract: $.string().notNull()
|
|
- port:
|
|
Contract: $.int()
|
|
Default: 4730
|
|
Body:
|
|
- $.instance.setHieraValue('gearman_host', $host)
|
|
- $.instance.setHieraValue('gearman_port', $port)
|
|
- $resources: new(sys:Resources)
|
|
- $._environment.reporter.report($this, 'Configure Jenkins Gearman plugin...')
|
|
- $template: $resources.yaml('ConfigureGearman.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
configureGitPlugin:
|
|
Arguments:
|
|
- gitUser:
|
|
Contract: $.string().notNull()
|
|
- gitEmail:
|
|
Contract: $.string().notNull()
|
|
Body:
|
|
- $.instance.setHieraValue('git_user', $gitUser)
|
|
- $.instance.setHieraValue('git_user_email', $gitEmail)
|
|
- $resources: new(sys:Resources)
|
|
- $._environment.reporter.report($this, 'Configure Jenkins Git plugin...')
|
|
- $template: $resources.yaml('ConfigureGit.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
configureMavenPlugin:
|
|
Body:
|
|
- $resources: new(sys:Resources)
|
|
- $._environment.reporter.report($this, 'Configure Jenkins Maven plugin...')
|
|
- $template: $resources.yaml('ConfigureMaven.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
installGerritPlugin:
|
|
Body:
|
|
- $resources: new(sys:Resources)
|
|
- $._environment.reporter.report($this, 'Installing Gerrit Trigger plugin...')
|
|
- $template: $resources.yaml('InstallGerritPlugin.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
configureGerritPlugin:
|
|
Body:
|
|
- $resources: new(sys:Resources)
|
|
- $._environment.reporter.report($this, 'Configure Jenkins Gerrit Trigger plugin...')
|
|
- $template: $resources.yaml('ConfigureGerritPlugin.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
_upgradeGitPlugin:
|
|
Body:
|
|
- $resource: new(sys:Resources)
|
|
- $._environment.reporter.report($this, 'Upgrading jenkins git plugin...')
|
|
- $template: $resource.yaml('InstallPlugins.template').bind({plugins => git})
|
|
- $.instance.agent.call($template, $resource)
|
|
|
|
configureCredentials:
|
|
Body:
|
|
- $._environment.reporter.report($this, 'Configuring standard SSH credentials for jenkins slaves...')
|
|
- $resources: new(sys:Resources)
|
|
- $template: $resources.yaml('ConfigureCredentials.template')
|
|
- $.instance.agent.call($template, $resources)
|
|
|
|
# Return current credentials id. (see scripts/configure_credentials/files/credentials.xml)
|
|
- $._environment.reporter.report($this, 'SSH Credentials are configured.')
|
|
- Return: '8039f3e0-1eb6-4505-81bc-c616a31fd7d1'
|
|
|
|
destroy:
|
|
Body:
|
|
- $.reportDestroyed()
|
|
- $.setAttr(deployed, false)
|
|
|
|
configureUser:
|
|
Body:
|
|
- $resources: new(sys:Resources)
|
|
- $template: $resources.yaml('JenkinsUser.template')
|
|
- $.instance.agent.call($template, $resources, 100)
|
|
|
|
installJJB:
|
|
Body:
|
|
- $resources: new(sys:Resources)
|
|
- $linux: new(conf:Linux)
|
|
- $._environment.reporter.report($this, 'Installing and configuring Jenkins Job Builder...')
|
|
- $script: $resources.string('scripts/update_jobs.sh')
|
|
- $linux.putFile($.instance.agent, $script, '/usr/local/bin/update_jobs.sh')
|
|
- $script: $resources.string('scripts/install_jjb.pp')
|
|
- $linux.putFile($.instance.agent, $script, '/usr/local/bin/install_jjb.pp')
|
|
- $linux.runCommand($.instance.agent, 'puppet apply /usr/local/bin/install_jjb.pp')
|
|
- If: $.gerrit != null
|
|
Then:
|
|
- $._environment.reporter.report($this, 'Switching to project-config from installed Gerrit...')
|
|
- $script: $resources.string('scripts/switch_to_local_project_config.sh')
|
|
- $linux.putFile($.instance.agent, $script, '/usr/local/bin/switch_to_local_project_config.sh')
|
|
- $linux.runCommand($.instance.agent, 'bash /usr/local/bin/switch_to_local_project_config.sh')
|