Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-14240

Upgrade without manual (re)placement of customized JSPs/Templates/Plugins, etc

      So,

      Once upon a time, I came across the JIRA footer at an open source project. I clicked through and played around. And it was good. To say the least. I learned some of the ins and outs and eventually was able to leverage that knowledge thanks to my fabulous company purchasing an Enterprise license and adopting it within EVERY department. I'm so excited that our Marketing people are using the word "ticket" outside of a concert venue.

      Sadly, I'm not a *nix ninja. I might be that white belt in the corner, quivering in a pool of his own... output... But who can, when nobody's putting a lot of pressure on him, put up a decent enough fight.

      As my organization and I have grown with JIRA, I've found myself with the cross hairs of many a UNIX admin on my face due to my attempt at scripting a file that basically accomodates my workflow as follows:

      Directory Structure

      • /var/www/jira/ symlinks to /var/www/alljiras/jira3121 or whatever's newest
      • I have a structure set up in /var/www/jira/alljiras/common that contains lovely things like
        • A directory of custom images (not at all to imply Atlassian's selection of graphical representations are anything but fabulous)
        • A custom directory of email templates and the accompanying mappings file.
        • A bunch of plugins to be dumped in WEB-INF/lib and their corresponding (configured) properties files to be dumped in WEB-INF/classes
      • Some other files that need to be overwritten (such as within secure or other JSPs)
      • A list of morally objectionable newsgroup archives detailing how individuals of all types may pass their time using three vegetables, a bottle of Dr. Pepper and 3 sticks of gum

      Actually using it

      So, I have a common directory that has files I know and love, and I'm all for symlinking (after telling tomcat in its server.xml file that I'm OK with that). So, here I sit, with a fresly-untarred version of JIRA 3.12.1 in /var/www/jira/alljiras/jira3121 and a quasi-proprietary but arguably-logical organization of files in /var/www/jira/alljiras/common. Now, since I'm really giving my ln -s skills a run for their money, I've devised a script to go through and replace some of the more custom aspects of my configuration, such as:

      • Symlinking my own email directory to WEB-INF/classes/templates/email as well as the email-template-id-mappings-or-whatever.xml file.
      • Adding my own (aforementioned) spiffy images directory
      • A few other visual tweaks on files that exist
      • Overwriting (to the dismay of every Computer Science professor EVER) the config XML files (such as web, server, jira-application.properties, etc. etc.) with these "common" files.
        • Crossing my fingers that you crazy Atlassian folks didn't completely redesign the schema and cause life as we know it to vanish in a puff of logic.
      • Copying all the plugins to the appropriate lib directories
        • ...and their config files in their appropriate directoes.

      Making it less homicidally awful...

      Now, several thoughts crossed my mind in this implementation,

      1. Maybe I could just overrwrite the files after doing some sort of visual confirmation or diff that the destination files are, by-and-large unchanged. *(This is what i sort of do, via removing, copying/symlinking, etc)
      2. If I was really fancy, maybe I could do something with diff and patch or some other text editing tool, based on the complexity of the file I wanted to grab.
      3. Hiring an intern, with his only job description being the management of our (arguably VERY customized) JIRA configuration and bringing me exotic coffee beans from occasion, along with three indigenous birds from their respective regions.

      Sadly, interns aren't all they're cracked up to be, and I think that a good investment of time to support enterprises who really customize JIRA up the wazoo (sorry for the coarse language) would be to have a "patch" system similar to your external-src directory.

      If files can be {{patch}}ed somewhat intelligently (and you had bells, whistles and other epilepsy-inducing UI elements notifying users of a major change that would require a re-write) using an automated system, that'd be great.

      I mean, even if we could set up a *common* JIRA directory structure with just the files that we changed (bonus points for making a script that would run and determine these changed files and send them to this *common* directory store), that would be a great first step.

      And if we could have your talented team of developers come up with a way to generate patch-y esque {{diff}}s from this structure that could be injected into future JIRA instances, that'd be great too.

      Of course, If I was Billy Bugfiler who had nothing better to do than whine about implementations at present, I'd suggest a slightly more modular approach to customizing templates and having them persist through version upgrades. Or maybe having more configuration items captured in the XML backup/restore procedure.

      The point of all this babble...

      To summarize, it'd be swell if there could be some developments made as a part of JIRA or as a "plug in" that would permit users who heavily customize various aspects of their configuration to retain these changes through upgrades (within – of course – valid upgrade versions that don't employ completely new logic) and to apply this logic to brand-new installs. Even if you just provide a "makeJIRAPatchFile" and "applyJIRAPatchFile" scripts with some Atlassian Magic and leave us XML-fiddlers on our own to make our own scripts using these resources, I think it would be a great help and would assist in rapid adoption of your new (and much appreciated/anticipated/kick-ass) releases.

      Thanks, ladies + gents!


      Tim Feeley // MANHUNT Product Manager
      Online Buddies, Inc // tfeeley@online-buddies.com

            [JRASERVER-14240] Upgrade without manual (re)placement of customized JSPs/Templates/Plugins, etc

            AntonA added a comment -

            Hi Tim,

            Thanks for your feedback.

            Even more ideal would be to give ADMINS the ability to customize the layout of issue pages

            Regarding this, please see my comment:
            http://jira.atlassian.com/browse/JRA-14259?focusedCommentId=100011#action_100011

            Perhaps the action item from this resolution would be a confluence page (which, I am in the process of writing internally and would be happy to share) discussing some of the ways developers can upgrade JIRA less painfully.

            We would really appreciate if you share your experience and what you have leaned in the JIRA Community space:
            http://confluence.atlassian.com/display/JIRACOM/Home

            I think this particular "container" issue may be closed

            Thank you, we do prefer to break down features into smaller, useful imporvements, as this makes them easier to schedule. Having said this, please have a look at the following document which explains the way new feature and improvement requests are scheduled:
            http://confluence.atlassian.com/display/DEV/Implementation+of+New+Features+and+Improvements

            Cheers,
            Anton

            AntonA added a comment - Hi Tim, Thanks for your feedback. Even more ideal would be to give ADMINS the ability to customize the layout of issue pages Regarding this, please see my comment: http://jira.atlassian.com/browse/JRA-14259?focusedCommentId=100011#action_100011 Perhaps the action item from this resolution would be a confluence page (which, I am in the process of writing internally and would be happy to share) discussing some of the ways developers can upgrade JIRA less painfully. We would really appreciate if you share your experience and what you have leaned in the JIRA Community space: http://confluence.atlassian.com/display/JIRACOM/Home I think this particular "container" issue may be closed Thank you, we do prefer to break down features into smaller, useful imporvements, as this makes them easier to schedule. Having said this, please have a look at the following document which explains the way new feature and improvement requests are scheduled: http://confluence.atlassian.com/display/DEV/Implementation+of+New+Features+and+Improvements Cheers, Anton

            tim feeley added a comment -

            For example, JRA-7266 requests the ability to customise the e-mail templates such that you will not need to patch the files.

            I definitely like this idea – I added some comments to that ticket.

            Implementing JRA-10733 would help with managing plugins during the upgrade.

            Great for plugins.

            Are you keeping the custom images in its own sub-folder? This could make them much easier to move into the new webapp.

            Yes, I have /var/www/common/images that are symlinked to the JIRA folder. Symlinking is turned off by default. I'm not a developer so I don't know if this is a security concern, but nonetheless, I opened JRA-14258 to address that.

            At the moment, however, I am not too sure what we can realistically deliver that will solve the problem of customised JSPs. That trouble is that anything could be customised in which ever way. It is possible to keep the JSPs (and other patched text or XML files) under version control, then creating diffs against the old stock version of JIRA and applying them to the new release. I am not sure how much this will help, as someone still needs to check manually that the applied diffs still work and do not break the system.

            I think this is part of an issue that a lot of the styles in JIRA are hard-coded and not customizable – aside from the top bar and some CSS file modification, the users don't have control over the display. It seems like JRA-9950 starts to address this. If we could have additional variables (or even if it's an XML file that is used as a skin reference) that were available to customize things like color, highlight color, images, layout, etc., That would be ideal.

            Even more ideal would be to give ADMINS the ability to customize the layout of issue pages, etc., as they are able to customize dashboards - I have submitted a ticket JRA-14259 that addresses that particular aspect of my request (eep - sorry for so many tickets; figured they'd be easier to track/vote/laugh at this way)

            As I have mentioned, at the moment, especially given the number of very popular issues that we are concenrating on, I am not sure if we can come up with a solution that will work for most people. Do you have any concrete suggestions about what we could do? At the moment, I am leaning towards resolving this issue and asking you to vote for the other issues I have mentioned, which address aspects of upgrade pain points. Do you mind if we do this?

            I think this particular "container" issue may be closed - and perhaps the other items upon which it touches should be addressed.

            Perhaps the action item from this resolution would be a confluence page (which, I am in the process of writing internally and would be happy to share) discussing some of the ways developers can upgrade JIRA less painfully.

            Thanks for the time!

            – Tim

            tim feeley added a comment - For example, JRA-7266 requests the ability to customise the e-mail templates such that you will not need to patch the files. I definitely like this idea – I added some comments to that ticket. Implementing JRA-10733 would help with managing plugins during the upgrade. Great for plugins. Are you keeping the custom images in its own sub-folder? This could make them much easier to move into the new webapp. Yes, I have /var/www/common/images that are symlinked to the JIRA folder. Symlinking is turned off by default. I'm not a developer so I don't know if this is a security concern, but nonetheless, I opened JRA-14258 to address that. At the moment, however, I am not too sure what we can realistically deliver that will solve the problem of customised JSPs. That trouble is that anything could be customised in which ever way. It is possible to keep the JSPs (and other patched text or XML files) under version control, then creating diffs against the old stock version of JIRA and applying them to the new release. I am not sure how much this will help, as someone still needs to check manually that the applied diffs still work and do not break the system. I think this is part of an issue that a lot of the styles in JIRA are hard-coded and not customizable – aside from the top bar and some CSS file modification, the users don't have control over the display. It seems like JRA-9950 starts to address this. If we could have additional variables (or even if it's an XML file that is used as a skin reference) that were available to customize things like color, highlight color, images, layout, etc., That would be ideal. Even more ideal would be to give ADMINS the ability to customize the layout of issue pages, etc., as they are able to customize dashboards - I have submitted a ticket JRA-14259 that addresses that particular aspect of my request (eep - sorry for so many tickets; figured they'd be easier to track/vote/laugh at this way) As I have mentioned, at the moment, especially given the number of very popular issues that we are concenrating on, I am not sure if we can come up with a solution that will work for most people. Do you have any concrete suggestions about what we could do? At the moment, I am leaning towards resolving this issue and asking you to vote for the other issues I have mentioned, which address aspects of upgrade pain points. Do you mind if we do this? I think this particular "container" issue may be closed - and perhaps the other items upon which it touches should be addressed. Perhaps the action item from this resolution would be a confluence page (which, I am in the process of writing internally and would be happy to share) discussing some of the ways developers can upgrade JIRA less painfully. Thanks for the time! – Tim

            AntonA added a comment -

            Hi Tim,

            Thank you for your kind words and the detailed description of the problem. I am glad you find JIRA useful. I can definitely see that upgrading a customised JIRA can be a hassle.

            There are several existing issues that address parts of what you refer to.

            For example, JRA-7266 requests the ability to customise the e-mail templates such that you will not need to patch the files.
            Implementing JRA-10733 would help with managing plugins during the upgrade.

            Are you keeping the custom images in its own sub-folder? This could make them much easier to move into the new webapp.

            At the moment, however, I am not too sure what we can realistically deliver that will solve the problem of customised JSPs. That trouble is that anything could be customised in which ever way. It is possible to keep the JSPs (and other patched text or XML files) under version control, then creating diffs against the old stock version of JIRA and applying them to the new release. I am not sure how much this will help, as someone still needs to check manually that the applied diffs still work and do not break the system.

            As I have mentioned, at the moment, especially given the number of very popular issues that we are concenrating on, I am not sure if we can come up with a solution that will work for most people. Do you have any concrete suggestions about what we could do?

            At the moment, I am leaning towards resolving this issue and asking you to vote for the other issues I have mentioned, which address aspects of upgrade pain points. Do you mind if we do this?

            Cheers,
            Anton

            AntonA added a comment - Hi Tim, Thank you for your kind words and the detailed description of the problem. I am glad you find JIRA useful. I can definitely see that upgrading a customised JIRA can be a hassle. There are several existing issues that address parts of what you refer to. For example, JRA-7266 requests the ability to customise the e-mail templates such that you will not need to patch the files. Implementing JRA-10733 would help with managing plugins during the upgrade. Are you keeping the custom images in its own sub-folder? This could make them much easier to move into the new webapp. At the moment, however, I am not too sure what we can realistically deliver that will solve the problem of customised JSPs. That trouble is that anything could be customised in which ever way. It is possible to keep the JSPs (and other patched text or XML files) under version control, then creating diffs against the old stock version of JIRA and applying them to the new release. I am not sure how much this will help, as someone still needs to check manually that the applied diffs still work and do not break the system. As I have mentioned, at the moment, especially given the number of very popular issues that we are concenrating on, I am not sure if we can come up with a solution that will work for most people. Do you have any concrete suggestions about what we could do? At the moment, I am leaning towards resolving this issue and asking you to vote for the other issues I have mentioned, which address aspects of upgrade pain points. Do you mind if we do this? Cheers, Anton

              Unassigned Unassigned
              2b4372e69789 tim feeley
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: