Merge branch 'dev' into features/addIntegrationIstio

This commit is contained in:
jmanuelcorral 2019-06-05 18:32:58 +02:00
commit 54626b5175
434 changed files with 4677 additions and 30747 deletions

View File

@ -7,7 +7,6 @@
docker-compose*.yml docker-compose*.yml
docker-compose.dcproj docker-compose.dcproj
*.sln *.sln
!eShopOnContainers-ServicesAndWebApps.sln
*.md *.md
hosts hosts
LICENSE LICENSE
@ -31,4 +30,13 @@ cli-linux
**/wwwroot/lib/* **/wwwroot/lib/*
global.json global.json
**/appsettings.localhost.json **/appsettings.localhost.json
src/Web/WebSPA/wwwroot/ src/Web/WebSPA/wwwroot/
packages/
csproj-files/
test-results/
TestResults/
src/Mobile/
src/Web/Catalog.WebForms/
src/Web/WebMonolithic/
src/BuildingBlocks/CommandBus/
src/Services/Marketing/Infrastructure/

12
.gitignore vendored
View File

@ -26,6 +26,9 @@ bld/
# Visual Studio 2015 cache/options directory # Visual Studio 2015 cache/options directory
.vs/ .vs/
# Dockerfile projects folder for restore-packages script
csproj-files/
# .js files created on build: # .js files created on build:
src/Web/WebMVC/wwwroot/js/site* src/Web/WebMVC/wwwroot/js/site*
@ -42,6 +45,8 @@ src/Web/WebMVC/wwwroot/js/site*
*.VisualState.xml *.VisualState.xml
TestResult.xml TestResult.xml
tests-results/
# Build Results of an ATL Project # Build Results of an ATL Project
[Dd]ebugPS/ [Dd]ebugPS/
[Rr]eleasePS/ [Rr]eleasePS/
@ -269,4 +274,9 @@ pub/
.mfractor .mfractor
# 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

View File

@ -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 |
| ------------- | ------------- | ------------- | ------------- |
| [![Basket API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/basket?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=199&branchName=dev) | [![Catalog API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/catalog?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=197&branchName=dev) | [![Identity API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/identity?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=200&branchName=dev) | [![Location API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/location?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=202&branchName=dev) |
[![Api Gateways base image](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/apigws?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=201&branchName=dev) | Marketing API | Ordering API | Payment API | Api Gateways base image |
| ------------- | ------------- | ------------- | ------------- |
| [![Marketing API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/marketing?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=203&branchName=dev) | [![Ordering API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/ordering?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=198&branchName=dev) | [![Payment API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/payment?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=205&branchName=dev) | [![Api Gateways base image](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/apigws?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 |
| ------------- | ------------- | ------------- | ------------- |
[![Basket API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/basket?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=199&branchName=dev) | [![Web Shopping Aggregator](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/web-shopping-agg?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=206&branchName=dev) | [![Mobile Shopping Aggregator](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/mobile-shopping-agg?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=204&branchName=dev) | [![WebMVC Client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webmvc?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=209&branchName=dev) | [![WebSPA Client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webspa?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=210&branchName=dev) |
Catalog API
[![Catalog API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/catalog?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=197&branchName=dev)
Identity API
[![Identity API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/identity?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=200&branchName=dev)
Location API
[![Location API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/location?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=202&branchName=dev)
Marketing API
[![Marketing API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/marketing?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=203&branchName=dev)
Ordering API
[![Ordering API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/ordering?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=198&branchName=dev)
Payment API
[![Payment API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/payment?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=205&branchName=dev)
Webhooks API
[![Webhooks API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webhooks?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=207&branchName=dev)
Web Shopping Aggregator
[![Web Shopping Aggregator](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/web-shopping-agg?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=206&branchName=dev)
Mobile Shopping Aggregator
[![Mobile Shopping Aggregator](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/mobile-shopping-agg?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=204&branchName=dev)
Webbhooks demo client
[![Webhooks demo client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webhooks-client?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=208&branchName=dev)
WebMVC Client
[![WebMVC Client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webmvc?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=209&branchName=dev)
WebSPA Client
[![WebSPA Client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webspa?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=210&branchName=dev)
Web Status
[![Web Status](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webstatus?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=211&branchName=dev)
| Web Status | Webhooks API | Webbhooks demo client |
| ------------- | ------------- | ------------- |
[![Web Status](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webstatus?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=211&branchName=dev) | [![Webhooks API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webhooks?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=207&branchName=dev) | [![Webhooks demo client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webhooks-client?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

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -17,34 +15,71 @@ 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: 'windows-2019'
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
- template: ../multiarch.yaml
parameters:
image: ocelotapigw
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -12,34 +10,71 @@ trigger:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Services/Basket/* - src/Services/Basket/*
- k8s/helm/basket-api/* - k8s/helm/basket-api/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build basket pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build basket.api' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build basket
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build basket.api'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push basket projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push basket.api' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push basket
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push basket.api'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build basket
inputs:
dockerComposeCommand: 'build basket.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push basket
inputs:
dockerComposeCommand: 'push basket.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: basket.api
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -12,34 +10,71 @@ trigger:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Services/Catalog/* - src/Services/Catalog/*
- k8s/helm/catalog-api/* - k8s/helm/catalog-api/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build catalog pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build catalog.api' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build catalog
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build catalog.api'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push catalog projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push catalog.api' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push catalog
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push catalog.api'
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: BuildWindow
pool:
vmImage: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build catalog
inputs:
dockerComposeCommand: 'build catalog.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push catalog
inputs:
dockerComposeCommand: 'push catalog.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: catalog.api
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -12,34 +10,71 @@ trigger:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Services/Identity/* - src/Services/Identity/*
- k8s/helm/identity-api/* - k8s/helm/identity-api/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build identity pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build identity.api' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build identity
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build identity.api'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push identity projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push identity.api' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push identity
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push identity.api'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build identity
inputs:
dockerComposeCommand: 'build identity.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push identity
inputs:
dockerComposeCommand: 'push identity.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: identity.api
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -11,35 +9,72 @@ trigger:
include: include:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Services/Location/* - src/Services/Location/*
- k8s/helm/locations-api/* - k8s/helm/locations-api/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build locations pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build locations.api' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build locations
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build locations.api'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push locations projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push locations.api' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push locations
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push locations.api'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build locations
inputs:
dockerComposeCommand: 'build locations.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push locations
inputs:
dockerComposeCommand: 'push locations.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: locations.api
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -11,35 +9,72 @@ trigger:
include: include:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Services/Marketing/* - src/Services/Marketing/*
- k8s/helm/marketing-api/* - k8s/helm/marketing-api/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build marketing pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build marketing.api' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build marketing
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build marketing.api'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push marketing projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push marketing.api' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push marketing
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push marketing.api'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build marketing
inputs:
dockerComposeCommand: 'build marketing.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push marketing
inputs:
dockerComposeCommand: 'push marketing.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: marketing.api
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -10,35 +8,73 @@ trigger:
paths: paths:
include: include:
- src/ApiGateways/Mobile.Bff.Shopping/aggregator/* - src/ApiGateways/Mobile.Bff.Shopping/aggregator/*
- k8s/helm/mobileshoppingagg/* - k8s/helm/mobileshoppingagg/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build mobileshoppingagg pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build mobileshoppingagg' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build mobileshoppingagg
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build mobileshoppingagg'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push mobileshoppingagg projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push mobileshoppingagg' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push mobileshoppingagg
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push mobileshoppingagg'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build mobileshoppingagg
inputs:
dockerComposeCommand: 'build mobileshoppingagg'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push mobileshoppingagg
inputs:
dockerComposeCommand: 'push mobileshoppingagg'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: mobileshoppingagg
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -0,0 +1,27 @@
parameters:
image: ''
branch: ''
registryEndpoint: ''
jobs:
- job: manifest
pool:
vmImage: 'Ubuntu 16.04'
steps:
- task: Docker@1
displayName: Docker Login
inputs:
command: login
containerregistrytype: 'Container Registry'
dockerRegistryEndpoint: ${{ parameters.registryEndpoint }}
- bash: |
mkdir -p ~/.docker
echo '{ "experimental": "enabled" }' > ~/.docker/config.json
docker --config ~/.docker manifest create eshop/${{ parameters.image }}:${{ parameters.branch }} eshop/${{ parameters.image }}:linux-${{ parameters.branch }} eshop/${{ parameters.image }}:win-${{ parameters.branch }}
docker --config ~/.docker manifest create eshop/${{ parameters.image }}:latest eshop/${{ parameters.image }}:linux-latest eshop/${{ parameters.image }}:win-latest
docker --config ~/.docker push eshop/${{ parameters.image }}:${{ parameters.branch }}
docker --config ~/.docker push eshop/${{ parameters.image }}:latest
displayName: 'Create Manifest'
dependsOn:
- BuildWindows
- BuildLinux

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -14,34 +12,71 @@ trigger:
- k8s/helm/ordering-api/* - k8s/helm/ordering-api/*
- k8s/helm/ordering-backgroundtasks/* - k8s/helm/ordering-backgroundtasks/*
- k8s/helm/ordering-signalrhub/* - k8s/helm/ordering-signalrhub/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build ordering pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build ordering.api ordering.backgroundtasks ordering.signalrhub' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build ordering
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build ordering.api ordering.backgroundtasks ordering.signalrhub'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push ordering projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push ordering.api ordering.backgroundtasks ordering.signalrhub' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push ordering
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push ordering.api ordering.backgroundtasks ordering.signalrhub'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build ordering
inputs:
dockerComposeCommand: 'build ordering.api ordering.backgroundtasks ordering.signalrhub'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push ordering
inputs:
dockerComposeCommand: 'push ordering.api ordering.backgroundtasks ordering.signalrhub'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: ordering.api
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -12,34 +10,71 @@ trigger:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Services/Payment/* - src/Services/Payment/*
- k8s/helm/payment-api/* - k8s/helm/payment-api/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build payment pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build payment.api' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build payment
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build payment.api'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push payment projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push payment.api' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push payment
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push payment.api'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build payment
inputs:
dockerComposeCommand: 'build payment.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push payment
inputs:
dockerComposeCommand: 'push payment.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: payment.api
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -10,35 +8,72 @@ trigger:
paths: paths:
include: include:
- src/ApiGateways/Web.Bff.Shopping/aggregator/* - src/ApiGateways/Web.Bff.Shopping/aggregator/*
- k8s/helm/webshoppingagg/* - k8s/helm/webshoppingagg/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build webshoppingagg pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build webshoppingagg' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build webshoppingagg
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build webshoppingagg'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push webshoppingagg projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push webshoppingagg' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push webshoppingagg
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push webshoppingagg'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build webshoppingagg
inputs:
dockerComposeCommand: 'build webshoppingagg'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push webshoppingagg
inputs:
dockerComposeCommand: 'push webshoppingagg'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: webshoppingagg
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -11,35 +9,72 @@ trigger:
include: include:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Services/Webhooks/* - src/Services/Webhooks/*
- k8s/helm/webhooks-api/* - k8s/helm/webhooks-api/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build webhooks pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build webhooks.api' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build webhooks
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build webhooks.api'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push webhooks projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push webhooks.api' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push webhooks
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push webhooks.api'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build webhooks
inputs:
dockerComposeCommand: 'build webhooks.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push webhooks
inputs:
dockerComposeCommand: 'push webhooks.api'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: webhooks.api
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -11,35 +9,72 @@ trigger:
include: include:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Web/WebhookClient/* - src/Web/WebhookClient/*
- k8s/helm/webhooks-web/* - k8s/helm/webhooks-web/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build webhooks.client pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build webhooks.client' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build webhooks.client
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build webhooks.client'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push webhooks.client projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push webhooks.client' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push webhooks.client
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push webhooks.client'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build webhooks.client
inputs:
dockerComposeCommand: 'build webhooks.client'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push webhooks.client
inputs:
dockerComposeCommand: 'push webhooks.client'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)v
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: webhooks.client
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -11,35 +9,72 @@ trigger:
include: include:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Web/WebMVC/* - src/Web/WebMVC/*
- k8s/helm/webmvc/* - k8s/helm/webmvc/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build webmvc pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build webmvc' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build webmvc
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build webmvc'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push webmvc projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push webmvc' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push webmvc
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push webmvc'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build webmvc
inputs:
dockerComposeCommand: 'build webmvc'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push webmvc
inputs:
dockerComposeCommand: 'push webmvc'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: webmvc
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -12,34 +10,73 @@ trigger:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Web/WebSPA/* - src/Web/WebSPA/*
- k8s/helm/webspa/* - k8s/helm/webspa/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build webspa pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build webspa' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build webspa
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build webspa'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push webspa projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push webspa' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push webspa
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push webspa'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build webspa
inputs:
dockerComposeCommand: 'build webspa'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
NODE_IMAGE=stefanscherer/node-windows:8.11
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push webspa
inputs:
dockerComposeCommand: 'push webspa'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
NODE_IMAGE=stefanscherer/node-windows:8.11
- template: ../multiarch.yaml
parameters:
image: webspa
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View File

@ -1,5 +1,3 @@
pool:
vmImage: 'ubuntu-16.04'
variables: variables:
registryEndpoint: eshop-registry registryEndpoint: eshop-registry
trigger: trigger:
@ -11,35 +9,72 @@ trigger:
include: include:
- src/BuildingBlocks/* - src/BuildingBlocks/*
- src/Web/WebStatus/* - src/Web/WebStatus/*
- k8s/helm/webstatus/* - k8s/helm/webstatus/*
steps: jobs:
- task: DockerCompose@0 - job: BuildLinux
displayName: Compose build webstatus pool:
inputs: vmImage: 'ubuntu-16.04'
dockerComposeCommand: 'build webstatus' steps:
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose build webstatus
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'build webstatus'
projectName: "" containerregistrytype: Container Registry
dockerComposeFileArgs: | dockerRegistryEndpoint: $(registryEndpoint)
TAG=$(Build.SourceBranchName) dockerComposeFile: docker-compose.yml
- task: DockerCompose@0 qualifyImageNames: true
displayName: Compose push webstatus projectName: ""
inputs: dockerComposeFileArgs: |
dockerComposeCommand: 'push webstatus' TAG=$(Build.SourceBranchName)
containerregistrytype: Container Registry - task: DockerCompose@0
dockerRegistryEndpoint: $(registryEndpoint) displayName: Compose push webstatus
dockerComposeFile: docker-compose.yml inputs:
qualifyImageNames: true dockerComposeCommand: 'push webstatus'
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: 'windows-2019'
steps:
- task: DockerCompose@0
displayName: Compose build webstatus
inputs:
dockerComposeCommand: 'build webstatus'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- task: DockerCompose@0
displayName: Compose push webstatus
inputs:
dockerComposeCommand: 'push webstatus'
containerregistrytype: Container Registry
dockerRegistryEndpoint: $(registryEndpoint)
dockerComposeFile: docker-compose.yml
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
TAG=$(Build.SourceBranchName)
PLATFORM=win
- template: ../multiarch.yaml
parameters:
image: webstatus
branch: $(Build.SourceBranchName)
registryEndpoint: $(registryEndpoint)

View 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
}

View File

@ -0,0 +1,2 @@
 #Requires -RunAsAdministrator
Get-NetConnectionProfile | Where-Object { $_.InterfaceAlias -match "(DockerNAT)" } | ForEach-Object { Set-NetConnectionProfile -InterfaceIndex $_.InterfaceIndex -NetworkCategory Private }

37
docker-compose.elk.yml Normal file
View File

@ -0,0 +1,37 @@
version: '3.4'
services:
elasticsearch:
build:
context: elk/elasticsearch/
volumes:
- ./elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
logstash:
build:
context: elk/logstash/
volumes:
- ./elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
- ./elk/logstash/pipeline:/usr/share/logstash/pipeline:ro
ports:
- "8080:8080"
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
depends_on:
- elasticsearch
kibana:
build:
context: elk/kibana/
volumes:
- ./elk/kibana/config/:/usr/share/kibana/config:ro
ports:
- "5601:5601"
depends_on:
- elasticsearch

View File

@ -110,6 +110,8 @@ services:
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
- OrchestratorType=${ORCHESTRATOR_TYPE} - OrchestratorType=${ORCHESTRATOR_TYPE}
- UseLoadTest=${USE_LOADTEST:-False} - UseLoadTest=${USE_LOADTEST:-False}
- Serilog__MinimumLevel__Override__Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ=Verbose
- Serilog__MinimumLevel__Override__Ordering.API=Verbose
ports: ports:
- "5102:80" # Important: In a production environment your should remove the external port (5102) kept here for microservice debugging purposes. - "5102:80" # Important: In a production environment your should remove the external port (5102) kept here for microservice debugging purposes.
# The API Gateway redirects and access through the internal port (80). # The API Gateway redirects and access through the internal port (80).
@ -130,6 +132,7 @@ services:
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
- OrchestratorType=${ORCHESTRATOR_TYPE} - OrchestratorType=${ORCHESTRATOR_TYPE}
- UseLoadTest=${USE_LOADTEST:-False} - UseLoadTest=${USE_LOADTEST:-False}
- Serilog__MinimumLevel__Override__Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ=Verbose
ports: ports:
- "5111:80" - "5111:80"
@ -168,6 +171,8 @@ services:
- AzureServiceBusEnabled=False - AzureServiceBusEnabled=False
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
- OrchestratorType=${ORCHESTRATOR_TYPE} - OrchestratorType=${ORCHESTRATOR_TYPE}
- Serilog__MinimumLevel__Override__Payment.API.IntegrationEvents.EventHandling=Verbose
- Serilog__MinimumLevel__Override__Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ=Verbose
ports: ports:
- "5108:80" # Important: In a production environment your should remove the external port (5108) kept here for microservice debugging purposes. - "5108:80" # Important: In a production environment your should remove the external port (5108) kept here for microservice debugging purposes.
# The API Gateway redirects and access through the internal port (80). # The API Gateway redirects and access through the internal port (80).
@ -326,40 +331,40 @@ services:
environment: environment:
- ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_ENVIRONMENT=Production
- ASPNETCORE_URLS=http://0.0.0.0:80 - ASPNETCORE_URLS=http://0.0.0.0:80
- HealthChecks-UI__HealthChecks__1__Name=WebMVC HTTP Check - HealthChecks-UI__HealthChecks__0__Name=WebMVC HTTP Check
- HealthChecks-UI__HealthChecks__1__Uri=http://webmvc/hc - HealthChecks-UI__HealthChecks__0__Uri=http://webmvc/hc
- HealthChecks-UI__HealthChecks__2__Name=WebSPA HTTP Check - HealthChecks-UI__HealthChecks__1__Name=WebSPA HTTP Check
- HealthChecks-UI__HealthChecks__2__Uri=http://webspa/hc - HealthChecks-UI__HealthChecks__1__Uri=http://webspa/hc
- HealthChecks-UI__HealthChecks__3__Name=Web Shopping Aggregator GW HTTP Check - HealthChecks-UI__HealthChecks__2__Name=Web Shopping Aggregator GW HTTP Check
- HealthChecks-UI__HealthChecks__3__Uri=http://webshoppingagg/hc - HealthChecks-UI__HealthChecks__2__Uri=http://webshoppingagg/hc
- HealthChecks-UI__HealthChecks__4__Name=Mobile Shopping Aggregator HTTP Check - HealthChecks-UI__HealthChecks__3__Name=Mobile Shopping Aggregator HTTP Check
- HealthChecks-UI__HealthChecks__4__Uri=http://mobileshoppingagg/hc - HealthChecks-UI__HealthChecks__3__Uri=http://mobileshoppingagg/hc
- HealthChecks-UI__HealthChecks__5__Name=Mobile Shopping API GW HTTP Check - HealthChecks-UI__HealthChecks__4__Name=Mobile Shopping API GW HTTP Check
- HealthChecks-UI__HealthChecks__5__Uri=http://mobileshoppingapigw/hc - HealthChecks-UI__HealthChecks__4__Uri=http://mobileshoppingapigw/hc
- HealthChecks-UI__HealthChecks__6__Name=Mobile Marketing API GW HTTP Check - HealthChecks-UI__HealthChecks__5__Name=Mobile Marketing API GW HTTP Check
- HealthChecks-UI__HealthChecks__6__Uri=http://mobilemarketingapigw/hc - HealthChecks-UI__HealthChecks__5__Uri=http://mobilemarketingapigw/hc
- HealthChecks-UI__HealthChecks__7__Name=Web Shopping API GW HTTP Check - HealthChecks-UI__HealthChecks__6__Name=Web Shopping API GW HTTP Check
- HealthChecks-UI__HealthChecks__7__Uri=http://webshoppingapigw/hc - HealthChecks-UI__HealthChecks__6__Uri=http://webshoppingapigw/hc
- HealthChecks-UI__HealthChecks__8__Name=Web Marketing API GW HTTP Check - HealthChecks-UI__HealthChecks__7__Name=Web Marketing API GW HTTP Check
- HealthChecks-UI__HealthChecks__8__Uri=http://webmarketingapigw/hc - HealthChecks-UI__HealthChecks__7__Uri=http://webmarketingapigw/hc
- HealthChecks-UI__HealthChecks__9__Name=Ordering HTTP Check - HealthChecks-UI__HealthChecks__8__Name=Ordering HTTP Check
- HealthChecks-UI__HealthChecks__9__Uri=http://ordering.api/hc - HealthChecks-UI__HealthChecks__8__Uri=http://ordering.api/hc
- HealthChecks-UI__HealthChecks__10__Name=Ordering HTTP Background Check - HealthChecks-UI__HealthChecks__9__Name=Ordering HTTP Background Check
- HealthChecks-UI__HealthChecks__10__Uri=http://ordering.backgroundtasks/hc - HealthChecks-UI__HealthChecks__9__Uri=http://ordering.backgroundtasks/hc
- HealthChecks-UI__HealthChecks__11__Name=Basket HTTP Check - HealthChecks-UI__HealthChecks__10__Name=Basket HTTP Check
- HealthChecks-UI__HealthChecks__11__Uri=http://basket.api/hc - HealthChecks-UI__HealthChecks__10__Uri=http://basket.api/hc
- HealthChecks-UI__HealthChecks__12__Name=Catalog HTTP Check - HealthChecks-UI__HealthChecks__11__Name=Catalog HTTP Check
- HealthChecks-UI__HealthChecks__12__Uri=http://catalog.api/hc - HealthChecks-UI__HealthChecks__11__Uri=http://catalog.api/hc
- HealthChecks-UI__HealthChecks__13__Name=Identity HTTP Check - HealthChecks-UI__HealthChecks__12__Name=Identity HTTP Check
- HealthChecks-UI__HealthChecks__13__Uri=http://identity.api/hc - HealthChecks-UI__HealthChecks__12__Uri=http://identity.api/hc
- HealthChecks-UI__HealthChecks__14__Name=Marketing HTTP Check - HealthChecks-UI__HealthChecks__13__Name=Marketing HTTP Check
- HealthChecks-UI__HealthChecks__14__Uri=http://marketing.api/hc - HealthChecks-UI__HealthChecks__13__Uri=http://marketing.api/hc
- HealthChecks-UI__HealthChecks__15__Name=Locations HTTP Check - HealthChecks-UI__HealthChecks__14__Name=Locations HTTP Check
- HealthChecks-UI__HealthChecks__15__Uri=http://locations.api/hc - HealthChecks-UI__HealthChecks__14__Uri=http://locations.api/hc
- HealthChecks-UI__HealthChecks__16__Name=Payments HTTP Check - HealthChecks-UI__HealthChecks__15__Name=Payments HTTP Check
- HealthChecks-UI__HealthChecks__16__Uri=http://payment.api/hc - HealthChecks-UI__HealthChecks__15__Uri=http://payment.api/hc
- HealthChecks-UI__HealthChecks__17__Name=Ordering SignalRHub HTTP Check - HealthChecks-UI__HealthChecks__16__Name=Ordering SignalRHub HTTP Check
- HealthChecks-UI__HealthChecks__17__Uri=http://ordering.signalrhub/hc - HealthChecks-UI__HealthChecks__16__Uri=http://ordering.signalrhub/hc
- OrderingBackgroundTasksUrl=http://ordering.backgroundtasks/hc - OrderingBackgroundTasksUrl=http://ordering.backgroundtasks/hc
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
- OrchestratorType=${ORCHESTRATOR_TYPE} - OrchestratorType=${ORCHESTRATOR_TYPE}

View File

@ -1,6 +1,7 @@
version: '3.4' version: '3.4'
services: services:
seq: seq:
image: datalust/seq:latest image: datalust/seq:latest
@ -17,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
@ -25,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
@ -35,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
@ -44,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
@ -53,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
@ -62,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
@ -73,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
@ -81,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
@ -90,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
@ -98,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
@ -113,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
@ -128,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
@ -143,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
@ -158,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
@ -173,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
@ -188,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
@ -203,23 +204,25 @@ 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
args:
- NODE_IMAGE=${NODE_IMAGE:-node:8.11}
# depends_on: # depends_on:
# - webshoppingagg # - webshoppingagg
# - webshoppingapigw # - webshoppingapigw
# - 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
@ -229,7 +232,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

View File

@ -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

View File

@ -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"

Binary file not shown.

View File

@ -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}

88
elk/Readme.md Normal file
View File

@ -0,0 +1,88 @@
This article contains a brief introduction to centralized structured logging with [Serilog](https://serilog.net/) and event viewing with [ELK](https://www.elastic.co/elk-stack) in eShopOnContainers. ELK is an acronym of ElasticSearch, LogStash and Kibana. This is one of the most used tools in the industry standards.
![](img/elk/kibana-working.png)
## Wiring eshopOnContainers with ELK in Localhost
eshopOnContainers is ready for work with ELK, you only need to setup the configuration parameter **LogstashUrl**, in **Serilog** Section, for achieve this, you can do it modifing this parameter in every appsettings.json of every service, or via Environment Variable **Serilog:LogstashUrl**.
There is another option, a zero-configuration environment for testing the integration launching via ```docker-compose``` command, on the root directory of eshopOnContainers:
```sh
docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.elk.yml build
docker-compose -f docker-compose.yml -f docker-compose.override.yml -f docker-compose.elk.yml up
```
### Configuring Logstash index on Kibana
Once time you have started and configured your application, you only need to configure the logstash index on kibana.
You can address to Kibana, with docker-compose setup is at [http://localhost:5601](http://localhost:5601)
If you have accessed to kibana too early, you can see this error. It's normal, depending of your machine the kibana stack needs a bit of time to startup.
![](img/elk/kibana_startup.png)
You can wait a bit and refresh the page, the first time you enter, you need to configure and index pattern, in the ```docker-compose``` configuration, the index pattern name is **eshops-\***.
![](img/elk/kibana_eshops_index.png)
With the index pattern configured, you can enter in the discover section and start viewing how the tool is recollecting the logging information.
![](img/elk/kibana_result.png)
## Configuring ELK on Azure VM
Another option is to use a preconfigured virtual machine with Logstash, ElasticSearch and Kibana and point the configuration parameter **LogstashUrl**. For doing this you can address to Microsoft Azure, and start searching a Certified ELK Virtual Machine
![](img/elk/create-vm-elk-azure.png)
This options it have a certified preconfigured options (Network, VirtualMachine type, OS, RAM, Disks) for having a good starting point of ELK with good performance.
![](img/elk/create-vm-elk-azure-summary.png)
When you have configured the main aspects of your virtual machine, you will have a "review & create" last step like this:
![](img/elk/create-vm-elk-azure-last-step.png)
### Configuring the bitnami environment
This virtual machine has a lot of configuration pipeing done. If you want to change something of the default configuration you can address this documentation:
[https://docs.bitnami.com/virtual-machine/apps/elk/get-started/](https://docs.bitnami.com/virtual-machine/apps/elk/get-started/)
The only thing you have to change is the logstash configuration inside the machine. This configuration is at the file ```/opt/bitnami/logstash/conf/logstash.conf```
You must edit the file and overwrite with this configuration:
```conf
input {
http {
#default host 0.0.0.0:8080
codec => json
}
}
## Add your filters / logstash plugins configuration here
filter {
split {
field => "events"
target => "e"
remove_field => "events"
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index=>"eshops-%{+xxxx.ww}"
}
}
```
For doing this you can connect via ssh to the vm and edit the file using the vi editor for example.
When the file will be edited, check there are Inbound Port Rules created for the logstash service. You can do it going to Networking Menu on your ELK Virtual Machine Resource in Azure.
![](img/elk/azure-nsg-inboundportsConfig.png)
The only thing that remains is to connect to your vm vía browser. And check the bitnami splash page is showing.
![](img/elk/bitnami_splash.png)
You can get the password for accessing going to your virtual machine in azure and check the boot diagnostics, theres a message that shows to you which is your password.
When you have the user and password you can access to the kibana tool, and create the ```eshops-*``` index pattern that is well documented at the beggining of this documentation and then start to discover.
![](img/elk/)

View File

@ -0,0 +1,5 @@
# https://github.com/elastic/elasticsearch-docker
FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.0.0
# Add your elasticsearch plugins setup here
# Example: RUN elasticsearch-plugin install analysis-icu

View File

@ -0,0 +1,16 @@
---
## Default Elasticsearch configuration from elasticsearch-docker.
## from https://github.com/elastic/elasticsearch-docker/blob/master/build/elasticsearch/elasticsearch.yml
#
cluster.name: "docker-cluster"
network.host: 0.0.0.0
# minimum_master_nodes need to be explicitly set when bound on a public IP
# set to 1 to allow single node clusters
# Details: https://github.com/elastic/elasticsearch/pull/17288
discovery.zen.minimum_master_nodes: 1
## Use single node discovery in order to disable production mode and avoid bootstrap checks
## see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
#
discovery.type: single-node

5
elk/kibana/Dockerfile Normal file
View File

@ -0,0 +1,5 @@
# https://github.com/elastic/kibana-docker
FROM docker.elastic.co/kibana/kibana-oss:6.0.0
# Add your kibana plugins setup here
# Example: RUN kibana-plugin install <name|url>

View File

@ -0,0 +1,7 @@
---
## Default Kibana configuration from kibana-docker.
## from https://github.com/elastic/kibana-docker/blob/master/build/kibana/config/kibana.yml
#
server.name: kibana
server.host: "0"
elasticsearch.url: http://elasticsearch:9200

6
elk/logstash/Dockerfile Normal file
View File

@ -0,0 +1,6 @@
# https://github.com/elastic/logstash-docker
FROM docker.elastic.co/logstash/logstash-oss:6.0.0
# Add your logstash plugins setup here
# Example: RUN logstash-plugin install logstash-filter-json
RUN logstash-plugin install logstash-input-http

View File

@ -0,0 +1,6 @@
---
## Default Logstash configuration from logstash-docker.
## from https://github.com/elastic/logstash-docker/blob/master/build/logstash/config/logstash-oss.yml
#
http.host: "0.0.0.0"
path.config: /usr/share/logstash/pipeline

View File

@ -0,0 +1,22 @@
input {
http {
#default host 0.0.0.0:8080
codec => json
}
}
## Add your filters / logstash plugins configuration here
filter {
split {
field => "events"
target => "e"
remove_field => "events"
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index=>"eshops-%{+xxxx.ww}"
}
}

BIN
img/eShopScreen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
img/elk/bitnami_splash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
img/elk/discover-kibana.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
img/elk/kibana_result.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
img/elk/kibana_startup.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
img/elk/kibana_working.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -20,7 +20,7 @@ For AKS:
For ACS: For ACS:
>``` >```
>./gen-k8s-env -resourceGroupName k8sGroup -location westeurope -registryName k8sregistry -createAcr true -orchestratorName k8s-cluster -dnsName k8s-dns >./gen-k8s-env-aks -resourceGroupName k8sGroup -location westeurope -registryName k8sregistry -serviceName k8s-cluster -createAcr true -nodeCount 3 -nodeVMSize Standard_D2_v2
>``` >```
* A Docker development environment with `docker` and `docker-compose`. * A Docker development environment with `docker` and `docker-compose`.

View File

@ -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 -}}

View File

@ -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 -}}

View File

@ -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 }}

View File

@ -62,3 +62,5 @@ probes:
initialDelaySeconds: 90 initialDelaySeconds: 90
periodSeconds: 60 periodSeconds: 60
port: 80 port: 80
ocelot:
configPath: /app/configuration

View File

@ -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 -}}

View File

@ -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 -}}

View File

@ -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 }}

View File

@ -61,4 +61,6 @@ probes:
timeoutSeconds: 5 timeoutSeconds: 5
initialDelaySeconds: 90 initialDelaySeconds: 90
periodSeconds: 60 periodSeconds: 60
port: 80 port: 80
ocelot:
configPath: /app/configuration

View File

@ -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 -}}

View File

@ -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 -}}

View File

@ -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 }}

View File

@ -61,4 +61,6 @@ probes:
timeoutSeconds: 5 timeoutSeconds: 5
initialDelaySeconds: 90 initialDelaySeconds: 90
periodSeconds: 60 periodSeconds: 60
port: 80 port: 80
ocelot:
configPath: /app/configuration

View File

@ -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 -}}

View File

@ -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 -}}

View File

@ -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 }}

View File

@ -62,3 +62,5 @@ probes:
initialDelaySeconds: 90 initialDelaySeconds: 90
periodSeconds: 60 periodSeconds: 60
port: 80 port: 80
ocelot:
configPath: /app/configuration

View File

@ -29,7 +29,7 @@ app: # app global settings
catalog: catalog # service name for catalog api catalog: catalog # service name for catalog api
ordering: ordering # service name for ordering api ordering: ordering # service name for ordering api
orderingbackgroundtasks: orderingbackgroundtasks # service name for orderingbackgroundtasks orderingbackgroundtasks: orderingbackgroundtasks # service name for orderingbackgroundtasks
orderingsignalrhub: ordering-signalrhub # service name for orderingsignalrhub orderingsignalrhub: ordering-signalrhub # service name for orderingsignalrhub
identity: identity # service name for identity api identity: identity # service name for identity api
mvc: webmvc # service name for web mvc mvc: webmvc # service name for web mvc
spa: webspa # service name for web spa spa: webspa # service name for web spa

View File

@ -15,5 +15,5 @@ data:
urls__IdentityUrl: http://{{ $identity }} urls__IdentityUrl: http://{{ $identity }}
basket__EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" basket__EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
all__EventBusConnection: {{ .Values.inf.eventbus.constr }} all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"

View 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 }}

View File

@ -53,3 +53,6 @@ probes:
initialDelaySeconds: 90 initialDelaySeconds: 90
periodSeconds: 60 periodSeconds: 60
port: 80 port: 80
ingress:
enabled: false

View File

@ -16,5 +16,5 @@ data:
catalog__PicBaseUrl: http://{{ $webshoppingapigw }}/api/v1/c/catalog/items/[0]/pic/ catalog__PicBaseUrl: http://{{ $webshoppingapigw }}/api/v1/c/catalog/items/[0]/pic/
catalog__AzureStorageEnabled: "{{ .Values.inf.misc.useAzureStorage }}" catalog__AzureStorageEnabled: "{{ .Values.inf.misc.useAzureStorage }}"
all__EventBusConnection: {{ .Values.inf.eventbus.constr }} all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"

View 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 }}

View File

@ -57,6 +57,7 @@ kubectl apply -f ./istio/gateway.yml
if ($useLocalk8s -eq $true) { if ($useLocalk8s -eq $true) {
$dns="localhost" $dns="localhost"
$externalDns="localhost"
} }
else { else {
Write-Host "Resolving DNS to Gateway public IP" -ForegroundColor Green Write-Host "Resolving DNS to Gateway public IP" -ForegroundColor Green

View File

@ -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="",
@ -44,7 +45,7 @@ if ([string]::IsNullOrEmpty($dns)) {
if ($clean) { if ($clean) {
Write-Host "Cleaning previous helm releases..." -ForegroundColor Green Write-Host "Cleaning previous helm releases..." -ForegroundColor Green
helm delete --purge $(helm ls -q) helm delete --purge $(helm ls -q eshop)
Write-Host "Previous releases deleted" -ForegroundColor Green Write-Host "Previous releases deleted" -ForegroundColor Green
} }
@ -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

View File

@ -24,7 +24,7 @@ metadata:
data: data:
identity__ConnectionString: Server={{ $sqlsrv }};Initial Catalog={{ .Values.inf.sql.identity.db }};User Id={{ .Values.inf.sql.common.user }};Password={{ .Values.inf.sql.common.pwd }}; identity__ConnectionString: Server={{ $sqlsrv }};Initial Catalog={{ .Values.inf.sql.identity.db }};User Id={{ .Values.inf.sql.common.user }};Password={{ .Values.inf.sql.common.pwd }};
identity__keystore: {{ .Values.inf.redis.keystore.constr }} identity__keystore: {{ .Values.inf.redis.keystore.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
mvc_e: http://{{ $mvc_url }} mvc_e: http://{{ $mvc_url }}
spa_e: http://{{ $spa_url }} spa_e: http://{{ $spa_url }}
locations_e: http://{{ $locations_url }} locations_e: http://{{ $locations_url }}
@ -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 }}"

View File

@ -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 }}

View File

@ -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
@ -76,4 +79,6 @@ probes:
timeoutSeconds: 5 timeoutSeconds: 5
initialDelaySeconds: 90 initialDelaySeconds: 90
periodSeconds: 60 periodSeconds: 60
port: 80 port: 80
enableDevspaces: "false"

View File

@ -1,4 +1,4 @@
# This heml values file defines all infrastructure used by eShopOnContainers. # This helm values file defines all infrastructure used by eShopOnContainers.
# It is used on all charts, so ** MUST BE INCLUDED ** on every deployment # It is used on all charts, so ** MUST BE INCLUDED ** on every deployment
inf: inf:
@ -15,11 +15,11 @@ inf:
identity: identity:
db: IdentityDb # Ordering API SQL db name db: IdentityDb # Ordering API SQL db name
marketing: marketing:
db: MarketingDb # Marketing API SQL db name db: MarketingDb # Marketing API SQL db name
webhooks: webhooks:
db: WebhooksDb # Webhooks DB db: WebhooksDb # Webhooks DB
mongo: mongo:
# host: my-nosql-data # Uncomment to use specify custom mongo host. By default nosql-data is used # host: my-nosql-data # Uncomment to use specify custom mongo host. By default nosql-data is used
locations: locations:
database: LocationsDb database: LocationsDb
marketing: marketing:

View File

@ -13,7 +13,7 @@ metadata:
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
data: data:
all__EventBusConnection: {{ .Values.inf.eventbus.constr }} all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
internalurls__IdentityUrl: http://{{ .Values.app.svc.identity }} internalurls__IdentityUrl: http://{{ .Values.app.svc.identity }}

View 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 }}

View File

@ -15,7 +15,7 @@ metadata:
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
data: data:
all__EventBusConnection: {{ .Values.inf.eventbus.constr }} all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
internalurls__IdentityUrl: http://{{ .Values.app.svc.identity }} internalurls__IdentityUrl: http://{{ .Values.app.svc.identity }}

View 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 }}

View File

@ -10,7 +10,7 @@ metadata:
release: {{ .Release.Name }} release: {{ .Release.Name }}
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
data: data:
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
mobileshoppingagg__keystore: {{ .Values.inf.redis.keystore.constr }} mobileshoppingagg__keystore: {{ .Values.inf.redis.keystore.constr }}
internalurls__basket: http://{{ .Values.app.svc.basket }} internalurls__basket: http://{{ .Values.app.svc.basket }}

View 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 }}

View File

@ -16,5 +16,5 @@ data:
ordering__EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" ordering__EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
urls__IdentityUrl: http://{{ $identity }} urls__IdentityUrl: http://{{ $identity }}
all__EventBusConnection: {{ .Values.inf.eventbus.constr }} all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"

View File

@ -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" .}}
@ -14,7 +15,7 @@ data:
ordering__ConnectionString: Server={{ $sqlsrv }};Initial Catalog={{ .Values.inf.sql.ordering.db }};User Id={{ .Values.inf.sql.common.user }};Password={{ .Values.inf.sql.common.pwd }}; ordering__ConnectionString: Server={{ $sqlsrv }};Initial Catalog={{ .Values.inf.sql.ordering.db }};User Id={{ .Values.inf.sql.common.user }};Password={{ .Values.inf.sql.common.pwd }};
ordering__EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" ordering__EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
all__EventBusConnection: {{ .Values.inf.eventbus.constr }} all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
graceperiodmanager__CheckUpdateTime: "{{ .Values.cfg.checkUpdateTime }}" graceperiodmanager__CheckUpdateTime: "{{ .Values.cfg.checkUpdateTime }}"
graceperiodmanager__GracePeriodTime: "{{ .Values.cfg.gracePeriodTime }}" graceperiodmanager__GracePeriodTime: "{{ .Values.cfg.gracePeriodTime }}"

View File

@ -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 }}

View File

@ -12,7 +12,7 @@ metadata:
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
data: data:
all__EventBusConnection: {{ .Values.inf.eventbus.constr }} all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
signalr__StoreConnectionString: {{ .Values.inf.redis.keystore.constr }} signalr__StoreConnectionString: {{ .Values.inf.redis.keystore.constr }}
urls__IdentityUrl: http://{{ $identity }} urls__IdentityUrl: http://{{ $identity }}

View File

@ -11,5 +11,5 @@ metadata:
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
data: data:
all__EventBusConnection: {{ .Values.inf.eventbus.constr }} all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"

View File

@ -16,5 +16,5 @@ data:
urls__IdentityUrl: http://{{ $identity }} urls__IdentityUrl: http://{{ $identity }}
urls__IdentityUrlExternal: http://{{ $identity }} urls__IdentityUrlExternal: http://{{ $identity }}
all__EventBusConnection: {{ .Values.inf.eventbus.constr }} all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"

View File

@ -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 }}

View File

@ -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
@ -15,7 +14,7 @@ metadata:
release: {{ .Release.Name }} release: {{ .Release.Name }}
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
data: data:
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
webmvc__keystore: {{ .Values.inf.redis.keystore.constr }} webmvc__keystore: {{ .Values.inf.redis.keystore.constr }}

View File

@ -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 }}

View File

@ -10,7 +10,7 @@ metadata:
release: {{ .Release.Name }} release: {{ .Release.Name }}
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
data: data:
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
webshoppingagg__keystore: {{ .Values.inf.redis.keystore.constr }} webshoppingagg__keystore: {{ .Values.inf.redis.keystore.constr }}
internalurls__basket: http://{{ .Values.app.svc.basket }} internalurls__basket: http://{{ .Values.app.svc.basket }}

View 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 }}

View File

@ -16,7 +16,7 @@ metadata:
release: {{ .Release.Name }} release: {{ .Release.Name }}
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
data: data:
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
webspa__keystore: {{ .Values.inf.redis.keystore.constr }} webspa__keystore: {{ .Values.inf.redis.keystore.constr }}
internalurls__apigwws: http://{{ .Values.app.svc.webshoppingapigw }} internalurls__apigwws: http://{{ .Values.app.svc.webshoppingapigw }}

View File

@ -15,7 +15,7 @@ metadata:
release: {{ .Release.Name }} release: {{ .Release.Name }}
heritage: {{ .Release.Service }} heritage: {{ .Release.Service }}
data: data:
all__InstrumentationKey: {{ .Values.inf.appinsights.key }} all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}" all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}" all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
webstatus__keystore: {{ .Values.inf.redis.keystore.constr }} webstatus__keystore: {{ .Values.inf.redis.keystore.constr }}

1
restore-packages.cmd Normal file
View File

@ -0,0 +1 @@
for /R %%f in (*.csproj) do dotnet restore --no-dependencies %%f

View File

@ -1,6 +1,6 @@
$startTime = $(Get-Date) $startTime = $(Get-Date)
docker-compose build docker-compose build --build-arg RUN=scripts/restore-packages
$elapsedTime = $(Get-Date) - $startTime $elapsedTime = $(Get-Date) - $startTime

1
scripts/restore-packages Normal file
View File

@ -0,0 +1 @@
echo RESTORING ALL PACKAGES...; for f in /src/csproj-files/*.csproj; do dotnet restore $f; done

View File

@ -0,0 +1 @@
for %%p in (csproj-files\*.csproj) do dotnet restore %%p

Some files were not shown because too many files have changed in this diff Show More