diff --git a/build/azure-devops/apigws/azure-pipelines.yml b/build/azure-devops/apigws/azure-pipelines.yml index 857355673..e0dacc800 100644 --- a/build/azure-devops/apigws/azure-pipelines.yml +++ b/build/azure-devops/apigws/azure-pipelines.yml @@ -1,5 +1,3 @@ -variables: - registryEndpoint: eshop-registry trigger: branches: include: @@ -8,22 +6,24 @@ trigger: paths: include: - src/ApiGateways/* - - k8s/helm/apigwmm/* - - k8s/helm/apigwms/* - - k8s/helm/apigwwm/* - - k8s/helm/apigwws/* + - deploy/k8s/helm/apigwmm/* + - deploy/k8s/helm/apigwms/* + - deploy/k8s/helm/apigwwm/* + - deploy/k8s/helm/apigwws/* exclude: - src/ApiGateways/Mobile.Bff.Shopping/aggregator/* - src/ApiGateways/Web.Bff.Shopping/aggregator/* jobs: -- template: ../buildimages.yaml - parameters: - services: mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw - registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm -- template: ../multiarch.yaml - parameters: - image: ocelotapigw - branch: $(Build.SourceBranchName) - registryEndpoint: $(registryEndpoint) +- job: PublishCharts + condition: ne('$(Build.Reason)', 'PullRequest') + pool: + vmImage: 'ubuntu-16.04' + steps: + - task: CopyFiles@2 + inputs: + sourceFolder: $(Build.SourcesDirectory)/deploy/k8s/helm + targetFolder: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm + - task: PublishBuildArtifacts@1 + inputs: + pathtoPublish: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm + artifactName: helm diff --git a/build/azure-devops/basket-api/azure-pipelines.yml b/build/azure-devops/basket-api/azure-pipelines.yml index 730680ad9..399b682ec 100644 --- a/build/azure-devops/basket-api/azure-pipelines.yml +++ b/build/azure-devops/basket-api/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Services/Basket/* - - k8s/helm/basket-api/* + - deploy/k8s/helm/basket-api/* jobs: - template: ../buildimages.yaml parameters: services: basket.api registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: basket.api diff --git a/build/azure-devops/buildimages.yaml b/build/azure-devops/buildimages.yaml index cf6457513..bdd326de1 100644 --- a/build/azure-devops/buildimages.yaml +++ b/build/azure-devops/buildimages.yaml @@ -13,16 +13,17 @@ jobs: - bash: docker-compose build ${{ parameters.services }} displayName: Create multiarch manifest env: - TAG: ${{ variables['Build.SourceBranchName'] }} + TAG: ${{ variables['Build.SourceBranchName'] }} - job: BuildContainersForPR_Windows - condition: eq('${{ variables['Build.Reason'] }}', 'PullRequest') + condition: False + # condition: eq('${{ variables['Build.Reason'] }}', 'PullRequest') pool: vmImage: 'windows-2019' steps: - bash: docker-compose build ${{ parameters.services }} displayName: Create multiarch manifest env: - TAG: ${{ variables['Build.SourceBranchName'] }} + TAG: ${{ variables['Build.SourceBranchName'] }} PLATFORM: win NODE_IMAGE: stefanscherer/node-windows:10 - job: BuildLinux @@ -51,7 +52,7 @@ jobs: qualifyImageNames: true projectName: "" dockerComposeFileArgs: | - TAG=${{ variables['Build.SourceBranchName'] }} + TAG=${{ variables['Build.SourceBranchName'] }} - task: CopyFiles@2 inputs: sourceFolder: ${{ parameters.helmfrom }} @@ -61,7 +62,8 @@ jobs: pathtoPublish: ${{ parameters.helmto }} artifactName: helm - job: BuildWindows - condition: ne('${{ variables['Build.Reason'] }}', 'PullRequest') + condition: False + # condition: ne('${{ variables['Build.Reason'] }}', 'PullRequest') pool: vmImage: 'windows-2019' steps: @@ -89,4 +91,4 @@ jobs: projectName: "" dockerComposeFileArgs: | TAG=${{ variables['Build.SourceBranchName'] }} - PLATFORM=win + PLATFORM=win diff --git a/build/azure-devops/catalog-api/azure-pipelines.yml b/build/azure-devops/catalog-api/azure-pipelines.yml index 032d1dd2f..a9ae16e39 100644 --- a/build/azure-devops/catalog-api/azure-pipelines.yml +++ b/build/azure-devops/catalog-api/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Services/Catalog/* - - k8s/helm/catalog-api/* + - deploy/k8s/helm/catalog-api/* jobs: - template: ../buildimages.yaml parameters: services: catalog.api registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: catalog.api diff --git a/build/azure-devops/identity-api/azure-pipelines.yml b/build/azure-devops/identity-api/azure-pipelines.yml index 07891f32b..a3074e526 100644 --- a/build/azure-devops/identity-api/azure-pipelines.yml +++ b/build/azure-devops/identity-api/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Services/Identity/* - - k8s/helm/identity-api/* + - deploy/k8s/helm/identity-api/* jobs: - template: ../buildimages.yaml parameters: services: identity.api registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: identity.api diff --git a/build/azure-devops/infrastructure/azure-pipelines.yml b/build/azure-devops/infrastructure/azure-pipelines.yml index 50296d457..444c84c1f 100644 --- a/build/azure-devops/infrastructure/azure-pipelines.yml +++ b/build/azure-devops/infrastructure/azure-pipelines.yml @@ -9,17 +9,17 @@ trigger: - dev paths: include: - - k8s/helm/basket-data/* - - k8s/helm/keystore-data/* - - k8s/helm/nosql-data/* - - k8s/helm/rabbitmq/* - - k8s/helm/sql-data/* + - deploy/k8s/helm/basket-data/* + - deploy/k8s/helm/keystore-data/* + - deploy/k8s/helm/nosql-data/* + - deploy/k8s/helm/rabbitmq/* + - deploy/k8s/helm/sql-data/* steps: - task: CopyFiles@2 inputs: - sourceFolder: $(Build.SourcesDirectory)/k8s/helm - targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm + sourceFolder: $(Build.SourcesDirectory)/deploy/k8s/helm + targetFolder: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - task: PublishBuildArtifacts@1 inputs: - pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm + pathtoPublish: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm artifactName: helm diff --git a/build/azure-devops/location-api/azure-pipelines.yml b/build/azure-devops/location-api/azure-pipelines.yml index c926d71ac..33653811b 100644 --- a/build/azure-devops/location-api/azure-pipelines.yml +++ b/build/azure-devops/location-api/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Services/Location/* - - k8s/helm/locations-api/* + - deploy/k8s/helm/locations-api/* jobs: - template: ../buildimages.yaml parameters: services: locations.api registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: locations.api diff --git a/build/azure-devops/marketing-api/azure-pipelines.yml b/build/azure-devops/marketing-api/azure-pipelines.yml index c215ecb90..ed1fcae37 100644 --- a/build/azure-devops/marketing-api/azure-pipelines.yml +++ b/build/azure-devops/marketing-api/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Services/Marketing/* - - k8s/helm/marketing-api/* + - deploy/k8s/helm/marketing-api/* jobs: - template: ../buildimages.yaml parameters: services: marketing.api registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: marketing.api diff --git a/build/azure-devops/mobile-shopping-agg/azure-pipelines.yml b/build/azure-devops/mobile-shopping-agg/azure-pipelines.yml index 749a589b2..a66c602c2 100644 --- a/build/azure-devops/mobile-shopping-agg/azure-pipelines.yml +++ b/build/azure-devops/mobile-shopping-agg/azure-pipelines.yml @@ -8,14 +8,14 @@ trigger: paths: include: - src/ApiGateways/Mobile.Bff.Shopping/aggregator/* - - k8s/helm/mobileshoppingagg/* + - deploy/k8s/helm/mobileshoppingagg/* jobs: - template: ../buildimages.yaml parameters: services: mobileshoppingagg registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: mobileshoppingagg diff --git a/build/azure-devops/ordering-api/azure-pipelines.yml b/build/azure-devops/ordering-api/azure-pipelines.yml index 4d688c7dc..fe0712c1e 100644 --- a/build/azure-devops/ordering-api/azure-pipelines.yml +++ b/build/azure-devops/ordering-api/azure-pipelines.yml @@ -9,16 +9,16 @@ trigger: include: - src/BuildingBlocks/* - src/Services/Ordering/* - - k8s/helm/ordering-api/* - - k8s/helm/ordering-backgroundtasks/* - - k8s/helm/ordering-signalrhub/* + - deploy/k8s/helm/ordering-api/* + - deploy/k8s/helm/ordering-backgroundtasks/* + - deploy/k8s/helm/ordering-signalrhub/* jobs: - template: ../buildimages.yaml parameters: services: ordering.api registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: ordering.api diff --git a/build/azure-devops/payment-api/azure-pipelines.yml b/build/azure-devops/payment-api/azure-pipelines.yml index 0fed2db92..6be46f3ee 100644 --- a/build/azure-devops/payment-api/azure-pipelines.yml +++ b/build/azure-devops/payment-api/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Services/Payment/* - - k8s/helm/payment-api/* + - deploy/k8s/helm/payment-api/* jobs: - template: ../buildimages.yaml parameters: services: payment.api - registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + registryEndpoint: $(registryEndpoint) + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: payment.api diff --git a/build/azure-devops/readme.md b/build/azure-devops/readme.md index b7216d4de..03680be34 100644 --- a/build/azure-devops/readme.md +++ b/build/azure-devops/readme.md @@ -1,5 +1,5 @@ -# Azure Devops build definitions +# Azure DevOps build definitions -This folder contains the Azure Devops build definitions in YAML format. Each folder contains one `azure-pipelines.yml` that contains the build definition for one microservice (usually a Docker image, but some microservices generates more than one Docker image). +This folder contains the Azure DevOps build definitions in YAML format. Each folder contains one `azure-pipelines.yml` that contains the build definition for one microservice (usually a Docker image, but some microservices generates more than one Docker image). -For more information about YAML builds read the [Azure DevOps documentation](https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started-yaml?view=azure-devops). \ No newline at end of file +For more information about YAML builds read the [Azure DevOps documentation](https://docs.microsoft.com/azure/devops/pipelines/get-started-yaml?view=azure-devops). \ No newline at end of file diff --git a/build/azure-devops/web-shopping-agg/azure-pipelines.yml b/build/azure-devops/web-shopping-agg/azure-pipelines.yml index 9e907d2ce..e112390c0 100644 --- a/build/azure-devops/web-shopping-agg/azure-pipelines.yml +++ b/build/azure-devops/web-shopping-agg/azure-pipelines.yml @@ -8,14 +8,14 @@ trigger: paths: include: - src/ApiGateways/Web.Bff.Shopping/aggregator/* - - k8s/helm/webshoppingagg/* + - deploy/k8s/helm/webshoppingagg/* jobs: - template: ../buildimages.yaml parameters: services: webshoppingagg - registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + registryEndpoint: $(registryEndpoint) + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: webshoppingagg diff --git a/build/azure-devops/webhooks-api/azure-pipelines.yml b/build/azure-devops/webhooks-api/azure-pipelines.yml index d7fc14ef6..8a8f7818f 100644 --- a/build/azure-devops/webhooks-api/azure-pipelines.yml +++ b/build/azure-devops/webhooks-api/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Services/Webhooks/* - - k8s/helm/webhooks-api/* + - deploy/k8s/helm/webhooks-api/* jobs: - template: ../buildimages.yaml parameters: services: webhooks.api - registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + registryEndpoint: $(registryEndpoint) + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: webhooks.api diff --git a/build/azure-devops/webhooks-client/azure-pipelines.yml b/build/azure-devops/webhooks-client/azure-pipelines.yml index 76b3b63c9..ace77d5a0 100644 --- a/build/azure-devops/webhooks-client/azure-pipelines.yml +++ b/build/azure-devops/webhooks-client/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Web/WebhookClient/* - - k8s/helm/webhooks-web/* + - deploy/k8s/helm/webhooks-web/* jobs: - template: ../buildimages.yaml parameters: services: webhooks.client - registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + registryEndpoint: $(registryEndpoint) + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: webhooks.client diff --git a/build/azure-devops/webmvc/azure-pipelines.yml b/build/azure-devops/webmvc/azure-pipelines.yml index fd637b260..8067daa7f 100644 --- a/build/azure-devops/webmvc/azure-pipelines.yml +++ b/build/azure-devops/webmvc/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Web/WebMVC/* - - k8s/helm/webmvc/* + - deploy/k8s/helm/webmvc/* jobs: - template: ../buildimages.yaml parameters: services: webmvc - registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + registryEndpoint: $(registryEndpoint) + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: webmvc diff --git a/build/azure-devops/webspa/azure-pipelines.yml b/build/azure-devops/webspa/azure-pipelines.yml index 99d8d2daf..0b635e296 100644 --- a/build/azure-devops/webspa/azure-pipelines.yml +++ b/build/azure-devops/webspa/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Web/WebSPA/* - - k8s/helm/webspa/* + - deploy/k8s/helm/webspa/* jobs: - template: ../buildimages.yaml parameters: services: webspa - registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + registryEndpoint: $(registryEndpoint) + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: webspa diff --git a/build/azure-devops/webstatus/azure-pipelines.yml b/build/azure-devops/webstatus/azure-pipelines.yml index f361370e6..b1871f4ae 100644 --- a/build/azure-devops/webstatus/azure-pipelines.yml +++ b/build/azure-devops/webstatus/azure-pipelines.yml @@ -9,14 +9,14 @@ trigger: include: - src/BuildingBlocks/* - src/Web/WebStatus/* - - k8s/helm/webstatus/* + - deploy/k8s/helm/webstatus/* jobs: - template: ../buildimages.yaml parameters: services: webstatus - registryEndpoint: $(registryEndpoint) - helmfrom: $(Build.SourcesDirectory)/k8s/helm - helmto: $(Build.ArtifactStagingDirectory)/k8s/helm + registryEndpoint: $(registryEndpoint) + helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm + helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm - template: ../multiarch.yaml parameters: image: webstatus diff --git a/deploy/k8s/dashboard-adminuser.yaml b/deploy/k8s/dashboard-adminuser.yaml new file mode 100644 index 000000000..9f24303cd --- /dev/null +++ b/deploy/k8s/dashboard-adminuser.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: admin-user + namespace: kubernetes-dashboard +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: admin-user +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: admin-user + namespace: kubernetes-dashboard diff --git a/deploy/k8s/deploy-ingress-dockerlocal.ps1 b/deploy/k8s/deploy-ingress-dockerlocal.ps1 deleted file mode 100644 index 43bf5704d..000000000 --- a/deploy/k8s/deploy-ingress-dockerlocal.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -kubectl apply -f nginx-ingress\cm.yaml -kubectl apply -f nginx-ingress\cloud-generic.yaml diff --git a/deploy/k8s/deploy-ingress.ps1 b/deploy/k8s/deploy-ingress.ps1 deleted file mode 100644 index 594986745..000000000 --- a/deploy/k8s/deploy-ingress.ps1 +++ /dev/null @@ -1,2 +0,0 @@ -# Deploy nginx-ingress core files -kubectl apply -f nginx-ingress\mandatory.yaml diff --git a/deploy/k8s/helm/apigwms/envoy.yaml b/deploy/k8s/helm/apigwms/envoy.yaml index 373806b06..1ae8c45a1 100644 --- a/deploy/k8s/helm/apigwms/envoy.yaml +++ b/deploy/k8s/helm/apigwms/envoy.yaml @@ -42,13 +42,20 @@ static_resources: route: auto_host_rewrite: true prefix_rewrite: "/ordering-api/" - cluster: ordering + cluster: ordering - name: "o-long" match: prefix: "/ordering-api/" route: auto_host_rewrite: true - cluster: ordering + cluster: ordering + - name: "h-long" + match: + prefix: "/hub/notificationhub" + route: + auto_host_rewrite: true + cluster: signalr-hub + timeout: 300s - name: "b-short" match: prefix: "/b/" @@ -61,7 +68,7 @@ static_resources: prefix: "/basket-api/" route: auto_host_rewrite: true - cluster: basket + cluster: basket - name: "agg" match: prefix: "/" @@ -70,25 +77,25 @@ static_resources: prefix_rewrite: "/" cluster: shoppingagg http_filters: - - name: envoy.router + - name: envoy.router access_log: - name: envoy.file_access_log filter: - not_health_check_filter: {} + not_health_check_filter: {} config: json_format: time: "%START_TIME%" protocol: "%PROTOCOL%" duration: "%DURATION%" - request_method: "%REQ(:METHOD)%" - request_host: "%REQ(HOST)%" - path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%" + request_method: "%REQ(:METHOD)%" + request_host: "%REQ(HOST)%" + path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%" response_flags: "%RESPONSE_FLAGS%" route_name: "%ROUTE_NAME%" upstream_host: "%UPSTREAM_HOST%" upstream_cluster: "%UPSTREAM_CLUSTER%" - upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%" - path: "/tmp/access.log" + upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%" + path: "/tmp/access.log" clusters: - name: shoppingagg connect_timeout: 0.25s @@ -113,7 +120,7 @@ static_resources: hosts: - socket_address: address: basket-api - port_value: 80 + port_value: 80 - name: ordering connect_timeout: 0.25s type: strict_dns @@ -121,4 +128,12 @@ static_resources: hosts: - socket_address: address: ordering-api - port_value: 80 \ No newline at end of file + port_value: 80 + - name: signalr-hub + connect_timeout: 0.25s + type: strict_dns + lb_policy: round_robin + hosts: + - socket_address: + address: ordering-signalrhub + port_value: 80 diff --git a/deploy/k8s/helm/apigwws/envoy.yaml b/deploy/k8s/helm/apigwws/envoy.yaml index 1491f37af..1ae8c45a1 100644 --- a/deploy/k8s/helm/apigwws/envoy.yaml +++ b/deploy/k8s/helm/apigwws/envoy.yaml @@ -42,13 +42,20 @@ static_resources: route: auto_host_rewrite: true prefix_rewrite: "/ordering-api/" - cluster: ordering + cluster: ordering - name: "o-long" match: prefix: "/ordering-api/" route: auto_host_rewrite: true - cluster: ordering + cluster: ordering + - name: "h-long" + match: + prefix: "/hub/notificationhub" + route: + auto_host_rewrite: true + cluster: signalr-hub + timeout: 300s - name: "b-short" match: prefix: "/b/" @@ -61,7 +68,7 @@ static_resources: prefix: "/basket-api/" route: auto_host_rewrite: true - cluster: basket + cluster: basket - name: "agg" match: prefix: "/" @@ -70,7 +77,7 @@ static_resources: prefix_rewrite: "/" cluster: shoppingagg http_filters: - - name: envoy.router + - name: envoy.router access_log: - name: envoy.file_access_log filter: @@ -80,15 +87,15 @@ static_resources: time: "%START_TIME%" protocol: "%PROTOCOL%" duration: "%DURATION%" - request_method: "%REQ(:METHOD)%" - request_host: "%REQ(HOST)%" - path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%" + request_method: "%REQ(:METHOD)%" + request_host: "%REQ(HOST)%" + path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%" response_flags: "%RESPONSE_FLAGS%" route_name: "%ROUTE_NAME%" upstream_host: "%UPSTREAM_HOST%" upstream_cluster: "%UPSTREAM_CLUSTER%" upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%" - path: "/tmp/access.log" + path: "/tmp/access.log" clusters: - name: shoppingagg connect_timeout: 0.25s @@ -113,7 +120,7 @@ static_resources: hosts: - socket_address: address: basket-api - port_value: 80 + port_value: 80 - name: ordering connect_timeout: 0.25s type: strict_dns @@ -121,4 +128,12 @@ static_resources: hosts: - socket_address: address: ordering-api - port_value: 80 \ No newline at end of file + port_value: 80 + - name: signalr-hub + connect_timeout: 0.25s + type: strict_dns + lb_policy: round_robin + hosts: + - socket_address: + address: ordering-signalrhub + port_value: 80 diff --git a/deploy/k8s/helm/webstatus/values.yaml b/deploy/k8s/helm/webstatus/values.yaml index 7d23ce227..e5a23ec85 100644 --- a/deploy/k8s/helm/webstatus/values.yaml +++ b/deploy/k8s/helm/webstatus/values.yaml @@ -55,54 +55,37 @@ env: - name: HealthChecks-UI__HealthChecks__4__Uri key: internalurls__ordering__hc - name: HealthChecks-UI__HealthChecks__5__Name - key: name__orderingbackground__hc + key: name__basket__hc - name: HealthChecks-UI__HealthChecks__5__Uri - key: internalurls__orderingbackground__hc + key: internalurls__basket__hc - name: HealthChecks-UI__HealthChecks__6__Name - key: name__signalrhub__hc + key: name__catalog__hc - name: HealthChecks-UI__HealthChecks__6__Uri - key: internalurls__signalrhub__hc + key: internalurls__catalog__hc - name: HealthChecks-UI__HealthChecks__7__Name - key: name__basket__hc + key: name__identity__hc - name: HealthChecks-UI__HealthChecks__7__Uri - key: internalurls__basket__hc + key: internalurls__identity__hc - name: HealthChecks-UI__HealthChecks__8__Name - key: name__catalog__hc + key: name__marketing__hc - name: HealthChecks-UI__HealthChecks__8__Uri - key: internalurls__catalog__hc + key: internalurls__marketing__hc - name: HealthChecks-UI__HealthChecks__9__Name - key: name__identity__hc + key: name__locations__hc - name: HealthChecks-UI__HealthChecks__9__Uri - key: internalurls__identity__hc + key: internalurls__locations__hc - name: HealthChecks-UI__HealthChecks__10__Name - key: name__marketing__hc + key: name__payment__hc - name: HealthChecks-UI__HealthChecks__10__Uri - key: internalurls__marketing__hc + key: internalurls__payment__hc - name: HealthChecks-UI__HealthChecks__11__Name - key: name__locations__hc + key: name__signalrhub__hc - name: HealthChecks-UI__HealthChecks__11__Uri - key: internalurls__locations__hc + key: internalurls__signalrhub__hc - name: HealthChecks-UI__HealthChecks__12__Name - key: name__payment__hc + key: name__orderingbackground__hc - name: HealthChecks-UI__HealthChecks__12__Uri - key: internalurls__payment__hc - - - name: HealthChecks-UI__HealthChecks__13__Name - key: name__apigwws__hc - - name: HealthChecks-UI__HealthChecks__13__Uri - key: internalurls__apigwws__hc - - name: HealthChecks-UI__HealthChecks__14__Name - key: name__apigwwm__hc - - name: HealthChecks-UI__HealthChecks__14__Uri - key: internalurls__apigwwm__hc - - name: HealthChecks-UI__HealthChecks__15__Name - key: name__apigwms__hc - - name: HealthChecks-UI__HealthChecks__15__Uri - key: internalurls__apigwms__hc - - name: HealthChecks-UI__HealthChecks__16__Name - key: name__apigwmm__hc - - name: HealthChecks-UI__HealthChecks__16__Uri - key: internalurls__apigwmm__hc + key: internalurls__orderingbackground__hc # values define environment variables with a fixed value (no configmap involved) (name is name of var, and value is its value) values: diff --git a/deploy/k8s/nginx-ingress/cm.yaml b/deploy/k8s/nginx-ingress/cm.yaml deleted file mode 100644 index 7818fd15b..000000000 Binary files a/deploy/k8s/nginx-ingress/cm.yaml and /dev/null differ diff --git a/deploy/k8s/nginx-ingress/local-cm.yaml b/deploy/k8s/nginx-ingress/local-cm.yaml new file mode 100644 index 000000000..02906afc1 --- /dev/null +++ b/deploy/k8s/nginx-ingress/local-cm.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + name: nginx-configuration + namespace: ingress-nginx +data: + proxy-buffer-size: "128k" + proxy-buffers: "4 256k" \ No newline at end of file diff --git a/deploy/k8s/nginx-ingress/cloud-generic.yaml b/deploy/k8s/nginx-ingress/local-svc.yaml similarity index 100% rename from deploy/k8s/nginx-ingress/cloud-generic.yaml rename to deploy/k8s/nginx-ingress/local-svc.yaml diff --git a/src/ApiGateways/Envoy/config/mobileshopping/envoy.yaml b/src/ApiGateways/Envoy/config/mobileshopping/envoy.yaml index 373806b06..1ae8c45a1 100644 --- a/src/ApiGateways/Envoy/config/mobileshopping/envoy.yaml +++ b/src/ApiGateways/Envoy/config/mobileshopping/envoy.yaml @@ -42,13 +42,20 @@ static_resources: route: auto_host_rewrite: true prefix_rewrite: "/ordering-api/" - cluster: ordering + cluster: ordering - name: "o-long" match: prefix: "/ordering-api/" route: auto_host_rewrite: true - cluster: ordering + cluster: ordering + - name: "h-long" + match: + prefix: "/hub/notificationhub" + route: + auto_host_rewrite: true + cluster: signalr-hub + timeout: 300s - name: "b-short" match: prefix: "/b/" @@ -61,7 +68,7 @@ static_resources: prefix: "/basket-api/" route: auto_host_rewrite: true - cluster: basket + cluster: basket - name: "agg" match: prefix: "/" @@ -70,25 +77,25 @@ static_resources: prefix_rewrite: "/" cluster: shoppingagg http_filters: - - name: envoy.router + - name: envoy.router access_log: - name: envoy.file_access_log filter: - not_health_check_filter: {} + not_health_check_filter: {} config: json_format: time: "%START_TIME%" protocol: "%PROTOCOL%" duration: "%DURATION%" - request_method: "%REQ(:METHOD)%" - request_host: "%REQ(HOST)%" - path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%" + request_method: "%REQ(:METHOD)%" + request_host: "%REQ(HOST)%" + path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%" response_flags: "%RESPONSE_FLAGS%" route_name: "%ROUTE_NAME%" upstream_host: "%UPSTREAM_HOST%" upstream_cluster: "%UPSTREAM_CLUSTER%" - upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%" - path: "/tmp/access.log" + upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%" + path: "/tmp/access.log" clusters: - name: shoppingagg connect_timeout: 0.25s @@ -113,7 +120,7 @@ static_resources: hosts: - socket_address: address: basket-api - port_value: 80 + port_value: 80 - name: ordering connect_timeout: 0.25s type: strict_dns @@ -121,4 +128,12 @@ static_resources: hosts: - socket_address: address: ordering-api - port_value: 80 \ No newline at end of file + port_value: 80 + - name: signalr-hub + connect_timeout: 0.25s + type: strict_dns + lb_policy: round_robin + hosts: + - socket_address: + address: ordering-signalrhub + port_value: 80 diff --git a/src/ApiGateways/Envoy/config/webshopping/envoy.yaml b/src/ApiGateways/Envoy/config/webshopping/envoy.yaml index 1491f37af..1ae8c45a1 100644 --- a/src/ApiGateways/Envoy/config/webshopping/envoy.yaml +++ b/src/ApiGateways/Envoy/config/webshopping/envoy.yaml @@ -42,13 +42,20 @@ static_resources: route: auto_host_rewrite: true prefix_rewrite: "/ordering-api/" - cluster: ordering + cluster: ordering - name: "o-long" match: prefix: "/ordering-api/" route: auto_host_rewrite: true - cluster: ordering + cluster: ordering + - name: "h-long" + match: + prefix: "/hub/notificationhub" + route: + auto_host_rewrite: true + cluster: signalr-hub + timeout: 300s - name: "b-short" match: prefix: "/b/" @@ -61,7 +68,7 @@ static_resources: prefix: "/basket-api/" route: auto_host_rewrite: true - cluster: basket + cluster: basket - name: "agg" match: prefix: "/" @@ -70,7 +77,7 @@ static_resources: prefix_rewrite: "/" cluster: shoppingagg http_filters: - - name: envoy.router + - name: envoy.router access_log: - name: envoy.file_access_log filter: @@ -80,15 +87,15 @@ static_resources: time: "%START_TIME%" protocol: "%PROTOCOL%" duration: "%DURATION%" - request_method: "%REQ(:METHOD)%" - request_host: "%REQ(HOST)%" - path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%" + request_method: "%REQ(:METHOD)%" + request_host: "%REQ(HOST)%" + path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%" response_flags: "%RESPONSE_FLAGS%" route_name: "%ROUTE_NAME%" upstream_host: "%UPSTREAM_HOST%" upstream_cluster: "%UPSTREAM_CLUSTER%" upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%" - path: "/tmp/access.log" + path: "/tmp/access.log" clusters: - name: shoppingagg connect_timeout: 0.25s @@ -113,7 +120,7 @@ static_resources: hosts: - socket_address: address: basket-api - port_value: 80 + port_value: 80 - name: ordering connect_timeout: 0.25s type: strict_dns @@ -121,4 +128,12 @@ static_resources: hosts: - socket_address: address: ordering-api - port_value: 80 \ No newline at end of file + port_value: 80 + - name: signalr-hub + connect_timeout: 0.25s + type: strict_dns + lb_policy: round_robin + hosts: + - socket_address: + address: ordering-signalrhub + port_value: 80 diff --git a/src/Services/Identity/Identity.API/Views/Shared/_Layout.cshtml b/src/Services/Identity/Identity.API/Views/Shared/_Layout.cshtml index 4727229c7..1d57c688e 100644 --- a/src/Services/Identity/Identity.API/Views/Shared/_Layout.cshtml +++ b/src/Services/Identity/Identity.API/Views/Shared/_Layout.cshtml @@ -3,6 +3,7 @@ + eShopOnContainers Identity diff --git a/src/Web/WebMVC/Views/Shared/_Layout.cshtml b/src/Web/WebMVC/Views/Shared/_Layout.cshtml index ee993cfd4..d26208833 100644 --- a/src/Web/WebMVC/Views/Shared/_Layout.cshtml +++ b/src/Web/WebMVC/Views/Shared/_Layout.cshtml @@ -102,10 +102,12 @@ function stablishConnection(cb) { let connection = new signalR.HubConnectionBuilder() .withUrl('@settings.Value.SignalrHubUrl/hub/notificationhub', { + transport: signalR.HttpTransportType.LongPolling, accessTokenFactory: () => { return "Authorization", getToken(); } }) + .withAutomaticReconnect() .build(); connection.start().then(function () { diff --git a/src/Web/WebMVC/bundleconfig.json b/src/Web/WebMVC/bundleconfig.json index 74e28e320..5c5793da5 100644 --- a/src/Web/WebMVC/bundleconfig.json +++ b/src/Web/WebMVC/bundleconfig.json @@ -11,7 +11,7 @@ { "outputFileName": "wwwroot/js/site.js", "inputFiles": [ - "wwwroot/lib/@aspnet/signalr/dist/browser/signalr.js", + "wwwroot/lib/@microsoft/signalr/dist/browser/signalr.js", "wwwroot/lib/toastr/toastr.min.js" ], // Optionally specify minification options diff --git a/src/Web/WebMVC/libman.json b/src/Web/WebMVC/libman.json index 9aa7ef3f4..f7b9d3763 100644 --- a/src/Web/WebMVC/libman.json +++ b/src/Web/WebMVC/libman.json @@ -9,6 +9,7 @@ { "provider": "unpkg", "library": "bootstrap@4.3.1", + "destination": "wwwroot/lib/bootstrap/", "files": [ "dist/css/bootstrap.css", "dist/css/bootstrap.css.map", @@ -16,8 +17,7 @@ "dist/css/bootstrap.min.css.map", "dist/js/bootstrap.js", "dist/js/bootstrap.min.js" - ], - "destination": "wwwroot/lib/bootstrap/" + ] }, { "library": "jquery-validation-unobtrusive@3.2.11", @@ -37,12 +37,12 @@ }, { "provider": "unpkg", - "library": "@aspnet/signalr@1.1.2", - "files": [ + "library": "@microsoft/signalr@3.0.1", + "destination": "wwwroot/lib/@microsoft/signalr/", + "files": [ "dist/browser/signalr.js", "dist/browser/signalr.min.js" - ], - "destination": "wwwroot/lib/@aspnet/signalr/" + ] } ] } \ No newline at end of file diff --git a/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts b/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts index fa1b7e386..ab8642656 100644 --- a/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts +++ b/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { SecurityService } from './security.service'; import { ConfigurationService } from './configuration.service'; -import { HubConnection, HubConnectionBuilder, LogLevel, HttpTransportType } from '@aspnet/signalr'; +import { HubConnection, HubConnectionBuilder, LogLevel, HttpTransportType } from '@microsoft/signalr'; import { ToastrService } from 'ngx-toastr'; import { Subject } from 'rxjs'; @@ -25,7 +25,7 @@ export class SignalrService { this.SignalrHubUrl = this.configurationService.serverSettings.signalrHubUrl; this.init(); }); - } + } } public stop() { @@ -36,16 +36,18 @@ export class SignalrService { if (this.securityService.IsAuthorized == true) { this.register(); this.stablishConnection(); - this.registerHandlers(); - } + this.registerHandlers(); + } } private register() { this._hubConnection = new HubConnectionBuilder() .withUrl(this.SignalrHubUrl + '/hub/notificationhub', { + transport: HttpTransportType.LongPolling, accessTokenFactory: () => this.securityService.GetToken() }) .configureLogging(LogLevel.Information) + .withAutomaticReconnect() .build(); } @@ -61,6 +63,7 @@ export class SignalrService { private registerHandlers() { this._hubConnection.on('UpdatedOrderState', (msg) => { + console.log(`Order ${msg.orderId} updated to ${msg.status}`); this.toastr.success('Updated to status: ' + msg.status, 'Order Id: ' + msg.orderId); this.msgSignalrSource.next(); }); diff --git a/src/Web/WebSPA/package-lock.json b/src/Web/WebSPA/package-lock.json index 86c48226d..3ea79e548 100644 --- a/src/Web/WebSPA/package-lock.json +++ b/src/Web/WebSPA/package-lock.json @@ -1769,10 +1769,25 @@ "tslib": "^1.9.0" } }, - "@aspnet/signalr": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@aspnet/signalr/-/signalr-1.0.3.tgz", - "integrity": "sha512-8nPSarp4k+oP2M6P7tw2FZMXOMR86wH9GPb/4wiqA18c4Ds88SUmE0pSpnNQPDOoWGMj6y9F2Xz5JyoynCPXWQ==" + "@microsoft/signalr": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-3.0.1.tgz", + "integrity": "sha512-tRhqAmf5SyK02VXM6noj6DjSgt0i8yDqspHdLqdqsSrjMh4/inrwjI/BqLVE8zLD3mHp+eGHeSnlLTUVe024vA==", + "requires": { + "eventsource": "^1.0.7", + "request": "^2.88.0", + "ws": "^6.0.0" + }, + "dependencies": { + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } }, "@ng-bootstrap/ng-bootstrap": { "version": "3.3.0", @@ -2520,7 +2535,6 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -2565,8 +2579,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assign-symbols": { "version": "1.0.0", @@ -2599,14 +2612,12 @@ "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { "version": "2.1.2", @@ -2630,14 +2641,12 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "axobject-query": { "version": "2.0.2", @@ -2858,7 +2867,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, "optional": true, "requires": { "tweetnacl": "^0.14.3" @@ -3385,8 +3393,7 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { "version": "1.1.3", @@ -3600,8 +3607,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, "code-point-at": { "version": "1.1.0", @@ -3659,7 +3665,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -4104,7 +4109,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -4257,8 +4261,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegates": { "version": "1.0.0", @@ -4424,7 +4427,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, "optional": true, "requires": { "jsbn": "~0.1.0", @@ -5061,8 +5063,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -5167,8 +5168,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { "version": "2.0.1", @@ -5372,14 +5372,12 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "1.0.6", @@ -6052,7 +6050,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -6212,14 +6209,12 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", - "dev": true, "requires": { "ajv": "^5.3.0", "har-schema": "^2.0.0" @@ -6229,7 +6224,6 @@ "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", @@ -6240,14 +6234,12 @@ "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" } } }, @@ -6445,7 +6437,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -7090,8 +7081,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-utf8": { "version": "0.2.1", @@ -7146,8 +7136,7 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-instrumenter-loader": { "version": "3.0.1", @@ -7289,7 +7278,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, "optional": true }, "jsesc": { @@ -7307,8 +7295,7 @@ "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-traverse": { "version": "0.4.1", @@ -7333,8 +7320,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json3": { "version": "3.3.2", @@ -7377,7 +7363,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -8290,9 +8275,9 @@ "dev": true }, "ngx-toastr": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-9.0.2.tgz", - "integrity": "sha512-wSc1Oh0dshJR0TaZUu52YRiAW3JIjS1SZarZoj/B1yK8zSp6G+a4ueD8qCY50qLpQ3SddT19zz1n90sp64jH1Q==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-10.1.0.tgz", + "integrity": "sha512-LXGL8jKIm0SGklkXytNKbR6VrF94all35SaUfgd1gOUzgllTW2ldqORDZlgIaiMB3Dcybaald8p3boEHvfjEIQ==", "requires": { "tslib": "^1.9.0" } @@ -8631,8 +8616,7 @@ "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-assign": { "version": "4.1.1", @@ -9183,8 +9167,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "pify": { "version": "3.0.0", @@ -9499,8 +9482,7 @@ "psl": { "version": "1.1.29", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", - "dev": true + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" }, "public-encrypt": { "version": "4.0.2", @@ -9902,7 +9884,6 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -11260,7 +11241,6 @@ "version": "1.14.2", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", - "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -12052,7 +12032,6 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -12061,8 +12040,7 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" } } }, @@ -12201,7 +12179,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -12210,7 +12187,6 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, "optional": true }, "type": { @@ -12694,7 +12670,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", diff --git a/src/Web/WebSPA/package.json b/src/Web/WebSPA/package.json index 96b725445..4935ddfbb 100644 --- a/src/Web/WebSPA/package.json +++ b/src/Web/WebSPA/package.json @@ -37,7 +37,7 @@ "@angular/platform-browser-dynamic": "^7.2.10", "@angular/platform-server": "^7.2.10", "@angular/router": "^7.2.10", - "@aspnet/signalr": "3.0.0-preview6.19307.2", + "@microsoft/signalr": "3.0.1", "@ng-bootstrap/ng-bootstrap": "3.3.0", "bootstrap": "4.3.1", "core-js": "^2.5.0", @@ -45,7 +45,7 @@ "font-awesome": "4.7.0", "isomorphic-fetch": "2.2.1", "jquery": "3.4.1", - "ngx-toastr": "^9.0.2", + "ngx-toastr": "10.1.0", "normalize.css": "8.0.0", "popper.js": "^1.14.4", "preboot": "6.0.0-beta.5", diff --git a/src/docker-compose-tests.override.yml b/src/docker-compose-tests.override.yml index 35e8170da..6a2cf1991 100644 --- a/src/docker-compose-tests.override.yml +++ b/src/docker-compose-tests.override.yml @@ -41,7 +41,7 @@ services: ports: - "5105:80" - basket-api-test: + basket-api-functional-test: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=http://0.0.0.0:80 @@ -61,7 +61,7 @@ services: - dotnet - test - --logger - - trx;LogFileName=/tests/basket-test-results.xml + - trx;LogFileName=/tests/basket-functional-test-results.xml basket-api-unit-test: environment: @@ -85,7 +85,7 @@ services: - --logger - trx;LogFileName=/tests/basket-unit-test-results.xml - catalog-api-test: + catalog-api-functional-test: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=http://0.0.0.0:80 @@ -107,7 +107,7 @@ services: - dotnet - test - --logger - - trx;LogFileName=/tests/catalog-test-results.xml + - trx;LogFileName=/tests/catalog-functional-test-results.xml catalog-api-unit-test: environment: @@ -133,7 +133,7 @@ services: - --logger - trx;LogFileName=/tests/catalog-unit-test-results.xml - ordering-api-test: + ordering-api-functional-test: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=http://0.0.0.0:80 @@ -155,7 +155,7 @@ services: - dotnet - test - --logger - - trx;LogFileName=/tests/ordering-test-results.xml + - trx;LogFileName=/tests/ordering-functional-test-results.xml ordering-api-unit-test: environment: @@ -181,7 +181,7 @@ services: - --logger - trx;LogFileName=/tests/ordering-unit-test-results.xml - marketing-api-test: + marketing-api-functional-test: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=http://0.0.0.0:80 @@ -208,7 +208,7 @@ services: - dotnet - test - --logger - - trx;LogFileName=/tests/marketing-test-results.xml + - trx;LogFileName=/tests/marketing-functional-test-results.xml payment-api-test: environment: @@ -223,7 +223,7 @@ services: ports: - "5108:80" - locations-api-test: + locations-api-functional-test: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_URLS=http://0.0.0.0:80 @@ -244,4 +244,4 @@ services: - dotnet - test - --logger - - trx;LogFileName=/tests/locations-test-results.xml \ No newline at end of file + - trx;LogFileName=/tests/locations-functional-test-results.xml \ No newline at end of file diff --git a/src/docker-compose-tests.yml b/src/docker-compose-tests.yml index 13f1ddf46..75daf5a2f 100644 --- a/src/docker-compose-tests.yml +++ b/src/docker-compose-tests.yml @@ -2,7 +2,7 @@ version: '3.4' services: sql-data-test: - image: microsoft/mssql-server-linux:2017-latest + image: mcr.microsoft.com/mssql/server:2017-latest nosql-data-test: image: mongo @@ -21,7 +21,7 @@ services: depends_on: - sql-data-test - basket-api-test: + basket-api-functional-test: image: ${REGISTRY:-eshop}/basket-api-test:${TAG:-latest} build: context: . @@ -35,7 +35,7 @@ services: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests basket-api-unit-test: - image: ${REGISTRY:-eshop}/basket-api-test:${TAG:-latest} + image: ${REGISTRY:-eshop}/basket-api-unit-test:${TAG:-latest} build: context: . dockerfile: Services/Basket/Basket.API/Dockerfile @@ -47,8 +47,8 @@ services: volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests - catalog-api-test: - image: ${REGISTRY:-eshop}/catalog-api-test:${TAG:-latest} + catalog-api-functional-test: + image: ${REGISTRY:-eshop}/catalog-api-functional-test:${TAG:-latest} build: context: . dockerfile: Services/Catalog/Catalog.API/Dockerfile @@ -60,7 +60,7 @@ services: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests catalog-api-unit-test: - image: ${REGISTRY:-eshop}/catalog-api-test:${TAG:-latest} + image: ${REGISTRY:-eshop}/catalog-api-unit-test:${TAG:-latest} build: context: . dockerfile: Services/Catalog/Catalog.API/Dockerfile @@ -71,7 +71,7 @@ services: volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests - ordering-api-test: + ordering-api-functional-test: image: ${REGISTRY:-eshop}/ordering-api-test:${TAG:-latest} build: context: . @@ -84,7 +84,7 @@ services: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests ordering-api-unit-test: - image: ${REGISTRY:-eshop}/ordering-api-test:${TAG:-latest} + image: ${REGISTRY:-eshop}/ordering-api-unit-test:${TAG:-latest} build: context: . dockerfile: Services/Ordering/Ordering.API/Dockerfile @@ -95,7 +95,7 @@ services: volumes: - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests - marketing-api-test: + marketing-api-functional-test: image: ${REGISTRY:-eshop}/marketing-api-test:${TAG:-latest} build: context: . @@ -117,7 +117,7 @@ services: depends_on: - rabbitmq-test - locations-api-test: + locations-api-functional-test: image: ${REGISTRY:-eshop}/locations-api-test:${TAG:-latest} build: context: . diff --git a/src/docker-compose.override.yml b/src/docker-compose.override.yml index 72b3e25f0..4f5d44d99 100644 --- a/src/docker-compose.override.yml +++ b/src/docker-compose.override.yml @@ -349,7 +349,7 @@ services: - UseCustomizationData=True - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} - OrchestratorType=${ORCHESTRATOR_TYPE} - - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5112 + - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5202 ports: - "5104:80" @@ -360,7 +360,7 @@ services: - PurchaseUrl=http://webshoppingapigw - IdentityUrl=http://10.0.75.1:5105 - MarketingUrl=http://webmarketingapigw - - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5112 + - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5202 - IdentityUrlHC=http://identity-api/hc - UseCustomizationData=True - ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY} diff --git a/src/docker-compose.windows.yml b/src/docker-compose.windows.yml index 44aba924f..d3e3b802e 100644 --- a/src/docker-compose.windows.yml +++ b/src/docker-compose.windows.yml @@ -6,7 +6,7 @@ version: '3.4' services: sqldata: - image: microsoft/mssql-server-windows-developer + image: mcr.microsoft.com/mssql/server:2017-latest nosqldata: image: mongo:windowsservercore diff --git a/src/docker-compose.yml b/src/docker-compose.yml index 65edc42f9..2172a6ec9 100644 --- a/src/docker-compose.yml +++ b/src/docker-compose.yml @@ -6,7 +6,7 @@ services: image: datalust/seq:latest sqldata: - image: microsoft/mssql-server-linux:2017-latest + image: mcr.microsoft.com/mssql/server:2017-latest nosqldata: image: mongo