ci-cd-pipeline-app-murano/murano-apps/Jenkins/package/Classes/Jenkins.yaml

227 lines
8.0 KiB
YAML

Namespaces:
=: org.openstack.ci_cd_pipeline_murano_app
std: io.murano
res: io.murano.resources
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:
- $.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)
- $.gerrit.createLabelVerified()
- $._upgradeGitPlugin()
- $.configureUser()
- 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]
- $.instance.setHieraValue('ldap_ip', $ldapHost)
- $.instance.setHieraValue('ldap_domain', $.ldap.domain)
- $.instance.setHieraValue('ldap_root_user', $.ldap.ldapRootUser)
- $.instance.setHieraValue('ldap_root_password', $.ldap.ldapRootPass)
- $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:
Arguments:
- gerrit:
Contract: $.class(ci_cd_pipeline_murano_app:Gerrit).notNull()
Body:
- If: $gerrit.instance.assignFloatingIp
Then:
- $host: $gerrit.instance.floatingIpAddress
Else:
- $host: $gerrit.instance.ipAddresses[0]
# Set gerrit related properties.
- $.instance.setHieraValue('gerrit_host', $host)
- $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:
- $linux: new(conf:Linux)
- $resource: new(sys:Resources)
- $script: $resource.string('upgrade_git_plugin.sh')
- $linux.runCommand($.instance.agent, $script)
destroy:
Body:
- $.reportDestroyed()
- $.setAttr(deployed, false)
configureUser:
Body:
- $resources: new(sys:Resources)
- $template: $resources.yaml('JenkinsUser.template')
- $.instance.agent.call($template, $resources, 100)