added teamcity_export.sh
parent
66ef72ca74
commit
ac87cae8e1
@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
# vim:ts=4:sts=4:sw=4:et
|
||||
#
|
||||
# Author: Hari Sekhon
|
||||
# Date: 2020-12-09 15:23:27 +0000 (Wed, 09 Dec 2020)
|
||||
#
|
||||
# https://github.com/HariSekhon/bash-tools
|
||||
#
|
||||
# License: see accompanying Hari Sekhon LICENSE file
|
||||
#
|
||||
# If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish
|
||||
#
|
||||
# https://www.linkedin.com/in/HariSekhon
|
||||
#
|
||||
|
||||
set -euo pipefail
|
||||
[ -n "${DEBUG:-}" ] && set -x
|
||||
srcdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# shellcheck disable=SC1090
|
||||
. "$srcdir/lib/utils.sh"
|
||||
|
||||
# shellcheck disable=SC2034,SC2154
|
||||
usage_description="
|
||||
Exports TeamCity configs for projects, buildTypes and VCS roots to local directories of the same name as each project
|
||||
|
||||
This mimicks the directory structure of TeamCity's datadir and Versioned Settings VCS export integration
|
||||
|
||||
Project IDs can be specified as arguments, otherwise iterates over all discovered projects including the Root project
|
||||
"
|
||||
|
||||
# used by usage() in lib/utils.sh
|
||||
# shellcheck disable=SC2034
|
||||
usage_args="[<project_id1> <project_id2> ...]"
|
||||
|
||||
help_usage "$@"
|
||||
|
||||
#min_args 1 "$@"
|
||||
|
||||
basedir="$PWD"
|
||||
|
||||
|
||||
if [ $# -gt 0 ]; then
|
||||
for project_id in "$@"; do
|
||||
echo "$project_id"
|
||||
done
|
||||
else
|
||||
"$srcdir/teamcity_projects.sh" |
|
||||
awk '{print $1}'
|
||||
fi |
|
||||
# don't use grep -v it can pipefail
|
||||
sed '/^[[:space:]]*$/d' |
|
||||
sort -u |
|
||||
while read -r project_id; do
|
||||
projectdir="$basedir/$project_id"
|
||||
mkdir -p -v "$projectdir"
|
||||
timestamp "Exporting TeamCity project '$project_id' to $projectdir"
|
||||
cd "$projectdir"
|
||||
# printed by the script
|
||||
#timestamp "Exporting project '$project_id' config"
|
||||
"$srcdir/teamcity_export_project_config.sh" "$project_id"
|
||||
mkdir -p -v buildTypes
|
||||
cd buildTypes
|
||||
#timestamp "Exporting project '$project_id' buildTypes"
|
||||
# restrict buildType exports to only this project
|
||||
TEAMCITY_BUILDTYPES_PROJECT="$project_id" "$srcdir/teamcity_export_buildtypes.sh"
|
||||
mkdir -p -v ../vcsRoots
|
||||
cd ../vcsRoots
|
||||
#timestamp "Exporting project '$project_id' VCS roots"
|
||||
TEAMCITY_VCS_ROOTS_PROJECT="$project_id" "$srcdir/teamcity_export_vcs_roots.sh"
|
||||
cd ..
|
||||
echo
|
||||
done
|
Loading…
Reference in New Issue