2016-04-14 14:20:23 +02:00
<!DOCTYPE html>
< html >
< head >
< meta charset = "utf-8" >
< meta name = "generator" content = "pandoc" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0, user-scalable=yes" >
< title > Shaarli – Release Shaarli< / title >
< style type = "text/css" > code { white-space : pre ; } < / style >
< style type = "text/css" >
div.sourceCode { overflow-x: auto; }
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
margin: 0; padding: 0; vertical-align: baseline; border: none; }
table.sourceCode { width: 100%; line-height: 100%; }
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
td.sourceCode { padding-left: 5px; }
code > span.kw { color: #007020; font-weight: bold; } /* Keyword */
code > span.dt { color: #902000; } /* DataType */
code > span.dv { color: #40a070; } /* DecVal */
code > span.bn { color: #40a070; } /* BaseN */
code > span.fl { color: #40a070; } /* Float */
code > span.ch { color: #4070a0; } /* Char */
code > span.st { color: #4070a0; } /* String */
code > span.co { color: #60a0b0; font-style: italic; } /* Comment */
code > span.ot { color: #007020; } /* Other */
code > span.al { color: #ff0000; font-weight: bold; } /* Alert */
code > span.fu { color: #06287e; } /* Function */
code > span.er { color: #ff0000; font-weight: bold; } /* Error */
code > span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
code > span.cn { color: #880000; } /* Constant */
code > span.sc { color: #4070a0; } /* SpecialChar */
code > span.vs { color: #4070a0; } /* VerbatimString */
code > span.ss { color: #bb6688; } /* SpecialString */
code > span.im { } /* Import */
code > span.va { color: #19177c; } /* Variable */
code > span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code > span.op { color: #666666; } /* Operator */
code > span.bu { } /* BuiltIn */
code > span.ex { } /* Extension */
code > span.pp { color: #bc7a00; } /* Preprocessor */
code > span.at { color: #7d9029; } /* Attribute */
code > span.do { color: #ba2121; font-style: italic; } /* Documentation */
code > span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code > span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
< / style >
< link rel = "stylesheet" href = "github-markdown.css" >
<!-- [if lt IE 9]>
< script src = "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js" > < / script >
<![endif]-->
< / head >
< body >
< div id = "local-sidebar" >
< ul >
< li > < a href = "Home.html" > Home< / a > < / li >
2016-10-12 12:36:59 +02:00
< li > Setup
2016-04-14 14:20:23 +02:00
< ul >
2016-10-12 12:36:59 +02:00
< li > < a href = "Download-and-Installation.html" > Download and Installation< / a > < / li >
< li > < a href = "Upgrade-and-migration.html" > Upgrade and migration< / a > < / li >
2016-04-14 14:20:23 +02:00
< li > < a href = "Server-requirements.html" > Server requirements< / a > < / li >
< li > < a href = "Server-configuration.html" > Server configuration< / a > < / li >
< li > < a href = "Server-security.html" > Server security< / a > < / li >
< li > < a href = "Shaarli-configuration.html" > Shaarli configuration< / a > < / li >
2016-05-14 11:37:28 +02:00
< li > < a href = "Plugins.html" > Plugins< / a > < / li >
2016-04-14 14:20:23 +02:00
< / ul > < / li >
< li > < a href = "Docker.html" > Docker< / a > < / li >
< li > < a href = "Usage.html" > Usage< / a >
< ul >
< li > < a href = "Sharing-button.html" > Sharing button< / a > (bookmarklet)< / li >
< li > < a href = "Browsing-and-Searching.html" > Browsing and Searching< / a > < / li >
< li > < a href = "Firefox-share.html" > Firefox share< / a > < / li >
< li > < a href = "RSS-feeds.html" > RSS feeds< / a > < / li >
< / ul > < / li >
< li > How To
< ul >
< li > < a href = "Backup,-restore,-import-and-export.html" > Backup, restore, import and export< / a > < / li >
< li > < a href = "Copy-an-existing-installation-over-SSH-and-serve-it-locally.html" > Copy an existing installation over SSH and serve it locally< / a > < / li >
< li > < a href = "Create-and-serve-multiple-Shaarlis-(farm).html" > Create and serve multiple Shaarlis (farm)< / a > < / li >
< li > < a href = "Download-CSS-styles-from-an-OPML-list.html" > Download CSS styles from an OPML list< / a > < / li >
< li > < a href = "Datastore-hacks.html" > Datastore hacks< / a > < / li >
< / ul > < / li >
< li > < a href = "Troubleshooting.html" > Troubleshooting< / a > < / li >
< li > < a href = "Development.html" > Development< / a >
< ul >
< li > < a href = "GnuPG-signature.html" > GnuPG signature< / a > < / li >
< li > < a href = "Coding-guidelines.html" > Coding guidelines< / a > < / li >
< li > < a href = "Directory-structure.html" > Directory structure< / a > < / li >
< li > < a href = "3rd-party-libraries.html" > 3rd party libraries< / a > < / li >
< li > < a href = "Plugin-System.html" > Plugin System< / a > < / li >
< li > < a href = "Release-Shaarli.html" > Release Shaarli< / a > < / li >
< li > < a href = "Security.html" > Security< / a > < / li >
< li > < a href = "Static-analysis.html" > Static analysis< / a > < / li >
< li > < a href = "Theming.html" > Theming< / a > < / li >
< li > < a href = "Unit-tests.html" > Unit tests< / a > < / li >
< / ul > < / li >
< li > About
< ul >
< li > < a href = "FAQ.html" > FAQ< / a > < / li >
< li > < a href = "Community-&-Related-software.html" > Community & Related software< / a > < / li >
< / ul > < / li >
< / ul >
< / div >
< h1 id = "release-shaarli" > Release Shaarli< / h1 >
< p > See < a href = "http://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Tagging-Your-Releases" > Git - Maintaining a project - Tagging your [](.html)< br / >
releases< / a > .< / p >
2016-10-12 12:36:59 +02:00
< h2 id = "prerequisites" > Prerequisites< / h2 >
2016-04-14 14:20:23 +02:00
< p > This guide assumes that you have:< / p >
< ul >
< li > a GPG key matching your GitHub authentication credentials
< ul >
< li > i.e., the email address identified by the GPG key is the same as the one in your < code > ~/.gitconfig< / code > < / li >
< / ul > < / li >
< li > a GitHub fork of Shaarli< / li >
< li > a local clone of your Shaarli fork, with the following remotes:
< ul >
< li > < code > origin< / code > pointing to your GitHub fork< / li >
< li > < code > upstream< / code > pointing to the main Shaarli repository< / li >
< / ul > < / li >
2016-12-12 03:38:12 +01:00
< li > maintainer permissions on the main Shaarli repository, to:
< ul >
< li > push the signed tag< / li >
< li > create a new release< / li >
< / ul > < / li >
2016-10-12 12:36:59 +02:00
< li > < a href = "https://getcomposer.org/" > Composer< / a > and < a href = "http://pandoc.org/" > Pandoc< / a > need to be installed< a href = ".html" > < / a > < / li >
2016-04-14 14:20:23 +02:00
< / ul >
2016-12-12 03:38:12 +01:00
< h2 id = "github-release-draft-and-changelog.md" > GitHub release draft and < code > CHANGELOG.md< / code > < / h2 >
< p > See < a href = "http://keepachangelog.com/en/0.3.0/" class = "uri" > http://keepachangelog.com/en/0.3.0/< / a > for changelog formatting.< / p >
< h3 id = "github-release-draft" > GitHub release draft< / h3 >
< p > GitHub allows drafting the release note for the upcoming release, from the < a href = "https://github.com/shaarli/Shaarli/releases" > Releases< / a > page. This way, the release note can be drafted while contributions are merged to < code > master< / code > .< a href = ".html" > < / a > < / p >
< h3 id = "changelog.md" > < code > CHANGELOG.md< / code > < / h3 >
< p > This file should contain the same information as the release note draft for the upcoming version.< / p >
< p > Update it to:< / p >
< ul >
< li > add new entries (additions, fixes, etc.)< / li >
< li > mark the current version as released by setting its date and link< / li >
< li > add a new section for the future unreleased version< / li >
< / ul >
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "bu" > cd< / span > /path/to/shaarli
$ < span class = "fu" > nano< / span > CHANGELOG.md
[< span class = "ex" > ...< / span > ][](.html)
< span class = "co" > ## vA.B.C - UNRELEASED< / span >
< span class = "ex" > TBA< / span >
< span class = "co" > ## [vX.Y.Z](https://github.com/shaarli/Shaarli/releases/tag/vX.Y.Z) - YYYY-MM-DD[](.html)< / span >
[< span class = "ex" > ...< / span > ][](.html)< / code > < / pre > < / div >
2016-10-12 12:36:59 +02:00
< h2 id = "increment-the-version-code-create-and-push-a-signed-tag" > Increment the version code, create and push a signed tag< / h2 >
2016-04-14 14:20:23 +02:00
< h3 id = "bump-shaarlis-version" > Bump Shaarli's version< / h3 >
2016-10-12 12:36:59 +02:00
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "bu" > cd< / span > /path/to/shaarli
2016-04-14 14:20:23 +02:00
< span class = "co" > # create a new branch< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "fu" > git< / span > fetch upstream
$ < span class = "fu" > git< / span > checkout upstream/master -b v0.5.0
2016-04-14 14:20:23 +02:00
< span class = "co" > # bump the version number< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "ex" > vim< / span > index.php shaarli_version.php
2016-04-14 14:20:23 +02:00
< span class = "co" > # rebuild the documentation from the wiki< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "fu" > make< / span > htmldoc
2016-04-14 14:20:23 +02:00
< span class = "co" > # commit the changes< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "fu" > git< / span > add index.php shaarli_version.php doc
$ < span class = "fu" > git< / span > commit -s -m < span class = "st" > " Bump version to v0.5.0" < / span >
2016-04-14 14:20:23 +02:00
< span class = "co" > # push the commit on your GitHub fork< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "fu" > git< / span > push origin v0.5.0< / code > < / pre > < / div >
2016-04-14 14:20:23 +02:00
< h3 id = "create-and-merge-a-pull-request" > Create and merge a Pull Request< / h3 >
< p > This one is pretty straightforward ;-)< / p >
< h3 id = "create-and-push-a-signed-tag" > Create and push a signed tag< / h3 >
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > < span class = "co" > # update your local copy< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "fu" > git< / span > checkout master
$ < span class = "fu" > git< / span > fetch upstream
$ < span class = "fu" > git< / span > pull upstream master
2016-04-14 14:20:23 +02:00
< span class = "co" > # create a signed tag< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "fu" > git< / span > tag -s -m < span class = "st" > " Release v0.5.0" < / span > v0.5.0
2016-04-14 14:20:23 +02:00
< span class = "co" > # push it to " upstream" < / span >
2016-10-12 12:36:59 +02:00
$ < span class = "fu" > git< / span > push --tags upstream< / code > < / pre > < / div >
2016-04-14 14:20:23 +02:00
< h3 id = "verify-a-signed-tag" > Verify a signed tag< / h3 >
< p > < a href = "https://github.com/shaarli/Shaarli/releases/tag/v0.5.0" > < code > v0.5.0< / code > < / a > is the first GPG-signed tag pushed on the Community Shaarli.< a href = ".html" > < / a > < / p >
< p > Let's have a look at its signature!< / p >
2016-10-12 12:36:59 +02:00
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "bu" > cd< / span > /path/to/shaarli
$ < span class = "fu" > git< / span > fetch upstream
2016-04-14 14:20:23 +02:00
< span class = "co" > # get the SHA1 reference of the tag< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "fu" > git< / span > show-ref tags/v0.5.0
< span class = "ex" > f7762cf803f03f5caf4b8078359a63783d0090c1< / span > refs/tags/v0.5.0
2016-04-14 14:20:23 +02:00
< span class = "co" > # verify the tag signature information< / span >
2016-10-12 12:36:59 +02:00
$ < span class = "fu" > git< / span > verify-tag f7762cf803f03f5caf4b8078359a63783d0090c1
< span class = "ex" > gpg< / span > : Signature made Thu 30 Jul 2015 11:46:34 CEST using RSA key ID 4100DF6F
< span class = "ex" > gpg< / span > : Good signature from < span class = "st" > " VirtualTam < virtualtam@flibidi.net> " < / span > [ultimate][](.html)< / code > < / pre > < / div >
2016-12-12 03:38:12 +01:00
< h2 id = "publish-the-github-release" > Publish the GitHub release< / h2 >
< h3 id = "create-a-github-release-from-a-git-tag" > Create a GitHub release from a Git tag< / h3 >
< p > From the previously drafted release:< / p >
< ul >
< li > edit the release notes (if needed)< / li >
< li > specify the appropriate Git tag< / li >
< li > publish the release< / li >
< li > profit!< / li >
< / ul >
< h3 id = "generate-and-upload-all-in-one-release-archives" > Generate and upload all-in-one release archives< / h3 >
2016-10-12 12:36:59 +02:00
< p > Users with a shared hosting may have:< / p >
< ul >
< li > no SSH access< / li >
< li > no possibility to install PHP packages or server extensions< / li >
< li > no possibility to run scripts< / li >
< / ul >
< p > To ease Shaarli installations, it is possible to generate and upload additional release archives,< br / >
that will contain Shaarli code plus all required third-party libraries:< / p >
< div class = "sourceCode" > < pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "fu" > make< / span > release_archive< / code > < / pre > < / div >
< p > This will create the following archives:< / p >
< ul >
< li > < code > shaarli-vX.Y.Z-full.tar< / code > < / li >
< li > < code > shaarli-vX.Y.Z-full.zip< / code > < / li >
< / ul >
< p > The archives need to be manually uploaded on the previously created GitHub release.< / p >
2016-04-14 14:20:23 +02:00
< / body >
< / html >