diff options
author | 2022-03-01 21:01:03 +0000 | |
---|---|---|
committer | 2022-03-01 21:05:54 +0000 | |
commit | d7d9a664cb6d45b1019f8ac897feac512e5b37e8 (patch) | |
tree | aeda2f2c5b71e61abb81a086e69530b021be6f62 /integration/src/release_scripts/getReleaseData.sh | |
parent | 006a229e166b5656fd9ba320e2b36d33c7e945a8 (diff) |
Update release scripts for branches
Release scripts are updated:
- Can now handle releasing on a branch for a maintenance release
- startPhase.sh script updated to handle all 13 phases of the release
process
- Various corrections and bug fixes found during the release
- scripts updated to comply with IntelliJ shekkcheck suggestions
Issue-ID: POLICY-3835
Change-Id: Ibfa49e4132ca61ae0541600fae5f6814cdf7a409
Signed-off-by: liamfallon <liam.fallon@est.tech>
Diffstat (limited to 'integration/src/release_scripts/getReleaseData.sh')
-rwxr-xr-x | integration/src/release_scripts/getReleaseData.sh | 79 |
1 files changed, 47 insertions, 32 deletions
diff --git a/integration/src/release_scripts/getReleaseData.sh b/integration/src/release_scripts/getReleaseData.sh index 3d3bad9d..4afd1bd9 100755 --- a/integration/src/release_scripts/getReleaseData.sh +++ b/integration/src/release_scripts/getReleaseData.sh @@ -22,9 +22,10 @@ set -e -SCRIPT_NAME=`basename $0` +SCRIPT_NAME=$(basename "$0") repo_location="./" release_data_file="./pf_release_data.csv" +branch="master" # Use the bash internal OSTYPE variable to check for MacOS if [[ "$OSTYPE" == "darwin"* ]] @@ -59,18 +60,22 @@ usage() echo "" echo " options" echo " -h - this help message" + echo " -b branch - the branch to release on, defaults to '$branch'" echo " -d data_file - the policy release data file to create, defaults to '$release_data_file'" echo " -l location - the location of the policy framework repos on the file system," echo " defaults to '$repo_location'" exit 255; } -while getopts "hd:l:" opt +while getopts "hb:d:l:" opt do case $opt in h) usage ;; + b) + branch=$OPTARG + ;; d) release_data_file=$OPTARG ;; @@ -84,15 +89,15 @@ do esac done -if [ $OPTIND -eq 1 ] +if [[ -z "$repo_location" ]] then - echo "no arguments were specified" - usage + echo "policy repo location not specified on -l flag" + exit 1 fi -if [[ -z "$repo_location" ]] +if [[ -z "$branch" ]] then - echo "policy repo location not specified on -l flag" + echo "policy branch not specified on -b flag" exit 1 fi @@ -113,15 +118,16 @@ update_repos() { for repo in "${pf_repos[@]}" do - echo "updating data from repo $repo to data file '$release_data_file' . . ." + echo "updating data from repo $repo branch $branch to data file '$release_data_file' . . ." - if [ -d $repo_location/$repo ] + if [ -d "$repo_location/$repo" ] then echo "updating repository '$repo' . . ." - git -C $repo_location/$repo checkout master - git -C $repo_location/$repo pull - git -C $repo_location/$repo rebase - git -C $repo_location/$repo fetch --tags + git -C "$repo_location/$repo" checkout -- . + git -C "$repo_location/$repo" checkout "$branch" + git -C "$repo_location/$repo" pull + git -C "$repo_location/$repo" rebase + git -C "$repo_location/$repo" fetch --tags else echo "repo $repo does not exist" exit 1 @@ -132,45 +138,54 @@ update_repos() { echo "policy framework data from '$repo_location' updated to data file '$release_data_file' . . ." } - get_tags() { - echo "Repo, Last Tag Version,Master Snapshot Version,Changed Files,Docker Images" - echo "repo, Last Tag Version,Master Snapshot Version,Changed Files,Docker Images" > $release_data_file + echo "Repo, Last Tag Version,Snapshot Version,Changed Files,Docker Images" + echo "repo, Last Tag Version,Snapshot Version,Changed Files,Docker Images" > "$release_data_file" for repo in "${pf_repos[@]}" do - latest_released_tag=`git -C $repo_location/$repo tag | \ - grep '^[0-9]*\.[0-9]*\.[0-9]*$' | \ - sort -V | \ - tail -1` - - latest_snapshot_tag=`mvn -f $repo_location/$repo clean | \ + latest_snapshot_tag=$(mvn -f "$repo_location/$repo" clean | \ grep "SNAPSHOT" | \ tail -1 | \ - $SED -r 's/^.* ([0-9]*\.[0-9]*\.[0-9]*-SNAPSHOT).*$/\1/'` + $SED -r 's/^.* ([0-9]*\.[0-9]*\.[0-9]*-SNAPSHOT).*$/\1/') + + if [[ $branch == *master ]] + then + latest_released_tag=$(git -C "$repo_location/$repo" tag | \ + grep '^[0-9]*\.[0-9]*\.[0-9]*$' | \ + sort -V | \ + tail -1) + else + # shellcheck disable=SC2001 + latest_snapshot_major_minor=$(echo "$latest_snapshot_tag" | sed 's/\.[0-9]*-SNAPSHOT$//') + latest_released_tag=$(git -C "$repo_location/$repo" tag | \ + grep '^[0-9]*\.[0-9]*\.[0-9]*$' | \ + grep "$latest_snapshot_major_minor" | \ + sort -V | \ + tail -1) + fi - changed_files=`git -C $repo_location/$repo diff --name-only $latest_released_tag origin/master | \ + changed_files=$(git -C "$repo_location/$repo" diff --name-only "$latest_released_tag" "$branch" | \ grep -v 'pom.xml$' | \ grep -v '^version.properties$' | \ grep -v "^releases/$latest_released_tag.yaml$" | \ - grep -v "^releases/$latest_released_tag-container.yaml$" | \ - wc -l | \ - $SED 's/^[[:space:]]*//g'` + grep -cv "^releases/$latest_released_tag-container.yaml$" | \ + $SED 's/^[[:space:]]*//g') - if [ -f $repo_location/$repo/releases/$latest_released_tag-container.yaml ] + latest_container_yaml=$(find "$repo_location/$repo/releases" -name "*container.yaml" | sort | tail -1) + if [ "$latest_container_yaml" != "" ] then - docker_images=`grep '\- name:' $repo_location/$repo/releases/$latest_released_tag-container.yaml | \ + docker_images=$(grep '\- name:' "$latest_container_yaml" | \ $SED -e 's/\- //g' -e 's/\://g' -e "s/\'//g" -e 's/^[[:space:]]*//g' -e 's/^name //' | \ tr '\n' ':' | \ - $SED 's/:$//'` + $SED 's/:$//') else docker_images="" fi echo "$repo,$latest_released_tag,$latest_snapshot_tag,$changed_files,$docker_images" - echo "$repo,$latest_released_tag,$latest_snapshot_tag,$changed_files,$docker_images" >> $release_data_file + echo "$repo,$latest_released_tag,$latest_snapshot_tag,$changed_files,$docker_images" >> "$release_data_file" done } update_repos get_tags - |