Release management: Difference between revisions

From Scribus Wiki
Jump to navigation Jump to search
 
(15 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Project management]]
[[Category:Project management]]
[[Category:Development]]


= Release management =
=Release management=
Preparing Scribus for a release
==Release Day - 3 weeks==
# Feature freeze
# E-mail to the mailing list announcing the feature freeze and asking for testing


== Before the release ==
==Release Day - 2 weeks==
# String freeze
# Update and commit new ts files
# Push translation files to Transifex, use [https://raw.githubusercontent.com/scribusproject/scribus-translations/master/update_transifex.sh Transifex script] with --push flag
# Send a message to all Scribus translators about the deadline of the upcoming release -- set the deadline for delivering the translations to e.g. "Release Day -3 day"
#* To message all translators on Transifex: Log in to Transifex and make an [https://www.transifex.com/scribus/scribus/announcements/ Announcement]
#* To the translators that aren't using Transifex there is a list (To Be Provided) that will be used to manually group email them
#* to the scribus mailing list


* t - 2 weeks: Alert the translators (how? where is scribus-translate list) to update interface translations. String freeze is in effect from now until release. Update and commit new ts files
==Release Day - 1 week==
* t - 3 days: Finish the release notes, changelog, and the PR spiel for the mailing list and wiki/website.
# Send the final version of the (short) release announcement to all translators, asking them to translate it into their languages -- set the deadline for delivering the translations to e.g. "Release Day -1 day"
* t - 1 day: Commit a new splash and about screen image, and update all versions in a number of source code locations:
** <code>Scribus/scribus.lsm</code>
** <code>Scribus/config.h.cmake</code>
** <code>Scribus/CMakeLists.txt</code>
** <code>Scribus/scribusversions.xml</code>
** <code>Scribus/README</code>
** <code>Scribus/Scribus.app/Contents/Info.plist</code>
** <code>Scribus/OSX-package/inputs/Info.plist</code>
** <code>Scribus/OSX-package/inputs/Scribus.pkg-Info.plist</code>
** <code>Scribus/Changelog</code>
** Prepare a packager's release tarball and alert the packagers.


==Release Day - 3 days==
# Finish the release notes
# Finish Changelog
# Finish PR spiel for the mailing list and wiki/website.
# Email to all Scribus translators [https://wiki.scribus.net/canvas/Release_management#Release_Day_-_2_weeks see Release t-2 weeks] that the deadline for their translations is about to pass
==Release Day - 2 days==
==Release Day - 1 day==
* Commit a new splash and about screen image, and update all versions in a number of source code locations:
:* <code>Scribus/scribus/ui/about.cpp</code>
:* <code>Scribus/scribus.lsm</code>
:* <code>Scribus/config.h.cmake</code>
:* <code>Scribus/CMakeLists.txt</code>
:* <code>Scribus/resources/versions/scribusversions.xml</code>
:* <code>Scribus/README</code>
:* <code>Scribus/Scribus.app/Contents/Info.plist</code>
:* <code>Scribus/OSX-package/inputs/Info.plist</code>
:* <code>Scribus/OSX-package/inputs/Scribus.pkg-Info.plist</code>
:* <code>Scribus/Changelog</code>
:* <code>Scribus/win32/msvc2013/scribus-main/Scribus.rc</code>
:* <code>Scribus/win32/msvc2013/win-config.h</code>
:* <code>Scribus/win32/msvc2015/scribus-main/Scribus.rc</code>
:* <code>Scribus/win32/msvc2015/win-config.h</code>
:* Prepare a packager's release tarball and alert the packagers.
* Tag the new release
* Tag the new release
** <code>svn copy svn+ssh://[url]/svn/branches/[branchname] svn+ssh://[url]/svn/tags/Release_a.b.c[.rcN] -m "Tag a.b.c[.rcN]"</code>
:* <code>svn copy svn+ssh://[url]/svn/branches/[branchname] svn+ssh://[url]/svn/tags/Release_a.b.c[.rcN] -m "Tag a.b.c[.rcN]"</code>
** OR
:: OR
** <code>svn copy svn+ssh://[url]/svn/trunk svn+ssh://[url]/svn/tags/Release_a.b.c[.rcN] -m "Tag a.b.c[.rcN]"</code>
:* <code>svn copy svn+ssh://[url]/svn/trunk svn+ssh://[url]/svn/tags/Release_a.b.c[.rcN] -m "Tag a.b.c[.rcN]"</code>


== Release day ==
==Release Day==
===Before Release===
* Prepare signed source tarballs and upload both the tarballs and the signatures to SourceForge. X.Y.Z refers to the version being released.
* Prepare signed source tarballs and upload both the tarballs and the signatures to SourceForge. X.Y.Z refers to the version being released.


#Check out from SVN from the release tag:
<ol>
#:Eg:
<li>Check out from SVN from the release tag:</li>
#: <code>svn co svn+ssh://[url]/svn/tags/Release_X.Y.Z</code>
: <code>svn co svn+ssh://[url]/svn/tags/Release_X.Y.Z</code>


#Change to the Release_X.Y.Z directory:
<li>Change to the Release_X.Y.Z directory:</li>
#:Eg:
: <code>cd Release_X.Y.Z</code>
#:<code>cd Release_X.Y.Z</code>


#Rename Scribus directory to scribus-X.Y.Z:
<li>Rename Scribus directory to scribus-X.Y.Z:</li>
#:Eg:
: <code>mv Scribus scribus-X.Y.Z</code>
#:<code>mv Scribus scribus-X.Y.Z</code>


#Run the tar process - we need this file for all of the compression types we want so we do this first:
<li>Run the tar process - we need this file for all of the compression types we want so we do this first:</li>
#:Eg:
: <code>tar --exclude=.svn -cvf scribus-X.Y.Z.tar scribus-X.Y.Z/</code>
#:<code>tar -cvf scribus-X.Y.Z.tar scribus-X.Y.Z/</code>


#Compress the files:
<li>Compress the files:</li>
#:XZ: <code>xz -k -e -v -z scribus-X.Y.Z.tar</code>
:XZ: <code>xz -k -e -v -z scribus-X.Y.Z.tar</code>
#:7Zip: <code>7z a scribus-X.Y.Z.tar.7z scribus-X.Y.Z.tar</code>
:7Zip: <code>7z a -xr'!.*' scribus-X.Y.Z.7z scribus-X.Y.Z/</code>
#:BZ2: <code>bzip2 -k scribus-X.Y.Z.tar.bz2</code>
:BZ2: <code>bzip2 -k scribus-X.Y.Z.tar</code>
#:GZ: <code>gzip -c scribus-X.Y.Z.tar > scribus-X.Y.Z.tar.gz</code>
:GZ: <code>gzip -c scribus-X.Y.Z.tar > scribus-X.Y.Z.tar.gz</code>


#GPG Sign the files:
<li>GPG Sign the files:</li>
#:Eg:
:<code>gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.7z</code>
#:<code>gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.7z</code>
:<code>gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.gz </code>
#:<code>gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.gz </code>
:<code>gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.xz </code>
#:<code>gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.xz </code>
:<code>gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.bz2 </code>
#:<code>gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.bz2 </code>


#Verify the files:
<li>Verify the files:</li>
#:Eg:
:<code>gpg --verify scribus-X.Y.Z.7z.asc scribus-X.Y.Z.7z</code>
#:gpg --verify scribus-X.Y.Z.tar.7z.asc scribus-X.Y.Z.tar.7z</code>
:<code>gpg --verify scribus-X.Y.Z.tar.bz2.asc scribus-X.Y.Z.tar.bz2</code>
#:gpg --verify scribus-X.Y.Z.tar.bz2.asc scribus-X.Y.Z.tar.bz2</code>
:<code>gpg --verify scribus-X.Y.Z.tar.gz.asc scribus-X.Y.Z.tar.gz</code>
#:gpg --verify scribus-X.Y.Z.tar.gz.asc scribus-X.Y.Z.tar.gz</code>
:<code>gpg --verify scribus-X.Y.Z.tar.xz.asc scribus-X.Y.Z.tar.xz</code>
#:gpg --verify scribus-X.Y.Z.tar.xz.asc scribus-X.Y.Z.tar.xz</code>


#Create the new directory on Sourceforge for the X.Y.Z version. Set it to staging:
<li>Create the new directory on Sourceforge for the X.Y.Z version. Set it to staging:</li>
#:Under sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus/scribus/X.Y.Z
:Under sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus/scribus/X.Y.Z
#:or
:OR
#:sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus-devel/scribus/X.Y.Z
:sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus-devel/scribus/X.Y.Z
 
#Upload to SourceForge:
#:Select scribus/scribus-devel directories, then the version number:
#:Eg to:
#:<code>sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus/scribus/X.Y.Z</code>
#:or
#:<code>sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus-devel/scribus/X.Y.Z</code>


<li>Upload to SourceForge:</li>
:Select scribus/scribus-devel directories, then the version number:
:Eg to: <code>sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus/scribus/X.Y.Z</code>
:OR
:<code>sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus-devel/scribus/X.Y.Z</code>
</ol>
#TODO: Upload Mac, Windows, OS/2 binaries. Turn off staging
#TODO: Upload Mac, Windows, OS/2 binaries. Turn off staging


* Send a Release email to the mailing list.
* Send a Release email to the mailing list.


== After the release ==
====Translations====
# Pull Translations from Transifex using the [https://raw.githubusercontent.com/scribusproject/scribus-translations/master/update_transifex.sh script --pull option] (which will pull all Transifex maintained languages)


Things that have to be done / updated after each release:
===After Release===
 
# Update the current version in the wiki
* Update the current version in the wiki
#: http://wiki.scribus.net/canvas/Template:Developmental-version
: http://wiki.scribus.net/canvas/Template:Developmental-version or
#: http://wiki.scribus.net/canvas/Template:Stable-version
: http://wiki.scribus.net/canvas/Template:Stable-version
#:https://wiki.scribus.net/canvas/Announcements
# Release announcement to the mailing list
# Unleash the translators, asking them to send their translated release announcements to local  media


=== After Specific releases ===
=== After Specific releases ===
 
# Things that have to be done / updated after a specific release (remove them as soon as they're done)
Things that have to be done / updated after a specific release (remove them as soon as they're done)
#* 1.4: remove the version reference in "If you are using 1.4's release candidates, please be sure to check the online manual (F1)" on  [http://wiki.scribus.net/canvas/Scribus].
 
* 1.4: remove the version reference in "If you are using 1.4's release candidates, please be sure to check the online manual (F1)" on  [http://wiki.scribus.net/canvas/Scribus].


= Other things to check =
= Other things to check =


Here is a list of things to check from time to time (and which are not tightly related to the releases). You may also put in this list things which are only temporarily on the website and  have to be removed in the future.
Here is a list of things to check from time to time (and which are not tightly related to the releases). You may also put in this list things which are only temporarily on the website and  have to be removed in the future.

Latest revision as of 14:39, 15 June 2024


Release management

Preparing Scribus for a release

Release Day - 3 weeks

  1. Feature freeze
  2. E-mail to the mailing list announcing the feature freeze and asking for testing

Release Day - 2 weeks

  1. String freeze
  2. Update and commit new ts files
  3. Push translation files to Transifex, use Transifex script with --push flag
  4. Send a message to all Scribus translators about the deadline of the upcoming release -- set the deadline for delivering the translations to e.g. "Release Day -3 day"
    • To message all translators on Transifex: Log in to Transifex and make an Announcement
    • To the translators that aren't using Transifex there is a list (To Be Provided) that will be used to manually group email them
    • to the scribus mailing list

Release Day - 1 week

  1. Send the final version of the (short) release announcement to all translators, asking them to translate it into their languages -- set the deadline for delivering the translations to e.g. "Release Day -1 day"

Release Day - 3 days

  1. Finish the release notes
  2. Finish Changelog
  3. Finish PR spiel for the mailing list and wiki/website.
  4. Email to all Scribus translators see Release t-2 weeks that the deadline for their translations is about to pass

Release Day - 2 days

Release Day - 1 day

  • Commit a new splash and about screen image, and update all versions in a number of source code locations:
  • Scribus/scribus/ui/about.cpp
  • Scribus/scribus.lsm
  • Scribus/config.h.cmake
  • Scribus/CMakeLists.txt
  • Scribus/resources/versions/scribusversions.xml
  • Scribus/README
  • Scribus/Scribus.app/Contents/Info.plist
  • Scribus/OSX-package/inputs/Info.plist
  • Scribus/OSX-package/inputs/Scribus.pkg-Info.plist
  • Scribus/Changelog
  • Scribus/win32/msvc2013/scribus-main/Scribus.rc
  • Scribus/win32/msvc2013/win-config.h
  • Scribus/win32/msvc2015/scribus-main/Scribus.rc
  • Scribus/win32/msvc2015/win-config.h
  • Prepare a packager's release tarball and alert the packagers.
  • Tag the new release
  • svn copy svn+ssh://[url]/svn/branches/[branchname] svn+ssh://[url]/svn/tags/Release_a.b.c[.rcN] -m "Tag a.b.c[.rcN]"
OR
  • svn copy svn+ssh://[url]/svn/trunk svn+ssh://[url]/svn/tags/Release_a.b.c[.rcN] -m "Tag a.b.c[.rcN]"

Release Day

Before Release

  • Prepare signed source tarballs and upload both the tarballs and the signatures to SourceForge. X.Y.Z refers to the version being released.
  1. Check out from SVN from the release tag:
  2. svn co svn+ssh://[url]/svn/tags/Release_X.Y.Z
  3. Change to the Release_X.Y.Z directory:
  4. cd Release_X.Y.Z
  5. Rename Scribus directory to scribus-X.Y.Z:
  6. mv Scribus scribus-X.Y.Z
  7. Run the tar process - we need this file for all of the compression types we want so we do this first:
  8. tar --exclude=.svn -cvf scribus-X.Y.Z.tar scribus-X.Y.Z/
  9. Compress the files:
  10. XZ: xz -k -e -v -z scribus-X.Y.Z.tar
    7Zip: 7z a -xr'!.*' scribus-X.Y.Z.7z scribus-X.Y.Z/
    BZ2: bzip2 -k scribus-X.Y.Z.tar
    GZ: gzip -c scribus-X.Y.Z.tar > scribus-X.Y.Z.tar.gz
  11. GPG Sign the files:
  12. gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.7z
    gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.gz
    gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.xz
    gpg --default-key <key> --sign --detach-sign --armor scribus-X.Y.Z.tar.bz2
  13. Verify the files:
  14. gpg --verify scribus-X.Y.Z.7z.asc scribus-X.Y.Z.7z
    gpg --verify scribus-X.Y.Z.tar.bz2.asc scribus-X.Y.Z.tar.bz2
    gpg --verify scribus-X.Y.Z.tar.gz.asc scribus-X.Y.Z.tar.gz
    gpg --verify scribus-X.Y.Z.tar.xz.asc scribus-X.Y.Z.tar.xz
  15. Create the new directory on Sourceforge for the X.Y.Z version. Set it to staging:
  16. Under sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus/scribus/X.Y.Z
    OR
    sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus-devel/scribus/X.Y.Z
  17. Upload to SourceForge:
  18. Select scribus/scribus-devel directories, then the version number:
    Eg to: sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus/scribus/X.Y.Z
    OR
    sftp://frs.sourceforge.net/home/frs/project/s/sc/scribus-devel/scribus/X.Y.Z
  1. TODO: Upload Mac, Windows, OS/2 binaries. Turn off staging
  • Send a Release email to the mailing list.

Translations

  1. Pull Translations from Transifex using the script --pull option (which will pull all Transifex maintained languages)

After Release

  1. Update the current version in the wiki
    http://wiki.scribus.net/canvas/Template:Developmental-version
    http://wiki.scribus.net/canvas/Template:Stable-version
    https://wiki.scribus.net/canvas/Announcements
  2. Release announcement to the mailing list
  3. Unleash the translators, asking them to send their translated release announcements to local media

After Specific releases

  1. Things that have to be done / updated after a specific release (remove them as soon as they're done)
    • 1.4: remove the version reference in "If you are using 1.4's release candidates, please be sure to check the online manual (F1)" on [1].

Other things to check

Here is a list of things to check from time to time (and which are not tightly related to the releases). You may also put in this list things which are only temporarily on the website and have to be removed in the future.