introduce release script
This script replaces make-archive.sh and make-tag.sh. Switch to 'git archive' to create a ZIP file from the repo. Its way more faster, automates a lot things and works with the GitHub download HEAD/Release/Tag as ZIP functionality as well. git archive reads the file .gitattributes to determine which files has to be excluded from the zip file. It replaces the following placeholders in common.php: $Format:%d$": with the output of git log --pretty=format:%d which contains the tag of the last commit (if tagged). $Format:%H$": with the hash of the latest included commit. If no tag can be found the hash is appended to "master" and shown as version number. The approach is kind of hackish since no distinct format option for the tag exists. Fixes #231, https://github.com/fguillot/miniflux/issues/213#issuecomment-65631765
This commit is contained in:
parent
ad7d1ae7bc
commit
8e78c77fc1
31
.gitattributes
vendored
Normal file
31
.gitattributes
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# used to remove files from deployment using `git archive`
|
||||||
|
|
||||||
|
# version number
|
||||||
|
common.php export-subst
|
||||||
|
|
||||||
|
# git files
|
||||||
|
.gitattributes export-ignore
|
||||||
|
.gitignore export-ignore
|
||||||
|
|
||||||
|
# core
|
||||||
|
data/*.sqlite export-ignore
|
||||||
|
scripts export-ignore
|
||||||
|
Dockerfile export-ignore
|
||||||
|
.travis.yml export-ignore
|
||||||
|
|
||||||
|
# documentation
|
||||||
|
**/docs/ export-ignore
|
||||||
|
**/README.* export-ignore
|
||||||
|
|
||||||
|
# composer files
|
||||||
|
composer.json export-ignore
|
||||||
|
vendor/composer/installed.json export-ignore
|
||||||
|
|
||||||
|
# theme sources
|
||||||
|
**/scss/ export-ignore
|
||||||
|
**/less/ export-ignore
|
||||||
|
**/*.rb export-ignore
|
||||||
|
|
||||||
|
# unittests
|
||||||
|
phpunit.xml export-ignore
|
||||||
|
**/tests/ export-ignore
|
@ -6,7 +6,7 @@ if (file_exists(__DIR__.'/config.php')) {
|
|||||||
require __DIR__.'/config.php';
|
require __DIR__.'/config.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
defined('APP_VERSION') or define('APP_VERSION', 'master');
|
defined('APP_VERSION') or define('APP_VERSION', Helper\parseAppVersion('$Format:%d$','$Format:%H$'));
|
||||||
defined('HTTP_TIMEOUT') or define('HTTP_TIMEOUT', 20);
|
defined('HTTP_TIMEOUT') or define('HTTP_TIMEOUT', 20);
|
||||||
|
|
||||||
defined('BASE_URL_DIRECTORY') or define('BASE_URL_DIRECTORY', dirname($_SERVER['PHP_SELF']));
|
defined('BASE_URL_DIRECTORY') or define('BASE_URL_DIRECTORY', dirname($_SERVER['PHP_SELF']));
|
||||||
@ -63,4 +63,4 @@ PicoDb\Database::bootstrap('db', function() {
|
|||||||
|
|
||||||
die($html);
|
die($html);
|
||||||
}
|
}
|
||||||
});
|
});
|
@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
require __DIR__.'/lib/helpers.php';
|
||||||
require __DIR__.'/common.php';
|
require __DIR__.'/common.php';
|
||||||
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Template.php';
|
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Template.php';
|
||||||
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Response.php';
|
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Response.php';
|
||||||
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Request.php';
|
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Request.php';
|
||||||
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Session.php';
|
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Session.php';
|
||||||
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Router.php';
|
require __DIR__.'/vendor/fguillot/picofarad/lib/PicoFarad/Router.php';
|
||||||
require __DIR__.'/lib/helpers.php';
|
|
||||||
|
|
||||||
use PicoFarad\Router;
|
use PicoFarad\Router;
|
||||||
use PicoFarad\Response;
|
use PicoFarad\Response;
|
||||||
|
@ -2,6 +2,28 @@
|
|||||||
|
|
||||||
namespace Helper;
|
namespace Helper;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* get Version number from git archive output
|
||||||
|
*/
|
||||||
|
function parseAppVersion($refnames, $commithash)
|
||||||
|
{
|
||||||
|
$version = 'master';
|
||||||
|
|
||||||
|
if ($refnames !== '$Format:%d$') {
|
||||||
|
$tag = preg_replace('/\s*\(.*tag:\sv([^,]+).*\)/i', '\1', $refnames);
|
||||||
|
|
||||||
|
if (!is_null($tag) && $tag !== $refnames) {
|
||||||
|
return $tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($commithash !== '$Format:%H$') {
|
||||||
|
$version .= '.'.$commithash;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $version;
|
||||||
|
}
|
||||||
|
|
||||||
function favicon(array $favicons, $feed_id)
|
function favicon(array $favicons, $feed_id)
|
||||||
{
|
{
|
||||||
if (! empty($favicons[$feed_id])) {
|
if (! empty($favicons[$feed_id])) {
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
VERSION=$1
|
|
||||||
APP="miniflux"
|
|
||||||
|
|
||||||
cd /tmp
|
|
||||||
rm -rf /tmp/$APP /tmp/$APP-*.zip 2>/dev/null
|
|
||||||
|
|
||||||
git clone --depth 1 https://github.com/fguillot/$APP.git
|
|
||||||
|
|
||||||
rm -rf $APP/data/*.sqlite \
|
|
||||||
$APP/.git \
|
|
||||||
$APP/scripts \
|
|
||||||
$APP/Dockerfile \
|
|
||||||
$APP/vendor/composer/installed.json
|
|
||||||
|
|
||||||
find $APP -name docs -type d -exec rm -rf {} +;
|
|
||||||
find $APP -name tests -type d -exec rm -rf {} +;
|
|
||||||
|
|
||||||
find $APP -name composer.json -delete
|
|
||||||
find $APP -name phpunit.xml -delete
|
|
||||||
find $APP -name .travis.yml -delete
|
|
||||||
find $APP -name README.* -delete
|
|
||||||
find $APP -name .gitignore -delete
|
|
||||||
find $APP -name *.less -delete
|
|
||||||
find $APP -name *.scss -delete
|
|
||||||
find $APP -name *.rb -delete
|
|
||||||
|
|
||||||
sed -i.bak s/master/$VERSION/g $APP/common.php && rm -f $APP/*.bak
|
|
||||||
|
|
||||||
zip -r $APP-$VERSION.zip $APP
|
|
||||||
mv $APP-*.zip ~/Devel/websites/$APP
|
|
||||||
|
|
||||||
cd ~/Devel/websites/$APP/
|
|
||||||
unlink $APP-latest.zip
|
|
||||||
ln -s $APP-$VERSION.zip $APP-latest.zip
|
|
||||||
|
|
||||||
rm -rf /tmp/$APP 2>/dev/null
|
|
19
scripts/make-release.sh
Executable file
19
scripts/make-release.sh
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
echo 1>&2 "$0: version number missing"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
VERSION=$1
|
||||||
|
APP="miniflux"
|
||||||
|
|
||||||
|
# tag the release
|
||||||
|
git tag -a v$VERSION -m "Version $VERSION" && git push origin v$VERSION || exit 2
|
||||||
|
|
||||||
|
# create the archive
|
||||||
|
git archive v$VERSION -o ~/Devel/websites/$APP/$APP-$VERSION.zip
|
||||||
|
|
||||||
|
cd ~/Devel/websites/$APP/
|
||||||
|
unlink $APP-latest.zip
|
||||||
|
ln -s $APP-$VERSION.zip $APP-latest.zip
|
@ -1,6 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
VERSION=$1
|
|
||||||
|
|
||||||
git tag -a v$VERSION -m "Version $VERSION"
|
|
||||||
git push origin v$VERSION
|
|
Loading…
Reference in New Issue
Block a user