Loading...
 
(Cached)

How to release Releasing

Requirements

  1. Unix shell environment, Linux or OSX suitable.
  2. Subversion 1.7 or more
  3. PHP 5.x CLI with MySQL, iconv, DOM and SimpleXML extensions
  4. PHP configuration must allow running external programs (like shell scripts)
  5. 7za or 7z needed for creating 7zip archives. (may be installed in OSX through homebrew by typing brew install p7zip)
  6. Plenty of disk space and memory ;) - at least 64M of memory for php (in php.ini for php-cli)
  7. The main packaging script is at doc/devtools/release.php but releasing a Tiki version is a lot more than just running the packaging script :-)

Alternatively

1.1. Release Steps

1.1.1. Checkout Tiki

How to Use the Release Server You need to get a subversion checkout to a new directory (of this branch).

Make sure you don't have any spaces in the path to this new checkout (as of Tiki 5.x).

1.1.2. Setup.sh

When releasing version greater than 9.x there is the Composer to handle external libraries dependencies (as opposed to SVN externals).
It is not clear if there is no need to run 'sh setup.sh' to get the vendor libraries via Composer. Jonny reported that it was not needed for 11.x but it is needed for 12.x. It is needed also if you are doing a pre-release "dry run" which skips some steps, (e.g. using command php doc/devtools/release.php --no-commit --no-check-svn 12.2 preRC1). So it is better to run it anyway than later quit the release script and need to re-run it.

Run:

sh ./setup.sh


And choose 'c' option (fpr composer) instead of 'f', which is not needed for release.

1.1.3. Update lib/setup/twversion.class.php before the release

Look for section with "Release Managers should update this array before release." of twversion.class.php (of your relevant branch)

  • increment the version number and the star name in the constructor
  • temporarily, remove the svn from the branch number. E.g.
    function TWVersion()
    	{
    		// Set the development branch.  Valid are:
    		//   stable   : Represents stable releases.
    		//   unstable : Represents candidate and test/development releases.
    		//   trunk     : Represents next generation development version.
    		$this->branch 	= 'stable';
    
    		// Set everything else, including defaults.
    		$this->version 	= '12.1svn';	// needs to have no spaces for releases
    		$this->star	= 'Altair';

    Since we where to release 12.1, we need to remove the "svn" from "12.1svn", so this part will stay as:
    // Set everything else, including defaults.
    		$this->version 	= '12.1';	// needs to have no spaces for releases
  • update list of valid releases in tikiVersions()
    • Make sure you add all Tiki versions (not just the one you are doing now). Ex.: when 5.0 is released, 4.2 will probably exist, as this was added to branches/4.x but not merged by script.
    • change the version branch to "unstable", "stable", or "trunk" as explained in that file
  • Update the star name in the list in the function tikiStars()
  • Commit your changes with this commit message (change \$VERSION by the version of the release):
    [REL] Preparing \$VERSION release

1.1.3.1. # Remove the previous secdb file

  • The release script will do this since Tiki 18

1.1.4. Run script

The main packaging script is at doc/devtools/release.php

Go to the newly created directory

Display Basic Help
php doc/devtools/release.php --help


You may need to run the release command providing your MySQL credentials for the script to successfully create the secdb file for you. So if you are releasing from your own computer instead of the release server, you may need to use this command which provides the MySQL credentials:

/usr/bin/php -d mysql.default_host=HOST -d mysql.default_user=USER -d mysql.default_password=PASS doc/devtools/release.php 12.1 beta


(replace 12.1 beta with the corresponding release version)

1.1.5. Create and test pre-release packages

  • This is done by executing the release script with the release version as argument, using the format major.minor preXYZ (XYZ can be RC1, RC2, alpha, beta1, beta2, etc.)
  • Use the --help option of the release script for advanced help on options (like using a web proxy)

php7.1 doc/devtools/release.php 19.0 preRC1

Note: Use the command for the version of PHP which is the minimum spec for that branch. In this case we need PHP 7.1 for Tiki 19.x, 5.6 for 18.x and 15.x and 5.3 for 12.x, for instance

The release script has an interactive mode, enabled by default, that will ask you if you really want to do each step. It also asks for a confirmation before committing any changes. You can have a look at them with another shell by using this command:

Check for changes made by the release script before validating commits
svn --ignore-externals status
svn --ignore-externals diff

1.1.5.1. Check the generated README file

  • Check links/content in the generated README file

1.1.6. Launch the release script again

After testing, launch the release script again, now without "pre":

php7.1 doc/devtools/release.php 19.0 RC1

1.1.6.1. Troubleshooting

1.1.6.1.1. Mysql credentials

In step 11 (or 8 ?) of the release script ("8) Generate SecDB file 'db/tiki-secdb_12.1_mysql.sql'?"), you might see this type of error:

SecDB step failed because some filenames need escaping but no MySQL connection has been found.
Try this command line instead (replace HOST, USER and PASS by a valid MySQL host, user and password) :

	/usr/bin/php -d mysql.default_host=HOST -d mysql.default_user=USER -d mysql.default_password=PASS doc/devtools/release.php 12.1 beta


If so, provide your own HOST, USER and PASS for your MySQL from the machine where you are running the release script, and you should be fine, then.

1.1.7. Test the produced "tarballs" and share the testing

Test on your server. Ideally, you have 1-2 other people trying on different servers. In case of a major version (x.0), you need at least 3 installations from 3 different people

1.1.8. Upload tarballs to Sourceforge

When the "tarballs" are tested, follow the steps to upload on SourceForge:


To upload the 'tarballs', copy-paste and execute the following line (and change '$SF_LOGIN' by your SF.net login and $VERSION with the version, which may look like "7.0.rc1" ):

cd ~/tikipack/$VERSION
scp *bz2 *gz *zip *7z $SF_LOGIN@frs.sourceforge.net:/home/pfs/project/t/ti/tikiwiki/$RELEASEFOLDER$
Real example
#since 15.0 :

scp *bz2 *gz *zip *7z username,tikiwiki@frs.sourceforge.net:/home/pfs/project/t/ti/tikiwiki/Tiki_XX.x_Starname/XX.Y


Alternatively, you can do it with sftp

User jsmith seeks to put tiki-12.1.* .7z .zip .tgz .bz2 to the 12.1 directory of his project, tikiwiki:

$ sftp jsmith@frs.sourceforge.net
Connecting to frs.sourceforge.net...
jsmith,fooproject@frs.sourceforge.net's password: 
sftp> cd /home/frs/project/tikiwiki/Tiki_12.x_Altair/
sftp> mkdir 12.1
sftp> cd 12.1
sftp> mput tiki*.*
Uploading tiki-12.1.7z to /home/pfs/project/tikiwiki/Tiki_12.x_Altair/12.1/tiki-12.1.7z
tiki-12.1.7z                                                                                                           100%   27MB   2.3MB/s   00:12    
Uploading tiki-12.1.tar.bz2 to /home/pfs/project/tikiwiki/Tiki_12.x_Altair/12.1/tiki-12.1.tar.bz2
tiki-12.1.tar.bz2                                                                                                      100%   38MB   2.9MB/s   00:13    
Uploading tiki-12.1.tar.gz to /home/pfs/project/tikiwiki/Tiki_12.x_Altair/12.1/tiki-12.1.tar.gz
tiki-12.1.tar.gz                                                                                                       100%   43MB   2.7MB/s   00:16    
Uploading tiki-12.1.zip to /home/pfs/project/tikiwiki/Tiki_12.x_Altair/12.1/tiki-12.1.zip
tiki-12.1.zip                                                                                                          100%   52MB   2.9MB/s   00:18    
sftp>

You need to have "release technician" status on SourceForge. Ask an Admin if you don't have it.

1.1.9. Update lib/setup/twversion.class.php after the release

  • change $this->version = '8.3'; to '8.4svn';


Needs to have no spaces and use the format X.YabcZ see tikiVersions fn below for examples

You can add a commit message like this one:

[REL]Closing release 12.1beta

1.1.10. Merge the changes back to trunk

It's polite after a release to merge the changes back into trunk assuming we are in a Semi-automatic merging period as there are often conflicts with the twversion.class.php file and language files

  • So on a clean checkout of trunk you need to run:
php doc/devtools/svnbranchupdate.php branches/19.x

For conflicts use mc (mine-conflict) for the language files and twversion.class.php but review the changes before committing them, of course.

Keywords

The following is a list of keywords that should serve as hubs for navigation within the Tiki development and should correspond to documentation keywords.

Each feature in Tiki has a wiki page which regroups all the bugs, requests for enhancements, etc. It is somewhat a form of wiki-based project management. You can also express your interest in a feature by adding it to your profile. You can also try out the Dynamic filter.

Accessibility (WAI & 508)
Accounting
Administration
Ajax
Articles & Submissions
Backlinks
Banner
Batch
BigBlueButton audio/video/chat/screensharing
Blog
Bookmark
Browser Compatibility
Calendar
Category
Chat
Comment
Communication Center
Consistency
Contacts Address book
Contact us
Content template
Contribution
Cookie
Copyright
Credits
Custom Home (and Group Home Page)
Database MySQL - MyISAM
Database MySQL - InnoDB
Date and Time
Debugger Console
Directory (of hyperlinks)
Documentation link from Tiki to doc.tiki.org (Help System)
Docs
DogFood
Draw
Dynamic Content
Preferences
Dynamic Variable
External Authentication
FAQ
Featured links
Feeds (RSS)
File Gallery
Forum
Friendship Network (Community)
Group
Help
History
Hotword
HTML Page
i18n (Multilingual, l10n, Babelfish)
Image Gallery
Import-Export
Install
Integrator
Interoperability
Inter-User Messages
InterTiki
jQuery
Kaltura video management
Karma
Live Support
Logs (system & action)
Lost edit protection
Mail-in
Map
Menu
Meta Tag
Missing features
Visual Mapping
Mobile
Mods
Modules
MultiTiki
MyTiki
Newsletter
Notepad
OS independence (Non-Linux, Windows/IIS, Mac, BSD)
Organic Groups (Self-managed Teams)
Packages
Payment
PDF
Performance Speed / Load / Compression / Cache
Permission
Poll
Profiles
Quiz
Rating
Realname
Report
Revision Approval
Scheduler
Score
Search engine optimization (SEO)
Search
Security
Semantic links
Share
Shopping Cart
Shoutbox
Site Identity
Slideshow
Smarty Template
Social Networking
Spam protection (Anti-bot CATPCHA)
Spellcheck
Spreadsheet
Staging and Approval
Stats
Survey
Syntax Highlighter (Codemirror)
Tablesorter
Tags
Task
Tell a Friend, alert + Social Bookmarking
Terms and Conditions
Theme
TikiTests
Timesheet
Token Access
Toolbar (Quicktags)
Tours
Trackers
TRIM
User Administration
User Files
User Menu
Watch
Webmail and Groupmail
WebServices
Wiki History, page rename, etc
Wiki plugins extends basic syntax
Wiki syntax text area, parser, etc
Wiki structure (book and table of content)
Workspace and perspectives
WYSIWTSN
WYSIWYCA
WYSIWYG
XMLRPC
XMPP




Useful Tools