- 
                Notifications
    You must be signed in to change notification settings 
- Fork 0
Jenkins Jagger Easy Deploy how it works
What actually going on in plug-in easy deploy step.
The main idea of it is to create deploying script automatically.
There are 3 main steps in script:
- deploy each Jagger node
- start nodes
- collect results and logs
Deployment of each node is similar, so let us consider Master node deployment.
Deploying part implies:
- 
Deleting (if exists) path 'runned_jagger' in user directory. Creating new. $ ssh [email protected] "rm -rf runned_jagger" $ ssh [email protected] "mkdir runned_jagger"
- 
Sending Jagger suite. $ scp JAGGER_TEST_SUITE.zip [email protected]:runned_jagger
- 
Unzip Jagger suite. $ ssh [email protected] "unzip runned_jagger\JAGGER_TEST_SUITE.zip -d runned_jagger" > \dev\null
- 
Killing previous Jagger process. $ ssh [email protected] "runned_jagger\stop.sh" $ ssh [email protected] "runned_jagger\stop_agent.sh"
Starting goes through start scripts (start.sh,start_agent.sh) but with specific properties.
Master starts after starting Kernels and Agents. Plugin waits while Master finished.
$ ssh [email protected] "cd runned_jagger; ./start.sh ./enviroment.properties '
    -Dchassis.conditions.min.agents.count=1 
    -Dchassis.conditions.min.kernels.count=1 
    -Dchassis.storage.rdb.client.driver=com.mysql.jdbc.Driver 
    -Dchassis.storage.rdb.client.url=jdbc:mysql://address:port/name_of_db 
    -Dchassis.storage.rdb.username=user.name 
    -Dchassis.storage.rdb.password=user.password 
    -Dchassis.storage.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect 
    -Dchassis.roles=MASTER,COORDINATION_SERVER,HTTP_COORDINATION_SERVER 
    -Dchassis.coordinator.zookeeper.endpoint=master.address:2181 
    -Dchassis.storage.fs.default.name=hdfs://master.address/ 
    -Dadditional.property=some.overriden.value 
    -Danother.additional.property=some.concrite.value 
 '"
Let us look deeper, and handle this command line by line.
 ssh [email protected] "cd runned_jagger; ./start.sh ./enviroment.properties '
Nothing but starting start.sh script with environment.properties that was specified by the user in plug-in, or default environment properties if last was not specified. If Ssh Key Path field defined, then -i ssh option takes place with the specified path. If Set JAVA_HOME field defined, there is an additional step in ssh command. actually
 ssh [email protected] "cd runned_jagger; export SPECIFIED_JAVA_HOME; ./start.sh ./enviroment.properties '
 -Dchassis.conditions.min.agents.count=1
Number of Agents specified in the plugin.
 -Dchassis.conditions.min.kernels.count=1 
Number of Kernels specified in the plugin.
 -Dchassis.roles=MASTER,COORDINATION_SERVER,HTTP_COORDINATION_SERVER 
Services that will start on the given node. Here we can see Master node. If an external data base has not been declared RDB_SERVER role adds to chassis.roles property.
 -Dchassis.coordinator.zookeeper.endpoint=master.address:2181 
 -Dchassis.storage.fs.default.name=hdfs://master.address/
Point to Master node because it has COORDINATION_SERVER role at the same time. It should be noted that by default this property point to Master node with default port. If you want to change port, you should override chassis.coordinator.zookeeper.endpoint with Additional Properties and clientPort with Additional Properties field in plug-in or edit the properties file that pointed in plug-in (more about properties).
 -Dchassis.storage.rdb.client.driver=com.mysql.jdbc.Driver 
 -Dchassis.storage.rdb.client.url=jdbc:mysql://address:port/name_of_db 
 -Dchassis.storage.rdb.username=user.name 
 -Dchassis.storage.rdb.password=user.password 
 -Dchassis.storage.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
RDB Properties that comes from Use External Data Base field. If this field not specified the same properties but with H2 database will take place.
 -Dadditional.property=some.overriden.value 
 -Danother.additional.property=some.concrite.value 
This is properties from Aditional Properties field in plug-in. It comes after any other properties that give you the oportunety to override any properties that specifies above.
Kernel starts and waits for Master node.
 ssh -f -i ssh.key.path.kernel [email protected] "cd runned_jagger; ./start.sh ./enviroment.properties '
    -Dchassis.roles=KERNEL 
    -Dchassis.storage.rdb.client.driver=com.mysql.jdbc.Driver 
    -Dchassis.storage.rdb.client.url=jdbc:mysql://address:port/name_of_db 
    -Dchassis.storage.rdb.username=user.name 
    -Dchassis.storage.rdb.password=user.password 
    -Dchassis.storage.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect 
    -Dchassis.coordinator.zookeeper.endpoint=master.address:2181 
    -Dchassis.storage.fs.default.name=hdfs://master.address/ 
    -Dadditional.property=some.overriden.value 
    -Danother.additional.property=some.concrite.value 
' > /dev/null 2>&1"
As we can see Kernel starts pretty much like Master. Except some moments.
 ssh -f -i ssh.key.path.kernel [email protected] "cd runned_jagger; ./start.sh ./enviroment.properties '
-f option execute command in daemon mode. So script continue to execute after Kernel starts.
    -Dchassis.roles=KERNEL 
As this node is Kernel only KERNEL role specify.
' > /dev/null 2>&1"
It means that we do not want to store or see a logout anywhere. It is not necessary. Passing logs to jnekins will take place anyway.
Agent starts and waits for Master node.
ssh -f -i agent.ssh.key.path [email protected] "cd runned_jagger; export path/to/java; ./start_agent.sh '
  	JAVA_OPTIONS 
  	-Dchassis.coordination.http.url=http://master.address:8089 
  	-Djmx.enabled=true 
  	-Djmx.services=localhost:9985,localhost:9754 
  	-Dadditional.property=some.overriden.value 
  	-Danother.additional.property=some.concrite.value 
' > /dev/null 2>&1"
Additional properties adds at the end like with Starting Master node. Line by Line.
ssh -f -i agent.ssh.key.path [email protected] "cd runned_jagger; export path/to/java; ./start_agent.sh '
Starts in daemon mode. Just execute start_agent.sh script with specific properties.
  	-Dchassis.coordination.http.url=http://master.address:8089 
Points to Master node with default port. If you want to change port, you should override chassis.coordination.http.url with Additional Properties and chassis.coordination.http.port with Additional Properties field in plug-in or edit properties file that pointed in plug-in (more about properties).
  	-Djmx.enabled=true 
Enable JMX or not. Taking from Use JMX field. If it is false, then monitoring information would not be collecting.
  	-Djmx.services=localhost:9985,localhost:9754 
If Use JMX field checked then jmx.services property should take place. Ports taking from Port(s) field.
' > /dev/null 2>&1"
The same meaning as in Starting Kernel.
This part consists of next steps:
- 
Copy reports scp [email protected]:"runned_jagger\*.xml runned_jagger\*.pdf runned_jagger\*.html" result
It copies every xml,pdf,html file that appears in runned_jagger path on the master machine to result path in the jenkins job workspace.
- 
Copy logs scp [email protected]:runned_jagger\*.log* result
Copy logs from node, zip log file(s) into one file. It comes for every jagger node, so all logs appear in result path in jenkins job workspace.
- 
Stop Agents ssh -i agent.ssh.key.path [email protected] "runned_jagger\stop_agent.sh"
Same as in deploying part.
- 
ZIP results cd result zip -9 report.zip *.pdf *.html *.xml
On this step every pdf,xml,html file zips in one file.