Merge pull request #50 from dotnet-architecture/dev
eShopOnContainers fork
This commit is contained in:
		
						commit
						4d76ba42aa
					
				
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -270,3 +270,8 @@ pub/ | |||||||
| 
 | 
 | ||||||
| # Ignore HealthCheckdb | # Ignore HealthCheckdb | ||||||
| *healthchecksdb* | *healthchecksdb* | ||||||
|  | 
 | ||||||
|  | # Ignores all extra inf.yaml and app.yaml that are copied by prepare-devspaces.ps1 | ||||||
|  | src/**/app.yaml | ||||||
|  | src/**/inf.yaml | ||||||
|  | 
 | ||||||
|  | |||||||
							
								
								
									
										75
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								README.md
									
									
									
									
									
								
							| @ -1,70 +1,25 @@ | |||||||
| # eShopOnContainers - Microservices Architecture and Containers based Reference Application (**BETA state** - Visual Studio 2017 and CLI environments compatible) | # eShopOnContainers - Microservices Architecture and Containers based Reference Application (**BETA state** - Visual Studio and CLI environments compatible) | ||||||
| Sample .NET Core reference application, powered by Microsoft, based on a simplified microservices architecture and Docker containers. | Sample .NET Core reference application, powered by Microsoft, based on a simplified microservices architecture and Docker containers. | ||||||
| 
 | 
 | ||||||
| ## Linux Build Status for 'dev' branch | ## Linux Build Status for 'dev' branch | ||||||
| 
 | 
 | ||||||
| Dev branch contains the latest "stable" code, and their images are tagged with `:dev` in our [Docker Hub](https://cloud.docker.com/u/eshop/repository/list): | Dev branch contains the latest "stable" code, and their images are tagged with `:dev` in our [Docker Hub](https://cloud.docker.com/u/eshop/repository/list): | ||||||
| 
 | 
 | ||||||
| Api Gateways base image | | Basket API   | Catalog API | Identity API | Location API |  | ||||||
|  | | ------------- | ------------- | ------------- | ------------- | | ||||||
|  | | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=199&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=197&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=200&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=202&branchName=dev) | | ||||||
| 
 | 
 | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=201&branchName=dev) | | Marketing API | Ordering API | Payment API | Api Gateways base image | | ||||||
|  | | ------------- | ------------- | ------------- | ------------- | | ||||||
|  | | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=203&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=198&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=205&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=201&branchName=dev)  | ||||||
| 
 | 
 | ||||||
| Basket API | | Web Shopping Aggregator | Mobile Shopping Aggregator | WebMVC Client | WebSPA Client | | ||||||
| 
 | | ------------- | ------------- | ------------- | ------------- | | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=199&branchName=dev) | | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=206&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=204&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=209&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=210&branchName=dev) | | ||||||
| 
 |  | ||||||
| Catalog API |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=197&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Identity API |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=200&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Location API |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=202&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Marketing API |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=203&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Ordering API |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=198&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Payment API |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=205&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Webhooks API |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=207&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Web Shopping Aggregator |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=206&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Mobile Shopping Aggregator |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=204&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Webbhooks demo client |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=208&branchName=dev) |  | ||||||
| 
 |  | ||||||
| WebMVC Client |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=209&branchName=dev) |  | ||||||
| 
 |  | ||||||
| WebSPA Client |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=210&branchName=dev) |  | ||||||
| 
 |  | ||||||
| Web Status |  | ||||||
| 
 |  | ||||||
| [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=211&branchName=dev) |  | ||||||
| 
 | 
 | ||||||
|  | | Web Status | Webhooks API | Webbhooks demo client | | ||||||
|  | | ------------- | ------------- | ------------- | | ||||||
|  |  [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=211&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=207&branchName=dev) | [](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=208&branchName=dev) | | ||||||
| 
 | 
 | ||||||
| ## IMPORTANT NOTES! | ## IMPORTANT NOTES! | ||||||
| **You can use either the latest version of Visual Studio or simply Docker CLI and .NET CLI for Windows, Mac and Linux**.  | **You can use either the latest version of Visual Studio or simply Docker CLI and .NET CLI for Windows, Mac and Linux**.  | ||||||
| @ -174,7 +129,7 @@ Finally, those microservices are consumed by multiple client web and mobile apps | |||||||
| <img src="img/xamarin-mobile-App.png"> | <img src="img/xamarin-mobile-App.png"> | ||||||
| 
 | 
 | ||||||
| ## Setting up your development environment for eShopOnContainers | ## Setting up your development environment for eShopOnContainers | ||||||
| ### Visual Studio 2017 and Windows based | ### Visual Studio 2017 (or above) and Windows based | ||||||
| This is the more straightforward way to get started: | This is the more straightforward way to get started: | ||||||
| https://github.com/dotnet-architecture/eShopOnContainers/wiki/02.-Setting-eShopOnContainers-in-a-Visual-Studio-2017-environment | https://github.com/dotnet-architecture/eShopOnContainers/wiki/02.-Setting-eShopOnContainers-in-a-Visual-Studio-2017-environment | ||||||
| 
 | 
 | ||||||
| @ -194,5 +149,5 @@ As mentioned, we'd appreciate your feedback, improvements and ideas. | |||||||
| You can create new issues at the issues section, do pull requests and/or send emails to **eshop_feedback@service.microsoft.com** | You can create new issues at the issues section, do pull requests and/or send emails to **eshop_feedback@service.microsoft.com** | ||||||
| 
 | 
 | ||||||
| ## Questions | ## Questions | ||||||
| [QUESTION] Answer +1 if the solution is working for you (Through VS2017 or CLI environment): | [QUESTION] Answer +1 if the solution is working for you (Through VS or CLI environment): | ||||||
| https://github.com/dotnet/eShopOnContainers/issues/107 | https://github.com/dotnet/eShopOnContainers/issues/107 | ||||||
|  | |||||||
| @ -1,5 +1,3 @@ | |||||||
| pool: |  | ||||||
|   vmImage: 'ubuntu-16.04' |  | ||||||
| variables: | variables: | ||||||
|     registryEndpoint: eshop-registry |     registryEndpoint: eshop-registry | ||||||
| trigger: | trigger: | ||||||
| @ -17,34 +15,66 @@ trigger: | |||||||
|     exclude: |     exclude: | ||||||
|     - src/ApiGateways/Mobile.Bff.Shopping/aggregator/* |     - src/ApiGateways/Mobile.Bff.Shopping/aggregator/* | ||||||
|     - src/ApiGateways/Web.Bff.Shopping/aggregator/* |     - src/ApiGateways/Web.Bff.Shopping/aggregator/* | ||||||
| steps: | jobs: | ||||||
| - task: DockerCompose@0 | - job: BuildLinux | ||||||
|   displayName: Compose build apigws |   pool: | ||||||
|   inputs: |     vmImage: 'ubuntu-16.04' | ||||||
|     dockerComposeCommand: 'build mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' |   steps: | ||||||
|     containerregistrytype: Container Registry |   - task: DockerCompose@0 | ||||||
|     dockerRegistryEndpoint: $(registryEndpoint) |     displayName: Compose build apigws | ||||||
|     dockerComposeFile: docker-compose.yml |     inputs: | ||||||
|     qualifyImageNames: true |       dockerComposeCommand: 'build mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' | ||||||
|     projectName: "" |       containerregistrytype: Container Registry | ||||||
|     dockerComposeFileArgs: | |       dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|       TAG=$(Build.SourceBranchName) |       dockerComposeFile: docker-compose.yml | ||||||
| - task: DockerCompose@0 |       qualifyImageNames: true | ||||||
|   displayName: Compose push apigws |       projectName: "" | ||||||
|   inputs: |       dockerComposeFileArgs: | | ||||||
|     dockerComposeCommand: 'push mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' |         TAG=$(Build.SourceBranchName) | ||||||
|     containerregistrytype: Container Registry |   - task: DockerCompose@0 | ||||||
|     dockerRegistryEndpoint: $(registryEndpoint) |     displayName: Compose push apigws | ||||||
|     dockerComposeFile: docker-compose.yml |     inputs: | ||||||
|     qualifyImageNames: true |       dockerComposeCommand: 'push mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' | ||||||
|     projectName: "" |       containerregistrytype: Container Registry | ||||||
|     dockerComposeFileArgs: | |       dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|       TAG=$(Build.SourceBranchName)         |       dockerComposeFile: docker-compose.yml | ||||||
| - task: CopyFiles@2 |       qualifyImageNames: true | ||||||
|   inputs: |       projectName: "" | ||||||
|     sourceFolder: $(Build.SourcesDirectory)/k8s/helm     |       dockerComposeFileArgs: | | ||||||
|     targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm |         TAG=$(Build.SourceBranchName)         | ||||||
| - task: PublishBuildArtifacts@1 |   - task: CopyFiles@2 | ||||||
|   inputs: |     inputs: | ||||||
|     pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm |       sourceFolder: $(Build.SourcesDirectory)/k8s/helm     | ||||||
|     artifactName: helm |       targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |   - task: PublishBuildArtifacts@1 | ||||||
|  |     inputs: | ||||||
|  |       pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm | ||||||
|  |       artifactName: helm | ||||||
|  | - job: BuildWindows | ||||||
|  |   pool: | ||||||
|  |     vmImage: 'vs2017-win2016' | ||||||
|  |   steps: | ||||||
|  |   - task: DockerCompose@0 | ||||||
|  |     displayName: Compose build apigws | ||||||
|  |     inputs: | ||||||
|  |       dockerComposeCommand: 'build mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' | ||||||
|  |       containerregistrytype: Container Registry | ||||||
|  |       dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |       dockerComposeFile: docker-compose.yml | ||||||
|  |       qualifyImageNames: true | ||||||
|  |       projectName: "" | ||||||
|  |       dockerComposeFileArgs: | | ||||||
|  |         TAG=$(Build.SourceBranchName) | ||||||
|  |         PLATFORM=win | ||||||
|  |   - task: DockerCompose@0 | ||||||
|  |     displayName: Compose push apigws | ||||||
|  |     inputs: | ||||||
|  |       dockerComposeCommand: 'push mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw' | ||||||
|  |       containerregistrytype: Container Registry | ||||||
|  |       dockerRegistryEndpoint: $(registryEndpoint) | ||||||
|  |       dockerComposeFile: docker-compose.yml | ||||||
|  |       qualifyImageNames: true | ||||||
|  |       projectName: "" | ||||||
|  |       dockerComposeFileArgs: | | ||||||
|  |         TAG=$(Build.SourceBranchName) | ||||||
|  |         PLATFORM=win | ||||||
							
								
								
									
										26
									
								
								build/multiarch-manifests/create-manifests.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								build/multiarch-manifests/create-manifests.ps1
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | Param( | ||||||
|  |     [parameter(Mandatory=$true)][string]$registry | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | if ([String]::IsNullOrEmpty($registry)) { | ||||||
|  |     Write-Host "Registry must be set to docker registry to use" -ForegroundColor Red | ||||||
|  |     exit 1  | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Write-Host "This script creates the local manifests, for pushing the multi-arch manifests" -ForegroundColor Yellow | ||||||
|  | Write-Host "Tags used are linux-master, win-master, linux-dev, win-dev, linux-latest, win-latest" -ForegroundColor Yellow | ||||||
|  | Write-Host "Multiarch images tags will be master, dev, latest" -ForegroundColor Yellow | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | $services = "identity.api", "basket.api", "catalog.api", "ordering.api", "ordering.backgroundtasks", "marketing.api", "payment.api", "locations.api", "webhooks.api", "ocelotapigw", "mobileshoppingagg", "webshoppingagg", "ordering.signalrhub", "webstatus", "webspa", "webmvc", "webhooks.client" | ||||||
|  | 
 | ||||||
|  | foreach ($svc in $services) { | ||||||
|  |     Write-Host "Creating manifest for $svc and tags :latest, :master, and :dev" | ||||||
|  |     docker manifest create $registry/${svc}:master $registry/${svc}:linux-master $registry/${svc}:win-master | ||||||
|  |     docker manifest create $registry/${svc}:dev $registry/${svc}:linux-dev $registry/${svc}:win-dev | ||||||
|  |     docker manifest create $registry/${svc}:latest $registry/${svc}:linux-latest $registry/${svc}:win-latest | ||||||
|  |     Write-Host "Pushing manifest for $svc and tags :latest, :master, and :dev" | ||||||
|  |     docker manifest push $registry/${svc}:latest | ||||||
|  |     docker manifest push $registry/${svc}:dev | ||||||
|  |     docker manifest push $registry/${svc}:master | ||||||
|  | } | ||||||
| @ -18,7 +18,7 @@ services: | |||||||
|     image: rabbitmq:3-management-alpine |     image: rabbitmq:3-management-alpine | ||||||
| 
 | 
 | ||||||
|   identity.api: |   identity.api: | ||||||
|     image: ${REGISTRY:-eshop}/identity.api:${TAG:-latest} |     image: ${REGISTRY:-eshop}/identity.api:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Identity/Identity.API/Dockerfile     |       dockerfile: src/Services/Identity/Identity.API/Dockerfile     | ||||||
| @ -26,7 +26,7 @@ services: | |||||||
|       - sql.data |       - sql.data | ||||||
| 
 | 
 | ||||||
|   basket.api: |   basket.api: | ||||||
|     image: ${REGISTRY:-eshop}/basket.api:${TAG:-latest} |     image: ${REGISTRY:-eshop}/basket.api:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Basket/Basket.API/Dockerfile     |       dockerfile: src/Services/Basket/Basket.API/Dockerfile     | ||||||
| @ -36,7 +36,7 @@ services: | |||||||
|       - rabbitmq |       - rabbitmq | ||||||
| 
 | 
 | ||||||
|   catalog.api: |   catalog.api: | ||||||
|     image: ${REGISTRY:-eshop}/catalog.api:${TAG:-latest} |     image: ${REGISTRY:-eshop}/catalog.api:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Catalog/Catalog.API/Dockerfile |       dockerfile: src/Services/Catalog/Catalog.API/Dockerfile | ||||||
| @ -45,7 +45,7 @@ services: | |||||||
|       - rabbitmq |       - rabbitmq | ||||||
| 
 | 
 | ||||||
|   ordering.api: |   ordering.api: | ||||||
|     image: ${REGISTRY:-eshop}/ordering.api:${TAG:-latest} |     image: ${REGISTRY:-eshop}/ordering.api:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Ordering/Ordering.API/Dockerfile     |       dockerfile: src/Services/Ordering/Ordering.API/Dockerfile     | ||||||
| @ -54,7 +54,7 @@ services: | |||||||
|       - rabbitmq |       - rabbitmq | ||||||
| 
 | 
 | ||||||
|   ordering.backgroundtasks: |   ordering.backgroundtasks: | ||||||
|     image: ${REGISTRY:-eshop}/ordering.backgroundtasks:${TAG:-latest} |     image: ${REGISTRY:-eshop}/ordering.backgroundtasks:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile     |       dockerfile: src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile     | ||||||
| @ -63,7 +63,7 @@ services: | |||||||
|       - rabbitmq |       - rabbitmq | ||||||
| 
 | 
 | ||||||
|   marketing.api: |   marketing.api: | ||||||
|     image: ${REGISTRY:-eshop}/marketing.api:${TAG:-latest} |     image: ${REGISTRY:-eshop}/marketing.api:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Marketing/Marketing.API/Dockerfile     |       dockerfile: src/Services/Marketing/Marketing.API/Dockerfile     | ||||||
| @ -74,7 +74,7 @@ services: | |||||||
|       - rabbitmq |       - rabbitmq | ||||||
| 
 | 
 | ||||||
|   payment.api: |   payment.api: | ||||||
|     image: ${REGISTRY:-eshop}/payment.api:${TAG:-latest} |     image: ${REGISTRY:-eshop}/payment.api:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Payment/Payment.API/Dockerfile |       dockerfile: src/Services/Payment/Payment.API/Dockerfile | ||||||
| @ -82,7 +82,7 @@ services: | |||||||
|       - rabbitmq     |       - rabbitmq     | ||||||
| 
 | 
 | ||||||
|   locations.api: |   locations.api: | ||||||
|     image: ${REGISTRY:-eshop}/locations.api:${TAG:-latest} |     image: ${REGISTRY:-eshop}/locations.api:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Location/Locations.API/Dockerfile |       dockerfile: src/Services/Location/Locations.API/Dockerfile | ||||||
| @ -91,7 +91,7 @@ services: | |||||||
|       - rabbitmq |       - rabbitmq | ||||||
| 
 | 
 | ||||||
|   webhooks.api: |   webhooks.api: | ||||||
|     image: ${REGISTRY:-eshop}/webhooks.api:${TAG:-latest} |     image: ${REGISTRY:-eshop}/webhooks.api:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Webhooks/Webhooks.API/Dockerfile |       dockerfile: src/Services/Webhooks/Webhooks.API/Dockerfile | ||||||
| @ -99,7 +99,7 @@ services: | |||||||
|       - sql.data     |       - sql.data     | ||||||
| 
 | 
 | ||||||
|   mobileshoppingapigw: |   mobileshoppingapigw: | ||||||
|     image: ${REGISTRY:-eshop}/ocelotapigw:${TAG:-latest} |     image: ${REGISTRY:-eshop}/ocelotapigw:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile |       dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile | ||||||
| @ -114,7 +114,7 @@ services: | |||||||
|       - basket.api |       - basket.api | ||||||
| 
 | 
 | ||||||
|   mobilemarketingapigw: |   mobilemarketingapigw: | ||||||
|     image: ${REGISTRY:-eshop}/ocelotapigw:${TAG:-latest} |     image: ${REGISTRY:-eshop}/ocelotapigw:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile |       dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile | ||||||
| @ -129,7 +129,7 @@ services: | |||||||
|       - basket.api |       - basket.api | ||||||
| 
 | 
 | ||||||
|   webshoppingapigw: |   webshoppingapigw: | ||||||
|     image: ${REGISTRY:-eshop}/ocelotapigw:${TAG:-latest} |     image: ${REGISTRY:-eshop}/ocelotapigw:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile |       dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile | ||||||
| @ -144,7 +144,7 @@ services: | |||||||
|       - basket.api |       - basket.api | ||||||
| 
 | 
 | ||||||
|   webmarketingapigw: |   webmarketingapigw: | ||||||
|     image: ${REGISTRY:-eshop}/ocelotapigw:${TAG:-latest} |     image: ${REGISTRY:-eshop}/ocelotapigw:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile |       dockerfile: src/ApiGateways/ApiGw-Base/Dockerfile | ||||||
| @ -159,7 +159,7 @@ services: | |||||||
|       - basket.api |       - basket.api | ||||||
| 
 | 
 | ||||||
|   mobileshoppingagg: |   mobileshoppingagg: | ||||||
|     image: ${REGISTRY:-eshop}/mobileshoppingagg:${TAG:-latest} |     image: ${REGISTRY:-eshop}/mobileshoppingagg:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile |       dockerfile: src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile | ||||||
| @ -174,7 +174,7 @@ services: | |||||||
|       - basket.api |       - basket.api | ||||||
| 
 | 
 | ||||||
|   webshoppingagg: |   webshoppingagg: | ||||||
|     image: ${REGISTRY:-eshop}/webshoppingagg:${TAG:-latest} |     image: ${REGISTRY:-eshop}/webshoppingagg:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile |       dockerfile: src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile | ||||||
| @ -189,7 +189,7 @@ services: | |||||||
|       - basket.api |       - basket.api | ||||||
| 
 | 
 | ||||||
|   ordering.signalrhub: |   ordering.signalrhub: | ||||||
|     image: ${REGISTRY:-eshop}/ordering.signalrhub:${TAG:-latest} |     image: ${REGISTRY:-eshop}/ordering.signalrhub:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Services/Ordering/Ordering.SignalrHub/Dockerfile |       dockerfile: src/Services/Ordering/Ordering.SignalrHub/Dockerfile | ||||||
| @ -204,13 +204,13 @@ services: | |||||||
|       - basket.api |       - basket.api | ||||||
| 
 | 
 | ||||||
|   webstatus: |   webstatus: | ||||||
|     image: ${REGISTRY:-eshop}/webstatus:${TAG:-latest} |     image: ${REGISTRY:-eshop}/webstatus:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Web/WebStatus/Dockerfile |       dockerfile: src/Web/WebStatus/Dockerfile | ||||||
| 
 | 
 | ||||||
|   webspa: |   webspa: | ||||||
|     image: ${REGISTRY:-eshop}/webspa:${TAG:-latest} |     image: ${REGISTRY:-eshop}/webspa:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Web/WebSPA/Dockerfile     |       dockerfile: src/Web/WebSPA/Dockerfile     | ||||||
| @ -220,7 +220,7 @@ services: | |||||||
| #      - webmarketingapigw | #      - webmarketingapigw | ||||||
| 
 | 
 | ||||||
|   webmvc: |   webmvc: | ||||||
|     image: ${REGISTRY:-eshop}/webmvc:${TAG:-latest} |     image: ${REGISTRY:-eshop}/webmvc:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Web/WebMVC/Dockerfile     |       dockerfile: src/Web/WebMVC/Dockerfile     | ||||||
| @ -230,7 +230,7 @@ services: | |||||||
|       - webmarketingapigw |       - webmarketingapigw | ||||||
| 
 | 
 | ||||||
|   webhooks.client: |   webhooks.client: | ||||||
|     image: ${REGISTRY:-eshop}/webhooks.client:${TAG:-latest} |     image: ${REGISTRY:-eshop}/webhooks.client:${PLATFORM:-linux}-${TAG:-latest} | ||||||
|     build: |     build: | ||||||
|       context: . |       context: . | ||||||
|       dockerfile: src/Web/WebhookClient/Dockerfile |       dockerfile: src/Web/WebhookClient/Dockerfile | ||||||
|  | |||||||
| @ -1,8 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
| 
 |  | ||||||
| export NODE_DOWNLOAD_SHA 0e20787e2eda4cc31336d8327556ebc7417e8ee0a6ba0de96a09b0ec2b841f60 |  | ||||||
| curl -SL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" --output nodejs.tar.gz \ |  | ||||||
|     && echo "$NODE_DOWNLOAD_SHA nodejs.tar.gz" | sha256sum -c - \ |  | ||||||
|     && tar -xzf "nodejs.tar.gz" -C /usr/local --strip-components=1 \ |  | ||||||
|     && rm nodejs.tar.gz \ |  | ||||||
|     && ln -s /usr/local/bin/node /usr/local/bin/nodejs |  | ||||||
| @ -1,4 +0,0 @@ | |||||||
| set NODE_VERSION=8.11.1 |  | ||||||
| curl -SL "https://nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%-win-x64.zip" --output nodejs.zip |  | ||||||
| tar -xf nodejs.zip  -C c:\ |  | ||||||
| setx PATH "%PATH%;c:\node-v%NODE_VERSION%-win-x64" |  | ||||||
| @ -142,9 +142,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Payment.API", "src\Services | |||||||
| EndProject | EndProject | ||||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Webhooks", "Webhooks", "{E0AA11C4-2873-461D-8F82-53392530FB7A}" | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Webhooks", "Webhooks", "{E0AA11C4-2873-461D-8F82-53392530FB7A}" | ||||||
| EndProject | EndProject | ||||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Webhooks.API", "src\Services\Webhooks\Webhooks.API\Webhooks.API.csproj", "{84E2016E-0435-44C6-8020-3D288AA38B2C}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Webhooks.API", "src\Services\Webhooks\Webhooks.API\Webhooks.API.csproj", "{84E2016E-0435-44C6-8020-3D288AA38B2C}" | ||||||
| EndProject | EndProject | ||||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebhookClient", "src\Web\WebhookClient\WebhookClient.csproj", "{766D7E92-6AF0-476C-ADD5-282BF4D8C576}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebhookClient", "src\Web\WebhookClient\WebhookClient.csproj", "{766D7E92-6AF0-476C-ADD5-282BF4D8C576}" | ||||||
|  | EndProject | ||||||
|  | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Devspace.Support", "Devspace.Support", "{68F5041D-51F2-4630-94B6-B49789F5E51A}" | ||||||
|  | EndProject | ||||||
|  | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Devspaces.Support", "src\BuildingBlocks\Devspaces.Support\Devspaces.Support.csproj", "{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}" | ||||||
| EndProject | EndProject | ||||||
| Global | Global | ||||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||||
| @ -1744,6 +1748,54 @@ Global | |||||||
| 		{766D7E92-6AF0-476C-ADD5-282BF4D8C576}.Release|x64.Build.0 = Release|Any CPU | 		{766D7E92-6AF0-476C-ADD5-282BF4D8C576}.Release|x64.Build.0 = Release|Any CPU | ||||||
| 		{766D7E92-6AF0-476C-ADD5-282BF4D8C576}.Release|x86.ActiveCfg = Release|Any CPU | 		{766D7E92-6AF0-476C-ADD5-282BF4D8C576}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
| 		{766D7E92-6AF0-476C-ADD5-282BF4D8C576}.Release|x86.Build.0 = Release|Any CPU | 		{766D7E92-6AF0-476C-ADD5-282BF4D8C576}.Release|x86.Build.0 = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Ad-Hoc|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.AppStore|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|ARM.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|iPhone.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|iPhone.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|x64.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|x64.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|x86.ActiveCfg = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Debug|x86.Build.0 = Debug|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|ARM.ActiveCfg = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|ARM.Build.0 = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|iPhone.ActiveCfg = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|iPhone.Build.0 = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|iPhoneSimulator.Build.0 = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|x64.ActiveCfg = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|x64.Build.0 = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|x86.ActiveCfg = Release|Any CPU | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35}.Release|x86.Build.0 = Release|Any CPU | ||||||
| 	EndGlobalSection | 	EndGlobalSection | ||||||
| 	GlobalSection(SolutionProperties) = preSolution | 	GlobalSection(SolutionProperties) = preSolution | ||||||
| 		HideSolutionNode = FALSE | 		HideSolutionNode = FALSE | ||||||
| @ -1808,6 +1860,8 @@ Global | |||||||
| 		{E0AA11C4-2873-461D-8F82-53392530FB7A} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} | 		{E0AA11C4-2873-461D-8F82-53392530FB7A} = {91CF7717-08AB-4E65-B10E-0B426F01E2E8} | ||||||
| 		{84E2016E-0435-44C6-8020-3D288AA38B2C} = {E0AA11C4-2873-461D-8F82-53392530FB7A} | 		{84E2016E-0435-44C6-8020-3D288AA38B2C} = {E0AA11C4-2873-461D-8F82-53392530FB7A} | ||||||
| 		{766D7E92-6AF0-476C-ADD5-282BF4D8C576} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} | 		{766D7E92-6AF0-476C-ADD5-282BF4D8C576} = {E279BF0F-7F66-4F3A-A3AB-2CDA66C1CD04} | ||||||
|  | 		{68F5041D-51F2-4630-94B6-B49789F5E51A} = {DB0EFB20-B024-4E5E-A75C-52143C131D25} | ||||||
|  | 		{56C2EF0B-6BF2-41D9-BE07-6E6D08D06B35} = {68F5041D-51F2-4630-94B6-B49789F5E51A} | ||||||
| 	EndGlobalSection | 	EndGlobalSection | ||||||
| 	GlobalSection(ExtensibilityGlobals) = postSolution | 	GlobalSection(ExtensibilityGlobals) = postSolution | ||||||
| 		SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9} | 		SolutionGuid = {25728519-5F0F-4973-8A64-0A81EB4EA8D9} | ||||||
|  | |||||||
| @ -33,14 +33,13 @@ | |||||||
| {{- end -}} | {{- end -}} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| {{- define "pathBase" -}} | {{- define "pathBase" -}} | ||||||
| {{- $name := first .}} | {{- if .Values.inf.k8s.suffix -}} | ||||||
| {{- $ctx := last .}} | {{- $suffix := include "suffix-name" . -}} | ||||||
| {{- if $ctx.Values.inf.k8s.suffix -}} | {{- printf "%s-%s"  .Values.pathBase $suffix -}} | ||||||
| {{- $suffix := include "suffix-name" $ctx -}} |  | ||||||
| {{- printf "/%s-%s"  $name $suffix -}} |  | ||||||
| {{- else -}} | {{- else -}} | ||||||
| {{- printf "/%s" $name -}} | {{- .Values.pathBase -}} | ||||||
| {{- end -}} | {{- end -}} | ||||||
| {{- end -}} | {{- end -}} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -61,10 +61,10 @@ spec: | |||||||
|           imagePullPolicy: {{ .Values.image.pullPolicy }} |           imagePullPolicy: {{ .Values.image.pullPolicy }} | ||||||
|           volumeMounts: |           volumeMounts: | ||||||
|           - name: config |           - name: config | ||||||
|             mountPath: /app/configuration           |             mountPath: {{ .Values.ocelot.configPath }}           | ||||||
|           env: |           env: | ||||||
|             - name: PATH_BASE |             - name: PATH_BASE | ||||||
|               value: {{ include "pathBase" (list .Values.app.ingress.entries.mobilemarketingapigw  .) }} |               value: {{ include "pathBase" . }} | ||||||
|             - name: k8sname |             - name: k8sname | ||||||
|               value: {{ .Values.clusterName }} |               value: {{ .Values.clusterName }} | ||||||
|           {{- if .Values.env.values -}} |           {{- if .Values.env.values -}} | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| {{- if .Values.ingress.enabled -}} | {{- if .Values.ingress.enabled -}} | ||||||
| {{- $ingressPath := include "pathBase" (list .Values.app.ingress.entries.mobilemarketingapigw  .) -}} | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.mobilemarketingapigw -}} | ||||||
| apiVersion: extensions/v1beta1 | apiVersion: extensions/v1beta1 | ||||||
| kind: Ingress | kind: Ingress | ||||||
| metadata: | metadata: | ||||||
| @ -23,11 +24,13 @@ spec: | |||||||
|   {{- end }} |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|   rules: |   rules: | ||||||
|     - host: {{ .Values.inf.k8s.dns }} |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|       http: |       http: | ||||||
|         paths: |         paths: | ||||||
|           - path: {{ $ingressPath }} |           - path: {{ $ingressPath }} | ||||||
|             backend: |             backend: | ||||||
|               serviceName: {{ .Values.app.svc.mobilemarketingapigw }} |               serviceName: {{ $serviceName }} | ||||||
|               servicePort: http |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  | |||||||
| @ -62,3 +62,5 @@ probes: | |||||||
|     initialDelaySeconds: 90 |     initialDelaySeconds: 90 | ||||||
|     periodSeconds: 60 |     periodSeconds: 60 | ||||||
|     port: 80 |     port: 80 | ||||||
|  | ocelot: | ||||||
|  |   configPath: /app/configuration | ||||||
|  | |||||||
| @ -35,13 +35,11 @@ | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| {{- define "pathBase" -}} | {{- define "pathBase" -}} | ||||||
| {{- $name := first .}} | {{- if .Values.inf.k8s.suffix -}} | ||||||
| {{- $ctx := last .}} | {{- $suffix := include "suffix-name" . -}} | ||||||
| {{- if $ctx.Values.inf.k8s.suffix -}} | {{- printf "%s-%s"  .Values.pathBase $suffix -}} | ||||||
| {{- $suffix := include "suffix-name" $ctx -}} |  | ||||||
| {{- printf "/%s-%s"  $name $suffix -}} |  | ||||||
| {{- else -}} | {{- else -}} | ||||||
| {{- printf "/%s" $name -}} | {{- .Values.pathBase -}} | ||||||
| {{- end -}} | {{- end -}} | ||||||
| {{- end -}} | {{- end -}} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -61,10 +61,10 @@ spec: | |||||||
|           imagePullPolicy: {{ .Values.image.pullPolicy }} |           imagePullPolicy: {{ .Values.image.pullPolicy }} | ||||||
|           volumeMounts: |           volumeMounts: | ||||||
|           - name: config |           - name: config | ||||||
|             mountPath: /app/configuration           |             mountPath: {{ .Values.ocelot.configPath }}          | ||||||
|           env: |           env: | ||||||
|             - name: PATH_BASE |             - name: PATH_BASE | ||||||
|               value: {{ include "pathBase" (list .Values.app.ingress.entries.mobileshoppingapigw  .) }} |               value: {{ include "pathBase" . }} | ||||||
|             - name: k8sname |             - name: k8sname | ||||||
|               value: {{ .Values.clusterName }} |               value: {{ .Values.clusterName }} | ||||||
|           {{- if .Values.env.values -}} |           {{- if .Values.env.values -}} | ||||||
|  | |||||||
| @ -1,5 +1,7 @@ | |||||||
| {{- if .Values.ingress.enabled -}} | {{- if .Values.ingress.enabled -}} | ||||||
| {{- $ingressPath := include "pathBase" (list .Values.app.ingress.entries.mobileshoppingapigw  .) -}} | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.mobileshoppingapigw -}} | ||||||
|  | 
 | ||||||
| apiVersion: extensions/v1beta1 | apiVersion: extensions/v1beta1 | ||||||
| kind: Ingress | kind: Ingress | ||||||
| metadata: | metadata: | ||||||
| @ -23,11 +25,13 @@ spec: | |||||||
|   {{- end }} |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|   rules: |   rules: | ||||||
|     - host: {{ .Values.inf.k8s.dns }} |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|       http: |       http: | ||||||
|         paths: |         paths: | ||||||
|           - path: {{ $ingressPath }} |           - path: {{ $ingressPath }} | ||||||
|             backend: |             backend: | ||||||
|               serviceName: {{ .Values.app.svc.mobileshoppingapigw }} |               serviceName: {{ $serviceName }} | ||||||
|               servicePort: http |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  | |||||||
| @ -62,3 +62,5 @@ probes: | |||||||
|     initialDelaySeconds: 90 |     initialDelaySeconds: 90 | ||||||
|     periodSeconds: 60 |     periodSeconds: 60 | ||||||
|     port: 80 |     port: 80 | ||||||
|  | ocelot: | ||||||
|  |   configPath: /app/configuration | ||||||
| @ -35,13 +35,11 @@ | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| {{- define "pathBase" -}} | {{- define "pathBase" -}} | ||||||
| {{- $name := first .}} | {{- if .Values.inf.k8s.suffix -}} | ||||||
| {{- $ctx := last .}} | {{- $suffix := include "suffix-name" . -}} | ||||||
| {{- if $ctx.Values.inf.k8s.suffix -}} | {{- printf "%s-%s"  .Values.pathBase $suffix -}} | ||||||
| {{- $suffix := include "suffix-name" $ctx -}} |  | ||||||
| {{- printf "/%s-%s"  $name $suffix -}} |  | ||||||
| {{- else -}} | {{- else -}} | ||||||
| {{- printf "/%s" $name -}} | {{- .Values.pathBase -}} | ||||||
| {{- end -}} | {{- end -}} | ||||||
| {{- end -}} | {{- end -}} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -61,10 +61,10 @@ spec: | |||||||
|           imagePullPolicy: {{ .Values.image.pullPolicy }} |           imagePullPolicy: {{ .Values.image.pullPolicy }} | ||||||
|           volumeMounts: |           volumeMounts: | ||||||
|           - name: config |           - name: config | ||||||
|             mountPath: /app/configuration           |             mountPath: {{ .Values.ocelot.configPath }} | ||||||
|           env: |           env: | ||||||
|             - name: PATH_BASE |             - name: PATH_BASE | ||||||
|               value: {{ include "pathBase" (list .Values.app.ingress.entries.webmarketingapigw  .) }} |               value: {{ include "pathBase" . }} | ||||||
|             - name: k8sname |             - name: k8sname | ||||||
|               value: {{ .Values.clusterName }} |               value: {{ .Values.clusterName }} | ||||||
|           {{- if .Values.env.values -}} |           {{- if .Values.env.values -}} | ||||||
|  | |||||||
| @ -1,5 +1,7 @@ | |||||||
| {{- if .Values.ingress.enabled -}} | {{- if .Values.ingress.enabled -}} | ||||||
| {{- $ingressPath := include "pathBase" (list .Values.app.ingress.entries.webmarketingapigw  .) -}} | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.webmarketingapigw -}} | ||||||
|  | 
 | ||||||
| apiVersion: extensions/v1beta1 | apiVersion: extensions/v1beta1 | ||||||
| kind: Ingress | kind: Ingress | ||||||
| metadata: | metadata: | ||||||
| @ -23,11 +25,13 @@ spec: | |||||||
|   {{- end }} |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|   rules: |   rules: | ||||||
|     - host: {{ .Values.inf.k8s.dns }} |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|       http: |       http: | ||||||
|         paths: |         paths: | ||||||
|           - path: {{ $ingressPath }} |           - path: {{ $ingressPath }} | ||||||
|             backend: |             backend: | ||||||
|               serviceName: {{ .Values.app.svc.webmarketingapigw }} |               serviceName: {{ $serviceName }} | ||||||
|               servicePort: http |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  | |||||||
| @ -62,3 +62,5 @@ probes: | |||||||
|     initialDelaySeconds: 90 |     initialDelaySeconds: 90 | ||||||
|     periodSeconds: 60 |     periodSeconds: 60 | ||||||
|     port: 80 |     port: 80 | ||||||
|  | ocelot: | ||||||
|  |   configPath: /app/configuration | ||||||
| @ -33,14 +33,13 @@ | |||||||
| {{- end -}} | {{- end -}} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| {{- define "pathBase" -}} | {{- define "pathBase" -}} | ||||||
| {{- $name := first .}} | {{- if .Values.inf.k8s.suffix -}} | ||||||
| {{- $ctx := last .}} | {{- $suffix := include "suffix-name" . -}} | ||||||
| {{- if $ctx.Values.inf.k8s.suffix -}} | {{- printf "%s-%s"  .Values.pathBase $suffix -}} | ||||||
| {{- $suffix := include "suffix-name" $ctx -}} |  | ||||||
| {{- printf "/%s-%s"  $name $suffix -}} |  | ||||||
| {{- else -}} | {{- else -}} | ||||||
| {{- printf "/%s" $name -}} | {{- .Values.pathBase -}} | ||||||
| {{- end -}} | {{- end -}} | ||||||
| {{- end -}} | {{- end -}} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -60,10 +60,10 @@ spec: | |||||||
|           imagePullPolicy: {{ .Values.image.pullPolicy }} |           imagePullPolicy: {{ .Values.image.pullPolicy }} | ||||||
|           volumeMounts: |           volumeMounts: | ||||||
|           - name: config |           - name: config | ||||||
|             mountPath: /app/configuration           |             mountPath: {{ .Values.ocelot.configPath }}       | ||||||
|           env: |           env: | ||||||
|             - name: PATH_BASE |             - name: PATH_BASE | ||||||
|               value: {{ include "pathBase" (list .Values.app.ingress.entries.webshoppingapigw  .) }} |               value: {{ include "pathBase" . }} | ||||||
|             - name: k8sname |             - name: k8sname | ||||||
|               value: {{ .Values.clusterName }} |               value: {{ .Values.clusterName }} | ||||||
|           {{- if .Values.env.values -}} |           {{- if .Values.env.values -}} | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| {{- if .Values.ingress.enabled -}} | {{- if .Values.ingress.enabled -}} | ||||||
| {{- $ingressPath := include "pathBase" (list .Values.app.ingress.entries.webshoppingapigw  .) -}} | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.webshoppingapigw -}} | ||||||
| apiVersion: extensions/v1beta1 | apiVersion: extensions/v1beta1 | ||||||
| kind: Ingress | kind: Ingress | ||||||
| metadata: | metadata: | ||||||
| @ -23,11 +24,13 @@ spec: | |||||||
|   {{- end }} |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|   rules: |   rules: | ||||||
|     - host: {{ .Values.inf.k8s.dns }} |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|       http: |       http: | ||||||
|         paths: |         paths: | ||||||
|           - path: {{ $ingressPath }} |           - path: {{ $ingressPath }} | ||||||
|             backend: |             backend: | ||||||
|               serviceName: {{ .Values.app.svc.webshoppingapigw }} |               serviceName: {{ $serviceName }} | ||||||
|               servicePort: http |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  | |||||||
| @ -62,3 +62,5 @@ probes: | |||||||
|     initialDelaySeconds: 90 |     initialDelaySeconds: 90 | ||||||
|     periodSeconds: 60 |     periodSeconds: 60 | ||||||
|     port: 80 |     port: 80 | ||||||
|  | ocelot: | ||||||
|  |   configPath: /app/configuration | ||||||
							
								
								
									
										37
									
								
								k8s/helm/basket-api/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								k8s/helm/basket-api/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | |||||||
|  | {{- if .Values.ingress.enabled -}} | ||||||
|  | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.basket -}} | ||||||
|  | 
 | ||||||
|  | apiVersion: extensions/v1beta1 | ||||||
|  | kind: Ingress | ||||||
|  | metadata: | ||||||
|  |   name: {{ template "basket-api.fullname" . }} | ||||||
|  |   labels: | ||||||
|  |     app: {{ template "basket-api.name" . }} | ||||||
|  |     chart: {{ template "basket-api.chart" . }} | ||||||
|  |     release: {{ .Release.Name }} | ||||||
|  |     heritage: {{ .Release.Service }} | ||||||
|  | {{- with .Values.ingress.annotations }} | ||||||
|  |   annotations: | ||||||
|  | {{ toYaml . | indent 4 }} | ||||||
|  | {{- end }} | ||||||
|  | spec: | ||||||
|  | {{- if .Values.ingress.tls }} | ||||||
|  |   tls: | ||||||
|  |   {{- range .Values.ingress.tls }} | ||||||
|  |     - hosts: | ||||||
|  |         - {{ .Values.inf.k8s.dns }} | ||||||
|  |       secretName: {{ .secretName }} | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
|  |   rules: | ||||||
|  |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|  |       http: | ||||||
|  |         paths: | ||||||
|  |           - path: {{ $ingressPath }} | ||||||
|  |             backend: | ||||||
|  |               serviceName: {{ $serviceName }} | ||||||
|  |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
| @ -53,3 +53,6 @@ probes: | |||||||
|     initialDelaySeconds: 90 |     initialDelaySeconds: 90 | ||||||
|     periodSeconds: 60 |     periodSeconds: 60 | ||||||
|     port: 80 |     port: 80 | ||||||
|  | 
 | ||||||
|  | ingress: | ||||||
|  |   enabled: false | ||||||
							
								
								
									
										37
									
								
								k8s/helm/catalog-api/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								k8s/helm/catalog-api/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,37 @@ | |||||||
|  | {{- if .Values.ingress.enabled -}} | ||||||
|  | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.catalog -}} | ||||||
|  | 
 | ||||||
|  | apiVersion: extensions/v1beta1 | ||||||
|  | kind: Ingress | ||||||
|  | metadata: | ||||||
|  |   name: {{ template "catalog-api.fullname" . }} | ||||||
|  |   labels: | ||||||
|  |     app: {{ template "catalog-api.name" . }} | ||||||
|  |     chart: {{ template "catalog-api.chart" . }} | ||||||
|  |     release: {{ .Release.Name }} | ||||||
|  |     heritage: {{ .Release.Service }} | ||||||
|  | {{- with .Values.ingress.annotations }} | ||||||
|  |   annotations: | ||||||
|  | {{ toYaml . | indent 4 }} | ||||||
|  | {{- end }} | ||||||
|  | spec: | ||||||
|  | {{- if .Values.ingress.tls }} | ||||||
|  |   tls: | ||||||
|  |   {{- range .Values.ingress.tls }} | ||||||
|  |     - hosts: | ||||||
|  |         - {{ .Values.inf.k8s.dns }} | ||||||
|  |       secretName: {{ .secretName }} | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
|  |   rules: | ||||||
|  |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|  |       http: | ||||||
|  |         paths: | ||||||
|  |           - path: {{ $ingressPath }} | ||||||
|  |             backend: | ||||||
|  |               serviceName: {{ $serviceName }} | ||||||
|  |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
| @ -5,6 +5,7 @@ Param( | |||||||
|     [parameter(Mandatory=$false)][string]$externalDns, |     [parameter(Mandatory=$false)][string]$externalDns, | ||||||
|     [parameter(Mandatory=$false)][string]$appName="eshop", |     [parameter(Mandatory=$false)][string]$appName="eshop", | ||||||
|     [parameter(Mandatory=$false)][bool]$deployInfrastructure=$true, |     [parameter(Mandatory=$false)][bool]$deployInfrastructure=$true, | ||||||
|  |     [parameter(Mandatory=$false)][bool]$deployCharts=$true, | ||||||
|     [parameter(Mandatory=$false)][bool]$clean=$true, |     [parameter(Mandatory=$false)][bool]$clean=$true, | ||||||
|     [parameter(Mandatory=$false)][string]$aksName="", |     [parameter(Mandatory=$false)][string]$aksName="", | ||||||
|     [parameter(Mandatory=$false)][string]$aksRg="", |     [parameter(Mandatory=$false)][string]$aksRg="", | ||||||
| @ -66,20 +67,28 @@ $charts = ("eshop-common", "apigwmm", "apigwms", "apigwwm", "apigwws", "basket-a | |||||||
| if ($deployInfrastructure) { | if ($deployInfrastructure) { | ||||||
|     foreach ($infra in $infras) { |     foreach ($infra in $infras) { | ||||||
|         Write-Host "Installing infrastructure: $infra" -ForegroundColor Green |         Write-Host "Installing infrastructure: $infra" -ForegroundColor Green | ||||||
|         helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --name="$appName-$infra" $infra      |         helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set ingress.hosts={$dns} --name="$appName-$infra" $infra      | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | else { | ||||||
|  |     Write-Host "eShopOnContainers infrastructure (bbdd, redis, ...) charts aren't installed (-deployCharts is false)" -ForegroundColor Yellow | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| foreach ($chart in $charts) { | if ($deployCharts) { | ||||||
|     Write-Host "Installing: $chart" -ForegroundColor Green |     foreach ($chart in $charts) { | ||||||
|     if ($useCustomRegistry) { |         Write-Host "Installing: $chart" -ForegroundColor Green | ||||||
|         helm install --set inf.registry.server=$registry --set inf.registry.login=$dockerUser --set inf.registry.pwd=$dockerPassword --set inf.registry.secretName=eshop-docker-scret --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart  |         if ($useCustomRegistry) { | ||||||
|     } |             helm install --set inf.registry.server=$registry --set inf.registry.login=$dockerUser --set inf.registry.pwd=$dockerPassword --set inf.registry.secretName=eshop-docker-scret --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set ingress.hosts={$dns} --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart  | ||||||
|     else { |         } | ||||||
|         if ($chart -ne "eshop-common")  {       # eshop-common is ignored when no secret must be deployed |         else { | ||||||
|             helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart  |             if ($chart -ne "eshop-common")  {       # eshop-common is ignored when no secret must be deployed | ||||||
|  |                 helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns  --set ingress.hosts={$dns} --set image.tag=$imageTag --set image.pullPolicy=Always --name="$appName-$chart" $chart  | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | else { | ||||||
|  |     Write-Host "eShopOnContainers non-infrastructure charts aren't installed (-deployCharts is false)" -ForegroundColor Yellow | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| Write-Host "helm charts installed." -ForegroundColor Green | Write-Host "helm charts installed." -ForegroundColor Green | ||||||
| @ -36,5 +36,4 @@ data: | |||||||
|   xamarin_callback_e: http://{{ $xamarincallback }} |   xamarin_callback_e: http://{{ $xamarincallback }} | ||||||
|   webhooksapi_e:  http://{{ $webhooks_url }} |   webhooksapi_e:  http://{{ $webhooks_url }} | ||||||
|   webhooksweb_e: http://{{ $webhooksweb_url }} |   webhooksweb_e: http://{{ $webhooksweb_url }} | ||||||
| 
 |   enableDevspaces: "{{ .Values.enableDevspaces }}" | ||||||
| 
 |  | ||||||
| @ -1,5 +1,6 @@ | |||||||
| {{- if .Values.ingress.enabled -}} | {{- if .Values.ingress.enabled -}} | ||||||
| {{- $ingressPath := include "pathBase" . -}} | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.identity }} | ||||||
| apiVersion: extensions/v1beta1 | apiVersion: extensions/v1beta1 | ||||||
| kind: Ingress | kind: Ingress | ||||||
| metadata: | metadata: | ||||||
| @ -23,11 +24,13 @@ spec: | |||||||
|   {{- end }} |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|   rules: |   rules: | ||||||
|     - host: {{ .Values.inf.k8s.dns }} |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|       http: |       http: | ||||||
|         paths: |         paths: | ||||||
|           - path: {{ $ingressPath }} |           - path: {{ $ingressPath }} | ||||||
|             backend: |             backend: | ||||||
|               serviceName: {{ .Values.app.svc.identity }} |               serviceName: {{ $serviceName }} | ||||||
|               servicePort: http |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  | |||||||
| @ -58,6 +58,8 @@ env: | |||||||
|       key: webhooksapi_e |       key: webhooksapi_e | ||||||
|     - name: WebhooksWebClient |     - name: WebhooksWebClient | ||||||
|       key: webhooksweb_e |       key: webhooksweb_e | ||||||
|  |     - name: EnableDevspaces | ||||||
|  |       key: enableDevspaces | ||||||
|   values: |   values: | ||||||
|     - name: ASPNETCORE_ENVIRONMENT |     - name: ASPNETCORE_ENVIRONMENT | ||||||
|       value: Development |       value: Development | ||||||
| @ -65,6 +67,7 @@ env: | |||||||
|       value: 'K8S' |       value: 'K8S' | ||||||
|     - name: IsClusterEnv |     - name: IsClusterEnv | ||||||
|       value: 'True' |       value: 'True' | ||||||
|  | 
 | ||||||
| probes: | probes: | ||||||
|   liveness: |   liveness: | ||||||
|     path: /liveness |     path: /liveness | ||||||
| @ -77,3 +80,5 @@ probes: | |||||||
|     initialDelaySeconds: 90 |     initialDelaySeconds: 90 | ||||||
|     periodSeconds: 60 |     periodSeconds: 60 | ||||||
|     port: 80 |     port: 80 | ||||||
|  | 
 | ||||||
|  | enableDevspaces: "false" | ||||||
							
								
								
									
										36
									
								
								k8s/helm/locations-api/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								k8s/helm/locations-api/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | {{- if .Values.ingress.enabled -}} | ||||||
|  | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.locations }} | ||||||
|  | apiVersion: extensions/v1beta1 | ||||||
|  | kind: Ingress | ||||||
|  | metadata: | ||||||
|  |   name: {{ template "locations-api.fullname" . }} | ||||||
|  |   labels: | ||||||
|  |     app: {{ template "locations-api.name" . }} | ||||||
|  |     chart: {{ template "locations-api.chart" . }} | ||||||
|  |     release: {{ .Release.Name }} | ||||||
|  |     heritage: {{ .Release.Service }} | ||||||
|  | {{- with .Values.ingress.annotations }} | ||||||
|  |   annotations: | ||||||
|  | {{ toYaml . | indent 4 }} | ||||||
|  | {{- end }} | ||||||
|  | spec: | ||||||
|  | {{- if .Values.ingress.tls }} | ||||||
|  |   tls: | ||||||
|  |   {{- range .Values.ingress.tls }} | ||||||
|  |     - hosts: | ||||||
|  |         - {{ .Values.inf.k8s.dns }} | ||||||
|  |       secretName: {{ .secretName }} | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
|  |   rules: | ||||||
|  |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|  |       http: | ||||||
|  |         paths: | ||||||
|  |           - path: {{ $ingressPath }} | ||||||
|  |             backend: | ||||||
|  |               serviceName: {{ $serviceName }} | ||||||
|  |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
							
								
								
									
										36
									
								
								k8s/helm/marketing-api/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								k8s/helm/marketing-api/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | {{- if .Values.ingress.enabled -}} | ||||||
|  | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.marketing }} | ||||||
|  | apiVersion: extensions/v1beta1 | ||||||
|  | kind: Ingress | ||||||
|  | metadata: | ||||||
|  |   name: {{ template "marketing-api.fullname" . }} | ||||||
|  |   labels: | ||||||
|  |     app: {{ template "marketing-api.name" . }} | ||||||
|  |     chart: {{ template "marketing-api.chart" . }} | ||||||
|  |     release: {{ .Release.Name }} | ||||||
|  |     heritage: {{ .Release.Service }} | ||||||
|  | {{- with .Values.ingress.annotations }} | ||||||
|  |   annotations: | ||||||
|  | {{ toYaml . | indent 4 }} | ||||||
|  | {{- end }} | ||||||
|  | spec: | ||||||
|  | {{- if .Values.ingress.tls }} | ||||||
|  |   tls: | ||||||
|  |   {{- range .Values.ingress.tls }} | ||||||
|  |     - hosts: | ||||||
|  |         - {{ .Values.inf.k8s.dns }} | ||||||
|  |       secretName: {{ .secretName }} | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
|  |   rules: | ||||||
|  |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|  |       http: | ||||||
|  |         paths: | ||||||
|  |           - path: {{ $ingressPath }} | ||||||
|  |             backend: | ||||||
|  |               serviceName: {{ $serviceName }} | ||||||
|  |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
							
								
								
									
										36
									
								
								k8s/helm/mobileshoppingagg/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								k8s/helm/mobileshoppingagg/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | {{- if .Values.ingress.enabled -}} | ||||||
|  | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.mobileshoppingagg }} | ||||||
|  | apiVersion: extensions/v1beta1 | ||||||
|  | kind: Ingress | ||||||
|  | metadata: | ||||||
|  |   name: {{ template "mobileshoppingagg.fullname" . }} | ||||||
|  |   labels: | ||||||
|  |     app: {{ template "mobileshoppingagg.name" . }} | ||||||
|  |     chart: {{ template "mobileshoppingagg.chart" . }} | ||||||
|  |     release: {{ .Release.Name }} | ||||||
|  |     heritage: {{ .Release.Service }} | ||||||
|  | {{- with .Values.ingress.annotations }} | ||||||
|  |   annotations: | ||||||
|  | {{ toYaml . | indent 4 }} | ||||||
|  | {{- end }} | ||||||
|  | spec: | ||||||
|  | {{- if .Values.ingress.tls }} | ||||||
|  |   tls: | ||||||
|  |   {{- range .Values.ingress.tls }} | ||||||
|  |     - hosts: | ||||||
|  |         - {{ .Values.inf.k8s.dns }} | ||||||
|  |       secretName: {{ .secretName }} | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
|  |   rules: | ||||||
|  |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|  |       http: | ||||||
|  |         paths: | ||||||
|  |           - path: {{ $ingressPath }} | ||||||
|  |             backend: | ||||||
|  |               serviceName: {{ $serviceName }} | ||||||
|  |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
| @ -1,10 +1,11 @@ | |||||||
| {{- $name := include "ordering-backgroundtasks.fullname" . -}} | {{- $name := include "ordering-backgroundtasks.fullname" . -}} | ||||||
| {{- $sqlsrv := include "sql-name" . -}} | {{- $sqlsrv := include "sql-name" . -}} | ||||||
|  | {{- $cfgname :=  printf "cfg-%s" $name | trunc 63  }} | ||||||
| 
 | 
 | ||||||
| apiVersion: v1 | apiVersion: v1 | ||||||
| kind: ConfigMap | kind: ConfigMap | ||||||
| metadata: | metadata: | ||||||
|   name: "cfg-{{ $name }}" |   name: "{{ $cfgname }}" | ||||||
|   labels: |   labels: | ||||||
|     app: {{ template "ordering-backgroundtasks.name" . }} |     app: {{ template "ordering-backgroundtasks.name" . }} | ||||||
|     chart: {{ template "ordering-backgroundtasks.chart" .}} |     chart: {{ template "ordering-backgroundtasks.chart" .}} | ||||||
|  | |||||||
| @ -1,11 +1,11 @@ | |||||||
| {{- $name := include "ordering-backgroundtasks.fullname" . -}} | {{- $name := include "ordering-backgroundtasks.fullname" . -}} | ||||||
| {{- $cfgname := printf "%s-%s" "cfg" $name -}} | {{- $cfgname :=  printf "cfg-%s" $name | trunc 63  }} | ||||||
|  | 
 | ||||||
| apiVersion: apps/v1beta2 | apiVersion: apps/v1beta2 | ||||||
| kind: Deployment | kind: Deployment | ||||||
| metadata: | metadata: | ||||||
|   name: {{ template "ordering-backgroundtasks.fullname" . }} |   name: {{ template "ordering-backgroundtasks.fullname" . }} | ||||||
|   labels: |   labels: | ||||||
|     ufo: {{ $cfgname}} |  | ||||||
|     app: {{ template "ordering-backgroundtasks.name" . }} |     app: {{ template "ordering-backgroundtasks.name" . }} | ||||||
|     chart: {{ template "ordering-backgroundtasks.chart" . }} |     chart: {{ template "ordering-backgroundtasks.chart" . }} | ||||||
|     release: {{ .Release.Name }} |     release: {{ .Release.Name }} | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| {{- if .Values.ingress.enabled -}} | {{- if .Values.ingress.enabled -}} | ||||||
| {{- $ingressPath := include "pathBase" . -}} | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.webhooks }} | ||||||
| apiVersion: extensions/v1beta1 | apiVersion: extensions/v1beta1 | ||||||
| kind: Ingress | kind: Ingress | ||||||
| metadata: | metadata: | ||||||
| @ -23,11 +24,13 @@ spec: | |||||||
|   {{- end }} |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|   rules: |   rules: | ||||||
|     - host: {{ .Values.inf.k8s.dns }} |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|       http: |       http: | ||||||
|         paths: |         paths: | ||||||
|           - path: {{ $ingressPath }} |           - path: {{ $ingressPath }} | ||||||
|             backend: |             backend: | ||||||
|               serviceName: {{  .Values.app.svc.webhooks }} |               serviceName: {{ $serviceName }} | ||||||
|               servicePort: http |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  | |||||||
| @ -2,7 +2,6 @@ | |||||||
| {{- $identity := include "url-of" (list .Values.app.ingress.entries.identity .) -}} | {{- $identity := include "url-of" (list .Values.app.ingress.entries.identity .) -}} | ||||||
| {{- $webshoppingapigw := include "url-of" (list .Values.app.ingress.entries.webshoppingapigw .) -}} | {{- $webshoppingapigw := include "url-of" (list .Values.app.ingress.entries.webshoppingapigw .) -}} | ||||||
| {{- $mvc := include "url-of" (list .Values.app.ingress.entries.mvc .) -}} | {{- $mvc := include "url-of" (list .Values.app.ingress.entries.mvc .) -}} | ||||||
| {{- $mongo := include "mongo-name" . -}} |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| apiVersion: v1 | apiVersion: v1 | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| {{- if .Values.ingress.enabled -}} | {{- if .Values.ingress.enabled -}} | ||||||
| {{- $ingressPath := include "pathBase" . -}} | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.mvc -}} | ||||||
| apiVersion: extensions/v1beta1 | apiVersion: extensions/v1beta1 | ||||||
| kind: Ingress | kind: Ingress | ||||||
| metadata: | metadata: | ||||||
| @ -23,11 +24,13 @@ spec: | |||||||
|   {{- end }} |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|   rules: |   rules: | ||||||
|     - host: {{ .Values.inf.k8s.dns }} |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|       http: |       http: | ||||||
|         paths: |         paths: | ||||||
|           - path: {{ $ingressPath }} |           - path: {{ $ingressPath }} | ||||||
|             backend: |             backend: | ||||||
|               serviceName: {{  .Values.app.svc.mvc }} |               serviceName: {{ $serviceName }} | ||||||
|               servicePort: http |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
| {{- end }} | {{- end }} | ||||||
|  | |||||||
							
								
								
									
										36
									
								
								k8s/helm/webshoppingagg/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								k8s/helm/webshoppingagg/templates/ingress.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | {{- if .Values.ingress.enabled -}} | ||||||
|  | {{- $ingressPath := include "pathBase" . -}} | ||||||
|  | {{- $serviceName := .Values.app.svc.webshoppingagg }} | ||||||
|  | apiVersion: extensions/v1beta1 | ||||||
|  | kind: Ingress | ||||||
|  | metadata: | ||||||
|  |   name: {{ template "webshoppingagg.fullname" . }} | ||||||
|  |   labels: | ||||||
|  |     app: {{ template "webshoppingagg.name" . }} | ||||||
|  |     chart: {{ template "webshoppingagg.chart" . }} | ||||||
|  |     release: {{ .Release.Name }} | ||||||
|  |     heritage: {{ .Release.Service }} | ||||||
|  | {{- with .Values.ingress.annotations }} | ||||||
|  |   annotations: | ||||||
|  | {{ toYaml . | indent 4 }} | ||||||
|  | {{- end }} | ||||||
|  | spec: | ||||||
|  | {{- if .Values.ingress.tls }} | ||||||
|  |   tls: | ||||||
|  |   {{- range .Values.ingress.tls }} | ||||||
|  |     - hosts: | ||||||
|  |         - {{ .Values.inf.k8s.dns }} | ||||||
|  |       secretName: {{ .secretName }} | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
|  |   rules: | ||||||
|  |     {{- range .Values.ingress.hosts }} | ||||||
|  |     - host: {{ . }} | ||||||
|  |       http: | ||||||
|  |         paths: | ||||||
|  |           - path: {{ $ingressPath }} | ||||||
|  |             backend: | ||||||
|  |               serviceName: {{ $serviceName }} | ||||||
|  |               servicePort: http | ||||||
|  |   {{- end }} | ||||||
|  | {{- end }} | ||||||
							
								
								
									
										14
									
								
								src/ApiGateways/ApiGw-Base/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/ApiGateways/ApiGw-Base/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | FROM microsoft/dotnet:2.2-sdk | ||||||
|  | ARG BUILD_CONFIGURATION=Debug | ||||||
|  | ENV ASPNETCORE_ENVIRONMENT=Development | ||||||
|  | ENV DOTNET_USE_POLLING_FILE_WATCHER=true | ||||||
|  | EXPOSE 80 | ||||||
|  | 
 | ||||||
|  | WORKDIR /src | ||||||
|  | COPY ["src/ApiGateways/ApiGw-Base/OcelotApiGw.csproj", "src/ApiGateways/ApiGw-Base/"] | ||||||
|  | RUN dotnet restore "src/ApiGateways/ApiGw-Base/OcelotApiGw.csproj" | ||||||
|  | COPY . . | ||||||
|  | WORKDIR "/src/src/ApiGateways/ApiGw-Base" | ||||||
|  | RUN dotnet build --no-restore "OcelotApiGw.csproj" -c $BUILD_CONFIGURATION | ||||||
|  | 
 | ||||||
|  | ENTRYPOINT ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"] | ||||||
							
								
								
									
										44
									
								
								src/ApiGateways/Mobile.Bff.Marketing/apigw/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/ApiGateways/Mobile.Bff.Marketing/apigw/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\..\ | ||||||
|  |   dockerfile: ..\..\..\ApiGateways\ApiGw-Base\Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/apigwmm | ||||||
|  |   set: | ||||||
|  |     replicaCount: 1 | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       # This expands to [space.s.]webmvc.<guid>.<region>.aksapp.io | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix)       | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - inf.yaml | ||||||
|  |   - app.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: ..\..\..\ApiGateways\ApiGw-Base\Dockerfile.develop | ||||||
|  |       args: | ||||||
|  |         BUILD_CONFIGURATION: ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |     container: | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: [dotnet, run, --no-restore, --no-build, --no-launch-profile, -c, "${BUILD_CONFIGURATION:-Debug}"] | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: [dotnet, vsdbg] | ||||||
|  |         buildCommands: | ||||||
|  |         - [dotnet, build, --no-restore, -c, "${BUILD_CONFIGURATION:-Debug}"] | ||||||
| @ -0,0 +1,2 @@ | |||||||
|  | ocelot: | ||||||
|  |   configPath: /src/src/ApiGateways/ApiGw-Base/configuration | ||||||
| @ -0,0 +1,16 @@ | |||||||
|  | FROM microsoft/dotnet:2.2-sdk | ||||||
|  | ARG BUILD_CONFIGURATION=Debug | ||||||
|  | ENV ASPNETCORE_ENVIRONMENT=Development | ||||||
|  | ENV DOTNET_USE_POLLING_FILE_WATCHER=true | ||||||
|  | EXPOSE 80 | ||||||
|  | 
 | ||||||
|  | WORKDIR /src | ||||||
|  | COPY ["src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj", "src/ApiGateways/Mobile.Bff.Shopping/aggregator/"] | ||||||
|  | COPY ["src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj", "src/BuildingBlocks/Devspaces.Support/"] | ||||||
|  | 
 | ||||||
|  | RUN dotnet restore src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj -nowarn:msb3202,nu1503 | ||||||
|  | COPY . . | ||||||
|  | WORKDIR "/src/src/ApiGateways/Mobile.Bff.Shopping/aggregator" | ||||||
|  | RUN dotnet build --no-restore -c $BUILD_CONFIGURATION | ||||||
|  | 
 | ||||||
|  | CMD ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"]] | ||||||
| @ -23,4 +23,8 @@ | |||||||
|     <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="2.2.0" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ProjectReference Include="..\..\..\BuildingBlocks\Devspaces.Support\Devspaces.Support.csproj" /> | ||||||
|  |   </ItemGroup> | ||||||
|  | 
 | ||||||
| </Project> | </Project> | ||||||
|  | |||||||
| @ -24,6 +24,13 @@ | |||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       }, |       }, | ||||||
|       "applicationUrl": "http://localhost:61632/" |       "applicationUrl": "http://localhost:61632/" | ||||||
|  |     }, | ||||||
|  |     "Azure Dev Spaces": { | ||||||
|  |       "commandName": "AzureDevSpaces", | ||||||
|  |       "launchBrowser": true, | ||||||
|  |       "resourceGroup": "eshoptestedu", | ||||||
|  |       "aksName": "eshoptestedu", | ||||||
|  |       "subscriptionId": "e3035ac1-c06c-4daf-8939-57b3c5f1f759" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -20,6 +20,7 @@ using Swashbuckle.AspNetCore.Swagger; | |||||||
| using HealthChecks.UI.Client; | using HealthChecks.UI.Client; | ||||||
| using Microsoft.AspNetCore.Diagnostics.HealthChecks; | using Microsoft.AspNetCore.Diagnostics.HealthChecks; | ||||||
| using Microsoft.Extensions.Diagnostics.HealthChecks; | using Microsoft.Extensions.Diagnostics.HealthChecks; | ||||||
|  | using Devspaces.Support; | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator | namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator | ||||||
| { | { | ||||||
| @ -47,6 +48,7 @@ namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator | |||||||
| 
 | 
 | ||||||
|             services.AddCustomMvc(Configuration) |             services.AddCustomMvc(Configuration) | ||||||
|                  .AddCustomAuthentication(Configuration) |                  .AddCustomAuthentication(Configuration) | ||||||
|  |                  .AddDevspaces() | ||||||
|                  .AddHttpServices(); |                  .AddHttpServices(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -188,15 +190,18 @@ namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator | |||||||
|             services.AddHttpClient<IBasketService, BasketService>() |             services.AddHttpClient<IBasketService, BasketService>() | ||||||
|                 .AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>() |                 .AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>() | ||||||
|                 .AddPolicyHandler(GetRetryPolicy()) |                 .AddPolicyHandler(GetRetryPolicy()) | ||||||
|                 .AddPolicyHandler(GetCircuitBreakerPolicy()); |                 .AddPolicyHandler(GetCircuitBreakerPolicy()) | ||||||
|  |                 .AddDevspacesSupport(); | ||||||
| 
 | 
 | ||||||
|             services.AddHttpClient<ICatalogService, CatalogService>() |             services.AddHttpClient<ICatalogService, CatalogService>() | ||||||
|                    .AddPolicyHandler(GetRetryPolicy()) |                    .AddPolicyHandler(GetRetryPolicy()) | ||||||
|                    .AddPolicyHandler(GetCircuitBreakerPolicy()); |                    .AddPolicyHandler(GetCircuitBreakerPolicy()) | ||||||
|  |                    .AddDevspacesSupport(); | ||||||
| 
 | 
 | ||||||
|             services.AddHttpClient<IOrderApiClient, OrderApiClient>() |             services.AddHttpClient<IOrderApiClient, OrderApiClient>() | ||||||
|                    .AddPolicyHandler(GetRetryPolicy()) |                    .AddPolicyHandler(GetRetryPolicy()) | ||||||
|                    .AddPolicyHandler(GetCircuitBreakerPolicy()); |                    .AddPolicyHandler(GetCircuitBreakerPolicy()) | ||||||
|  |                    .AddDevspacesSupport(); | ||||||
| 
 | 
 | ||||||
|             return services; |             return services; | ||||||
|         } |         } | ||||||
|  | |||||||
							
								
								
									
										55
									
								
								src/ApiGateways/Mobile.Bff.Shopping/aggregator/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								src/ApiGateways/Mobile.Bff.Shopping/aggregator/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,55 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\.. | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/mobileshoppingagg | ||||||
|  |   set: | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       # This expands to [space.s.]apigwms.<guid>.<region>.aksapp.io | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix)       | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - app.yaml | ||||||
|  |   - inf.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: Dockerfile.develop | ||||||
|  |     container: | ||||||
|  |       syncTarget: /src | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: | ||||||
|  |       - dotnet | ||||||
|  |       - run | ||||||
|  |       - --no-restore | ||||||
|  |       - --no-build | ||||||
|  |       - --no-launch-profile | ||||||
|  |       - -c | ||||||
|  |       - ${Configuration:-Debug} | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: | ||||||
|  |         - dotnet | ||||||
|  |         - vsdbg | ||||||
|  |         buildCommands: | ||||||
|  |         - - dotnet | ||||||
|  |           - build | ||||||
|  |           - --no-restore | ||||||
|  |           - -c | ||||||
|  |           - ${Configuration:-Debug} | ||||||
| @ -0,0 +1,3 @@ | |||||||
|  | ingress: | ||||||
|  |   enabled: true | ||||||
|  |   tls: [] | ||||||
							
								
								
									
										44
									
								
								src/ApiGateways/Mobile.Bff.Shopping/apigw/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/ApiGateways/Mobile.Bff.Shopping/apigw/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\..\ | ||||||
|  |   dockerfile: ..\..\..\ApiGateways\ApiGw-Base\Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/apigwms | ||||||
|  |   set: | ||||||
|  |     replicaCount: 1 | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       # This expands to [space.s.]webmvc.<guid>.<region>.aksapp.io | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix)       | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - inf.yaml | ||||||
|  |   - app.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: ..\..\..\ApiGateways\ApiGw-Base\Dockerfile.develop | ||||||
|  |       args: | ||||||
|  |         BUILD_CONFIGURATION: ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |     container: | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: [dotnet, run, --no-restore, --no-build, --no-launch-profile, -c, "${BUILD_CONFIGURATION:-Debug}"] | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: [dotnet, vsdbg] | ||||||
|  |         buildCommands: | ||||||
|  |         - [dotnet, build, --no-restore, -c, "${BUILD_CONFIGURATION:-Debug}"] | ||||||
| @ -0,0 +1,2 @@ | |||||||
|  | ocelot: | ||||||
|  |   configPath: /src/src/ApiGateways/ApiGw-Base/configuration | ||||||
							
								
								
									
										44
									
								
								src/ApiGateways/Web.Bff.Marketing/apigw/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/ApiGateways/Web.Bff.Marketing/apigw/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\..\ | ||||||
|  |   dockerfile: ..\..\..\ApiGateways\ApiGw-Base\Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/apigwwm | ||||||
|  |   set: | ||||||
|  |     replicaCount: 1 | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       # This expands to [space.s.]webmvc.<guid>.<region>.aksapp.io | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix)       | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - inf.yaml | ||||||
|  |   - app.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: ..\..\..\ApiGateways\ApiGw-Base\Dockerfile.develop | ||||||
|  |       args: | ||||||
|  |         BUILD_CONFIGURATION: ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |     container: | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: [dotnet, run, --no-restore, --no-build, --no-launch-profile, -c, "${BUILD_CONFIGURATION:-Debug}"] | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: [dotnet, vsdbg] | ||||||
|  |         buildCommands: | ||||||
|  |         - [dotnet, build, --no-restore, -c, "${BUILD_CONFIGURATION:-Debug}"] | ||||||
							
								
								
									
										2
									
								
								src/ApiGateways/Web.Bff.Marketing/apigw/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								src/ApiGateways/Web.Bff.Marketing/apigw/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | ocelot: | ||||||
|  |   configPath: /src/src/ApiGateways/ApiGw-Base/configuration | ||||||
| @ -0,0 +1,16 @@ | |||||||
|  | FROM microsoft/dotnet:2.2-sdk | ||||||
|  | ARG BUILD_CONFIGURATION=Debug | ||||||
|  | ENV ASPNETCORE_ENVIRONMENT=Development | ||||||
|  | ENV DOTNET_USE_POLLING_FILE_WATCHER=true | ||||||
|  | EXPOSE 80 | ||||||
|  | 
 | ||||||
|  | WORKDIR /src | ||||||
|  | COPY ["src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj", "src/ApiGateways/Web.Bff.Shopping/aggregator/"] | ||||||
|  | COPY ["src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj", "src/BuildingBlocks/Devspaces.Support/"] | ||||||
|  | 
 | ||||||
|  | RUN dotnet restore src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj -nowarn:msb3202,nu1503 | ||||||
|  | COPY . . | ||||||
|  | WORKDIR "/src/src/ApiGateways/Web.Bff.Shopping/aggregator" | ||||||
|  | RUN dotnet build --no-restore -c $BUILD_CONFIGURATION | ||||||
|  | 
 | ||||||
|  | CMD ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"]] | ||||||
| @ -21,6 +21,7 @@ using System.Net.Http; | |||||||
| using HealthChecks.UI.Client; | using HealthChecks.UI.Client; | ||||||
| using Microsoft.AspNetCore.Diagnostics.HealthChecks; | using Microsoft.AspNetCore.Diagnostics.HealthChecks; | ||||||
| using Microsoft.Extensions.Diagnostics.HealthChecks; | using Microsoft.Extensions.Diagnostics.HealthChecks; | ||||||
|  | using Devspaces.Support; | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator | namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator | ||||||
| { | { | ||||||
| @ -48,6 +49,7 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator | |||||||
| 
 | 
 | ||||||
|             services.AddCustomMvc(Configuration) |             services.AddCustomMvc(Configuration) | ||||||
|                 .AddCustomAuthentication(Configuration) |                 .AddCustomAuthentication(Configuration) | ||||||
|  |                 .AddDevspaces() | ||||||
|                 .AddApplicationServices(); |                 .AddApplicationServices(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -186,17 +188,19 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator | |||||||
|             services.AddHttpClient<IBasketService, BasketService>() |             services.AddHttpClient<IBasketService, BasketService>() | ||||||
|                 .AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>() |                 .AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>() | ||||||
|                 .AddPolicyHandler(GetRetryPolicy()) |                 .AddPolicyHandler(GetRetryPolicy()) | ||||||
|                 .AddPolicyHandler(GetCircuitBreakerPolicy()); |                 .AddPolicyHandler(GetCircuitBreakerPolicy()) | ||||||
|  |                 .AddDevspacesSupport(); | ||||||
| 
 | 
 | ||||||
|             services.AddHttpClient<ICatalogService, CatalogService>() |             services.AddHttpClient<ICatalogService, CatalogService>() | ||||||
|                 .AddPolicyHandler(GetRetryPolicy()) |                 .AddPolicyHandler(GetRetryPolicy()) | ||||||
|                 .AddPolicyHandler(GetCircuitBreakerPolicy()); |                 .AddPolicyHandler(GetCircuitBreakerPolicy()) | ||||||
|  |                 .AddDevspacesSupport(); | ||||||
| 
 | 
 | ||||||
|             services.AddHttpClient<IOrderApiClient, OrderApiClient>() |             services.AddHttpClient<IOrderApiClient, OrderApiClient>() | ||||||
|                 .AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>() |                 .AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>() | ||||||
|                 .AddPolicyHandler(GetRetryPolicy()) |                 .AddPolicyHandler(GetRetryPolicy()) | ||||||
|                 .AddPolicyHandler(GetCircuitBreakerPolicy()); |                 .AddPolicyHandler(GetCircuitBreakerPolicy()) | ||||||
| 
 |                 .AddDevspacesSupport(); | ||||||
| 
 | 
 | ||||||
|             return services; |             return services; | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -22,4 +22,8 @@ | |||||||
|     <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="2.2.0" /> |     <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="2.2.0" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ProjectReference Include="..\..\..\BuildingBlocks\Devspaces.Support\Devspaces.Support.csproj" /> | ||||||
|  |   </ItemGroup> | ||||||
|  | 
 | ||||||
| </Project> | </Project> | ||||||
|  | |||||||
							
								
								
									
										55
									
								
								src/ApiGateways/Web.Bff.Shopping/aggregator/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								src/ApiGateways/Web.Bff.Shopping/aggregator/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,55 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\.. | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/webshoppingagg | ||||||
|  |   set: | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       # This expands to [space.s.]apigwms.<guid>.<region>.aksapp.io | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix)       | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - app.yaml | ||||||
|  |   - inf.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: Dockerfile.develop | ||||||
|  |     container: | ||||||
|  |       syncTarget: /src | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: | ||||||
|  |       - dotnet | ||||||
|  |       - run | ||||||
|  |       - --no-restore | ||||||
|  |       - --no-build | ||||||
|  |       - --no-launch-profile | ||||||
|  |       - -c | ||||||
|  |       - ${Configuration:-Debug} | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: | ||||||
|  |         - dotnet | ||||||
|  |         - vsdbg | ||||||
|  |         buildCommands: | ||||||
|  |         - - dotnet | ||||||
|  |           - build | ||||||
|  |           - --no-restore | ||||||
|  |           - -c | ||||||
|  |           - ${Configuration:-Debug} | ||||||
| @ -0,0 +1,2 @@ | |||||||
|  | ocelot: | ||||||
|  |   configPath: /app/configuration | ||||||
							
								
								
									
										43
									
								
								src/ApiGateways/Web.Bff.Shopping/apigw/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/ApiGateways/Web.Bff.Shopping/apigw/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\..\ | ||||||
|  |   dockerfile: ..\..\..\..\ApiGateways\ApiGw-Base\Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/apigwws | ||||||
|  |   set: | ||||||
|  |     replicaCount: 1 | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix)       | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - inf.yaml | ||||||
|  |   - app.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: ..\..\..\ApiGateways\ApiGw-Base\Dockerfile.develop | ||||||
|  |       args: | ||||||
|  |         BUILD_CONFIGURATION: ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |     container: | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: [dotnet, run, --no-restore, --no-build, --no-launch-profile, -c, "${BUILD_CONFIGURATION:-Debug}"] | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: [dotnet, vsdbg] | ||||||
|  |         buildCommands: | ||||||
|  |         - [dotnet, build, --no-restore, -c, "${BUILD_CONFIGURATION:-Debug}"] | ||||||
							
								
								
									
										2
									
								
								src/ApiGateways/Web.Bff.Shopping/apigw/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								src/ApiGateways/Web.Bff.Shopping/apigw/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | ocelot: | ||||||
|  |   configPath: /src/src/ApiGateways/ApiGw-Base/configuration | ||||||
| @ -0,0 +1,11 @@ | |||||||
|  | <Project Sdk="Microsoft.NET.Sdk"> | ||||||
|  | 
 | ||||||
|  |   <PropertyGroup> | ||||||
|  |     <TargetFramework>netstandard2.0</TargetFramework> | ||||||
|  |   </PropertyGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" /> | ||||||
|  |     <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.2.0" /> | ||||||
|  |     <PackageReference Include="Microsoft.Extensions.Http" Version="2.2.0" /> | ||||||
|  |   </ItemGroup> | ||||||
|  | </Project> | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | using Microsoft.AspNetCore.Http; | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Net.Http; | ||||||
|  | using System.Threading; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | 
 | ||||||
|  | namespace Devspaces.Support | ||||||
|  | { | ||||||
|  |     public class DevspacesMessageHandler : DelegatingHandler | ||||||
|  |     { | ||||||
|  |         private const string DevspacesHeaderName = "azds-route-as"; | ||||||
|  |         private readonly IHttpContextAccessor _httpContextAccessor; | ||||||
|  |         public DevspacesMessageHandler(IHttpContextAccessor httpContextAccessor) | ||||||
|  |         { | ||||||
|  |             _httpContextAccessor = httpContextAccessor; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) | ||||||
|  |         { | ||||||
|  |             var req = _httpContextAccessor.HttpContext.Request; | ||||||
|  | 
 | ||||||
|  |             if (req.Headers.ContainsKey(DevspacesHeaderName)) | ||||||
|  |             { | ||||||
|  |                 request.Headers.Add(DevspacesHeaderName, req.Headers[DevspacesHeaderName] as IEnumerable<string>); | ||||||
|  |             } | ||||||
|  |             return base.SendAsync(request, cancellationToken); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,16 @@ | |||||||
|  | using Microsoft.Extensions.DependencyInjection; | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Text; | ||||||
|  | 
 | ||||||
|  | namespace Devspaces.Support | ||||||
|  | { | ||||||
|  |     public static class HttpClientBuilderDevspacesExtensions | ||||||
|  |     { | ||||||
|  |         public static IHttpClientBuilder AddDevspacesSupport(this IHttpClientBuilder builder) | ||||||
|  |         { | ||||||
|  |             builder.AddHttpMessageHandler<DevspacesMessageHandler>(); | ||||||
|  |             return builder; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,16 @@ | |||||||
|  | using Microsoft.Extensions.DependencyInjection; | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Text; | ||||||
|  | 
 | ||||||
|  | namespace Devspaces.Support | ||||||
|  | { | ||||||
|  |     public static class ServiceCollectionDevspacesExtensions | ||||||
|  |     { | ||||||
|  |         public static IServiceCollection AddDevspaces(this IServiceCollection services) | ||||||
|  |         { | ||||||
|  |             services.AddTransient<DevspacesMessageHandler>(); | ||||||
|  |             return services; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -178,27 +178,46 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | |||||||
|         { |         { | ||||||
|             if (_consumerChannel != null) |             if (_consumerChannel != null) | ||||||
|             { |             { | ||||||
|                 var consumer = new EventingBasicConsumer(_consumerChannel); |                 var consumer = new AsyncEventingBasicConsumer(_consumerChannel); | ||||||
|                 consumer.Received += async (model, ea) => |  | ||||||
|                 { |  | ||||||
|                     var eventName = ea.RoutingKey; |  | ||||||
|                     var message = Encoding.UTF8.GetString(ea.Body); |  | ||||||
| 
 | 
 | ||||||
|                     await ProcessEvent(eventName, message); |                 consumer.Received += Consumer_Received; | ||||||
| 
 | 
 | ||||||
|                     _consumerChannel.BasicAck(ea.DeliveryTag, multiple: false); |                 _consumerChannel.BasicConsume( | ||||||
|                 }; |                     queue: _queueName, | ||||||
| 
 |                     autoAck: false, | ||||||
|                 _consumerChannel.BasicConsume(queue: _queueName, |                     consumer: consumer); | ||||||
|                                      autoAck: false, |  | ||||||
|                                      consumer: consumer); |  | ||||||
|             } |             } | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
|                 _logger.LogError("StartBasicConsume can not call on _consumerChannelCreated == false"); |                 _logger.LogError("StartBasicConsume can't call on _consumerChannel == null"); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         private async Task Consumer_Received(object sender, BasicDeliverEventArgs eventArgs) | ||||||
|  |         { | ||||||
|  |             var eventName = eventArgs.RoutingKey; | ||||||
|  |             var message = Encoding.UTF8.GetString(eventArgs.Body); | ||||||
|  | 
 | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 if (message.ToLowerInvariant().Contains("throw-fake-exception")) | ||||||
|  |                 { | ||||||
|  |                     throw new InvalidOperationException($"Fake exception requested: \"{message}\""); | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 await ProcessEvent(eventName, message); | ||||||
|  |             } | ||||||
|  |             catch (Exception ex) | ||||||
|  |             { | ||||||
|  |                 _logger.LogWarning(ex, "----- ERROR Processing message \"{Message}\"", message); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             // Even on exception we take the message off the queue. | ||||||
|  |             // in a REAL WORLD app this should be handled with a Dead Letter Exchange (DLX).  | ||||||
|  |             // For more information see: https://www.rabbitmq.com/dlx.html | ||||||
|  |             _consumerChannel.BasicAck(eventArgs.DeliveryTag, multiple: false); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         private IModel CreateConsumerChannel() |         private IModel CreateConsumerChannel() | ||||||
|         { |         { | ||||||
|             if (!_persistentConnection.IsConnected) |             if (!_persistentConnection.IsConnected) | ||||||
| @ -209,7 +228,7 @@ namespace Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ | |||||||
|             var channel = _persistentConnection.CreateModel(); |             var channel = _persistentConnection.CreateModel(); | ||||||
| 
 | 
 | ||||||
|             channel.ExchangeDeclare(exchange: BROKER_NAME, |             channel.ExchangeDeclare(exchange: BROKER_NAME, | ||||||
|                                  type: "direct"); |                                     type: "direct"); | ||||||
| 
 | 
 | ||||||
|             channel.QueueDeclare(queue: _queueName, |             channel.QueueDeclare(queue: _queueName, | ||||||
|                                  durable: true, |                                  durable: true, | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								src/Services/Basket/Basket.API/.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/Services/Basket/Basket.API/.dockerignore
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | .dockerignore | ||||||
|  | .git | ||||||
|  | .gitignore | ||||||
|  | .vs | ||||||
|  | .vscode | ||||||
|  | **/*.*proj.user | ||||||
|  | **/azds.yaml | ||||||
|  | **/bin | ||||||
|  | **/charts | ||||||
|  | **/Dockerfile | ||||||
|  | **/Dockerfile.develop | ||||||
|  | **/obj | ||||||
|  | **/secrets.dev.yaml | ||||||
|  | **/values.dev.yaml | ||||||
| @ -41,14 +41,14 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API.Controllers | |||||||
|         { |         { | ||||||
|             var basket = await _repository.GetBasketAsync(id); |             var basket = await _repository.GetBasketAsync(id); | ||||||
| 
 | 
 | ||||||
|             return basket ?? new CustomerBasket(id); |             return Ok(basket ?? new CustomerBasket(id)); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         [HttpPost] |         [HttpPost] | ||||||
|         [ProducesResponseType(typeof(CustomerBasket), (int)HttpStatusCode.OK)] |         [ProducesResponseType(typeof(CustomerBasket), (int)HttpStatusCode.OK)] | ||||||
|         public async Task<ActionResult<CustomerBasket>> UpdateBasketAsync([FromBody]CustomerBasket value) |         public async Task<ActionResult<CustomerBasket>> UpdateBasketAsync([FromBody]CustomerBasket value) | ||||||
|         { |         { | ||||||
|             return await _repository.UpdateBasketAsync(value); |             return Ok(await _repository.UpdateBasketAsync(value)); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         [Route("checkout")] |         [Route("checkout")] | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								src/Services/Basket/Basket.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/Services/Basket/Basket.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | FROM microsoft/dotnet:2.2-sdk | ||||||
|  | ARG BUILD_CONFIGURATION=Debug | ||||||
|  | ENV ASPNETCORE_ENVIRONMENT=Development | ||||||
|  | ENV DOTNET_USE_POLLING_FILE_WATCHER=true | ||||||
|  | EXPOSE 80 | ||||||
|  | 
 | ||||||
|  | WORKDIR /src | ||||||
|  | 
 | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBus/EventBus.csproj", "src/BuildingBlocks/EventBus/EventBus/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj", "src/BuildingBlocks/EventBus/EventBusRabbitMQ/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj", "src/BuildingBlocks/EventBus/EventBusServiceBus/"] | ||||||
|  | COPY ["src/Services/Basket/Basket.API/Basket.API.csproj", "src/Services/Basket/Basket.API/"] | ||||||
|  | 
 | ||||||
|  | RUN dotnet restore src/Services/Basket/Basket.API/Basket.API.csproj -nowarn:msb3202,nu1503 | ||||||
|  | COPY . . | ||||||
|  | WORKDIR /src/src/Services/Basket/Basket.API | ||||||
|  | RUN dotnet build --no-restore -c $BUILD_CONFIGURATION | ||||||
|  | 
 | ||||||
|  | ENTRYPOINT ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"] | ||||||
| @ -105,7 +105,8 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API | |||||||
| 
 | 
 | ||||||
|                     var factory = new ConnectionFactory() |                     var factory = new ConnectionFactory() | ||||||
|                     { |                     { | ||||||
|                         HostName = Configuration["EventBusConnection"] |                         HostName = Configuration["EventBusConnection"], | ||||||
|  |                         DispatchConsumersAsync = true | ||||||
|                     }; |                     }; | ||||||
| 
 | 
 | ||||||
|                     if (!string.IsNullOrEmpty(Configuration["EventBusUserName"])) |                     if (!string.IsNullOrEmpty(Configuration["EventBusUserName"])) | ||||||
|  | |||||||
							
								
								
									
										56
									
								
								src/Services/Basket/Basket.API/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/Services/Basket/Basket.API/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\.. | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/basket-api | ||||||
|  |   set: | ||||||
|  |     replicaCount: 1 | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - inf.yaml | ||||||
|  |   - app.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: Dockerfile.develop | ||||||
|  |       args: | ||||||
|  |         BUILD_CONFIGURATION: ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |     container: | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: | ||||||
|  |       - dotnet | ||||||
|  |       - run | ||||||
|  |       - --no-restore | ||||||
|  |       - --no-build | ||||||
|  |       - --no-launch-profile | ||||||
|  |       - -c | ||||||
|  |       - ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: | ||||||
|  |         - dotnet | ||||||
|  |         - vsdbg | ||||||
|  |         buildCommands: | ||||||
|  |         - - dotnet | ||||||
|  |           - build | ||||||
|  |           - --no-restore | ||||||
|  |           - -c | ||||||
|  |           - ${BUILD_CONFIGURATION:-Debug} | ||||||
							
								
								
									
										3
									
								
								src/Services/Basket/Basket.API/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/Services/Basket/Basket.API/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | ingress: | ||||||
|  |   enabled: true | ||||||
|  |   tls: [] | ||||||
| @ -17,6 +17,8 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.App" /> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> |     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.2.0" /> |     <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.2.0" /> | ||||||
|     <PackageReference Include="xunit" Version="2.4.1" /> |     <PackageReference Include="xunit" Version="2.4.1" /> | ||||||
|  | |||||||
| @ -55,7 +55,7 @@ namespace UnitTest.Basket.Application | |||||||
| 
 | 
 | ||||||
|             //Assert |             //Assert | ||||||
|             Assert.Equal((actionResult.Result as OkObjectResult).StatusCode, (int)System.Net.HttpStatusCode.OK); |             Assert.Equal((actionResult.Result as OkObjectResult).StatusCode, (int)System.Net.HttpStatusCode.OK); | ||||||
|             Assert.Equal(((CustomerBasket)actionResult.Value).BuyerId, fakeCustomerId); |             Assert.Equal((((ObjectResult)actionResult.Result).Value as CustomerBasket).BuyerId, fakeCustomerId); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         [Fact] |         [Fact] | ||||||
| @ -81,7 +81,7 @@ namespace UnitTest.Basket.Application | |||||||
| 
 | 
 | ||||||
|             //Assert |             //Assert | ||||||
|             Assert.Equal((actionResult.Result as OkObjectResult).StatusCode, (int)System.Net.HttpStatusCode.OK); |             Assert.Equal((actionResult.Result as OkObjectResult).StatusCode, (int)System.Net.HttpStatusCode.OK); | ||||||
|             Assert.Equal(((CustomerBasket)actionResult.Value).BuyerId, fakeCustomerId); |             Assert.Equal((((ObjectResult)actionResult.Result).Value as CustomerBasket).BuyerId, fakeCustomerId); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         [Fact] |         [Fact] | ||||||
|  | |||||||
| @ -7,6 +7,8 @@ | |||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.App" /> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> |     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> | ||||||
|     <PackageReference Include="xunit" Version="2.4.1" /> |     <PackageReference Include="xunit" Version="2.4.1" /> | ||||||
|     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> |     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> | ||||||
|  | |||||||
| @ -60,6 +60,15 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.Controllers | |||||||
|                 .Take(pageSize) |                 .Take(pageSize) | ||||||
|                 .ToListAsync(); |                 .ToListAsync(); | ||||||
| 
 | 
 | ||||||
|  |             /* The "awesome" fix for testing Devspaces */ | ||||||
|  | 
 | ||||||
|  |             /* | ||||||
|  |             foreach (var pr in itemsOnPage) { | ||||||
|  |                 pr.Name = "Awesome " + pr.Name; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             */ | ||||||
|  | 
 | ||||||
|             itemsOnPage = ChangeUriPlaceholder(itemsOnPage); |             itemsOnPage = ChangeUriPlaceholder(itemsOnPage); | ||||||
| 
 | 
 | ||||||
|             var model = new PaginatedItemsViewModel<CatalogItem>(pageIndex, pageSize, totalItems, itemsOnPage); |             var model = new PaginatedItemsViewModel<CatalogItem>(pageIndex, pageSize, totalItems, itemsOnPage); | ||||||
|  | |||||||
							
								
								
									
										21
									
								
								src/Services/Catalog/Catalog.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/Services/Catalog/Catalog.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | FROM microsoft/dotnet:2.2-sdk | ||||||
|  | ARG BUILD_CONFIGURATION=Debug | ||||||
|  | ENV ASPNETCORE_ENVIRONMENT=Development | ||||||
|  | ENV DOTNET_USE_POLLING_FILE_WATCHER=true | ||||||
|  | EXPOSE 80 | ||||||
|  | 
 | ||||||
|  | WORKDIR /src | ||||||
|  | 
 | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBus/EventBus.csproj", "src/BuildingBlocks/EventBus/EventBus/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj", "src/BuildingBlocks/EventBus/EventBusRabbitMQ/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj", "src/BuildingBlocks/EventBus/EventBusServiceBus/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj", "src/BuildingBlocks/EventBus/IntegrationEventLogEF/"] | ||||||
|  | COPY ["src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj", "src/BuildingBlocks/WebHostCustomization/WebHost.Customization/"] | ||||||
|  | COPY ["src/Services/Catalog/Catalog.API/Catalog.API.csproj", "src/Services/Catalog/Catalog.API/"] | ||||||
|  | 
 | ||||||
|  | RUN dotnet restore src/Services/Catalog/Catalog.API/Catalog.API.csproj -nowarn:msb3202,nu1503 | ||||||
|  | COPY . . | ||||||
|  | WORKDIR "/src/src/Services/Catalog/Catalog.API" | ||||||
|  | RUN dotnet build  --no-restore -c $BUILD_CONFIGURATION | ||||||
|  | 
 | ||||||
|  | ENTRYPOINT ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"] | ||||||
| @ -64,7 +64,7 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API.Model | |||||||
| 
 | 
 | ||||||
|             if (quantityDesired <= 0) |             if (quantityDesired <= 0) | ||||||
|             { |             { | ||||||
|                 throw new CatalogDomainException($"Item units desired should be greater than cero"); |                 throw new CatalogDomainException($"Item units desired should be greater than zero"); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             int removed = Math.Min(quantityDesired, this.AvailableStock); |             int removed = Math.Min(quantityDesired, this.AvailableStock); | ||||||
|  | |||||||
| @ -27,6 +27,13 @@ | |||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       } | ||||||
|  |     }, | ||||||
|  |     "Azure Dev Spaces": { | ||||||
|  |       "commandName": "AzureDevSpaces", | ||||||
|  |       "launchBrowser": true, | ||||||
|  |       "resourceGroup": "edu-devspaces3", | ||||||
|  |       "aksName": "edu-devspaces3", | ||||||
|  |       "subscriptionId": "e3035ac1-c06c-4daf-8939-57b3c5f1f759" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -297,7 +297,8 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API | |||||||
| 
 | 
 | ||||||
|                     var factory = new ConnectionFactory() |                     var factory = new ConnectionFactory() | ||||||
|                     { |                     { | ||||||
|                         HostName = configuration["EventBusConnection"] |                         HostName = configuration["EventBusConnection"], | ||||||
|  |                         DispatchConsumersAsync = true | ||||||
|                     }; |                     }; | ||||||
| 
 | 
 | ||||||
|                     if (!string.IsNullOrEmpty(configuration["EventBusUserName"])) |                     if (!string.IsNullOrEmpty(configuration["EventBusUserName"])) | ||||||
|  | |||||||
							
								
								
									
										54
									
								
								src/Services/Catalog/Catalog.API/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								src/Services/Catalog/Catalog.API/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\.. | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/catalog-api | ||||||
|  |   set: | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix)       | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - inf.yaml | ||||||
|  |   - app.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: Dockerfile.develop | ||||||
|  |     container: | ||||||
|  |       syncTarget: /src | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: | ||||||
|  |       - dotnet | ||||||
|  |       - run | ||||||
|  |       - --no-restore | ||||||
|  |       - --no-build | ||||||
|  |       - --no-launch-profile | ||||||
|  |       - -c | ||||||
|  |       - ${Configuration:-Debug} | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: | ||||||
|  |         - dotnet | ||||||
|  |         - vsdbg | ||||||
|  |         buildCommands: | ||||||
|  |         - - dotnet | ||||||
|  |           - build | ||||||
|  |           - --no-restore | ||||||
|  |           - -c | ||||||
|  |           - ${Configuration:-Debug} | ||||||
							
								
								
									
										3
									
								
								src/Services/Catalog/Catalog.API/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/Services/Catalog/Catalog.API/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | ingress: | ||||||
|  |   enabled: true | ||||||
|  |   tls: [] | ||||||
| @ -33,6 +33,8 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.App" /> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> |     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.2.0" /> |     <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.2.0" /> | ||||||
|     <PackageReference Include="xunit" Version="2.4.1" /> |     <PackageReference Include="xunit" Version="2.4.1" /> | ||||||
|  | |||||||
| @ -7,6 +7,8 @@ | |||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.App" /> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> |     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> | ||||||
|     <PackageReference Include="xunit" Version="2.4.1" /> |     <PackageReference Include="xunit" Version="2.4.1" /> | ||||||
|     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> |     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								src/Services/Identity/Identity.API/.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/Services/Identity/Identity.API/.dockerignore
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | .dockerignore | ||||||
|  | .git | ||||||
|  | .gitignore | ||||||
|  | .vs | ||||||
|  | .vscode | ||||||
|  | **/*.*proj.user | ||||||
|  | **/azds.yaml | ||||||
|  | **/bin | ||||||
|  | **/charts | ||||||
|  | **/Dockerfile | ||||||
|  | **/Dockerfile.develop | ||||||
|  | **/obj | ||||||
|  | **/secrets.dev.yaml | ||||||
|  | **/values.dev.yaml | ||||||
| @ -0,0 +1,31 @@ | |||||||
|  | using IdentityServer4.Models; | ||||||
|  | using IdentityServer4.Validation; | ||||||
|  | using Microsoft.Extensions.Logging; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | namespace Microsoft.eShopOnContainers.Services.Identity.API.Devspaces | ||||||
|  | { | ||||||
|  |     public class DevspacesRedirectUriValidator : IRedirectUriValidator | ||||||
|  |     { | ||||||
|  |         private readonly ILogger _logger; | ||||||
|  |         public DevspacesRedirectUriValidator(ILogger<DevspacesRedirectUriValidator> logger) | ||||||
|  |         { | ||||||
|  |             _logger = logger; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public Task<bool> IsPostLogoutRedirectUriValidAsync(string requestedUri, Client client) | ||||||
|  |         { | ||||||
|  | 
 | ||||||
|  |             _logger.LogInformation($"Client {client.ClientName} used post logout uri {requestedUri}."); | ||||||
|  |             return Task.FromResult(true); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public Task<bool> IsRedirectUriValidAsync(string requestedUri, Client client) | ||||||
|  |         { | ||||||
|  |             _logger.LogInformation($"Client {client.ClientName} used redirect uri {requestedUri}."); | ||||||
|  |             return Task.FromResult(true); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,20 @@ | |||||||
|  | using Microsoft.Extensions.DependencyInjection; | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | 
 | ||||||
|  | namespace Microsoft.eShopOnContainers.Services.Identity.API.Devspaces | ||||||
|  | { | ||||||
|  |     static class IdentityDevspacesBuilderExtensions | ||||||
|  |     { | ||||||
|  |         public static IIdentityServerBuilder AddDevspacesIfNeeded(this IIdentityServerBuilder builder, bool useDevspaces) | ||||||
|  |         { | ||||||
|  |             if (useDevspaces) | ||||||
|  |             { | ||||||
|  |                 builder.AddRedirectUriValidator<DevspacesRedirectUriValidator>(); | ||||||
|  |             } | ||||||
|  |             return builder; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								src/Services/Identity/Identity.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/Services/Identity/Identity.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | FROM microsoft/dotnet:2.2-sdk | ||||||
|  | ARG BUILD_CONFIGURATION=Debug | ||||||
|  | ENV ASPNETCORE_ENVIRONMENT=Development | ||||||
|  | ENV DOTNET_USE_POLLING_FILE_WATCHER=true | ||||||
|  | EXPOSE 80 | ||||||
|  | 
 | ||||||
|  | WORKDIR /src | ||||||
|  | COPY ["src/Services/Identity/Identity.API/Identity.API.csproj", "src/Services/Identity/Identity.API/"] | ||||||
|  | COPY ["src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj", "src/BuildingBlocks/WebHostCustomization/WebHost.Customization/"] | ||||||
|  | RUN dotnet restore src/Services/Identity/Identity.API/Identity.API.csproj -nowarn:msb3202,nu1503 | ||||||
|  | COPY . . | ||||||
|  | WORKDIR "/src/src/Services/Identity/Identity.API" | ||||||
|  | RUN dotnet build  --no-restore -c $BUILD_CONFIGURATION | ||||||
|  | 
 | ||||||
|  | ENTRYPOINT ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"] | ||||||
| @ -2,10 +2,10 @@ | |||||||
| Sample reference containerized application, cross-platform and microservices architecture. | Sample reference containerized application, cross-platform and microservices architecture. | ||||||
| Powered by Microsoft | Powered by Microsoft | ||||||
| 
 | 
 | ||||||
| #Overview | ## Overview | ||||||
| This sample runs a microservices oriented application and a .net core Mvc application that consumes this services. You can find more information about how to set up docker in your machine in the global directory solution. | This sample runs a microservices oriented application and a .net core Mvc application that consumes this services. You can find more information about how to set up docker in your machine in the global directory solution. | ||||||
| 
 | 
 | ||||||
| #Setup | ## Setup | ||||||
| This service is a identity provider or STS (Security Token Service) currently implemented with IdentityServer 4 wrapping ASP.NET Identity underneath. | This service is a identity provider or STS (Security Token Service) currently implemented with IdentityServer 4 wrapping ASP.NET Identity underneath. | ||||||
| 
 | 
 | ||||||
| Check procedures on how to get the sample app started at the Wiki: | Check procedures on how to get the sample app started at the Wiki: | ||||||
|  | |||||||
| @ -13,6 +13,7 @@ using Microsoft.eShopOnContainers.Services.Identity.API.Certificates; | |||||||
| using Microsoft.eShopOnContainers.Services.Identity.API.Data; | using Microsoft.eShopOnContainers.Services.Identity.API.Data; | ||||||
| using Microsoft.eShopOnContainers.Services.Identity.API.Models; | using Microsoft.eShopOnContainers.Services.Identity.API.Models; | ||||||
| using Microsoft.eShopOnContainers.Services.Identity.API.Services; | using Microsoft.eShopOnContainers.Services.Identity.API.Services; | ||||||
|  | using Microsoft.eShopOnContainers.Services.Identity.API.Devspaces; | ||||||
| using Microsoft.Extensions.Configuration; | using Microsoft.Extensions.Configuration; | ||||||
| using Microsoft.Extensions.DependencyInjection; | using Microsoft.Extensions.DependencyInjection; | ||||||
| using Microsoft.Extensions.Logging; | using Microsoft.Extensions.Logging; | ||||||
| @ -85,6 +86,7 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API | |||||||
|                 x.IssuerUri = "null"; |                 x.IssuerUri = "null"; | ||||||
|                 x.Authentication.CookieLifetime = TimeSpan.FromHours(2); |                 x.Authentication.CookieLifetime = TimeSpan.FromHours(2); | ||||||
|             }) |             }) | ||||||
|  |             .AddDevspacesIfNeeded(Configuration.GetValue("EnableDevspaces", false)) | ||||||
|             .AddSigningCredential(Certificate.Get()) |             .AddSigningCredential(Certificate.Get()) | ||||||
|             .AddAspNetIdentity<ApplicationUser>() |             .AddAspNetIdentity<ApplicationUser>() | ||||||
|             .AddConfigurationStore(options => |             .AddConfigurationStore(options => | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ | |||||||
| 
 | 
 | ||||||
|     <div class="row"> |     <div class="row"> | ||||||
|         <div class="col-sm-8"> |         <div class="col-sm-8"> | ||||||
|             @Html.Partial("_ValidationSummary") |             <partial name="_ValidationSummary"/> | ||||||
| 
 | 
 | ||||||
|             <form asp-action="Index" class="consent-form"> |             <form asp-action="Index" class="consent-form"> | ||||||
|                 <input type="hidden" asp-for="ReturnUrl" /> |                 <input type="hidden" asp-for="ReturnUrl" /> | ||||||
| @ -33,7 +33,7 @@ | |||||||
|                         <ul class="list-group"> |                         <ul class="list-group"> | ||||||
|                             @foreach (var scope in Model.IdentityScopes) |                             @foreach (var scope in Model.IdentityScopes) | ||||||
|                             { |                             { | ||||||
|                                 @Html.Partial("_ScopeListItem", scope) |                                 <partial name="_ScopeListItem" model="scope"/> | ||||||
|                             } |                             } | ||||||
|                         </ul> |                         </ul> | ||||||
|                     </div> |                     </div> | ||||||
| @ -49,7 +49,7 @@ | |||||||
|                         <ul class="list-group"> |                         <ul class="list-group"> | ||||||
|                             @foreach (var scope in Model.ResourceScopes) |                             @foreach (var scope in Model.ResourceScopes) | ||||||
|                             { |                             { | ||||||
|                                 @Html.Partial("_ScopeListItem", scope) |                                 <partial name="_ScopeListItem" model="scope"/> | ||||||
|                             } |                             } | ||||||
|                         </ul> |                         </ul> | ||||||
|                     </div> |                     </div> | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ | |||||||
| 
 | 
 | ||||||
| @if (SignInManager.IsSignedIn(User)) | @if (SignInManager.IsSignedIn(User)) | ||||||
| { | { | ||||||
|     <form asp-area="" asp-controller="Account" asp-action="LogOff" method="post" id="logoutForm" class="navbar-right"> |     <form asp-area="" asp-controller="Account" asp-action="Logout" method="post" id="logoutForm" class="navbar-right"> | ||||||
|         <ul class="nav navbar-nav navbar-right"> |         <ul class="nav navbar-nav navbar-right"> | ||||||
|             <li> |             <li> | ||||||
|                 <a asp-area="" asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)!</a> |                 <a asp-area="" asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)!</a> | ||||||
|  | |||||||
							
								
								
									
										56
									
								
								src/Services/Identity/Identity.API/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/Services/Identity/Identity.API/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\.. | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/identity-api | ||||||
|  |   set: | ||||||
|  |     replicaCount: 1 | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix)       | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - inf.yaml | ||||||
|  |   - app.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: Dockerfile.develop | ||||||
|  |       args: | ||||||
|  |         BUILD_CONFIGURATION: ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |     container: | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: | ||||||
|  |       - dotnet | ||||||
|  |       - run | ||||||
|  |       - --no-restore | ||||||
|  |       - --no-build | ||||||
|  |       - --no-launch-profile | ||||||
|  |       - -c | ||||||
|  |       - ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: | ||||||
|  |         - dotnet | ||||||
|  |         - vsdbg | ||||||
|  |         buildCommands: | ||||||
|  |         - - dotnet | ||||||
|  |           - build | ||||||
|  |           - --no-restore | ||||||
|  |           - -c | ||||||
|  |           - ${BUILD_CONFIGURATION:-Debug} | ||||||
							
								
								
									
										1
									
								
								src/Services/Identity/Identity.API/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/Services/Identity/Identity.API/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | enableDevspaces: "true" | ||||||
							
								
								
									
										17
									
								
								src/Services/Location/Locations.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/Services/Location/Locations.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | FROM microsoft/dotnet:2.2-sdk | ||||||
|  | ARG BUILD_CONFIGURATION=Debug | ||||||
|  | ENV ASPNETCORE_ENVIRONMENT=Development | ||||||
|  | ENV DOTNET_USE_POLLING_FILE_WATCHER=true | ||||||
|  | EXPOSE 80 | ||||||
|  | 
 | ||||||
|  | WORKDIR /src | ||||||
|  | COPY ["src/Services/Location/Locations.API/Locations.API.csproj", "src/Services/Location/Locations.API/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBus/EventBus.csproj", "src/BuildingBlocks/EventBus/EventBus/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj", "src/BuildingBlocks/EventBus/EventBusRabbitMQ/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj", "src/BuildingBlocks/EventBus/EventBusServiceBus/"] | ||||||
|  | RUN dotnet restore src/Services/Location/Locations.API/Locations.API.csproj -nowarn:msb3202,nu1503 | ||||||
|  | COPY . . | ||||||
|  | WORKDIR "/src/src/Services/Location/Locations.API" | ||||||
|  | RUN dotnet build  --no-restore -c $BUILD_CONFIGURATION | ||||||
|  | 
 | ||||||
|  | ENTRYPOINT ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"] | ||||||
| @ -77,7 +77,8 @@ namespace Microsoft.eShopOnContainers.Services.Locations.API | |||||||
| 
 | 
 | ||||||
|                     var factory = new ConnectionFactory() |                     var factory = new ConnectionFactory() | ||||||
|                     { |                     { | ||||||
|                         HostName = Configuration["EventBusConnection"] |                         HostName = Configuration["EventBusConnection"], | ||||||
|  |                         DispatchConsumersAsync = true | ||||||
|                     }; |                     }; | ||||||
| 
 | 
 | ||||||
|                     if (!string.IsNullOrEmpty(Configuration["EventBusUserName"])) |                     if (!string.IsNullOrEmpty(Configuration["EventBusUserName"])) | ||||||
|  | |||||||
							
								
								
									
										56
									
								
								src/Services/Location/Locations.API/azds.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/Services/Location/Locations.API/azds.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | |||||||
|  | kind: helm-release | ||||||
|  | apiVersion: 1.1 | ||||||
|  | build: | ||||||
|  |   context: ..\..\..\.. | ||||||
|  |   dockerfile: Dockerfile | ||||||
|  | install: | ||||||
|  |   chart: ../../../../k8s/helm/locations-api | ||||||
|  |   set: | ||||||
|  |     replicaCount: 1 | ||||||
|  |     image: | ||||||
|  |       tag: $(tag) | ||||||
|  |       pullPolicy: Never | ||||||
|  |     ingress: | ||||||
|  |       annotations: | ||||||
|  |         kubernetes.io/ingress.class: traefik-azds | ||||||
|  |       hosts: | ||||||
|  |       - $(spacePrefix)eshop$(hostSuffix) | ||||||
|  |     inf: | ||||||
|  |       k8s: | ||||||
|  |         dns: $(spacePrefix)eshop$(hostSuffix)       | ||||||
|  |   values: | ||||||
|  |   - values.dev.yaml? | ||||||
|  |   - secrets.dev.yaml? | ||||||
|  |   - inf.yaml | ||||||
|  |   - app.yaml | ||||||
|  | configurations: | ||||||
|  |   develop: | ||||||
|  |     build: | ||||||
|  |       useGitIgnore: true | ||||||
|  |       dockerfile: Dockerfile.develop | ||||||
|  |       args: | ||||||
|  |         BUILD_CONFIGURATION: ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |     container: | ||||||
|  |       sync: | ||||||
|  |       - '**/Pages/**' | ||||||
|  |       - '**/Views/**' | ||||||
|  |       - '**/wwwroot/**' | ||||||
|  |       - '!**/*.{sln,csproj}' | ||||||
|  |       command: | ||||||
|  |       - dotnet | ||||||
|  |       - run | ||||||
|  |       - --no-restore | ||||||
|  |       - --no-build | ||||||
|  |       - --no-launch-profile | ||||||
|  |       - -c | ||||||
|  |       - ${BUILD_CONFIGURATION:-Debug} | ||||||
|  |       iterate: | ||||||
|  |         processesToKill: | ||||||
|  |         - dotnet | ||||||
|  |         - vsdbg | ||||||
|  |         buildCommands: | ||||||
|  |         - - dotnet | ||||||
|  |           - build | ||||||
|  |           - --no-restore | ||||||
|  |           - -c | ||||||
|  |           - ${BUILD_CONFIGURATION:-Debug} | ||||||
							
								
								
									
										3
									
								
								src/Services/Location/Locations.API/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/Services/Location/Locations.API/values.dev.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | ingress: | ||||||
|  |   enabled: true | ||||||
|  |   tls: [] | ||||||
| @ -17,6 +17,8 @@ | |||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.App" /> | ||||||
|  |     <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" /> | ||||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> |     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.2.0" /> |     <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.2.0" /> | ||||||
|     <PackageReference Include="xunit" Version="2.4.1" /> |     <PackageReference Include="xunit" Version="2.4.1" /> | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								src/Services/Marketing/Marketing.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/Services/Marketing/Marketing.API/Dockerfile.develop
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | FROM microsoft/dotnet:2.2-sdk | ||||||
|  | ARG BUILD_CONFIGURATION=Debug | ||||||
|  | ENV ASPNETCORE_ENVIRONMENT=Development | ||||||
|  | ENV DOTNET_USE_POLLING_FILE_WATCHER=true | ||||||
|  | EXPOSE 80 | ||||||
|  | 
 | ||||||
|  | WORKDIR /src | ||||||
|  | COPY ["src/Services/Marketing/Marketing.API/Marketing.API.csproj", "src/Services/Marketing/Marketing.API/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBus/EventBus.csproj", "src/BuildingBlocks/EventBus/EventBus/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj", "src/BuildingBlocks/EventBus/EventBusRabbitMQ/"] | ||||||
|  | COPY ["src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj", "src/BuildingBlocks/EventBus/EventBusServiceBus/"] | ||||||
|  | COPY ["src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj", "src/BuildingBlocks/WebHostCustomization/WebHost.Customization/"] | ||||||
|  | RUN dotnet restore src/Services/Marketing/Marketing.API/Marketing.API.csproj -nowarn:msb3202,nu1503 | ||||||
|  | COPY . . | ||||||
|  | WORKDIR "/src/src/Services/Marketing/Marketing.API" | ||||||
|  | RUN dotnet build  --no-restore -c $BUILD_CONFIGURATION | ||||||
|  | 
 | ||||||
|  | ENTRYPOINT ["dotnet", "run", "--no-build", "--no-launch-profile", "-c", "$BUILD_CONFIGURATION", "--"] | ||||||
| @ -101,7 +101,8 @@ | |||||||
| 
 | 
 | ||||||
|                     var factory = new ConnectionFactory() |                     var factory = new ConnectionFactory() | ||||||
|                     { |                     { | ||||||
|                         HostName = Configuration["EventBusConnection"] |                         HostName = Configuration["EventBusConnection"], | ||||||
|  |                         DispatchConsumersAsync = true | ||||||
|                     }; |                     }; | ||||||
| 
 | 
 | ||||||
|                     if (!string.IsNullOrEmpty(Configuration["EventBusUserName"])) |                     if (!string.IsNullOrEmpty(Configuration["EventBusUserName"])) | ||||||
|  | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user