Upload
atlassian
View
2.679
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Making the Switch: One Team's Story of Adopting JIRA, FishEye, Eclipse & Mylyn Heather Mardis & Brian Tabox, Motorola
Citation preview
11
Making the Switch: One Team's Story of Adopting JIRA, FishEye, Eclipse and
2
Brian Tarbox, ! ! Principal Staff Engineer
Heather Mardis, ! ! Build & Release Engineer
Motorola
2
About Us
33
About Us• Motorola, Video On Demand
33
About Us• Motorola, Video On Demand
• Distributed Team• Boxborough, MA US• Beijing, China• Madrid, Spain• Natanya, Israel• ~100 engineers• ~15 doing java
33
About Us• Motorola, Video On Demand
• Distributed Team• Boxborough, MA US• Beijing, China• Madrid, Spain• Natanya, Israel• ~100 engineers• ~15 doing java
3
Motorola Video On Demand magic happens here…
3
Takeaways
44
Takeaways• Setup Perforce depot structure like JIRA Projects
44
Takeaways• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
44
Takeaways• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
44
Takeaways• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits
44
Takeaways• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits
• Identify your greatest pain points• What can my tools do to help?
44
Background• JIRA 4.0.x
• Upgraded easily from 3.13.x• Once the plug-ins were supported
• FishEye 2.0.2 • Provides integration with perforce
• Perforce 2009.2
• Eclipse 3.5, Galileo• p4wsad 2009.3 perforce plug-in and
Mylyn connector
• Atlassian Connector for Eclipse JIRA 2.1.0V20100408
• Mylyn
5
JIRA Adoption Lessons
6
JIRA Adoption Lessons• Stay close to out of the box
• More fields/transitions isnʼt always better• Simplifies upgrades
6
JIRA Adoption Lessons• Stay close to out of the box
• More fields/transitions isnʼt always better• Simplifies upgrades
• Plug-ins are valuable• Large Plug-in universe available
6
JIRA Adoption Lessons• Stay close to out of the box
• More fields/transitions isnʼt always better• Simplifies upgrades
• Plug-ins are valuable• Large Plug-in universe available
• Convert to JIRA using Pilot Projects• Gather user feedback• Establishing personal relationships between admin/developer simplifies fact finding• What works, what doesnʼt, what I want to do is…
6
JIRA and Perforce
7
• Setup your Perforce depot structure to match your JIRA Projects • JIRA Project = p4 depot folder• JIRA Component = p4 depot name• JIRA Version = p4 branch
JIRA and Perforce
7
FishEye and Perforce
8
• Six years of p4 history, too much to slurp by depot• By project/branch reduced overhead• Allowed removing uninteresting branches• Restarted, remember to clean up cache of old stuff
FishEye and Perforce
8
• Six years of p4 history, too much to slurp by depot• By project/branch reduced overhead• Allowed removing uninteresting branches• Restarted, remember to clean up cache of old stuff
FishEye and Perforce
8
• Six years of p4 history, too much to slurp by depot• By project/branch reduced overhead• Allowed removing uninteresting branches• Restarted, remember to clean up cache of old stuff
FishEye and Perforce
• FishEye and LoC can provide risk assessment
8
Tools Integration Issues
9
Tools Integration Issues• Learn the capabilities of the tool you
live in • your Java/Groovy/Scala editor, e.g.
Eclipse
9
Tools Integration Issues• Learn the capabilities of the tool you
live in • your Java/Groovy/Scala editor, e.g.
Eclipse
• Find the integration points between your pluginʼs plugins! • Mylyn – Eclipse – Perforce – JIRA• Some issues do arise
• Our BUG entry screen requires filling in a custom field, not supported from the JIRA/Eclipse integration
• We are contemplating a schema change to address it
9
Tools Integration Issues• Learn the capabilities of the tool you
live in • your Java/Groovy/Scala editor, e.g.
Eclipse
• Find the integration points between your pluginʼs plugins! • Mylyn – Eclipse – Perforce – JIRA• Some issues do arise
• Our BUG entry screen requires filling in a custom field, not supported from the JIRA/Eclipse integration
• We are contemplating a schema change to address it
• Identify your greatest pain points • lack of distribution of domain knowledge• see if your tools can be flexed in a way to
solve them • Mylyn as a training tool
• Preserve, then share context knowledge in the code base
9
Tool Integrations
10
perforce
eclipse IDE
FishEye
p4
FishEye
p4
Eclipse workspace
10
Using Eclipse with JIRA, Mylyn• Eclipse has become our standard editor
• Itʼs a powerful editor by itself but really shines with friends
• Combining Eclipse, JIRA and Mylyn results in a game changing development environment
• Use Your Exo-Cortex!11
11
Using Eclipse with JIRA, Mylyn• Eclipse has become our standard editor
• Itʼs a powerful editor by itself but really shines with friends
• Combining Eclipse, JIRA and Mylyn results in a game changing development environment
• Use Your Exo-Cortex!11
11
Just Eclipse
12
eclipse IDE
Eclipse workspace
12
Standard Eclipse View
13
Lots of packages
Lots of naviga0ng to find files
13
Standard Eclipse View
14
Lots of items in the outline view
14
Just Eclipse
15
eclipse IDEEclipse
workspace
Mylyn ContextMylyn task to disk or JIRA
Context and optionally task to disk
15
Crashworthiness• Prior to the 1960s automobiles (in the US) were not required to be
crashworthy.
• Crashing was not considered a standard “use” of a car, so how they behaved in a crash “didnʼt matter”
1616
Crashworthiness• Prior to the 1960s automobiles (in the US) were not required to be
crashworthy.
• Crashing was not considered a standard “use” of a car, so how they behaved in a crash “didnʼt matter”
• In 1965 the US Court of Appeals ruled:
1616
Crashworthiness• Prior to the 1960s automobiles (in the US) were not required to be
crashworthy.
• Crashing was not considered a standard “use” of a car, so how they behaved in a crash “didnʼt matter”
• In 1965 the US Court of Appeals ruled:
• “While automobiles are not made for the purpose of colliding with each other, a frequent and inevitable contingency of normal automobile use will result in collisions and injury-producing impacts.”
1616
Crashworthiness• Prior to the 1960s automobiles (in the US) were not required to be
crashworthy.
• Crashing was not considered a standard “use” of a car, so how they behaved in a crash “didnʼt matter”
• In 1965 the US Court of Appeals ruled:
• “While automobiles are not made for the purpose of colliding with each other, a frequent and inevitable contingency of normal automobile use will result in collisions and injury-producing impacts.”
• What the heck does that have to do with Eclipse?16
16
Mylyn – a task view for Eclipse
1717
Mylyn – a task view for Eclipse
17
Being interrupted is a standard use of an editor just like crashing is a standard use of a car!
17
Mylyn – a task view for Eclipse
17
Being interrupted is a standard use of an editor just like crashing is a standard use of a car!
Mylyn organizes what you are doing into tasks and contexts
17
Mylyn – a task view for Eclipse
17
Being interrupted is a standard use of an editor just like crashing is a standard use of a car!
Mylyn organizes what you are doing into tasks and contexts
When you switch tasks, Mylyn switches your Eclipse context for you
17
Local and Repository Tasks
18
You can create local tasks that live on your machine and are not shared
Or you can create tasks in your JIRA repository and these can be shared
18
JIRA Tasks
19
Standard connec0on to your JIRA repository
Lots of op0ons, including automa0c 0me tracking
19
Create a new Task
2020
Create a new Task
2020
Task Focus adds by removing
2121
Building a Context
22
Methods you visit get added to the context
22
Flashback
23
Remember, this is what you used to see
23
Switching Tasks is the real payoff
2424
Switching Tasks is the real payoff
24
This is the task we’ve been working on
24
Switching Tasks is the real payoff
24
This is the task we’ve been working on
This is the task we’re switching to
24
Just Eclipse
25
eclipse IDEEclipse
workspace
Mylyn Context
Mylyn Task
25
Just Eclipse
25
eclipse IDEEclipse
workspace
Mylyn Context
Mylyn Task
Load new task
25
Just Eclipse
25
eclipse IDEEclipse
workspace
Mylyn Context
Mylyn Task
Load new taskGet context for that task
25
Just Eclipse
25
eclipse IDEEclipse
workspace
Mylyn Context
Mylyn Task
Load new taskGet context for that task
Load classes, methods for that context
25
Switching tasks switches context
26
By switching tasks we get a different set of open files, along with the memory of which methods we’d been working on
26
Sharing Contexts
27
eclipse IDEEclipse
workspace
If you create your tasks as JIRA Tasks, and save your Context in the Task, then others can share your Task Context
27
Integrating Mylyn With JIRA
28
Instead of creating a task, use a query to get tasks directly from the JIRA repository
28
Integrating Mylyn With JIRA
28
Instead of creating a task, use a query to get tasks directly from the JIRA repository
28
Finding the JIRA task
29
The query returns a list of tasks, from which you can pick the one to use
29
Store Context in JIRA Task
3030
Now all the tools are Cooperating
31
perforce
eclipse IDE
FishEye
p4
FishEye
p4
Eclipse workspace
31
Other things you can add
32
ANach a log file of the system execu0ng that verb
32
The problem• Weʼre all too busy
• Our systems are all too complex
• Often only one person in a group knows how any given part of the system works
• Being indispensable is a two edged sword!
3333
The problem• Weʼre all too busy
• Our systems are all too complex
• Often only one person in a group knows how any given part of the system works
• Being indispensable is a two edged sword!
33
“It will take me longer to explain it to you than to just do it myself”
33
Using JIRA/Mylyn as a training tool
3434
Using JIRA/Mylyn as a training tool• Create the JIRA Issue for a verb
3434
Using JIRA/Mylyn as a training tool• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the system
3434
Using JIRA/Mylyn as a training tool• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the system
• Visit the methods with those classes that matter
3434
Using JIRA/Mylyn as a training tool• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the system
• Visit the methods with those classes that matter
• Eclipse/Mylyn remembers the places you have visited
3434
Using JIRA/Mylyn as a training tool• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the system
• Visit the methods with those classes that matter
• Eclipse/Mylyn remembers the places you have visited
• Attach the content to the JIRA issue
3434
Using JIRA/Mylyn as a training tool• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the system
• Visit the methods with those classes that matter
• Eclipse/Mylyn remembers the places you have visited
• Attach the content to the JIRA issue
3434
Using JIRA/Mylyn as a training tool• Create the JIRA Issue for a verb
• Open all of the classes that are used in executing that part of the system
• Visit the methods with those classes that matter
• Eclipse/Mylyn remembers the places you have visited
• Attach the content to the JIRA issue
• You now have a task based training library!34
34
JIRA/Mylyn Training Library
3535
Since this is an Atlassian Summit…
3636
Since this is an Atlassian Summit…
36
Heather, I’m busy, can you handle this bug?
36
In Summary - Takeaways
3737
In Summary - Takeaways• Setup Perforce depot structure like JIRA Projects
3737
In Summary - Takeaways• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
3737
In Summary - Takeaways• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
3737
In Summary - Takeaways• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits• Find pluginʼs plugins integrations! (Mylyn – Perforce – JIRA)
3737
In Summary - Takeaways• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits• Find pluginʼs plugins integrations! (Mylyn – Perforce – JIRA)
• Identify your greatest pain points• What can my tools do to help? (Mylyn as a training tool).
3737
In Summary - Takeaways• Setup Perforce depot structure like JIRA Projects
• JIRA/Perforce/FishEye integration tips
• Convert to JIRA using Pilot Projects for path finding
• Tool Integration Benefits• Find pluginʼs plugins integrations! (Mylyn – Perforce – JIRA)
• Identify your greatest pain points• What can my tools do to help? (Mylyn as a training tool).
• 37
37
Mylyn
P4
Demonstration
38
Questions?• Brian [email protected]
• Brian's Blog: http://briantarbox.blogspot.com/
• Heather Mardis [email protected]
• http://www.log4jfugue.org/press.html
• http://www.pragprog.com/magazines39
39
Backup Material• Eclipse – Mylyn – JIRA setup instructions
• Eclipse – Mylyn requirements for loading context from JIRA
• JIRA plug-ins We Use
• Demo Environment
4040
Eclipse – Mylyn - JIRA• Eclipse Galilleo comes pre-installed with Mylyn
• To add the JIRA Mylyn connector• Ensure you have the most up to date Mylyn, check for updates• Select Task ʻadd repositoryʼ, choose ʻInstall More Connectorsʼ• Select JIRA from the Mylyn Connector Discovery screen• Follow the install instructions
4141
Eclipse – Mylyn - JIRA• Eclipse Galilleo comes pre-installed with Mylyn
• To add the JIRA Mylyn connector• Ensure you have the most up to date Mylyn, check for updates• Select Task ʻadd repositoryʼ, choose ʻInstall More Connectorsʼ• Select JIRA from the Mylyn Connector Discovery screen• Follow the install instructions
4141
Load JIRA context instructions• Assumption: Eclipse-Mylyn-JIRA-
perforce properly setup
• Eclipse project name, must be the same• Establish a naming convention for potentially
ʻsharedʼ Issues in JIRA and Eclipse to facilitate this
• Use the ʻenvironmentʼ JIRA field to note the project name and source info
• In our example• demo-sc is our Eclipse project• But it is defined to point to the demo-sc/vodman
folder of the p4 client workspace
• Source base for the set of files, must be the same
• If both users have perforce workspaces, it must be for the same set of files and from the same starting directory
• JIRA connection string, must use same http: string
• Mylyn context zip files show the required name, for debug• stored in the eclipse workspace
• .metadata/.mylyn/contexts/http<link name plus pid>.zip
4242
JIRA plug-ins We Use
4343
Demo Environment• Windows XP laptop (2G memory,
Dell Precision M65)
• 320G Iomega external Drive
• VM Player on Windows, Ubuntu VM• Perforce
• Perforce database restored from production checkpoint
• Limited set of archived sources but entire set of db.* files (big!)
• FishEye
• Similar to production created against the smaller set of archived p4 data
• JIRA• Installed on XP• Files live on the external drive
• Eclipse• Connected to JIRA, p4 (beta p4wasd)
4444