version: 0.2

env:
  variables:
    AWS_ACCOUNT_ID: "CUENTA AWS" 
    CLUSTER_PROD: "" 
    SERVICE_PROD: "" 
    IMAGE_REPO_NAME_PROD: "" 
    IMAGE_TAG_PROD: "latest" 
    CLUSTER_DEV: "" 
    SERVICE_DEV: "" 
    IMAGE_REPO_NAME_DEV: "" 
    IMAGE_TAG_DEV: "latest" 

phases:
  install:
    commands:
      - echo Instalando Java
      - apt-get update -y
      - apt-get install -y software-properties-common
      - add-apt-repository ppa:openjdk-r/ppa
      - apt-get update -y
      - apt-get install -y openjdk-8-jre
  pre_build:
    commands:
      - echo Ingresando a Amazon ECR...
      - eval $(aws ecr get-login --no-include-email --region us-east-1)
      - dotnet restore "PROJECT_RESTORE"
  build:
    commands:
      - echo Add coverlet
      - dotnet add PROJECT_TEST package coverlet.msbuild --version 2.6.1
      - echo Iniciando test
      - dotnet test ./PROJECT_PATHTEST  /p:CollectCoverage=true /p:Threshold=0 /p:ThresholdType=method  /p:CoverletOutputFormat=opencover
      - dotnet build-server shutdown
      - echo Instalando sonarscanner
      - dotnet tool install --global dotnet-sonarscanner
      - export PATH="$PATH:~/.dotnet/tools"
      - dotnet sonarscanner begin /k:"PROJECT_NAME" /d:sonar.host.url="SONAR_URL" /d:sonar.login="SONAR_TOKEN" /d:sonar.cs.opencover.reportsPaths="PROJECT_TEST/coverage.opencover.xml" /d:sonar.coverage.exclusions="**Tests*.cs" /d:sonar.test.exclusions="**Tests*.cs"
      - dotnet build PROJECT_SLN -c Release -o /app --no-restore
      - dotnet sonarscanner /d:sonar.login="SONAR_TOKEN" end
      - echo Creando imagen de Docker... 
      - echo  "${CODEBUILD_INITIATOR}" 
      - | 
         if expr "${CODEBUILD_INITIATOR}" : "codepipeline/PROD_NombrePipeline"; then 
           docker build -t $IMAGE_REPO_NAME_PROD:$IMAGE_TAG_PROD .; 
           echo Etiquetando imagen...; 
           docker tag $IMAGE_REPO_NAME_PROD:$IMAGE_TAG_PROD $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME_PROD:$IMAGE_TAG_PROD;       
           echo Copiando imagen de Docker a repositorio...; 
           docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME_PROD:$IMAGE_TAG_PROD; 
           echo Actualizando servicio Fargate...; 
           aws ecs update-service --cluster $CLUSTER_PROD --service $SERVICE_PROD --force-new-deployment; 
         fi   
      - | 
         if expr "${CODEBUILD_INITIATOR}" : "codepipeline/DEV_NombrePipeline"; then 
           docker build -t $IMAGE_REPO_NAME_DEV:$IMAGE_TAG_DEV .; 
           echo Etiquetando imagen...; 
           docker tag $IMAGE_REPO_NAME_DEV:$IMAGE_TAG_DEV $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME_DEV:$IMAGE_TAG_DEV;       
           echo Copiando imagen de Docker a repositorio...; 
           docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME_DEV:$IMAGE_TAG_DEV; 
           echo Actualizando servicio Fargate...; 
           aws ecs update-service --cluster $CLUSTER_DEV --service $SERVICE_DEV --force-new-deployment; 
         fi   
