Derby
  1. Derby
  2. DERBY-4857

Utilize the SOAP API to fetch JIRA issue list for release notes generation

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 10.7.1.1
    • Fix Version/s: 10.7.1.1
    • Component/s: Build tools
    • Labels:
      None

      Description

      Somewhat simplified, the release manager (RM) must currently perform the following manual steps to feed the release note generate the data it needs:
      a) Create manual JIRA filter to select issues addressed by the release.
      b) Save the filter result to disk as XML.
      c) Write/modify the XML parser to be able to parse the report.
      d) Determine and record all JIRA release note attachment ids for the issues requiring a release note.

      By using the current version of the SOAP API (3.13.5), steps (b) to (d) can be removed.

      1. derby-4857-6a-client_tweaks.diff
        10 kB
        Kristian Waagan
      2. derby-4857-5a-minor_tweaks.diff
        1 kB
        Kristian Waagan
      3. derby-4857-3b-jirasoap_relnotesgen_changes.diff
        28 kB
        Kristian Waagan
      4. derby-4857-4b-jirasoap_ant_integration.diff
        8 kB
        Kristian Waagan
      5. RELEASE-NOTES.html
        31 kB
        Lily Wei
      6. derby-4857-4a-jirasoap_ant_integration.diff
        8 kB
        Kristian Waagan
      7. derby-4857-4a-jirasoap_ant_integration.stat
        0.2 kB
        Kristian Waagan
      8. derby-4857-3a-jirasoap_relnotesgen_changes.diff
        26 kB
        Kristian Waagan
      9. derby-4857-3a-jirasoap_relnotesgen_changes.stat
        0.2 kB
        Kristian Waagan
      10. derby-4857-2a-jirasoap_maven_client.diff
        280 kB
        Kristian Waagan
      11. derby-4857-2a-jirasoap_maven_client.stat
        0.7 kB
        Kristian Waagan
      12. derby-4857-1a-jirasoap_relnotes.stat
        1 kB
        Kristian Waagan
      13. derby-4857-1a-jirasoap_relnotes.diff
        296 kB
        Kristian Waagan

        Activity

        Hide
        Kristian Waagan added a comment -

        Closing issue.
        I have decided to not backport, because there has been a lot of other changes in the build/release system. This fix isn't dependent on those other fixes, but to me it makes sense to have a clear cut between where we use new functionality and where we use old mechanisms. This affects documentation too (mostly wiki).
        The release manager(s) should be aware that several release process tasks have changed in 10.7.

        Show
        Kristian Waagan added a comment - Closing issue. I have decided to not backport, because there has been a lot of other changes in the build/release system. This fix isn't dependent on those other fixes, but to me it makes sense to have a clear cut between where we use new functionality and where we use old mechanisms. This affects documentation too (mostly wiki). The release manager(s) should be aware that several release process tasks have changed in 10.7.
        Hide
        Kristian Waagan added a comment -

        Marking as fixed.

        If backporting, see also 1032576 (may not be required since a branch has already been created).

        Show
        Kristian Waagan added a comment - Marking as fixed. If backporting, see also 1032576 (may not be required since a branch has already been created).
        Hide
        Kristian Waagan added a comment -

        Attaching patch 6a, which contains some minor tweaks and fixes for the SOAP client.
        Fixed an error in the release ancestry chain computation logic, corrected typo(s) and renamed a variable.
        I moved the release date formatting code into DerbyVersion, added a getFormattedReleaseDate() method and changed the toString() method.

        Committed to trunk with revision 1030471.

        Show
        Kristian Waagan added a comment - Attaching patch 6a, which contains some minor tweaks and fixes for the SOAP client. Fixed an error in the release ancestry chain computation logic, corrected typo(s) and renamed a variable. I moved the release date formatting code into DerbyVersion, added a getFormattedReleaseDate() method and changed the toString() method. Committed to trunk with revision 1030471.
        Hide
        Kristian Waagan added a comment -

        Thanks for testing the client further, Rick.
        Regarding your comments:
        a) I added the directory to the svn:ignore property of tools/release/jirasoap. Note that the directory is deleted when/if you run 'ant clean' from tools/release.

        b) You will only see those numbers when you are downloading stuff you need, but that you don't have locally. In any case, adding '--batch-mode' to the exec task made them go away (maven will still notify you of downloads, but not use the download meter).

        I also modified the printout regarding the summary file and the exclude list (which isn't used any more).

        Attaching patch 5a, which addresses the issues above. Committed to trunk with revision 1030383.

        Show
        Kristian Waagan added a comment - Thanks for testing the client further, Rick. Regarding your comments: a) I added the directory to the svn:ignore property of tools/release/jirasoap. Note that the directory is deleted when/if you run 'ant clean' from tools/release. b) You will only see those numbers when you are downloading stuff you need, but that you don't have locally. In any case, adding '--batch-mode' to the exec task made them go away (maven will still notify you of downloads, but not use the download meter). I also modified the printout regarding the summary file and the exclude list (which isn't used any more). Attaching patch 5a, which addresses the issues above. Committed to trunk with revision 1030383.
        Hide
        Rick Hillegas added a comment -

        Thanks, Kristian. What is checked in works well. A couple small issues:

        1) After running the genrelnotes target, I expected to see RELEASE-NOTES.html checked out in my code client. It was. That's good. However, "svn status" also showed the following artifact. I think that the ignore bit needs to be set on this artifact:

        ? tools/release/jirasoap/target

        2) The genrenotes target is less chatty. That's good. However, maven is still coughing up a long list of numbers and question marks. These don't mean much to me. Can they be suppressed too? See the output included below.

        -----------

        Here is the new script which I use to drive release notes generation:

        #! /bin/bash
        #

        1. generate release notes
          #
        2. $1 jira password
        3. $2 filter id
        4. $3 release version
          #
        5. E.g.:
          #
        6. generateReleaseNotes blahblah 12314683 10.7.1.0
          #

        echo If the script hangs, you may need to get off your company VPN.

        jiraUser=rhillegas
        jiraPassword=$1
        filterID=$2
        releaseVersion=$3
        reportDir=$HOME/junk/$releaseVersion-relnotes

        cd $BRANCH/tools/release

        ant -Djira.user=$jiraUser -Djira.password=$jiraPassword -Djira.filter.id=$filterID -Drelease.version=$releaseVersion -Drelnotes.src.reports=$reportDir genrelnotes

        -------------------------

        Here is the output of running that script:

        If the script hangs, you may need to get off your company VPN.
        Buildfile: build.xml

        check-properties:

        missing-properties:

        maven-exec-windows:

        maven-exec-unix:

        genrelnotes:
        [exec] Downloading: http://repo1.maven.org/maven2/javax/mail/mail/1.4.1/mail-1.4.1.pom
        [exec] 995/?
        [exec] Downloading: http://repo1.maven.org/maven2/javax/activation/activation/1.1/activation-1.1.pom
        [exec] 1058/?
        [exec] Downloading: http://repo1.maven.org/maven2/javax/activation/activation/1.1/activation-1.1.jar
        [exec] Downloading: http://repo1.maven.org/maven2/javax/mail/mail/1.4.1/mail-1.4.1.jar
        [exec] 497/?
        [exec] 1008/?1520/?2032/?2544/?3056/?3568/?4072/?4584/?5095/?5607/?6118/?6630/?7142/?7654/?8164/?8676/?9187/?9699/?9859/?10371/?10882/?11394/?11906/?12451/?13053/?13710/?14222/?14734/?15287/?15836/?16348/?16711/?17165/?17392/?17933/?18446/?18998/?19552/?20063/?20575/?21086/?21601/?22158/?22730/?23275/?23786/?24298/?24811/?25356/?25899/?26428/?26997/?27556/?28151/?28711/?29258/?29769/?30281/?30793/?31304/?31816/?32327/?32887/?33433/?33944/?34398/?34910/?35421/?35933/?36445/?36893/?37443/?37953/?38530/?39077/?39625/?40237/?40795/?41306/?41846/?42358/?42869/?43381/?43893/?44404/?44915/?45474/?46030/?46554/?47116/?47578/?48140/?48707/?49188/?49755/?50330/?50914/?51010/?51574/?52084/?52596/?53158/?53728/?54293/?54853/?55365/?55973/?56560/?57127/?57683/?58290/?58802/?59313/?59825/?60336/?60848/?61360/?61576/?62088/?62599/?63111/?63623/?64135/?64471/?64982/?65497/?66008/?66520/?67031/?67543/?68054/?68567/?69026/?69539/?70051/?70563/?71075/?71587/?72103/?72616/?73127/?73639/?74151/?74662/?75174/?75686/?76232/?76744/?77255/?77487/?77999/?78555/?79067/?79620/?80133/?80471/?80983/?81495/?82006/?82518/?83031/?83542/?84054/?84470/?84982/?85495/?85951/?86463/?86976/?87488/?87999/?88511/?89023/?89534/?90047/?90593/?91104/?91659/?92172/?92760/?93272/?93592/?94145/?94658/?95171/?95683/?96194/?96530/?97041/?97553/?98065/?98578/?99089/?99601/?100112/?100626/?100874/?101386/?101899/?102355/?102866/?103378/?103889/?104401/?104913/?105424/?105936/?106479/?106990/?107540/?108052/?108603/?109114/?109664/?110176/?110687/?111283/?111795/?112385/?112898/?113410/?113922/?114497/?115009/?115520/?115666/?116220/?116776/?117287/?117775/?118286/?118638/?119151/?119607/?120118/?120638/?121183/?121694/?122249/?122760/?123316/?123827/?124339/?124851/?125363/?125918/?125990/?126502/?127060/?127573/?128085/?128598/?129110/?129621/?130133/?130646/?131159/?131672/?132183/?132695/?133207/?133719/?134230/?134743/?135254/?135765/?136224/?136735/?137255/?137774/?138286/?138798/?139310/?139821/?140334/?140846/?141358/?141870/?142382/?142470/?142982/?143548/?144060/?144617/?145130/?145642/?146215/?146423/?146728/?147239/?147751/?148263/?148775/?149334/?149846/?150358/?150957/?151468/?152030/?152542/?152998/?153554/?153825/?154387/?154899/?155192/?155707/?156264/?156775/?157337/?157952/?158463/?158975/?159486/?159998/?160510/?161021/?161532/?162044/?162595/?163106/?163662/?164224/?164736/?165311/?165822/?166386/?166898/?167409/?167954/?168511/?169023/?169570/?170122/?170634/?171229/?171776/?172289/?172802/?173313/?173824/?174336/?174849/?175360/?175871/?176384/?176897/?177408/?177922/?178434/?178946/?179242/?179754/?180267/?180483/?180684/?181196/?181710/?182262/?182817/?183329/?183840/?184352/?184864/?185375/?185887/?186399/?186854/?187402/?187914/?187986/?188496/?189042/?189465/?190019/?190530/?191139/?191651/?192208/?192719/?193053/?193594/?194106/?194617/?195165/?195677/?196189/?196741/?197253/?197803/?198314/?198474/?199020/?199530/?200036/?200548/?201100/?201540/?202051/?202563/?203075/?203587/?204040/?204553/?205065/?205577/?206130/?206642/?207154/?207666/?208178/?208729/?209282/?209794/?210306/?210818/?211330/?211842/?212387/?212900/?213412/?213924/?214435/?214644/?214644/? 503/?214644/? 1015/?214644/? 1527/?214644/? 2038/?214644/? 2550/?214644/? 3062/?214644/? 3573/?214644/? 4077/?215155/? 4077/?215667/? 4077/?216090/? 4077/?216602/? 4077/?217149/? 4077/?217616/? 4077/?218232/? 4077/?218744/? 4077/?219256/? 4077/?219768/? 4077/?220280/? 4077/?220615/? 4077/?221068/? 4077/?221612/? 4077/?222181/? 4077/?222734/? 4077/?223245/? 4077/?223757/? 4077/?224315/? 4077/?224876/? 4077/?225440/? 4077/?225996/? 4077/?226508/? 4077/?226654/? 4077/?227167/? 4077/?227680/? 4077/?228192/? 4077/?228705/? 4077/?229217/? 4077/?229730/? 4077/?230243/? 4077/?230755/? 4077/?231266/? 4077/?231777/? 4077/?232289/? 4077/?232801/? 4077/?233313/? 4077/?233824/? 4077/?234336/? 4077/?234848/? 4077/?235361/? 4077/?235874/? 4077/?236386/? 4077/?236802/? 4077/?237313/? 4077/?237764/? 4077/?238277/? 4077/?238789/? 4077/?239300/? 4077/?239812/? 4077/?240362/? 4077/?240906/? 4077/?241417/? 4077/?241928/? 4077/?242466/? 4077/?242990/? 4077/?243502/? 4077/?244014/? 4077/?244086/? 4077/?244597/? 4077/?245109/? 4077/?245621/? 4077/?246184/? 4077/?246696/? 4077/?247208/? 4077/?247232/? 4077/?247744/? 4077/?248347/? 4077/?248858/? 4077/?249406/? 4077/?249961/? 4077/?250472/? 4077/?251037/? 4077/?251595/? 4077/?252153/? 4077/?252720/? 4077/?253281/? 4077/?253794/? 4077/?254317/? 4077/?254813/? 4077/?255324/? 4077/?255872/? 4077/?256427/? 4077/?256939/? 4077/?257450/? 4077/?257962/? 4077/?258473/? 4077/?258985/? 4077/?259497/? 4077/?260053/? 4077/?260564/? 4077/?261125/? 4077/?261637/? 4077/?262131/? 4077/?262131/? 4588/?262131/? 5100/?262131/? 5612/?262131/? 6164/?262131/? 6839/?262131/? 7351/?262131/? 7862/?262131/? 8419/?262131/? 8971/?262131/? 9489/?262131/? 10000/?262131/? 10160/?262642/? 10160/?263153/? 10160/?263716/? 10160/?264228/? 10160/?264740/? 10160/?265075/? 10160/?265657/? 10160/?266247/? 10160/?266670/? 10160/?267208/? 10160/?267786/? 10160/?268210/? 10160/?268625/? 10160/?269164/? 10160/?269715/? 10160/?270257/? 10160/?270769/? 10160/?271311/? 10160/?271819/? 10160/?272277/? 10160/?272788/? 10160/?273329/? 10160/?273874/? 10160/?274385/? 10160/?274896/? 10160/?275408/? 10160/?275919/? 10160/?276432/? 10160/?276943/? 10160/?277455/? 10160/?277965/? 10160/?278518/? 10160/?279072/? 10160/?279615/? 10160/?280172/? 10160/?280717/? 10160/?281261/? 10160/?281773/? 10160/?282284/? 10160/?282795/? 10160/?283375/? 10160/?283931/? 10160/?284484/? 10160/?284995/? 10160/?285561/? 10160/?286102/? 10160/?286614/? 10160/?287161/? 10160/?287747/? 10160/?288258/? 10160/?288853/? 10160/?289351/? 10160/?289862/? 10160/?290443/? 10160/?290954/? 10160/?291540/? 10160/?292099/? 10160/?292659/? 10160/?293209/? 10160/?293721/? 10160/?294233/? 10160/?294745/? 10160/?295257/? 10160/?295768/? 10160/?296310/? 10160/?296860/? 10160/?297410/? 10160/?297960/? 10160/?298510/? 10160/?299022/? 10160/?299572/? 10160/?299852/? 10160/?300434/? 10160/?300945/? 10160/?301369/? 10160/?301881/? 10160/?302392/? 10160/?302816/? 10160/?303327/? 10160/?303839/? 10160/?304262/? 10160/?304774/? 10160/?305284/? 10160/?305708/? 10160/?306220/? 10160/?306672/? 10160/?307184/? 10160/?307695/? 10160/?308207/? 10160/?308749/? 10160/?309261/? 10160/?309772/? 10160/?310333/? 10160/?310906/? 10160/?311418/? 10160/?311930/? 10160/?312442/? 10160/?312953/? 10160/?313492/? 10160/?314069/? 10160/?314582/? 10160/?315093/? 10160/?315606/? 10160/?316116/? 10160/?316629/? 10160/?317140/? 10160/?317459/? 10160/?317459/? 10672/?317459/? 11184/?317459/? 11695/?317459/? 12207/?317459/? 12719/?317459/? 13231/?317459/? 13795/?317459/? 14366/?317459/? 14878/?317459/? 15389/?317459/? 15901/?317459/? 16459/?317459/? 16875/?317459/? 17329/?317459/? 17545/?317971/? 17545/?318481/? 17545/?319092/? 17545/?319653/? 17545/?320252/? 17545/?320809/? 17545/?321320/? 17545/?321918/? 17545/?322469/? 17545/?323084/? 17545/?323647/? 17545/?323753/? 17545/?324359/? 17545/?324915/? 17545/?325525/? 17545/?326037/? 17545/?326605/? 17545/?327010/? 17545/?327561/? 17545/?328072/? 17545/?328616/? 17545/?329135/? 17545/?329646/? 17545/?330201/? 17545/?330712/? 17545/?331223/? 17545/?331774/? 17545/?332335/? 17545/?332615/? 17545/?333126/? 17545/?333637/? 17545/?334194/? 17545/?334706/? 17545/?335217/? 17545/?335729/? 17545/?336240/? 17545/?336752/? 17545/?337264/? 17545/?337775/? 17545/?338287/? 17545/?338798/? 17545/?339310/? 17545/?339822/? 17545/?340334/? 17545/?340906/? 17545/?341418/? 17545/?341930/? 17545/?342453/? 17545/?343003/? 17545/?343515/? 17545/?344026/? 17545/?344539/? 17545/?345050/? 17545/?345562/? 17545/?346109/? 17545/?346621/? 17545/?347132/? 17545/?347645/? 17545/?348157/? 17545/?348716/? 17545/?349228/? 17545/?349741/? 17545/?350252/? 17545/?350764/? 17545/?351309/? 17545/?351821/? 17545/?352334/? 17545/?352846/? 17545/?353358/? 17545/?353870/? 17545/?354382/? 17545/?354894/? 17545/?355406/? 17545/?355919/? 17545/?356431/? 17545/?356943/? 17545/?357455/? 17545/?357908/? 17545/?358419/? 17545/?358974/? 17545/?359533/? 17545/?360046/? 17545/?360559/? 17545/?361071/? 17545/?361583/? 17545/?362096/? 17545/?362608/? 17545/?363120/? 17545/?363631/? 17545/?364142/? 17545/?364657/? 17545/?365170/? 17545/?365682/? 17545/?366194/? 17545/?366707/? 17545/?367219/? 17545/?367730/? 17545/?368242/? 17545/?368795/? 17545/?369307/? 17545/?369819/? 17545/?370331/? 17545/?370842/? 17545/?371354/? 17545/?371864/? 17545/?372378/? 17545/?372891/? 17545/?373403/? 17545/?373914/? 17545/?373914/? 18057/?373914/? 18568/?373914/? 19167/?373914/? 19679/?373914/? 20191/?373914/? 20702/?373914/? 21268/?373914/? 21822/?373914/? 22334/?373914/? 22846/?373914/? 23357/?373914/? 23869/?373914/? 24433/?373914/? 24945/?373914/? 25555/?373914/? 26066/?373914/? 26594/?374374/? 26594/?374885/? 26594/?375476/? 26594/?375991/? 26594/?376503/? 26594/?377015/? 26594/?377609/? 26594/?378121/? 26594/?378632/? 26594/?379143/? 26594/?379655/? 26594/?380167/? 26594/?380692/? 26594/?381204/? 26594/?381715/? 26594/?382226/? 26594/?382738/? 26594/?383250/? 26594/?383761/? 26594/?384273/? 26594/?384785/? 26594/?385297/? 26594/?385809/? 26594/?386320/? 26594/?386832/? 26594/?387381/? 26594/?387892/? 26594/?388405/? 26594/?388509/? 26594/?389108/? 26594/?389673/? 26594/?390146/? 26594/?390642/? 26594/?391188/? 26594/?391710/? 26594/?392222/? 26594/?392733/? 26594/?393077/? 26594/?393588/? 26594/?394100/? 26594/?394611/? 26594/?395122/? 26594/?395633/? 26594/?395969/? 26594/?396481/? 26594/?397030/? 26594/?397493/? 26594/?398004/? 26594/?398604/? 26594/?399028/? 26594/?399036/? 26594/?399615/? 26594/?400171/? 26594/?400720/? 26594/?401232/? 26594/?401782/? 26594/?402306/? 26594/?402844/? 26594/?403397/? 26594/?403950/? 26594/?404462/? 26594/?405019/? 26594/?405577/? 26594/?406092/? 26594/?406645/? 26594/?406701/? 26594/?407263/? 26594/?407786/? 26594/?408238/? 26594/?408722/? 26594/?409272/? 26594/?409689/? 26594/?410236/? 26594/?410793/? 26594/?411346/? 26594/?411852/? 26594/?412407/? 26594/?412910/? 26594/?413512/? 26594/?414061/? 26594/?414612/? 26594/?415164/? 26594/?415671/? 26594/?416222/? 26594/?416807/? 26594/?417365/? 26594/?417873/? 26594/?418377/? 26594/?418935/? 26594/?419498/? 26594/?420055/? 26594/?420458/? 26594/?420963/? 26594/?421467/? 26594/?421886/? 26594/?422390/? 26594/?423060/? 26594/?424324/? 26594/?426211/? 26594/?428286/? 26594/?430130/? 26594/?432072/? 26594/?434052/? 26594/?436028/? 26594/?437834/? 26594/?439600/? 26594/?440147/? 26594/?440147/? 27106/?440147/? 27657/?440147/? 28168/?440147/? 28720/?440147/? 29319/?440147/? 29696/?440147/? 30250/?440147/? 30763/?440147/? 31274/?440147/? 31786/?440147/? 32298/?440147/? 32809/?440147/? 33321/?440147/? 33832/?440147/? 34080/?440147/? 34577/?440147/? 35193/?440147/? 35617/?442262/? 35617/?444290/? 35617/?446386/? 35617/?447676/? 35617/? 36128/?
        [exec] 36683/?37233/?37743/?38297/?38633/?39145/?39657/?40081/?40594/?41106/?41618/?42130/?42645/?43156/?43668/?44217/?44729/?45241/?45755/?46307/?46818/?47330/?47842/?48400/?48943/?49454/?49965/?50477/?50988/?51428/?51762/?52324/?52833/?53343/?53889/?54450/?55012/?55577/?56086/?56649/?57206/?57760/?58268/?58833/?60364/?62983/?
        [jirasoapclient] getting JIRA service
        [jirasoapclient] logging in as 'rhillegas'
        [jirasoapclient] fetching versions
        [jirasoapclient] fetching issues from filter (id = 12314683)
        [jirasoapclient] persisting issues (filter matched 145 issues)
        [jirasoapclient] wrote 104 issues, 5 with release notes, 41 issues disqualified
        [jirasoapclient] dump file: /Users/rh161140/junk/10.7.1.0-relnotes/fixedBugsList.txt
        [generateReleaseNotes] setting summary file name to:/Users/rh161140/derby/mainline/trunk/releaseSummary.xml previousReleaseID: 10.6.2.1 excludeReleaseIDList.size():0
        [generateReleaseNotes] — Creating Jira issue list
        [generateReleaseNotes] // Produced on Tue Nov 02 08:42:16 PDT 2010
        [generateReleaseNotes] // Release version: 10.7.1.0
        [generateReleaseNotes] // Previous release: 10.6.2.1
        [generateReleaseNotes] // Derived ancestry chain
        [generateReleaseNotes] // 10.6.2.1
        [generateReleaseNotes] // 10.6.1.0
        [generateReleaseNotes] // 10.5.3.0
        [generateReleaseNotes] // 10.5.2.0
        [generateReleaseNotes] // 10.5.1.1
        [generateReleaseNotes] // 10.4.2.0
        [generateReleaseNotes] // 10.4.1.3
        [generateReleaseNotes] // 10.3.2.1
        [generateReleaseNotes] // Filter id: 12314683, user id rhillegas
        [generateReleaseNotes] // Filter issue count: 145
        [generateReleaseNotes] // Issues written: 104
        [generateReleaseNotes] // Issues disqualified: 41
        [generateReleaseNotes] // Issues with release note: 5
        [echo] Release notes written to /Users/rh161140/derby/mainline/trunk/RELEASE-NOTES.html

        BUILD SUCCESSFUL
        Total time: 45 seconds

        Show
        Rick Hillegas added a comment - Thanks, Kristian. What is checked in works well. A couple small issues: 1) After running the genrelnotes target, I expected to see RELEASE-NOTES.html checked out in my code client. It was. That's good. However, "svn status" also showed the following artifact. I think that the ignore bit needs to be set on this artifact: ? tools/release/jirasoap/target 2) The genrenotes target is less chatty. That's good. However, maven is still coughing up a long list of numbers and question marks. These don't mean much to me. Can they be suppressed too? See the output included below. ----------- Here is the new script which I use to drive release notes generation: #! /bin/bash # generate release notes # $1 jira password $2 filter id $3 release version # E.g.: # generateReleaseNotes blahblah 12314683 10.7.1.0 # echo If the script hangs, you may need to get off your company VPN. jiraUser=rhillegas jiraPassword=$1 filterID=$2 releaseVersion=$3 reportDir=$HOME/junk/$releaseVersion-relnotes cd $BRANCH/tools/release ant -Djira.user=$jiraUser -Djira.password=$jiraPassword -Djira.filter.id=$filterID -Drelease.version=$releaseVersion -Drelnotes.src.reports=$reportDir genrelnotes ------------------------- Here is the output of running that script: If the script hangs, you may need to get off your company VPN. Buildfile: build.xml check-properties: missing-properties: maven-exec-windows: maven-exec-unix: genrelnotes: [exec] Downloading: http://repo1.maven.org/maven2/javax/mail/mail/1.4.1/mail-1.4.1.pom [exec] 995/? [exec] Downloading: http://repo1.maven.org/maven2/javax/activation/activation/1.1/activation-1.1.pom [exec] 1058/? [exec] Downloading: http://repo1.maven.org/maven2/javax/activation/activation/1.1/activation-1.1.jar [exec] Downloading: http://repo1.maven.org/maven2/javax/mail/mail/1.4.1/mail-1.4.1.jar [exec] 497/? [exec] 1008/?1520/?2032/?2544/?3056/?3568/?4072/?4584/?5095/?5607/?6118/?6630/?7142/?7654/?8164/?8676/?9187/?9699/?9859/?10371/?10882/?11394/?11906/?12451/?13053/?13710/?14222/?14734/?15287/?15836/?16348/?16711/?17165/?17392/?17933/?18446/?18998/?19552/?20063/?20575/?21086/?21601/?22158/?22730/?23275/?23786/?24298/?24811/?25356/?25899/?26428/?26997/?27556/?28151/?28711/?29258/?29769/?30281/?30793/?31304/?31816/?32327/?32887/?33433/?33944/?34398/?34910/?35421/?35933/?36445/?36893/?37443/?37953/?38530/?39077/?39625/?40237/?40795/?41306/?41846/?42358/?42869/?43381/?43893/?44404/?44915/?45474/?46030/?46554/?47116/?47578/?48140/?48707/?49188/?49755/?50330/?50914/?51010/?51574/?52084/?52596/?53158/?53728/?54293/?54853/?55365/?55973/?56560/?57127/?57683/?58290/?58802/?59313/?59825/?60336/?60848/?61360/?61576/?62088/?62599/?63111/?63623/?64135/?64471/?64982/?65497/?66008/?66520/?67031/?67543/?68054/?68567/?69026/?69539/?70051/?70563/?71075/?71587/?72103/?72616/?73127/?73639/?74151/?74662/?75174/?75686/?76232/?76744/?77255/?77487/?77999/?78555/?79067/?79620/?80133/?80471/?80983/?81495/?82006/?82518/?83031/?83542/?84054/?84470/?84982/?85495/?85951/?86463/?86976/?87488/?87999/?88511/?89023/?89534/?90047/?90593/?91104/?91659/?92172/?92760/?93272/?93592/?94145/?94658/?95171/?95683/?96194/?96530/?97041/?97553/?98065/?98578/?99089/?99601/?100112/?100626/?100874/?101386/?101899/?102355/?102866/?103378/?103889/?104401/?104913/?105424/?105936/?106479/?106990/?107540/?108052/?108603/?109114/?109664/?110176/?110687/?111283/?111795/?112385/?112898/?113410/?113922/?114497/?115009/?115520/?115666/?116220/?116776/?117287/?117775/?118286/?118638/?119151/?119607/?120118/?120638/?121183/?121694/?122249/?122760/?123316/?123827/?124339/?124851/?125363/?125918/?125990/?126502/?127060/?127573/?128085/?128598/?129110/?129621/?130133/?130646/?131159/?131672/?132183/?132695/?133207/?133719/?134230/?134743/?135254/?135765/?136224/?136735/?137255/?137774/?138286/?138798/?139310/?139821/?140334/?140846/?141358/?141870/?142382/?142470/?142982/?143548/?144060/?144617/?145130/?145642/?146215/?146423/?146728/?147239/?147751/?148263/?148775/?149334/?149846/?150358/?150957/?151468/?152030/?152542/?152998/?153554/?153825/?154387/?154899/?155192/?155707/?156264/?156775/?157337/?157952/?158463/?158975/?159486/?159998/?160510/?161021/?161532/?162044/?162595/?163106/?163662/?164224/?164736/?165311/?165822/?166386/?166898/?167409/?167954/?168511/?169023/?169570/?170122/?170634/?171229/?171776/?172289/?172802/?173313/?173824/?174336/?174849/?175360/?175871/?176384/?176897/?177408/?177922/?178434/?178946/?179242/?179754/?180267/?180483/?180684/?181196/?181710/?182262/?182817/?183329/?183840/?184352/?184864/?185375/?185887/?186399/?186854/?187402/?187914/?187986/?188496/?189042/?189465/?190019/?190530/?191139/?191651/?192208/?192719/?193053/?193594/?194106/?194617/?195165/?195677/?196189/?196741/?197253/?197803/?198314/?198474/?199020/?199530/?200036/?200548/?201100/?201540/?202051/?202563/?203075/?203587/?204040/?204553/?205065/?205577/?206130/?206642/?207154/?207666/?208178/?208729/?209282/?209794/?210306/?210818/?211330/?211842/?212387/?212900/?213412/?213924/?214435/?214644/?214644/? 503/?214644/? 1015/?214644/? 1527/?214644/? 2038/?214644/? 2550/?214644/? 3062/?214644/? 3573/?214644/? 4077/?215155/? 4077/?215667/? 4077/?216090/? 4077/?216602/? 4077/?217149/? 4077/?217616/? 4077/?218232/? 4077/?218744/? 4077/?219256/? 4077/?219768/? 4077/?220280/? 4077/?220615/? 4077/?221068/? 4077/?221612/? 4077/?222181/? 4077/?222734/? 4077/?223245/? 4077/?223757/? 4077/?224315/? 4077/?224876/? 4077/?225440/? 4077/?225996/? 4077/?226508/? 4077/?226654/? 4077/?227167/? 4077/?227680/? 4077/?228192/? 4077/?228705/? 4077/?229217/? 4077/?229730/? 4077/?230243/? 4077/?230755/? 4077/?231266/? 4077/?231777/? 4077/?232289/? 4077/?232801/? 4077/?233313/? 4077/?233824/? 4077/?234336/? 4077/?234848/? 4077/?235361/? 4077/?235874/? 4077/?236386/? 4077/?236802/? 4077/?237313/? 4077/?237764/? 4077/?238277/? 4077/?238789/? 4077/?239300/? 4077/?239812/? 4077/?240362/? 4077/?240906/? 4077/?241417/? 4077/?241928/? 4077/?242466/? 4077/?242990/? 4077/?243502/? 4077/?244014/? 4077/?244086/? 4077/?244597/? 4077/?245109/? 4077/?245621/? 4077/?246184/? 4077/?246696/? 4077/?247208/? 4077/?247232/? 4077/?247744/? 4077/?248347/? 4077/?248858/? 4077/?249406/? 4077/?249961/? 4077/?250472/? 4077/?251037/? 4077/?251595/? 4077/?252153/? 4077/?252720/? 4077/?253281/? 4077/?253794/? 4077/?254317/? 4077/?254813/? 4077/?255324/? 4077/?255872/? 4077/?256427/? 4077/?256939/? 4077/?257450/? 4077/?257962/? 4077/?258473/? 4077/?258985/? 4077/?259497/? 4077/?260053/? 4077/?260564/? 4077/?261125/? 4077/?261637/? 4077/?262131/? 4077/?262131/? 4588/?262131/? 5100/?262131/? 5612/?262131/? 6164/?262131/? 6839/?262131/? 7351/?262131/? 7862/?262131/? 8419/?262131/? 8971/?262131/? 9489/?262131/? 10000/?262131/? 10160/?262642/? 10160/?263153/? 10160/?263716/? 10160/?264228/? 10160/?264740/? 10160/?265075/? 10160/?265657/? 10160/?266247/? 10160/?266670/? 10160/?267208/? 10160/?267786/? 10160/?268210/? 10160/?268625/? 10160/?269164/? 10160/?269715/? 10160/?270257/? 10160/?270769/? 10160/?271311/? 10160/?271819/? 10160/?272277/? 10160/?272788/? 10160/?273329/? 10160/?273874/? 10160/?274385/? 10160/?274896/? 10160/?275408/? 10160/?275919/? 10160/?276432/? 10160/?276943/? 10160/?277455/? 10160/?277965/? 10160/?278518/? 10160/?279072/? 10160/?279615/? 10160/?280172/? 10160/?280717/? 10160/?281261/? 10160/?281773/? 10160/?282284/? 10160/?282795/? 10160/?283375/? 10160/?283931/? 10160/?284484/? 10160/?284995/? 10160/?285561/? 10160/?286102/? 10160/?286614/? 10160/?287161/? 10160/?287747/? 10160/?288258/? 10160/?288853/? 10160/?289351/? 10160/?289862/? 10160/?290443/? 10160/?290954/? 10160/?291540/? 10160/?292099/? 10160/?292659/? 10160/?293209/? 10160/?293721/? 10160/?294233/? 10160/?294745/? 10160/?295257/? 10160/?295768/? 10160/?296310/? 10160/?296860/? 10160/?297410/? 10160/?297960/? 10160/?298510/? 10160/?299022/? 10160/?299572/? 10160/?299852/? 10160/?300434/? 10160/?300945/? 10160/?301369/? 10160/?301881/? 10160/?302392/? 10160/?302816/? 10160/?303327/? 10160/?303839/? 10160/?304262/? 10160/?304774/? 10160/?305284/? 10160/?305708/? 10160/?306220/? 10160/?306672/? 10160/?307184/? 10160/?307695/? 10160/?308207/? 10160/?308749/? 10160/?309261/? 10160/?309772/? 10160/?310333/? 10160/?310906/? 10160/?311418/? 10160/?311930/? 10160/?312442/? 10160/?312953/? 10160/?313492/? 10160/?314069/? 10160/?314582/? 10160/?315093/? 10160/?315606/? 10160/?316116/? 10160/?316629/? 10160/?317140/? 10160/?317459/? 10160/?317459/? 10672/?317459/? 11184/?317459/? 11695/?317459/? 12207/?317459/? 12719/?317459/? 13231/?317459/? 13795/?317459/? 14366/?317459/? 14878/?317459/? 15389/?317459/? 15901/?317459/? 16459/?317459/? 16875/?317459/? 17329/?317459/? 17545/?317971/? 17545/?318481/? 17545/?319092/? 17545/?319653/? 17545/?320252/? 17545/?320809/? 17545/?321320/? 17545/?321918/? 17545/?322469/? 17545/?323084/? 17545/?323647/? 17545/?323753/? 17545/?324359/? 17545/?324915/? 17545/?325525/? 17545/?326037/? 17545/?326605/? 17545/?327010/? 17545/?327561/? 17545/?328072/? 17545/?328616/? 17545/?329135/? 17545/?329646/? 17545/?330201/? 17545/?330712/? 17545/?331223/? 17545/?331774/? 17545/?332335/? 17545/?332615/? 17545/?333126/? 17545/?333637/? 17545/?334194/? 17545/?334706/? 17545/?335217/? 17545/?335729/? 17545/?336240/? 17545/?336752/? 17545/?337264/? 17545/?337775/? 17545/?338287/? 17545/?338798/? 17545/?339310/? 17545/?339822/? 17545/?340334/? 17545/?340906/? 17545/?341418/? 17545/?341930/? 17545/?342453/? 17545/?343003/? 17545/?343515/? 17545/?344026/? 17545/?344539/? 17545/?345050/? 17545/?345562/? 17545/?346109/? 17545/?346621/? 17545/?347132/? 17545/?347645/? 17545/?348157/? 17545/?348716/? 17545/?349228/? 17545/?349741/? 17545/?350252/? 17545/?350764/? 17545/?351309/? 17545/?351821/? 17545/?352334/? 17545/?352846/? 17545/?353358/? 17545/?353870/? 17545/?354382/? 17545/?354894/? 17545/?355406/? 17545/?355919/? 17545/?356431/? 17545/?356943/? 17545/?357455/? 17545/?357908/? 17545/?358419/? 17545/?358974/? 17545/?359533/? 17545/?360046/? 17545/?360559/? 17545/?361071/? 17545/?361583/? 17545/?362096/? 17545/?362608/? 17545/?363120/? 17545/?363631/? 17545/?364142/? 17545/?364657/? 17545/?365170/? 17545/?365682/? 17545/?366194/? 17545/?366707/? 17545/?367219/? 17545/?367730/? 17545/?368242/? 17545/?368795/? 17545/?369307/? 17545/?369819/? 17545/?370331/? 17545/?370842/? 17545/?371354/? 17545/?371864/? 17545/?372378/? 17545/?372891/? 17545/?373403/? 17545/?373914/? 17545/?373914/? 18057/?373914/? 18568/?373914/? 19167/?373914/? 19679/?373914/? 20191/?373914/? 20702/?373914/? 21268/?373914/? 21822/?373914/? 22334/?373914/? 22846/?373914/? 23357/?373914/? 23869/?373914/? 24433/?373914/? 24945/?373914/? 25555/?373914/? 26066/?373914/? 26594/?374374/? 26594/?374885/? 26594/?375476/? 26594/?375991/? 26594/?376503/? 26594/?377015/? 26594/?377609/? 26594/?378121/? 26594/?378632/? 26594/?379143/? 26594/?379655/? 26594/?380167/? 26594/?380692/? 26594/?381204/? 26594/?381715/? 26594/?382226/? 26594/?382738/? 26594/?383250/? 26594/?383761/? 26594/?384273/? 26594/?384785/? 26594/?385297/? 26594/?385809/? 26594/?386320/? 26594/?386832/? 26594/?387381/? 26594/?387892/? 26594/?388405/? 26594/?388509/? 26594/?389108/? 26594/?389673/? 26594/?390146/? 26594/?390642/? 26594/?391188/? 26594/?391710/? 26594/?392222/? 26594/?392733/? 26594/?393077/? 26594/?393588/? 26594/?394100/? 26594/?394611/? 26594/?395122/? 26594/?395633/? 26594/?395969/? 26594/?396481/? 26594/?397030/? 26594/?397493/? 26594/?398004/? 26594/?398604/? 26594/?399028/? 26594/?399036/? 26594/?399615/? 26594/?400171/? 26594/?400720/? 26594/?401232/? 26594/?401782/? 26594/?402306/? 26594/?402844/? 26594/?403397/? 26594/?403950/? 26594/?404462/? 26594/?405019/? 26594/?405577/? 26594/?406092/? 26594/?406645/? 26594/?406701/? 26594/?407263/? 26594/?407786/? 26594/?408238/? 26594/?408722/? 26594/?409272/? 26594/?409689/? 26594/?410236/? 26594/?410793/? 26594/?411346/? 26594/?411852/? 26594/?412407/? 26594/?412910/? 26594/?413512/? 26594/?414061/? 26594/?414612/? 26594/?415164/? 26594/?415671/? 26594/?416222/? 26594/?416807/? 26594/?417365/? 26594/?417873/? 26594/?418377/? 26594/?418935/? 26594/?419498/? 26594/?420055/? 26594/?420458/? 26594/?420963/? 26594/?421467/? 26594/?421886/? 26594/?422390/? 26594/?423060/? 26594/?424324/? 26594/?426211/? 26594/?428286/? 26594/?430130/? 26594/?432072/? 26594/?434052/? 26594/?436028/? 26594/?437834/? 26594/?439600/? 26594/?440147/? 26594/?440147/? 27106/?440147/? 27657/?440147/? 28168/?440147/? 28720/?440147/? 29319/?440147/? 29696/?440147/? 30250/?440147/? 30763/?440147/? 31274/?440147/? 31786/?440147/? 32298/?440147/? 32809/?440147/? 33321/?440147/? 33832/?440147/? 34080/?440147/? 34577/?440147/? 35193/?440147/? 35617/?442262/? 35617/?444290/? 35617/?446386/? 35617/?447676/? 35617/? 36128/? [exec] 36683/?37233/?37743/?38297/?38633/?39145/?39657/?40081/?40594/?41106/?41618/?42130/?42645/?43156/?43668/?44217/?44729/?45241/?45755/?46307/?46818/?47330/?47842/?48400/?48943/?49454/?49965/?50477/?50988/?51428/?51762/?52324/?52833/?53343/?53889/?54450/?55012/?55577/?56086/?56649/?57206/?57760/?58268/?58833/?60364/?62983/? [jirasoapclient] getting JIRA service [jirasoapclient] logging in as 'rhillegas' [jirasoapclient] fetching versions [jirasoapclient] fetching issues from filter (id = 12314683) [jirasoapclient] persisting issues (filter matched 145 issues) [jirasoapclient] wrote 104 issues, 5 with release notes, 41 issues disqualified [jirasoapclient] dump file: /Users/rh161140/junk/10.7.1.0-relnotes/fixedBugsList.txt [generateReleaseNotes] setting summary file name to:/Users/rh161140/derby/mainline/trunk/releaseSummary.xml previousReleaseID: 10.6.2.1 excludeReleaseIDList.size():0 [generateReleaseNotes] — Creating Jira issue list [generateReleaseNotes] // Produced on Tue Nov 02 08:42:16 PDT 2010 [generateReleaseNotes] // Release version: 10.7.1.0 [generateReleaseNotes] // Previous release: 10.6.2.1 [generateReleaseNotes] // Derived ancestry chain [generateReleaseNotes] // 10.6.2.1 [generateReleaseNotes] // 10.6.1.0 [generateReleaseNotes] // 10.5.3.0 [generateReleaseNotes] // 10.5.2.0 [generateReleaseNotes] // 10.5.1.1 [generateReleaseNotes] // 10.4.2.0 [generateReleaseNotes] // 10.4.1.3 [generateReleaseNotes] // 10.3.2.1 [generateReleaseNotes] // Filter id: 12314683, user id rhillegas [generateReleaseNotes] // Filter issue count: 145 [generateReleaseNotes] // Issues written: 104 [generateReleaseNotes] // Issues disqualified: 41 [generateReleaseNotes] // Issues with release note: 5 [echo] Release notes written to /Users/rh161140/derby/mainline/trunk/RELEASE-NOTES.html BUILD SUCCESSFUL Total time: 45 seconds
        Hide
        Kristian Waagan added a comment -

        Hi Lily,

        'ant genrelnotes' will overwrite the existing RELEASE-NOTES.html. You should be able to see that using 'svn st|diff'. Remember that you still have to edit releaseSummary.xml for the release notes to be complete and correct.

        If you look at the start and end of the fixedBugsList.txt, you should see a few important pieces of information (this is also printed to standard out when you run the target):
        o the target release version
        o the derived previous release version (this is checked against the one entered in releaseSummary.xml)
        o the derived ancestry chain (used to exclude issues)
        o issue statistics (# total, # written, # disqualified, # release note)

        Also included in the output is the path to the output file.

        This patch doesn't touch the logic bumping the last digit. I think that is something Rick is, or have been, working on.
        Did you run 'ant genrelnotes' on Windows?

        FYI, I expect there will be at least one more patch for this issue, but I'd like to wait for Rick's further feedback as well.

        Thanks,

        Show
        Kristian Waagan added a comment - Hi Lily, 'ant genrelnotes' will overwrite the existing RELEASE-NOTES.html. You should be able to see that using 'svn st|diff'. Remember that you still have to edit releaseSummary.xml for the release notes to be complete and correct. If you look at the start and end of the fixedBugsList.txt, you should see a few important pieces of information (this is also printed to standard out when you run the target): o the target release version o the derived previous release version (this is checked against the one entered in releaseSummary.xml) o the derived ancestry chain (used to exclude issues) o issue statistics (# total, # written, # disqualified, # release note) Also included in the output is the path to the output file. This patch doesn't touch the logic bumping the last digit. I think that is something Rick is, or have been, working on. Did you run 'ant genrelnotes' on Windows? FYI, I expect there will be at least one more patch for this issue, but I'd like to wait for Rick's further feedback as well. Thanks,
        Hide
        Lily Wei added a comment -

        Hi Kristian:
        Thank you for checking in the patch. I volunteer to do the test drive again.
        I sync up to the latest. I am able to build all the distribution on my base.dir/release/distributions/*. Yeah!!

        Before I do that, I already build my docs(I was using my old 10.6 docs), javadoc and RELEASE-NOTES.html. Does 'ant genrelnotes' always regenerate RELEASE-NOTES.html or it will use existing RELEASE-NOTES.html if it finds it in the default place? How does bump up the last digit works now? Does the last digit come from maintversion.properties in the distributions directory?

        Thank you so much for doing this and thanks for detail instruction on ant -p.

        Show
        Lily Wei added a comment - Hi Kristian: Thank you for checking in the patch. I volunteer to do the test drive again. I sync up to the latest. I am able to build all the distribution on my base.dir/release/distributions/*. Yeah!! Before I do that, I already build my docs(I was using my old 10.6 docs), javadoc and RELEASE-NOTES.html. Does 'ant genrelnotes' always regenerate RELEASE-NOTES.html or it will use existing RELEASE-NOTES.html if it finds it in the default place? How does bump up the last digit works now? Does the last digit come from maintversion.properties in the distributions directory? Thank you so much for doing this and thanks for detail instruction on ant -p.
        Hide
        Kristian Waagan added a comment -

        Tested this on Solaris again, and it seems to work.
        Committed patch 4b to trunk with revision 1027882.

        There may be improvements to be made, maybe tuning the output or removing some inputs. I'll let people give it a try first, and wait for feedback from the release managers.

        Show
        Kristian Waagan added a comment - Tested this on Solaris again, and it seems to work. Committed patch 4b to trunk with revision 1027882. There may be improvements to be made, maybe tuning the output or removing some inputs. I'll let people give it a try first, and wait for feedback from the release managers.
        Hide
        Kristian Waagan added a comment -

        Attached patch 3b, where I rewrote the instructions for running the ant target.

        Committed to trunk with revision 1027878.

        Show
        Kristian Waagan added a comment - Attached patch 3b, where I rewrote the instructions for running the ant target. Committed to trunk with revision 1027878.
        Hide
        Kristian Waagan added a comment -

        Thanks, Lily.

        The error you are getting means that you have specified a version as 'true', which doesn't exist (in JIRA). Versions are supposed to be formatted as major.minor.fixpack.point, for instance 10.6.2.1.
        Rick's script won't work any more because the Java application now expects a different set of arguments - this is the reason you're getting the error message above.

        Now, it turns out the current script is unable to execute Maven on Windows, even under Cygwin. The solution is to invoke "mvn.bat" instead of "mvn".
        I have added logic to determine the correct Maven executable, and I am now able to execute 'ant genrelnotes' on Windows (haven't tested if my changes broke this on *nix now...)
        I'm still hoping it will be enough for people to invoke 'ant genrelnotes' from tools/release.

        Attaching patch 4b. Ready for review / testing (hint: use the filter id that Rick used, and release version 10.7.1.0).

        PS! Lily, you don't have to care about what's inside the 'maven2' directory. That's another, independent Maven project.

        Show
        Kristian Waagan added a comment - Thanks, Lily. The error you are getting means that you have specified a version as 'true', which doesn't exist (in JIRA). Versions are supposed to be formatted as major.minor.fixpack.point, for instance 10.6.2.1. Rick's script won't work any more because the Java application now expects a different set of arguments - this is the reason you're getting the error message above. Now, it turns out the current script is unable to execute Maven on Windows, even under Cygwin. The solution is to invoke "mvn.bat" instead of "mvn". I have added logic to determine the correct Maven executable, and I am now able to execute 'ant genrelnotes' on Windows (haven't tested if my changes broke this on *nix now...) I'm still hoping it will be enough for people to invoke 'ant genrelnotes' from tools/release. Attaching patch 4b. Ready for review / testing (hint: use the filter id that Rick used, and release version 10.7.1.0). PS! Lily, you don't have to care about what's inside the 'maven2' directory. That's another, independent Maven project.
        Hide
        Lily Wei added a comment -

        I volunteer to test-drive the 3a and 4a patch on Windows. After doing 'mvn clean install' on maven2 and tools/release/jirasoap, I sync up the latest codeline from trunk and apply 3a and 4a patch. I was not able to build the RELESE-NOTES.html using 'ant genrelnotes'. However, the createreleasenote.sh script works for me. I am not sure why I am getting an error from FilteredIssueListen. I got an error as jirasoap.FilteredIssueLister is fetching issue. Error print out as:"Exception in thread "main" java.lang.IllegalArgumentException: version 'true' doesn't exist
        at org.apache.derbyBuild.jirasoap.FilteredIssueLister.getVersion(Filtere
        dIssueLister.java:487)
        at org.apache.derbyBuild.jirasoap.FilteredIssueLister.prepareReleaseNote
        s(FilteredIssueLister.java:245)
        at org.apache.derbyBuild.jirasoap.FilteredIssueLister.main(FilteredIssue
        Lister.java:610)"

        I was still able to generate a RELEASE-NOTES.html. I attach the file for reference. I did not change releaseSummary.html to reflect my build environment when I run the script.

        Show
        Lily Wei added a comment - I volunteer to test-drive the 3a and 4a patch on Windows. After doing 'mvn clean install' on maven2 and tools/release/jirasoap, I sync up the latest codeline from trunk and apply 3a and 4a patch. I was not able to build the RELESE-NOTES.html using 'ant genrelnotes'. However, the createreleasenote.sh script works for me. I am not sure why I am getting an error from FilteredIssueListen. I got an error as jirasoap.FilteredIssueLister is fetching issue. Error print out as:"Exception in thread "main" java.lang.IllegalArgumentException: version 'true' doesn't exist at org.apache.derbyBuild.jirasoap.FilteredIssueLister.getVersion(Filtere dIssueLister.java:487) at org.apache.derbyBuild.jirasoap.FilteredIssueLister.prepareReleaseNote s(FilteredIssueLister.java:245) at org.apache.derbyBuild.jirasoap.FilteredIssueLister.main(FilteredIssue Lister.java:610)" I was still able to generate a RELEASE-NOTES.html. I attach the file for reference. I did not change releaseSummary.html to reflect my build environment when I run the script.
        Hide
        Kristian Waagan added a comment -

        Attached new version of patch 4a due to having used the wrong property name in the help text.

        Rick,
        if you run 'ant genrelnotes' you should get all the information you need.

        I'll take the patches for a test-spin on Windows, and if that works out okay I'll just commit them.

        Show
        Kristian Waagan added a comment - Attached new version of patch 4a due to having used the wrong property name in the help text. Rick, if you run 'ant genrelnotes' you should get all the information you need. I'll take the patches for a test-spin on Windows, and if that works out okay I'll just commit them.
        Hide
        Rick Hillegas added a comment -

        Thanks for the additional patches, Kristian. I think that I will wait for you to commit this work before I test-drive it. How do I run this machinery now? I suspect that "ant genrelnotes" isn't good enough. I probably need to specify a number of variables (such as my jira credentials, the release id, the filter id, etc..). What does the command line look like?

        I'm happy with a single master target.

        Thanks.

        Show
        Rick Hillegas added a comment - Thanks for the additional patches, Kristian. I think that I will wait for you to commit this work before I test-drive it. How do I run this machinery now? I suspect that "ant genrelnotes" isn't good enough. I probably need to specify a number of variables (such as my jira credentials, the release id, the filter id, etc..). What does the command line look like? I'm happy with a single master target. Thanks.
        Hide
        Kristian Waagan added a comment -

        Attaching patch 4a, which integrates the JIRA SOAP client with ant.

        Hopefully, running 'ant genrelnotes' from tools/release should be enough to get people going. I won't say more, and will wait for feedback

        Note that you have to apply both patch 3a and 4a to test this.
        For now I have created one master target (I reused genrelnotes), but it may be better to split it up into two sub-targets to allow for modification of the issue list before running the release notes generator.
        What do those who have been RMs say about that?

        Patch ready for review.

        Show
        Kristian Waagan added a comment - Attaching patch 4a, which integrates the JIRA SOAP client with ant. Hopefully, running 'ant genrelnotes' from tools/release should be enough to get people going. I won't say more, and will wait for feedback Note that you have to apply both patch 3a and 4a to test this. For now I have created one master target (I reused genrelnotes), but it may be better to split it up into two sub-targets to allow for modification of the issue list before running the release notes generator. What do those who have been RMs say about that? Patch ready for review.
        Hide
        Kristian Waagan added a comment -

        Attaching patch 3a, which modifies the existing release notes generator classes to work with the data produced by the JIRA SOAP client.

        M java/build/org/apache/derbyBuild/ReleaseNotesGenerator.java

        Changed comments, removed use of ReportParser, adjusted code to use the new code to obtain the list of JiraIssues.
        Removed sanity check from patch 1a (blocked progress).

        M java/build/org/apache/derbyBuild/GeneratorBase.java

        Removed use of TagReader.

        D java/build/org/apache/derbyBuild/ReportParser.java

        Deleted class (no longer used).

        M java/build/org/apache/derbyBuild/JiraIssue.java

        Added code to parse the data file generated by the JIRA SOAP client.
        Added method hasMissingReleaseNotes.
        Modified constructor.

        Patch ready for review. Already tested by Rick, so I expect to commit this shortly.

        Show
        Kristian Waagan added a comment - Attaching patch 3a, which modifies the existing release notes generator classes to work with the data produced by the JIRA SOAP client. M java/build/org/apache/derbyBuild/ReleaseNotesGenerator.java Changed comments, removed use of ReportParser, adjusted code to use the new code to obtain the list of JiraIssues. Removed sanity check from patch 1a (blocked progress). M java/build/org/apache/derbyBuild/GeneratorBase.java Removed use of TagReader. D java/build/org/apache/derbyBuild/ReportParser.java Deleted class (no longer used). M java/build/org/apache/derbyBuild/JiraIssue.java Added code to parse the data file generated by the JIRA SOAP client. Added method hasMissingReleaseNotes. Modified constructor. Patch ready for review. Already tested by Rick, so I expect to commit this shortly.
        Hide
        Kristian Waagan added a comment -

        Thanks a lot for the feedback, Rick.

        I have decided to split the work into three pieces:
        a) client code
        b) changes to existing ReleaseNotesGenerator
        c) ant integration

        I have attached patch 2a to add the new client code, and based on the feedback from Rick I think it is useful enough to be committed right away. Committed to trunk with revision 1027056.
        I made some changes compared to patch 1a, most of them were formatting, documentation and naming changes. Specifically, Rick's comments:
        o renamed class to FilteredIssueLister, which is the primary functionality
        o made the tool quieter (use reportDisqualifiedIssues=true to make it chattier again)
        o added some extra (unused) dependencies to remove the warning message
        o (the sanity check will be addressed in the next patch since it lives in ReleaseNotesGenerator)
        o I have not done anything more regarding the release id specification

        In addition I made the tool always write the data file as UTF-8.

        Regarding the ancestry chain, the tool seems to do the right thing as long as it has a release date for the release being made. Unfortunately, the tool won't have that for new releases... I will write some test code and investigate further.
        For now I have made it possible to override the ancestry chain manually.

        Show
        Kristian Waagan added a comment - Thanks a lot for the feedback, Rick. I have decided to split the work into three pieces: a) client code b) changes to existing ReleaseNotesGenerator c) ant integration I have attached patch 2a to add the new client code, and based on the feedback from Rick I think it is useful enough to be committed right away. Committed to trunk with revision 1027056. I made some changes compared to patch 1a, most of them were formatting, documentation and naming changes. Specifically, Rick's comments: o renamed class to FilteredIssueLister, which is the primary functionality o made the tool quieter (use reportDisqualifiedIssues=true to make it chattier again) o added some extra (unused) dependencies to remove the warning message o (the sanity check will be addressed in the next patch since it lives in ReleaseNotesGenerator) o I have not done anything more regarding the release id specification In addition I made the tool always write the data file as UTF-8. Regarding the ancestry chain, the tool seems to do the right thing as long as it has a release date for the release being made. Unfortunately, the tool won't have that for new releases... I will write some test code and investigate further. For now I have made it possible to override the ancestry chain manually.
        Hide
        Dag H. Wanvik added a comment -

        Discussed Rick's 5) points to define ancestry with Kristian a bit. I think Rick's definition makes sense: B.y+ is neither an ancestor or descendant of A.x+, so any release notes for patch P added in A.x+ should not be culled from B.y+.
        Iff A.x is the first release of A, both B.y and B.y+ are descendants of A.x, if I understand the definition correctly, so fixes made in A.x should be culled for B.y as well as for B.y+.

        Show
        Dag H. Wanvik added a comment - Discussed Rick's 5) points to define ancestry with Kristian a bit. I think Rick's definition makes sense: B.y+ is neither an ancestor or descendant of A.x+, so any release notes for patch P added in A.x+ should not be culled from B.y+. Iff A.x is the first release of A, both B.y and B.y+ are descendants of A.x, if I understand the definition correctly, so fixes made in A.x should be culled for B.y as well as for B.y+.
        Hide
        Rick Hillegas added a comment -

        Thanks again for the patch, Kristian. I updated my client, which got me past the build issues. After that, I was able to test-drive the patch and successfully build the release notes. Love it. A couple comments:

        o It would be nice if the tool had a quiet mode. Maven is pretty chatty and yours truly doesn't need to see the list of excluded bugs.

        o Maven coughs up the following warning. It didn't seem to hurt anything but I'm probably not the only person who will be puzzled by it:

        WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

        o I had to remove the following sanity-check from ReleaseNotesGenerator (line 282). It will kill release notes generation for feature releases. That is because the release manager wants to publish the release notes a good week before creating the branch and building the first release candidate. At that time, the version number in release.properties is still an alpha version number. I tripped across the fact that the version number in release.properties on the trunk was 10.7.0.0 but I was trying to generate release notes for 10.7.1.0:

        else if (!relVer.equals(releaseID))

        { throw new IllegalStateException("target release version mismatch " + "between release.properties and bug list: " + releaseID + " != " + relVer); }

        I think that the release number which appears in RELEASE-NOTES.html should originate with the release number which you specify when you run "java -jar target/JiraSOAP-LATEST-jar-with-dependencies.jar".

        At this point, you have removed one of the redundant places where we specify the release number (namely, in releaseSummary.xml). That's progress. I don't think we need to sand this down further, although it's worth thinking about streamlining how many times we still specify a release id:

        o We specify a release id when we define the jira filter which defines the raw stream of bug ids.

        o We specify a release id when we run "java -jar target/JiraSOAP-LATEST-jar-with-dependencies.jar".

        o We specify a release id when we run the master target which builds the release candidate.

        Here is the script which I used to tie together all of the pieces of release-notes generation. This may be useful to other release managers who want to test-drive this patch:

        Thanks,
        -Rick

        ----------------

        #! /bin/bash
        #

        1. Run the machinery which creates the release notes. Make sure
        2. that you are not on a corporate VPN--otherwise maven may hang
        3. while trying to access the network.
          #
        4. Arguments:
          #
        5. $1 jira user name
        6. $2 jira password
        7. $3 release version (e.g. 10.7.1.0)
        8. $4 numeric id of filter used to create jira report of fixed bugs (e.g. 12314683)
          #
        9. E.g.:
          #
        10. createReleaseNotes rhillegas mypassword 10.7.1.0 12314683

        export jiraname=$1
        export jirapassword=$2
        export derbyversion=$3

        export relnotesdir=$HOME/junk/$derbyversion-relnotes

        export filterid=$4
        export destinationfile=$relnotesdir/fixedBugsList.txt
        export remove=true

        mkdir $relnotesdir

        cd $BRANCH/tools/release/jirasoap

        1. build the application which uses SOAP to tease information out of JIRA

        mvn -Pbuildclient

        1. now produce the filtered list of issues

        java -jar target/JiraSOAP-LATEST-jar-with-dependencies.jar $jiraname $jirapassword $derbyversion $filterid $destinationfile $remove

        1. now generate RELEASE-NOTES.html from the filtered list

        cd ..

        ant -Drelnotes.src.reports=$relnotesdir genrelnotes

        Show
        Rick Hillegas added a comment - Thanks again for the patch, Kristian. I updated my client, which got me past the build issues. After that, I was able to test-drive the patch and successfully build the release notes. Love it. A couple comments: o It would be nice if the tool had a quiet mode. Maven is pretty chatty and yours truly doesn't need to see the list of excluded bugs. o Maven coughs up the following warning. It didn't seem to hurt anything but I'm probably not the only person who will be puzzled by it: WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled. o I had to remove the following sanity-check from ReleaseNotesGenerator (line 282). It will kill release notes generation for feature releases. That is because the release manager wants to publish the release notes a good week before creating the branch and building the first release candidate. At that time, the version number in release.properties is still an alpha version number. I tripped across the fact that the version number in release.properties on the trunk was 10.7.0.0 but I was trying to generate release notes for 10.7.1.0: else if (!relVer.equals(releaseID)) { throw new IllegalStateException("target release version mismatch " + "between release.properties and bug list: " + releaseID + " != " + relVer); } I think that the release number which appears in RELEASE-NOTES.html should originate with the release number which you specify when you run "java -jar target/JiraSOAP-LATEST-jar-with-dependencies.jar". At this point, you have removed one of the redundant places where we specify the release number (namely, in releaseSummary.xml). That's progress. I don't think we need to sand this down further, although it's worth thinking about streamlining how many times we still specify a release id: o We specify a release id when we define the jira filter which defines the raw stream of bug ids. o We specify a release id when we run "java -jar target/JiraSOAP-LATEST-jar-with-dependencies.jar". o We specify a release id when we run the master target which builds the release candidate. Here is the script which I used to tie together all of the pieces of release-notes generation. This may be useful to other release managers who want to test-drive this patch: Thanks, -Rick ---------------- #! /bin/bash # Run the machinery which creates the release notes. Make sure that you are not on a corporate VPN--otherwise maven may hang while trying to access the network. # Arguments: # $1 jira user name $2 jira password $3 release version (e.g. 10.7.1.0) $4 numeric id of filter used to create jira report of fixed bugs (e.g. 12314683) # E.g.: # createReleaseNotes rhillegas mypassword 10.7.1.0 12314683 export jiraname=$1 export jirapassword=$2 export derbyversion=$3 export relnotesdir=$HOME/junk/$derbyversion-relnotes export filterid=$4 export destinationfile=$relnotesdir/fixedBugsList.txt export remove=true mkdir $relnotesdir cd $BRANCH/tools/release/jirasoap build the application which uses SOAP to tease information out of JIRA mvn -Pbuildclient now produce the filtered list of issues java -jar target/JiraSOAP-LATEST-jar-with-dependencies.jar $jiraname $jirapassword $derbyversion $filterid $destinationfile $remove now generate RELEASE-NOTES.html from the filtered list cd .. ant -Drelnotes.src.reports=$relnotesdir genrelnotes
        Hide
        Kristian Waagan added a comment -

        Sorry for providing the crappy patch, Rick.
        As I said earlier, no need to do ant clobber to test the SOAP client

        In any case, I have committed the patch for DERBY-4858. Please update your svn workspace and try again.

        I haven't had the time to test the release ancestry scenario you mentioned, but I do plan to make it easy to override the ancestry from the command line. There will be at least one follow-up patch (your existing comments have not been addressed, and I suspect there may be more comment once you get the client running).

        Show
        Kristian Waagan added a comment - Sorry for providing the crappy patch, Rick. As I said earlier, no need to do ant clobber to test the SOAP client In any case, I have committed the patch for DERBY-4858 . Please update your svn workspace and try again. I haven't had the time to test the release ancestry scenario you mentioned, but I do plan to make it easy to override the ancestry from the command line. There will be at least one follow-up patch (your existing comments have not been addressed, and I suspect there may be more comment once you get the client running).
        Hide
        Rick Hillegas added a comment -

        Thanks for the advice about how to test-drive the patch, Kristian. I reverted ReportParser.java, then did "ant clobber" followed by "ant all". Now I see this build error:

        [echo] building generated sanity info
        [java] Warning: Lookahead adequacy checking not being performed since option LOOKAHEAD is more than 1. Set option FORCE_LA_CHECK to true to force checking.
        [javac] /Users/rh161140/derby/mainline/trunk/java/build/org/apache/derbyBuild/ChangesFileGenerator.java:200: cannot find symbol
        [javac] symbol : variable bugListDoc
        [javac] location: class org.apache.derbyBuild.ChangesFileGenerator
        [javac] for (Iterator i = JiraIssue.createJiraIssueList( bugListDoc, excludeReleaseIDList, reportParser ).iterator(); i.hasNext(); )
        [javac] ^
        [javac] 1 error

        BUILD FAILED
        /Users/rh161140/derby/mainline/trunk/build.xml:526: The following error occurred while executing this line:
        /Users/rh161140/derby/mainline/trunk/build.xml:561: The following error occurred while executing this line:
        /Users/rh161140/derby/mainline/trunk/java/build/build.xml:59: The following error occurred while executing this line:
        /Users/rh161140/derby/mainline/trunk/java/build/org/apache/derbyBuild/build.xml:53: Compile failed; see the compiler error output for details.

        Show
        Rick Hillegas added a comment - Thanks for the advice about how to test-drive the patch, Kristian. I reverted ReportParser.java, then did "ant clobber" followed by "ant all". Now I see this build error: [echo] building generated sanity info [java] Warning: Lookahead adequacy checking not being performed since option LOOKAHEAD is more than 1. Set option FORCE_LA_CHECK to true to force checking. [javac] /Users/rh161140/derby/mainline/trunk/java/build/org/apache/derbyBuild/ChangesFileGenerator.java:200: cannot find symbol [javac] symbol : variable bugListDoc [javac] location: class org.apache.derbyBuild.ChangesFileGenerator [javac] for (Iterator i = JiraIssue.createJiraIssueList( bugListDoc, excludeReleaseIDList, reportParser ).iterator(); i.hasNext(); ) [javac] ^ [javac] 1 error BUILD FAILED /Users/rh161140/derby/mainline/trunk/build.xml:526: The following error occurred while executing this line: /Users/rh161140/derby/mainline/trunk/build.xml:561: The following error occurred while executing this line: /Users/rh161140/derby/mainline/trunk/java/build/build.xml:59: The following error occurred while executing this line: /Users/rh161140/derby/mainline/trunk/java/build/org/apache/derbyBuild/build.xml:53: Compile failed; see the compiler error output for details.
        Hide
        Rick Hillegas added a comment -

        Thanks for the additional instructions, Kristian. I will take a closer look later today.

        Concerning the semantics of getAncestors(): I don't think we have an example of the problem in our existing set of releases. We almost had an example involving the following releases:

        o 10.4.1.3 (released 2008-04-24), whose preceding release was 10.3.2.1

        o 10.3.3.0 (released 2008-05-12)

        The problem would have occurred if the release dates for 10.4.1.3 and 10.3.3.0 were reversed.

        Let me try to restate the problem.

        1) Suppose we have two active branches A and B where A < B. We have already cut official releases off both branches: A.x and B.y.

        2) We discover that we have a serious security or data corruption bug: NNNN.

        3) We fix NNNN in both the A and B branches.

        4) Then the community cuts a new emergency release A.x+ off the A branch.

        5) Afterward, the community cuts an emergency release B.y+ off the B branch. Note that precedingRelease( B.y+ ) = B.y NOT A.x.

        Under definition (a), A.x+ is an ancestor of B.y+. That means that NNNN will not appear in the release notes for B.y+. That's a shame because the reason we're issuing B.y+ is to fix NNNN.

        However, under definition (b), A.x+ wouldn't be an ancestor of B.y+ so NNNN would appear in the release notes. Everything would be fine.

        Note that the problem would not occur if we reversed the order of steps (3) and (4). That is, we won't see the problem if the emergency release on the later branch is produced BEFORE the emergency release on the earlier branch.

        Hope this makes more sense now.

        Show
        Rick Hillegas added a comment - Thanks for the additional instructions, Kristian. I will take a closer look later today. Concerning the semantics of getAncestors(): I don't think we have an example of the problem in our existing set of releases. We almost had an example involving the following releases: o 10.4.1.3 (released 2008-04-24), whose preceding release was 10.3.2.1 o 10.3.3.0 (released 2008-05-12) The problem would have occurred if the release dates for 10.4.1.3 and 10.3.3.0 were reversed. Let me try to restate the problem. 1) Suppose we have two active branches A and B where A < B. We have already cut official releases off both branches: A.x and B.y. 2) We discover that we have a serious security or data corruption bug: NNNN. 3) We fix NNNN in both the A and B branches. 4) Then the community cuts a new emergency release A.x+ off the A branch. 5) Afterward, the community cuts an emergency release B.y+ off the B branch. Note that precedingRelease( B.y+ ) = B.y NOT A.x. Under definition (a), A.x+ is an ancestor of B.y+. That means that NNNN will not appear in the release notes for B.y+. That's a shame because the reason we're issuing B.y+ is to fix NNNN. However, under definition (b), A.x+ wouldn't be an ancestor of B.y+ so NNNN would appear in the release notes. Everything would be fine. Note that the problem would not occur if we reversed the order of steps (3) and (4). That is, we won't see the problem if the emergency release on the later branch is produced BEFORE the emergency release on the earlier branch. Hope this makes more sense now.
        Hide
        Kristian Waagan added a comment -

        Hi Rick,

        Thanks for trying to test the patch. I'm unable to give you proper feedback right now, but here are a few quick hints.

        The broken build problem will be fixed by DERBY-4858, alternatively you can just revert the ReportParser class in java/build/org/apache/derbyBuild. I missed this problem because I was just messing around in tools/release and didn't do a 'ant clobber all' from the root.

        You have to go into tools/release/jirasoap and issue the mvn-command from there. The directory jirasoap contains a fully independent Maven-project. It doesn't depend on the rest of the Derby code at all.

        It is not clear to me that the getAncestors-method is behaving incorrectly, but that may be the case. Are you able to test this by using a set of the existing releases, or have we not yet created a scenario as you described with potential future versions in your comment?
        For instance, I was under the impression that the current version of the tool is able to deal correctly with the 10.3.3.0 release. It was released between 10.4.2.1 and 10.4.2.0. The tool uses the release version and the release date to determine the preceding release.
        You can invoke the tool with the ancestors-argument to print the list of ancestors for a given version (see the usage msg).

        Thanks,

        Show
        Kristian Waagan added a comment - Hi Rick, Thanks for trying to test the patch. I'm unable to give you proper feedback right now, but here are a few quick hints. The broken build problem will be fixed by DERBY-4858 , alternatively you can just revert the ReportParser class in java/build/org/apache/derbyBuild. I missed this problem because I was just messing around in tools/release and didn't do a 'ant clobber all' from the root. You have to go into tools/release/jirasoap and issue the mvn-command from there. The directory jirasoap contains a fully independent Maven-project. It doesn't depend on the rest of the Derby code at all. It is not clear to me that the getAncestors-method is behaving incorrectly, but that may be the case. Are you able to test this by using a set of the existing releases, or have we not yet created a scenario as you described with potential future versions in your comment? For instance, I was under the impression that the current version of the tool is able to deal correctly with the 10.3.3.0 release. It was released between 10.4.2.1 and 10.4.2.0. The tool uses the release version and the release date to determine the preceding release. You can invoke the tool with the ancestors-argument to print the list of ancestors for a given version (see the usage msg). Thanks,
        Hide
        Rick Hillegas added a comment -

        Thanks for the patch, Kristian. I have taken a look at it and have a couple preliminary comments to offer. Unfortunately, I don't know enough about this technology to be able to test-drive the patch. Here are some things I tried in order to build this patch:

        o I changed directory to the root of my client and typed "mvn -Pbuildclient". Nothing happened. The buildclient target was not recognized.

        o I changed directory to maven2 and typed "mvn -Pbuildclient". Again, the buildclient target was not recognized.

        o From the root of my client, I did an "ant clobber" followed by "ant all". This build failed because ReportParser was not found.

        I would like to test-drive the patch. Could you expand the instructions? Think in terms of writing a cookbook for someone who knows absolutely nothing about SOAP and very little about maven. For instance, there seem to be some classes which are generated by the SOAP/maven machinery but I don't know how or when that generation is supposed to happen. Thanks.

        ---------------

        Here are some preliminary comments on the patch:

        o The name Client seems a little vague to me. Could this class be renamed to something which captures more of its behavior, like JiraFilterReader or FilteredIssueLister? There may be a small chunk of code in there which could be carved out into a generic Client or SoapClient or JiraSoapClient class, but most of the work seems focused on reading a Jira filter and writing a list of issues.

        o If I understand the code correctly, the logic in Client.getAncestors() is trying to construct the upgrade trajectory which will be used to calculate the set of issues to include in the release notes. Most of the work is done in Client.getReleasedVersions(). Most of the time, I think that this logic will do the right thing. However, its concept of ancestor differs somewhat from the concept of ancestor which is assumed by our release notes process. That concept is discussed in this email thread: http://old.nabble.com/Release-Notes-to5931299.html#a6248974 Here's how I think the concepts differ:

        a) For Client.getAncestors(), released distribution A is an ancestor of release candidate B if (A.releaseID < B.releaseID).

        b) Given the discussion in the email thread referenced above, ancestry should be recursively defined by the precedingRelease function. If C is a release, then precedingRelease( C ) is the "preceding release" mentioned at the beginning of the release notes for C. The ancestry set of candidate B is

        { precedingRelease(B), precedingRelease(precedingRelease(B)), ...}

        . In this scheme, released distribution A is an ancestor of release candidate B if A is in that ancestry set.

        Definition (a) yields a larger set of ancestors than definition (b) does. I believe that the logic in (a) will overaggressively filter issues. Here is the problem case:

        i) We release 10.6.2.1.

        ii) Then we release 10.7.1.0.

        iii) Then we fix bug NNNN in both the 10.6 and 10.7 branches.

        iv) Then we release 10.6.3.0, including the fix for NNNN.

        v) Then we release 10.7.2.0, also including the fix for NNNN. Note that precedingRelease( 10.7.2.0 ) = 10.7.1.0 NOT 10.6.3.0.

        vi) The fix for NNNN will not appear in the release notes for 10.7.2.0 under definition (a). However, the fix will appear in the release notes for 10.7.2.0 under definition (b).

        Unfortunately, I don't think that Jira contains enough information to calculate release ancestry under definition (b). I think that the information can be reconstructed by parsing the release notes in our subversion tags. Alternatively, we could maintain the ancestry graph in the codeline.

        What you have so far is a big improvement over the current situation. I think it would be OK to fix getAncestors() later on.

        Show
        Rick Hillegas added a comment - Thanks for the patch, Kristian. I have taken a look at it and have a couple preliminary comments to offer. Unfortunately, I don't know enough about this technology to be able to test-drive the patch. Here are some things I tried in order to build this patch: o I changed directory to the root of my client and typed "mvn -Pbuildclient". Nothing happened. The buildclient target was not recognized. o I changed directory to maven2 and typed "mvn -Pbuildclient". Again, the buildclient target was not recognized. o From the root of my client, I did an "ant clobber" followed by "ant all". This build failed because ReportParser was not found. I would like to test-drive the patch. Could you expand the instructions? Think in terms of writing a cookbook for someone who knows absolutely nothing about SOAP and very little about maven. For instance, there seem to be some classes which are generated by the SOAP/maven machinery but I don't know how or when that generation is supposed to happen. Thanks. --------------- Here are some preliminary comments on the patch: o The name Client seems a little vague to me. Could this class be renamed to something which captures more of its behavior, like JiraFilterReader or FilteredIssueLister? There may be a small chunk of code in there which could be carved out into a generic Client or SoapClient or JiraSoapClient class, but most of the work seems focused on reading a Jira filter and writing a list of issues. o If I understand the code correctly, the logic in Client.getAncestors() is trying to construct the upgrade trajectory which will be used to calculate the set of issues to include in the release notes. Most of the work is done in Client.getReleasedVersions(). Most of the time, I think that this logic will do the right thing. However, its concept of ancestor differs somewhat from the concept of ancestor which is assumed by our release notes process. That concept is discussed in this email thread: http://old.nabble.com/Release-Notes-to5931299.html#a6248974 Here's how I think the concepts differ: a) For Client.getAncestors(), released distribution A is an ancestor of release candidate B if (A.releaseID < B.releaseID). b) Given the discussion in the email thread referenced above, ancestry should be recursively defined by the precedingRelease function. If C is a release, then precedingRelease( C ) is the "preceding release" mentioned at the beginning of the release notes for C. The ancestry set of candidate B is { precedingRelease(B), precedingRelease(precedingRelease(B)), ...} . In this scheme, released distribution A is an ancestor of release candidate B if A is in that ancestry set. Definition (a) yields a larger set of ancestors than definition (b) does. I believe that the logic in (a) will overaggressively filter issues. Here is the problem case: i) We release 10.6.2.1. ii) Then we release 10.7.1.0. iii) Then we fix bug NNNN in both the 10.6 and 10.7 branches. iv) Then we release 10.6.3.0, including the fix for NNNN. v) Then we release 10.7.2.0, also including the fix for NNNN. Note that precedingRelease( 10.7.2.0 ) = 10.7.1.0 NOT 10.6.3.0. vi) The fix for NNNN will not appear in the release notes for 10.7.2.0 under definition (a). However, the fix will appear in the release notes for 10.7.2.0 under definition (b). Unfortunately, I don't think that Jira contains enough information to calculate release ancestry under definition (b). I think that the information can be reconstructed by parsing the release notes in our subversion tags. Alternatively, we could maintain the ancestry graph in the codeline. What you have so far is a big improvement over the current situation. I think it would be OK to fix getAncestors() later on.
        Hide
        Kristian Waagan added a comment -

        I see that I forgot to document <REMOVE_ISSUES>, which defaults to true.
        It decides if the results from the JIRA filter is filtered against the set of ancestors., i.e. if an issue is marked as fixed in both the target release version and one of the ancestors it will be removed (not included in the release notes).

        Show
        Kristian Waagan added a comment - I see that I forgot to document <REMOVE_ISSUES>, which defaults to true. It decides if the results from the JIRA filter is filtered against the set of ancestors., i.e. if an issue is marked as fixed in both the target release version and one of the ancestors it will be removed (not included in the release notes).
        Hide
        Kristian Waagan added a comment -

        Attaching patch 1a, which contains the first revision of the described tool.

        Maven2 is required, to build do 'mvn -Pbuildclient'. There exists another target in case the WSDL file has to be updated: 'mvn -Pfetch-wsdl'.
        'mvn clean' cleans up generated files.

        To test, run:
        o java -jar target/JiraSOAP-LATEST-jar-with-dependencies.jar
        o read the help text, re-run with proper arguments
        o run 'ant relnotes' pointing at the file generated above to generate the release notes (as HTML)

        – Apache Derby SOAP client for generating release notes –

        The main purpose of this client is to fetch the required information from
        JIRA, such that the release manager can generate the release notes.
        This tool does not generate the release notes, but provides some of the
        information for the tool doing that.

        Usage:
        o <USER> <PASSWORD> <VERSION> <FILTERID> <DESTINATION_FILE> [<REMOVE_ISSUES>]
        generates a list of fixed issues for the specified release version,
        which can be processed by the ReleaseNotesGenerator tool
        o <USER> <PASSWORD> ancestors <VERSION>
        prints the ancestors of the specified version
        (only released versions can be ancestor)

        Argument values:
        o VERSION
        Derby version string, i.e. 10.6.2.1
        o FILTERID
        JIRA id, only digits allowed

        What remains:
        o more testing
        o does the client to anything useful?
        o does it need to do anything else?
        o integrate with 'ant relnotes' target?

        Show
        Kristian Waagan added a comment - Attaching patch 1a, which contains the first revision of the described tool. Maven2 is required, to build do 'mvn -Pbuildclient'. There exists another target in case the WSDL file has to be updated: 'mvn -Pfetch-wsdl'. 'mvn clean' cleans up generated files. To test, run: o java -jar target/JiraSOAP-LATEST-jar-with-dependencies.jar o read the help text, re-run with proper arguments o run 'ant relnotes' pointing at the file generated above to generate the release notes (as HTML) – Apache Derby SOAP client for generating release notes – The main purpose of this client is to fetch the required information from JIRA, such that the release manager can generate the release notes. This tool does not generate the release notes, but provides some of the information for the tool doing that. Usage: o <USER> <PASSWORD> <VERSION> <FILTERID> <DESTINATION_FILE> [<REMOVE_ISSUES>] generates a list of fixed issues for the specified release version, which can be processed by the ReleaseNotesGenerator tool o <USER> <PASSWORD> ancestors <VERSION> prints the ancestors of the specified version (only released versions can be ancestor) Argument values: o VERSION Derby version string, i.e. 10.6.2.1 o FILTERID JIRA id, only digits allowed — What remains: o more testing o does the client to anything useful? o does it need to do anything else? o integrate with 'ant relnotes' target?

          People

          • Assignee:
            Kristian Waagan
            Reporter:
            Kristian Waagan
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development