#!/bin/bash set -e # Import external functions chmod +x ./devops/PipeLines/Functions.core.sh source ./devops/PipeLines/Functions.core.sh function CI() { declare serviceName=$1 declare publishFile=$2 declare publishOutputDir="/tmp/${serviceName}" GetVersion version GetImageUserName registryUserName # repository name must be lowercase ToLower "${RegistryHost}/${registryUserName}/${serviceName}:${version}" imagefullname echo "" echo "Begin delivering for ${serviceName}..." echo "Tips: Image full name: ${imagefullname}" mkdir -p ${publishOutputDir} dotnet publish ${publishFile} -o ${publishOutputDir} -c release --no-restore docker build -t ${imagefullname} ${publishOutputDir} docker push ${imagefullname} rm -fr ${publishOutputDir} echo "Delivery for ${serviceName} has been successful." } function CD() { declare registryHost=$1 declare registryUserName=$2 declare serviceName=$3 declare version=$4 declare namespace=$5 Replace ${serviceName} '.' '-' appName # repository name must be lowercase ToLower "${registryHost}/${registryUserName}/${serviceName}:${version}" imagefullname ToLower ${appName} appNameOfK8s # echo "Tips: namespace: ${namespace}, appNameOfK8s: ${appNameOfK8s}, imagefullname: ${imagefullname}" kubectl -n ${namespace} set image deployments/${appNameOfK8s} "${appNameOfK8s}=${imagefullname}" # [compatible]Staging environment does not need to change version number. if [ "${Environment}" == "Staging" ]; then kubectl -n ${namespace} scale deploy ${appNameOfK8s} --replicas=0; kubectl -n ${namespace} scale deploy ${appNameOfK8s} --replicas=1; fi echo "Deployment[${Environment}] for ${appName}:${version} has been successful." } function AutoScaling() { declare namespace=$1 declare serviceName=$2 declare replicas=$3 Replace ${serviceName} '.' '-' appName # repository name must be lowercase ToLower ${appName} appNameOfK8s kubectl -n ${namespace} scale deploy ${appNameOfK8s} --replicas=${replicas}; }