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 "Ecommerce.TurnOffFoodSale.API/Ecommerce.TurnOffFoodSale.API.csproj"
  build:
    commands:
      - echo Add coverlet
      - dotnet add Ecommerce.TurnOffFoodSale.Test package coverlet.msbuild --version 2.6.1
      - echo Iniciando test
      - dotnet test ./Ecommerce.TurnOffFoodSale.Test/Ecommerce.TurnOffFoodSale.Test.csproj  /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:"Ecommerce.TurnOffFoodSale" /d:sonar.host.url="http://18.213.20.207/" /d:sonar.login="12b9db3b86d994b1df7b4ac6ecd81ffc80664e0e" /d:sonar.cs.opencover.reportsPaths="Ecommerce.TurnOffFoodSale.Test/coverage.opencover.xml" /d:sonar.coverage.exclusions="**Tests*.cs" /d:sonar.test.exclusions="**Tests*.cs"
      - dotnet build Ecommerce.TurnOffFoodSale.sln -c Release -o /app --no-restore
      - dotnet sonarscanner /d:sonar.login="12b9db3b86d994b1df7b4ac6ecd81ffc80664e0e" 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   
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 ""
  build:
    commands:
      - echo Add coverlet
      - dotnet add Ecommerce.Example.Test package coverlet.msbuild --version 2.6.1
      - echo Iniciando test
      - dotnet test ./Ecommerce.Example.Test/Ecommerce.Example.Test.csproj  /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:"Ecommerce.Example" /d:sonar.host.url="http://18.213.XXX.XX" /d:sonar.login="123456789XXXXXXXXXXX" /d:sonar.cs.opencover.reportsPaths="Ecommerce.Example.Test/coverage.opencover.xml" /d:sonar.coverage.exclusions="**Tests*.cs" /d:sonar.test.exclusions="**Tests*.cs"
      - dotnet build Ecommerce.Example.sln -c Release -o /app --no-restore
      - dotnet sonarscanner /d:sonar.login="123456789XXXXXXXXXXX" 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   
