Difference between revisions of "Release Instructions"

From PCGen Wiki
Jump to: navigation, search
(The Build)
(Initial gradle scirpt)
Line 17: Line 17:
 
===Release===
 
===Release===
 
* Java SDK 1.6 (the one that includes the javac compiler)
 
* Java SDK 1.6 (the one that includes the javac compiler)
* Maven 1.1
+
* Gradle 1.x
* [[ANT|Ant 1.6]]
 
 
* Perl interpreter
 
* Perl interpreter
* Perl modules: readonly and File-Copy-Recursive (installed on Windows via ActivePerl's Perl Package Manager)
 
* [http://cygwin.com/ Cygwin] You'll need to install SSH (two modules under Net), an editor, and rsync)
 
 
* SVN
 
* SVN
 
* [http://nsis.sourceforge.net/Download NSIS]
 
* [http://nsis.sourceforge.net/Download NSIS]
Line 37: Line 34:
 
# Copy the previous set of release notes to pcgen-release-notes-nnn.html where nnn is the version number.
 
# Copy the previous set of release notes to pcgen-release-notes-nnn.html where nnn is the version number.
 
# Do a global replace of the old version number to the new version number, both as n.nn.n and nnnn
 
# Do a global replace of the old version number to the new version number, both as n.nn.n and nnnn
# Open JIRA and for each project open the release notes for the version.
+
# Open Jira and for each project open the release notes for the version.
 
# Copy the html to the changelog section, changing h2 tags to h3.
 
# Copy the html to the changelog section, changing h2 tags to h3.
 
# Update the What's New section with any high profile changes.
 
# Update the What's New section with any high profile changes.
Line 47: Line 44:
 
# '''svn update''' the PCGen repository (5 mins)
 
# '''svn update''' the PCGen repository (5 mins)
 
# Release manager edits src/java/pcgen/gui/prop/PCGenProp.properties to set the release date, version number, contributors, etc. and commit the result (5 mins)
 
# Release manager edits src/java/pcgen/gui/prop/PCGenProp.properties to set the release date, version number, contributors, etc. and commit the result (5 mins)
# Execute '''ant clean build test''' for alpha and beta builds or '''ant clean build-optimize test''' for production builds in the pcgen directory and verify there are no failing Junit test (10 mins)
+
# Execute '''gradle clean build slowtest''' in the pcgen directory and verify there are no failing Junit test (20 mins)
# Check the [https://sourceforge.net/tracker/?group_id=25576 trackers] for any closed requests missing from the release notes. Steps 4 and 6 of 'Create Release Notes' section above can be used to assist here. (10 mins)
+
# Check Jira for any closed requests missing from the release notes. Steps 4 and 6 of 'Create Release Notes' section above can be used to assist here. (10 mins)
 
# Update the readme.md file with the what's new section of the release notes.
 
# Update the readme.md file with the what's new section of the release notes.
# Smoke test the newly build pcgen.jar (you can use '''maven pcgen:genrelease''' to generate a testing zip). NB: If there are any "Unknown publisher" messages when running this you need to add new entries for the listed publishers to the gendatalist.pl script. (30 mins)
+
# Execute '''gradle genDataList''' and check if there are any "Unknown publisher" messages. If so you need to add new entries for the listed publishers to the gendatalist.pl script.(1 min1)
 +
# Execute '''gradle fullZip''' or '''gradle buildNsis''' to generate a testing zip or exe. (3 mins)
 +
# Smoke test the newly built pcgen full zip or exe.  (30 mins)
 
# Create a folder for the release under the [https://sourceforge.net/projects/pcgen/files/ File Manager]
 
# Create a folder for the release under the [https://sourceforge.net/projects/pcgen/files/ File Manager]
# Upload the release notes using the File Manager to the release fiolder
+
# Upload the release notes using the File Manager to the release folder
# Delete the generated files in the ../release folder and then run '''maven clean''' to tidy up the maven generated files in the target directory
+
# '''needs updating>>''' Run '''gradle release''' (which updates the gradlefiles and tags the SVN repository). Tag format is '''release-5.17.x''' while the version format is '''5.17.x''' (2 mins)
# Run '''maven scm:prepare-release''' (which updates the maven files and tags the SVN repository). Tag format is '''release-5.17.x''' while the version format is '''5.17.x''' (2 mins)
+
# Run '''gradle checksum''' to generate the release files. (5 mins)
# Run '''maven pcgen:release''' to generate the release files and upload them to SourceForge. (Takes 5-10 mins then 5 mins) This will:
+
# Upload the release files to SourceForge. The quickest way is uploading via the web, the same way you uploaded the release notes etc. (10 mins)
## Run release.pl to create the .zip files and to prepare the nsis directory for the Windows installer
+
# Update Readme.MD with the SHA256 checksums from target/SHA256-digests.txt. Upload the revised file and check-in. (5 mins)
## Run the NSIS compiler to create the windows installation .exe
 
## Run gendigest.pl to generate the SHA1 checksums for the files.
 
# Once the command completes, you need to upload the files to SourceForge. Some common options are listed below. See the [https://sourceforge.net/apps/trac/sourceforge/wiki/Release%20files%20for%20download SourceForge Release File System doco] for more information. (1 hour or more)
 
#* Using cygwin on Windows, or from the Unix prompt, point the program to your target directory e.g. '''/cygdrive/d/eclipse/pcgen/target''' and then use rsync to upload the generated files in the publish folder. e.g. '''rsync -avP -e ssh *.zip jdempsey@frs.sourceforge.net:/home/frs/project/p/pc/pcgen''' Repeat for exe and jar. 
 
#* Using an SCP client such as WinSCP, login to frs.sourceforge.net using you user name and upload the files from the target/publish folder to the release folder under /home/frs/project/p/pc/pcgen .
 
# Update Readme.MD with the SHA1 checksums from target/SHA1-digests.txt. Upload the revised file and check-in. (5 mins)
 
 
# Notify PCGen_bod of the new release. (5 mins)
 
# Notify PCGen_bod of the new release. (5 mins)
 
# PR Monkeys create a news item for the new release
 
# PR Monkeys create a news item for the new release
Line 83: Line 76:
  
 
==Signing Files with PGP==
 
==Signing Files with PGP==
We currently use the [[http://www.gnupg.org/ GnuPG for Windows]] to generate the signatures. You will need the private key, either your own, or the PCGen one (contact the PCGen BOD). Once GnuPG is installed and knows about the key you wish to use, it is just a matter fo right clicking on the files to be signed (multi-select is fine) and selecting GPGee > Sign and then making sure the PCGen key is selected, hitting OK and entering the passphrase for the key. This creates an .asc signature file for each selected file.
+
'''Historical only''' We used to use the [[http://www.gnupg.org/ GnuPG for Windows]] to generate the signatures. You will need the private key, either your own, or the PCGen one (contact the PCGen BOD). Once GnuPG is installed and knows about the key you wish to use, it is just a matter fo right clicking on the files to be signed (multi-select is fine) and selecting GPGee > Sign and then making sure the PCGen key is selected, hitting OK and entering the passphrase for the key. This creates an .asc signature file for each selected file.
  
 
==Troubleshooting==
 
==Troubleshooting==
Line 90: Line 83:
 
Check your versions.  
 
Check your versions.  
 
JDK1.5 is required with JAVA_HOME variable (see below)
 
JDK1.5 is required with JAVA_HOME variable (see below)
Maven 1.1 (Not using 2.1)
 
 
SVN must be a true .exe install, TortoiseSVN will not meet this requirement
 
SVN must be a true .exe install, TortoiseSVN will not meet this requirement
 
SVN exe can be found here [[http://subversion.tigris.org/files/documents/15/46531/Setup-Subversion-1.6.5.msi SVN]]
 
SVN exe can be found here [[http://subversion.tigris.org/files/documents/15/46531/Setup-Subversion-1.6.5.msi SVN]]
Line 96: Line 88:
 
My Computer > System > Advanced Settings:
 
My Computer > System > Advanced Settings:
 
For JAVA_HOME make sure it's a set System Variable and make sure it's using the correct path to your current installation base folder
 
For JAVA_HOME make sure it's a set System Variable and make sure it's using the correct path to your current installation base folder
 
Same goes for MAVEN
 
 
PATH Should have the Maven Install Path, PERL install Path, Java Install Path
 
 
-
 
In the installers\Windows_Installer\Includes\ Directory you'll need to have your paths set for the Base Destination Folder
 
We are using localpaths.pl with the following code (Alter it for your circumstances, and if the file does not exist you will need to create it)
 
 
* #!/usr/bin/perl\n
 
* $SRC_BRANCH = 'C:/Install/Path/To/BaseFolder';
 
* $DEST_BASE_FOLDER  = 'C:/Install/releaseFolder';
 
 
-- Current Unresolved Error Messages:
 
 
pcgen:release:
 
pcgen:genrelease:
 
    [exec] =================
 
    [exec] Paths in use are:
 
    [exec] $SRC_BRANCH is D:/eclipse/Clean_Trunk/Trunk/pcgen
 
    [exec] $DEST_BASE_FOLDER is D:/eclipse/release
 
    [exec] =================
 
    [exec]
 
    [exec] Removing old and creating new directories...
 
    [exec] Generating the Windows installer publisher list...
 
    [exec] Create Installer Constants file...
 
    [exec] Copy Windows local files...
 
    [exec] Can't rmtree(D:/eclipse/release/nsis_dir/Local/.svn), $! is "No such file or directory" at (eval 21) line 3
 
    [exec]      main::__ANON__('D:/eclipse/release/nsis_dir/Local/.svn') called at release.pl line 226
 
    [exec] [ERROR] Result: 2
 
 
nsis:generate-project:
 
    [echo] Creating D:\eclipse\Clean_Trunk\Trunk/target/project.nsh ...
 
 
nsis:generate-setup:
 
    [echo] Creating D:\eclipse\Clean_Trunk\Trunk/target/setup.nsi ...
 
 
nsis:installer:
 
    [exec] LicenseData: open failed "D:/eclipse/release/nsis_dir\PCGen_5170b\docs\acknowledgments\PCGenLicense.txt"
 
    [exec] Usage: LicenseData local_file_that_has_license_text | license_lang_string
 
    [exec] Error in macro MUI_PAGE_LICENSE on macroline 21
 
    [exec] Error in script "D:\eclipse\Clean_Trunk\Trunk/target/setup.nsi" on line 153 -- aborting creation process
 
-------------------------------------------------------------------------------
 
>> Unable to obtain goal [pcgen:release]
 
>> null returned: 1
 
-------------------------------------------------------------------------------
 
BUILD FAILED
 
-------------------------------------------------------------------------------
 
Total time  : 4 seconds
 
Finished at  : Tuesday, September 1, 2009 7:37:42 AM PDT
 
Final Memory : 4M/254M
 
-------------------------------------------------------------------------------
 
 
 
>> Referenced Line 153 has:
 
 
!insertmacro MUI_PAGE_LICENSE "${SrcDir}\PCGen_${SIMPVER}b\docs\acknowledgments\PCGenLicense.txt"
 

Revision as of 12:20, 17 June 2014

Introduction

Here are the steps to follow when making a release of PCGen. If it is your first time, please check the prereqs section at the bottom of this page.

Prerequisites

The first time you run a release you will have to make sure you have the following tools available:

Release Notes

  • Text editor
  • Web browser
  • Perl interpreter
  • Perl modules: readonly (installed on Windows via ActivePerl's Perl Package Manager)

Release

  • Java SDK 1.6 (the one that includes the javac compiler)
  • Gradle 1.x
  • Perl interpreter
  • SVN
  • NSIS

Outstanding Issues

You need to check JIRA for any outstanding issues to ensure the release meets our QA std.

  • Alpha releases require no Blockers, allow Critical only with Code lead exception
  • Beta releases require no Blockers or Criticals
  • RCs/final releases require no Blockers, Criticals, or Majors

Create Release Notes

  1. Update your local copy of pcgen from SVN
  2. Copy the previous set of release notes to pcgen-release-notes-nnn.html where nnn is the version number.
  3. Do a global replace of the old version number to the new version number, both as n.nn.n and nnnn
  4. Open Jira and for each project open the release notes for the version.
  5. Copy the html to the changelog section, changing h2 tags to h3.
  6. Update the What's New section with any high profile changes.
  7. Commit the new release notes and notify pcgen_bod so they can review it.
  8. Notify pcgen dev and experimental lists of upcoming release, asking for autobuilds to be tested. Best to give 24 hours notice.

The Build

  1. Using a clean directory with no changes to the pcgen files
  2. svn update the PCGen repository (5 mins)
  3. Release manager edits src/java/pcgen/gui/prop/PCGenProp.properties to set the release date, version number, contributors, etc. and commit the result (5 mins)
  4. Execute gradle clean build slowtest in the pcgen directory and verify there are no failing Junit test (20 mins)
  5. Check Jira for any closed requests missing from the release notes. Steps 4 and 6 of 'Create Release Notes' section above can be used to assist here. (10 mins)
  6. Update the readme.md file with the what's new section of the release notes.
  7. Execute gradle genDataList and check if there are any "Unknown publisher" messages. If so you need to add new entries for the listed publishers to the gendatalist.pl script.(1 min1)
  8. Execute gradle fullZip or gradle buildNsis to generate a testing zip or exe. (3 mins)
  9. Smoke test the newly built pcgen full zip or exe. (30 mins)
  10. Create a folder for the release under the File Manager
  11. Upload the release notes using the File Manager to the release folder
  12. needs updating>> Run gradle release (which updates the gradlefiles and tags the SVN repository). Tag format is release-5.17.x while the version format is 5.17.x (2 mins)
  13. Run gradle checksum to generate the release files. (5 mins)
  14. Upload the release files to SourceForge. The quickest way is uploading via the web, the same way you uploaded the release notes etc. (10 mins)
  15. Update Readme.MD with the SHA256 checksums from target/SHA256-digests.txt. Upload the revised file and check-in. (5 mins)
  16. Notify PCGen_bod of the new release. (5 mins)
  17. PR Monkeys create a news item for the new release
  18. PR Monkeys send announcement to all pcgen mailing list for the new release

Update JIRA

For each of the projects, mark the version you are working on as released and create the next version if it doesn't already exist. When marking a version as released, please make sure the released date is set to today.

Mac Installer

See Instructions

Signing Files with PGP

Historical only We used to use the [GnuPG for Windows] to generate the signatures. You will need the private key, either your own, or the PCGen one (contact the PCGen BOD). Once GnuPG is installed and knows about the key you wish to use, it is just a matter fo right clicking on the files to be signed (multi-select is fine) and selecting GPGee > Sign and then making sure the PCGen key is selected, hitting OK and entering the passphrase for the key. This creates an .asc signature file for each selected file.

Troubleshooting

Yes, even the best installs of all the program amount to nothing if there is a hitch. These are basic notes from the current issues cropping up and resolutions. These notes are not prettified yet. The idea being we will get a full set of troubleshooting tips and tricks here in the near future.

Check your versions. JDK1.5 is required with JAVA_HOME variable (see below) SVN must be a true .exe install, TortoiseSVN will not meet this requirement SVN exe can be found here [SVN]

My Computer > System > Advanced Settings: For JAVA_HOME make sure it's a set System Variable and make sure it's using the correct path to your current installation base folder