#!/bin/bash set -e IFS=$'\n\n' # Import external functions chmod +x ./devops/PipeLines/Functions.common.sh source ./devops/PipeLines/Functions.common.sh function AddHeadConfig() { # sync config for later retries, not affected by cross-job. echo "<Project> <PropertyGroup> <AllPublishable>${1}</AllPublishable> <NoPublishable>${2}</NoPublishable>" > /tmp/cicd.props } function AddConfig() { # sync config for later retries, not affected by cross-job. declare name=${1} declare publishable=${2} echo "<${name}Publishable>${publishable}</${name}Publishable>" >> /tmp/cicd.props } function AddTailConfig() { echo "</PropertyGroup> </Project>" >> /tmp/cicd.props } if [ "${AllPublishable}" == "1" ]; then AddHeadConfig "1" "0" AddTailConfig echo "All micro-services will be released." else echo "Start analyzing the git difference log..." echo "" echo "the difference: " git diff --name-only ORIG_HEAD echo "" declare changes=$(git diff --name-only ORIG_HEAD) # Publishable by prefix function IsPublishable() { if echo $changes | grep "$1" > /dev/null then eval "$2='1'" else eval "$2='0'" let count=$3+1 eval $3="${count}" fi } declare isPublishable declare publishableCount=0; AddHeadConfig "0" "0" for servicePrefix in `ls ./src/Services|xargs -d '/'` do # Notes: Hard release[manual control], will not analyz changes. DynamicVariableValueOf "${servicePrefix}" "Publishable" isPublishable if [ "${isPublishable}" == "1" ]; then AddConfig "${servicePrefix}" "${isPublishable}" echo "Tips[Hard Release]: ${servicePrefix} will be released." else # Soft Release, begin Analyzing git changes IsPublishable "src/${servicePrefix}" isPublishable publishableCount if [ "${isPublishable}" == "1" ]; then AddConfig "${servicePrefix}" "${isPublishable}" echo "Tips[Soft Release]: ${servicePrefix} will be released." fi fi done AddTailConfig declare serviceCount=$(ls -l src/Services | grep "^d" | wc -l) if [ "${publishableCount}" == "${serviceCount}" ] ; then AddHeadConfig "0" "1" AddTailConfig echo "Tips: No services need to be released." fi echo "" echo "End analyzing the difference log..." fi