git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v1 2/2] travis-ci: skip a branch build if equal tag is present

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Sep 11, 2017, 14:52 UTC
Message-ID
<20170911145241.18571-1-szeder.dev@gmail.com>
In-Reply-To
<20170910144429.47346-3-larsxschneider@gmail.com>
> If we push a branch and a tag pointing to the HEAD of this branch,

s/the HEAD of//, perhaps? There is no such thing as "HEAD" (all capital!) of a branch, is it?

> then Travis CI would run the build twice. This wastes resources and
Nit: s/run the build/build and test the same tree/, to further stress
that the two builds are redundant.
> slows the testing.
> 
> Add a function to detect this situation and skip the build the branch
s/skip the build/skip building/ ?
Show 30 quoted lines
> if appropriate. Invoke this function on every build.
> 
> Helped-by: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
> ---
>  ci/lib-travisci.sh | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/ci/lib-travisci.sh b/ci/lib-travisci.sh
> index 44d6ba2dd2..9c4ae9bdd0 100755
> --- a/ci/lib-travisci.sh
> +++ b/ci/lib-travisci.sh
> @@ -1,5 +1,28 @@
>  # Library of functions shared by all CI scripts
>  
> +skip_branch_tip_with_tag () {
> +	# Sometimes, a branch is pushed at the same time the tag that points
> +	# at the same commit as the tip of the branch is pushed, and building
> +	# both at the same time is a waste.
> +	#
> +	# Travis gives a tagname e.g. v2.14.0 in $TRAVIS_BRANCH when
> +	# the build is triggered by a push to a tag.  Let's see if
> +	# $TRAVIS_BRANCH is exactly at a tag, and if so, if it is
> +	# different from $TRAVIS_BRANCH.  That way, we can tell if
> +	# we are building the tip of a branch that is tagged and
> +	# we can skip the build because we won't be skipping a build
> +	# of a tag.
> +
> +	if TAG=$(git describe --exact-match "$TRAVIS_BRANCH" 2>/dev/null) &&
> +		$TAG != $TRAVIS_BRANCH
This must be
    [ $TAG != $TRAVIS_BRANCH ]
otherwise the shell will rightfully complain:
  $ TRAVIS_BRANCH=v2.14.0 ./ci/lib-travisci.sh 
  ./ci/lib-travisci.sh: line 17: v2.14.0: command not found

Furthermore, I would prefer quotes around $TAG and $TRAVIS_BRANCH. If either one of those two variables were empty (or contain multiple words) at that point, the shell would complain. Now, I don't think that either can end up being empty, so quotes are not necessary, but having quotes around them would save future readers from spending brain cycles on this unnecessarily.

Show 15 quoted lines
> +	then
> +		echo "Tip of $TRAVIS_BRANCH is exactly at $TAG"
> +		exit 0
> +	fi
> +}
> +
>  # Set 'exit on error' for all CI scripts to let the caller know that
>  # something went wrong
>  set -e
> +
> +skip_branch_tip_with_tag
> -- 
> 2.14.1
> 
> 
Previous: larsxschneider@gmail.comNext: Lars Schneider
Message 5 of 6 in “travis-ci: dedicated scripts + skip duplicated builds”
  1. 0/2 travis-ci: dedicated scripts + skip duplicated buildslarsxschneider@gmail.com, Sep 10, 2017
  2. 1/2 travis-ci: move Travis CI code into dedicated scriptslarsxschneider@gmail.com, Sep 10, 2017
  3. Junio C HamanoSep 11, 2017
  4. 2/2 travis-ci: skip a branch build if equal tag is presentlarsxschneider@gmail.com, Sep 10, 2017
  5. SZEDER GáborSep 11, 2017
  6. Lars SchneiderSep 12, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.