Server : Apache/2.4.41 (Ubuntu) System : Linux journalup 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/tools/ |
#!/bin/bash # # tools/release.sh # # Copyright (c) 2014-2020 Simon Fraser University # Copyright (c) 2003-2020 John Willinsky # Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. # # Script to create an automated (incremental) release of OJS. # # Usage: release.sh <stable-branch> <distrib dir> <github access token> # <stable_branch>: the stable branch to release from (e.g. ojs-stable-2_4_5) # <distrib dir>: a directory containing prior tarballs to use in generating # patches # <github access token>: an API token from # https://github.com/settings/applications # # NOTE: This script CANNOT currently be used to release a first build of a # revision (i.e. a -0 build). It can only be used to release -1 and subsequent # builds of a revision. # Fail on first error set -e # Check for proper usage if [ -z "$3" ]; then echo "Usage: $0 <stable-branch> <distrib dir> <github access token>"; exit 1; fi BRANCH=$1 DISTRIBDIR=$2 ACCESSTOKEN=$3 # Make sure we're at the head of the stable branch git checkout ${BRANCH} git pull cd lib/pkp git checkout ${BRANCH} git pull cd ../.. # Determine the tag of the last release on this branch (e.g. ojs-2_4_5-0) LASTTAG=`git describe --tags --abbrev=0 $BRANCH` # Parse the version number information from the tag [[ $LASTTAG =~ ([a-z]+)-([0-9]+)_([0-9]+)_([0-9]+)-([0-9]+) ]] && APPLICATION="${BASH_REMATCH[1]}" && MAJOR="${BASH_REMATCH[2]}" && MINOR="${BASH_REMATCH[3]}" && REVISION="${BASH_REMATCH[4]}" && LASTBUILD="${BASH_REMATCH[5]}" THISBUILD=$((LASTBUILD+1)) # Calculate the tag of the next release (e.g. ojs-2_4_5-1 THISTAG=`echo $LASTTAG | sed -r 's/(.*-)([0-9]+)/echo \1$((\2+1))/ge'` # Other useful bits and pieces BUILDDATE=`date +%Y-%m-%d` APPLICATION_UPPER=`echo ${APPLICATION} | tr '[:lower:]' '[:upper:]'` # Update the version descriptor LASTPATCHSUFFIX="${MAJOR}.${MINOR}.${REVISION}" [[ ${LASTBUILD} -ne "" ]] && LASTPATCHSUFFIX="${LASTPATCHSUFFIX}-${LASTBUILD}" sed -i -e "s/<tag>.*<\/tag>/<tag>${THISTAG}<\/tag>/" \ -e "s/<release>.*<\/release>/<release>${MAJOR}.${MINOR}.${REVISION}.${THISBUILD}<\/release>/" \ -e "s/<date>.*<\/date>/<date>${BUILDDATE}<\/date>/" \ -e "s/<package>.*<\/package>/<package>http:\/\/pkp.sfu.ca\/${APPLICATION}\/download\/${APPLICATION}-${MAJOR}.${MINOR}.${REVISION}-${THISBUILD}.tar.gz<\/package>/" \ -e "s/\(<patch .*_to_\).*\(\.patch\.gz.*\)/\1${MAJOR}.${MINOR}.${REVISION}-${THISBUILD}.patch.gz/" \ dbscripts/xml/version.xml git add dbscripts/xml/version.xml # Update the upgrade and install descriptors sed -i -e "s/<install version=\".*\">/<install version=\"${MAJOR}.${MINOR}.${REVISION}.${THISBUILD}\">/" \ dbscripts/xml/upgrade.xml dbscripts/xml/install.xml git add dbscripts/xml/upgrade.xml dbscripts/xml/install.xml # Update the README.md sed -i -e "s/=== Version: .*/=== Version: ${MAJOR}.${MINOR}.${REVISION}-${THISBUILD}/" \ -e "s/=== GIT tag: .*/=== GIT tag: ${THISTAG}/" \ -e "s/=== Release date: .*/=== Release date: ${BUILDDATE}/" \ docs/README.md git add docs/README.md # Update the Doxygen config file sed -i -e "s/^\(PROJECT_NUMBER.*= \).*/\1${MAJOR}.${MINOR}.${REVISION}-${THISBUILD}/" \ docs/dev/*.doxygen # Generate the release notes echo -n "Generating release notes" echo " Automated Build ${MAJOR}-${MINOR}-${REVISION}.${THISBUILD} ----------------------- This automated build adds the following fixes to the base release of ${APPLICATION_UPPER} ${MAJOR}.${MINOR}.${REVISION}: " >> docs/RELEASE # Get the bug IDs and titles for issues referenced in this release for ISSUENUM in `(git log --pretty=oneline ${LASTTAG}..HEAD && cd lib/pkp && git log --pretty=oneline ${LASTTAG}..HEAD) | sed -n -e "s/.*pkp\/pkp-lib#\([0-9]\+\).*/\1/p" | sort -n | uniq`; do ISSUETITLE=`wget --auth-no-challenge --user=${ACCESSTOKEN} --password=x-oauth-basic -q -O - "https://api.github.com/repos/pkp/pkp-lib/issues/${ISSUENUM}" | php -r "echo trim(json_decode(file_get_contents('php://stdin'))->title);"` echo " #${ISSUENUM}: ${ISSUETITLE}" >> docs/RELEASE echo -n "." # Status done RELEASE_ALTCOPY="docs/release-notes/README-${MAJOR}.${MINOR}.${REVISION}" cp docs/RELEASE ${RELEASE_ALTCOPY} git add docs/RELEASE ${RELEASE_ALTCOPY} echo " Done." # Commit the last changes git add lib/pkp git commit -m "Automated commits for ${APPLICATION_UPPER} ${MAJOR}.${MINOR}.${REVISION}-${THISBUILD}" cd lib/pkp git tag ${THISTAG} git push --tags cd ../.. git tag ${THISTAG} git push --tags # Build the package bash tools/buildpkg.sh ${MAJOR}.${MINOR}.${REVISION}-${THISBUILD} ${THISTAG} ${DISTRIBDIR}