#!/bin/bash set -e function ToLower() { declare input=$1 declare output=($(echo "${input}" | tr 'A-Z' 'a-z')) eval $2=output } function GetServices() { declare svcs=($(ls ./src/Services|xargs -d '/' echo)) eval $1="${svcs}" } function GetServiceCsProjFile() { declare prefix=${1} declare name=${2} declare csprojFile="./src/Services/${prefix}/${name}/${name}.csproj" eval $3="${csprojFile}" } function GetServiceName() { declare prefix=${1} declare name=($(ls ./src/Services/${prefix}|head -n 1|xargs -d '/' echo)) eval $2="${name}" } function GetAppName() { declare name=($(grep -oP '(?<=AppName>)[^<]+' "./devops/app.props")) eval $1="${name}" } function GetSolutionName() { declare name=($(grep -oP '(?<=SolutionName>)[^<]+' "./devops/app.props")) eval $1="${name}" } function GetImageUserName() { declare name=($(grep -oP '(?<=ImageUserName>)[^<]+' "devops/deploy.props")) eval $1="${name}" } function GetCiCdSettings() { declare all=($(grep -oP '(?<=AllPublishable>)[^<]+' "/tmp/cicd.props")) declare no=($(grep -oP '(?<=NoPublishable>)[^<]+' "/tmp/cicd.props")) eval $1=${all} eval $2=${no} } function GetMajor() { declare m=($(grep -oP '(?<=VersionMajor>)[^<]+' "devops/version.props")) eval $1=${m} } function GetVersion() { declare major=($(grep -oP '(?<=VersionMajor>)[^<]+' "./devops/version.props")) declare minor=($(grep -oP '(?<=VersionMinor>)[^<]+' "./devops/version.props")) declare patch=($(grep -oP '(?<=VersionPatch>)[^<]+' "./devops/version.props")) eval $1="${major}.${minor}.${patch}" } function GetImageRegistrySettings() { declare host=($(grep -oP '(?<=ImageRegistryHost>)[^<]+' "devops/deploy.props")) declare username=($(grep -oP '(?<=ImageUserName>)[^<]+' "devops/deploy.props")) eval $1=${host} eval $2=${username} } function GetAccessTokenOf() { declare token=($(grep -oP "(?<=${Environment}AccessToken>)[^<]+" "devops/deploy.props")) eval $1="${token}" } function IsPublishableOf() { declare prefix=$0 declare isP=($(grep -oP "(?<=${prefix}Publishable>)[^<]+" "/tmp/cicd.props")) eval $1=isP } function CI() { declare serviceName=$1 declare publishFile=$2 declare publishOutputDir=s2 GetVersion version GetImageUserName registryUserName # repository name must be lowercase ToLower "${RegistryHost}/${registryUserName}/${serviceName}:${version}" imagefullname echo "" echo "begin delivery for ${serviceName}:${version}..." mkdir -p ${publishOutputDir}/${serviceName} dotnet publish ${publishFile} -o ../../publish/${serviceName} -c release --no-restore docker build -t ${imagefullname} ${publishOutputDir}/${serviceName} docker push ${imagefullname} rm -fr ${publishOutputDir}/${serviceName} echo "delivery for ${serviceName}:${version} has been successful." }