#!/bin/bash # # Shared functions for shell scripts # _functions_bindir=$(realpath $(dirname $0)) # Make sure custom grep options don't get in the way unset GREP_OPTIONS function lp_project_to_repo { typeset proj="$1" if [[ $proj == python-*client* ]]; then echo $proj elif [[ $proj == glance-store ]]; then echo glance_store elif [[ $proj == django-openstack-auth ]]; then echo django_openstack_auth else # Some of the repository names don't match the launchpad names, e.g. # python-stevedore and python-cliff. echo $proj | sed -e 's|^python-||' fi } function _cleanup_tmp { rm -rf $MYTMPDIR return 0 } function setup_temp_space { MYTMPDIR=`mktemp -d _tmp-${1}-XXX` mkdir -p "$MYTMPDIR" trap _cleanup_tmp EXIT cd "$MYTMPDIR" # NOTE(dhellmann): On some platforms mktemp returns a short name # instead of a full path, so expand the full path by looking at # where we ended up after the cd operation. MYTMPDIR="$(pwd)" } function get_last_tag { # Print the most recent tag for a ref. If no ref is specified, the # currently checked out branch is examined. local ref="$1" if ! git describe --abbrev=0 --first-parent ${ref} >/dev/null 2>&1; then echo "" else git describe --abbrev=0 --first-parent ${ref} fi } function update_gitreview { typeset branch="$1" echo "Updating .gitreview" git checkout $branch # Remove a trailing newline, if present, to ensure consistent # formatting when we add the defaultbranch line next. typeset grcontents="$(echo -n "$(cat .gitreview | grep -v defaultbranch)") defaultbranch=$branch" echo "$grcontents" > .gitreview git add .gitreview git commit -m "Update .gitreview for $branch" git show local shortbranch=$(basename $branch) git review -t "create-${shortbranch}" --yes } function update_upper_constraints { typeset branch="$1" typeset redirect_branch=$(basename $branch) typeset uc_url="https://releases.openstack.org/constraints/upper/${redirect_branch}" echo "Updating tox.ini for upper-constraints" git checkout $branch if [[ ! -f tox.ini ]]; then echo "No tox.ini file, skipping constraints" return 0 fi sed -i~ -e "s,{\(env:UPPER_CONSTRAINTS_FILE\)[^ ]*},{env:TOX_CONSTRAINTS_FILE:$uc_url}," tox.ini sed -i~ -e "s,{\(env:TOX_CONSTRAINTS_FILE\)[^ ]*},{\1:$uc_url}," tox.ini # Octavia project specific if [[ -f elements/amphora-agent/source-repository-amphora-agent ]]; then sed -i~ -e "s,\(https://opendev.org/openstack/octavia\).*,\1 ${branch}," elements/amphora-agent/source-repository-amphora-agent sed -i~ -e "s,\(file /opt/upper-constraints.txt\) \(.*\),\1 ${uc_url}," elements/amphora-agent/source-repository-amphora-agent fi if ! git diff --exit-code >/dev/null 2>&1 ; then git add tox.ini if [[ -f elements/amphora-agent/source-repository-amphora-agent ]]; then git add elements/amphora-agent/source-repository-amphora-agent fi msg="Update TOX_CONSTRAINTS_FILE for $branch" body="Update the URL to the upper-constraints file to point to the redirect rule on releases.openstack.org so that anyone working on this branch will switch to the correct upper-constraints list automatically when the requirements repository branches. Until the requirements repository has as $branch branch, tests will continue to use the upper-constraints list on master." git commit -m "$msg" -m "$body" git show local shortbranch=$(basename $branch) git review -t "create-${shortbranch}" --yes fi } function clone_repo { typeset repo="$1" typeset branch="$2" set -e # Sometimes we aren't given a branch, and when we aren't we don't # want to pass the wrong arguments to clone_repo.sh. if [ ! -z "$branch" ]; then branch_arg="--branch" fi # Clone the repository using the given branch. $_functions_bindir/clone_repo.sh $branch_arg $branch $repo # We assume the job uses a git_config task to configure git # properly. git -C $repo review -s -v }