diff --git a/resources/build/increment-version.sh b/resources/build/increment-version.sh index e0f9b9e5df..8e29c2116c 100755 --- a/resources/build/increment-version.sh +++ b/resources/build/increment-version.sh @@ -4,11 +4,14 @@ set -e set -u # -# Usage: increment-version.sh [commit base] +# Usage: increment-version.sh [-f] [commit base] # # Increments the patch version on VERSION.md # -# If -commit is specified, pushes the new version +# If -f is specified, triggers a build even with +# no detected changes. +# +# If commit is specified, pushes the new version # to the repository. base snould be either # master or beta. # @@ -25,9 +28,17 @@ THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BA gitbranch=`git branch --show-current` +FORCE=0 + +if [[ "$1" == "-f" ]]; then + FORCE=1 + shift +fi + if [[ $# -gt 0 ]]; then # We want the action to specify the branch as a consistency check # for now at least. + action=$1 if [[ $# -gt 1 ]]; then base=$2 @@ -52,7 +63,8 @@ else fi if [[ $action == help ]]; then - echo "Usage: increment-version.sh [commit base]" + echo "Usage: increment-version.sh [-f] [commit base]" + echo " -f forces a build even with no changes" echo " base must be either master or beta." echo " base must be equal to currently checked-out" echo " branch (this may not be required in future)" @@ -74,15 +86,22 @@ popd > /dev/null pushd "$KEYMAN_ROOT" > /dev/null ABORT=0 -node resources/build/version/lib/index.js history version -t "$GITHUB_TOKEN" -b "$base" || ABORT=1 +node resources/build/version/lib/index.js history version -t "$GITHUB_TOKEN" -b "$base" || ABORT=$? if [[ $ABORT = 1 ]]; then - echo "Skipping version increment from $VERSION: no recently merged pull requests were found" - if [ ! -z "${TEAMCITY_VERSION-}" ]; then - # Send TeamCity a build status - echo "##teamcity[buildStatus status='SUCCESS' text='Skipping version increment from $VERSION: no recently merged pull requests were found']" + if [[ $FORCE = 0 ]]; then + echo "Skipping version increment from $VERSION: no recently merged pull requests were found" + if [ ! -z "${TEAMCITY_VERSION-}" ]; then + # Send TeamCity a build status + echo "##teamcity[buildStatus status='SUCCESS' text='Skipping version increment from $VERSION: no recently merged pull requests were found']" + fi + exit 0 + else + echo "Force specified; building even though no changes were detected" fi - exit 0 +elif [[ $ABORT != 0 ]]; then + echo "Failed to complete version history check" + exit $ABORT fi popd > /dev/null @@ -116,7 +135,6 @@ if [ "$action" == "commit" ]; then # Now that all version-related changes are ready and git-added, it's time to commit. git commit -m "$message" git push --tags origin "$branch" - hub pull-request -f --no-edit -b $base -l auto git checkout $base # @@ -132,6 +150,14 @@ if [ "$action" == "commit" ]; then triggerBuilds + # + # Now, create the PR on GitHub which will be merged when ready + # + + cd "$KEYMAN_ROOT" + git checkout "$branch" + hub pull-request -f --no-edit -b $base -l auto + # # Done # @@ -148,9 +174,6 @@ if [ "$action" == "commit" ]; then # latest history in it. We don't need to cleanup the branch because the CI will # do that for us. # - - cd "$KEYMAN_ROOT" - git checkout "$branch" fi exit 0 diff --git a/resources/build/trigger-builds.inc.sh b/resources/build/trigger-builds.inc.sh index 8ec79a743a..1b31721de7 100644 --- a/resources/build/trigger-builds.inc.sh +++ b/resources/build/trigger-builds.inc.sh @@ -41,8 +41,7 @@ function triggerTeamCityBuild() { local TEAMCITY_SERVER=https://build.palaso.org local command="" - - #debug echo "Call: $command" + echo "TeamCity Build Command: $command" # adjust indentation for output of curl echo -n " " diff --git a/resources/build/version/src/index.ts b/resources/build/version/src/index.ts index 53af9821b5..a0b9374591 100644 --- a/resources/build/version/src/index.ts +++ b/resources/build/version/src/index.ts @@ -32,9 +32,9 @@ const main = async (): Promise => { const octokit: GitHub = new GitHub(argv.token); - // Pretend we have a single change. If we chain commands (as in normal usage), + // Pretend we have a single change. If we chain commands (as in normal usage), // then we use the real history change count to determine if we continue. - let changeCount = 1; + let changeCount = 1; const version = readFileSync('./VERSION.md', 'utf8').trim(); @@ -46,7 +46,7 @@ const main = async (): Promise => { logInfo(`# Validating history for ${version}`); changeCount = await fixupHistory(octokit, argv.base); logInfo(`# ${changeCount} change(s) found for ${version}\n`); - } + } // // Increment the version number if history has any entries @@ -65,8 +65,8 @@ const main = async (): Promise => { main().then( ()=>logInfo('Finished') -) +) .catch((error: Error): void => { console.error(`An unexpected error occurred: ${error.message}, ${error.stack ?? 'no stack trace'}.`); - process.exit(1); + process.exit(2); });