From 2717f4e2d9a7593108483cb05518b9ec7b3efc32 Mon Sep 17 00:00:00 2001 From: Will Smith Date: Mon, 22 Apr 2024 11:33:03 -0700 Subject: [PATCH] Upmerge release branches into edge (#1212) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix resource type * Fix Dapr mode * Bump express from 4.17.1 to 4.17.3 in /quickstarts/dapr/nodeapp (#108) Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.17.3. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.17.1...4.17.3) --- updated-dependencies: - dependency-name: express dependency-type: direct:production ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump loader-utils from 2.0.3 to 2.0.4 in /demo/client (#111) Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump minimatch from 3.0.4 to 3.1.2 in /tutorial (#114) Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2. - [Release notes](https://github.com/isaacs/minimatch/releases) - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2) --- updated-dependencies: - dependency-name: minimatch dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump decode-uri-component from 0.2.0 to 0.2.2 in /tutorial (#113) Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2. - [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases) - [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2) --- updated-dependencies: - dependency-name: decode-uri-component dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump minimatch in /reference-apps/container-app-store/node-service (#112) Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.1.2. - [Release notes](https://github.com/isaacs/minimatch/releases) - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.1.2) --- updated-dependencies: - dependency-name: minimatch dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump qs and express in /reference-apps/container-app-store/node-service (#110) Bumps [qs](https://github.com/ljharb/qs) to 6.11.0 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together. Updates `qs` from 6.5.2 to 6.11.0 - [Release notes](https://github.com/ljharb/qs/releases) - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.11.0) Updates `express` from 4.16.4 to 4.18.2 - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.16.4...4.18.2) --- updated-dependencies: - dependency-name: qs dependency-type: indirect - dependency-name: express dependency-type: direct:production ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump express from 4.17.1 to 4.17.3 in /tutorial (#109) Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.17.3. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.17.1...4.17.3) --- updated-dependencies: - dependency-name: express dependency-type: direct:production ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Making tutorial match docs version (#116) * Continue on error for container deletion * Update issues.yaml * Change ADO_wit * Update version number * Remove container app store * Add eshop instructions * Revert instructions * Change Bicep installation step * Update issues.yaml * Update issues.yaml * Update issues.yaml * Update test.yaml * Add check for node creation (#240) * Add check for node creation * Correct error message * Add contribution guide * Add Issue templates * Fix link * Fix casing * change mentions of to just (#263) Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * edge to v0.22 upmerge to pick up changes (#388) Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * add background info for dapr quickstart (#381) Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Switch to sql edge (#398) * Update Dapr UI port (#416) * Change port to 8080 * Update container port * Update configuration * Add error message * Update demo.app.spec.ts (#546) * Add samples release automation (#499) (#554) * Bump word-wrap from 1.2.3 to 1.2.5 in /demo/client (#431) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aaron Crawfis * Bump golang.org/x/net in /reference-apps/container-app-store/go-service (#593) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.0.0-20210929193557-e81a3d93ecf6 to 0.17.0. - [Commits](https://github.com/golang/net/commits/v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add issue labels (#858) Signed-off-by: Aaron Crawfis * Remove customer label Signed-off-by: Aaron Crawfis * Fix failing CI in 0.27 branch (#881) * Fix Dapr sample in CI (#817) * Adding debug for pod list Signed-off-by: willdavsmith * Adding debug for pod list Signed-off-by: willdavsmith * Adding debug for pod list Signed-off-by: willdavsmith * Adding debug for pod list Signed-off-by: willdavsmith * Adding debug for pod list Signed-off-by: willdavsmith * make sure it's not flaky Signed-off-by: willdavsmith * remove debug Signed-off-by: willdavsmith --------- Signed-off-by: willdavsmith (cherry picked from commit 5f6bd440f222fb86d288fc90d69acbb6aa587196) * Force delete Radius application, EKS Cluster, and AWS resources on failed workflow run (#843) Signed-off-by: willdavsmith (cherry picked from commit 4855d479f0c76cfefd10af4e640305fd5be98dc3) * Bump @adobe/css-tools from 4.3.1 to 4.3.2 in /samples/demo/client (#886) Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.3.1 to 4.3.2. - [Changelog](https://github.com/adobe/css-tools/blob/main/History.md) - [Commits](https://github.com/adobe/css-tools/commits) --- updated-dependencies: - dependency-name: "@adobe/css-tools" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix Dapr microservices sample (#654) * Adding application name for dapr app * Adding application name for dapr app * Update samples/dapr/.rad/rad.yaml Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> --------- Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> * Fix Dapr microservices sample (#654) (#890) * Adding application name for dapr app * Adding application name for dapr app * Update samples/dapr/.rad/rad.yaml --------- Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> Co-authored-by: MD Ashique * Upmerge v0.27 to v0.28 (#903) * Add edge rad CLI pull to samples tests (#737) * Add install-radius script Signed-off-by: willdavsmith * chmod Signed-off-by: willdavsmith * test Signed-off-by: willdavsmith * test Signed-off-by: willdavsmith * test Signed-off-by: willdavsmith * test Signed-off-by: willdavsmith * test Signed-off-by: willdavsmith * test Signed-off-by: willdavsmith * test Signed-off-by: willdavsmith * PR Signed-off-by: willdavsmith * PR Signed-off-by: willdavsmith * PR Signed-off-by: willdavsmith * PR Signed-off-by: willdavsmith * PR Signed-off-by: willdavsmith * PR Signed-off-by: willdavsmith --------- Signed-off-by: willdavsmith Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * dapr tutorial port and routes fixes Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Revert "Update container build to only push on merges (#726)" This reverts commit 54b3d4e1caa01cdcd106905be056ae262ebbcb5c. Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Revert "Revert "Update container build to only push on merges (#726)"" This reverts commit 7cfd4adb6981472faa09d0ad4739b0d36133e1a6. Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Revert "dapr tutorial port and routes fixes" This reverts commit 7f6f52565cb71f856ede599c396f1e3b7b666b79. Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * dapr tutorial port and routes fixes (#748) Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Update condition Signed-off-by: Aaron Crawfis Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Update rad-bicep pull Signed-off-by: Aaron Crawfis Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Update eShop to use Recipes (#590) * Replace eShop with eShop on recipes * PR * Fix * Test * PR * oops * Updates * PR * PR * PR * PR comments * PR comments * fixing * again * fix * rewind * PR * PR * Simplify env registration Signed-off-by: Aaron Crawfis * Make registry a parameter Signed-off-by: Aaron Crawfis * Update test Signed-off-by: Aaron Crawfis * Update namespaces Signed-off-by: Aaron Crawfis * Fix tag Signed-off-by: Aaron Crawfis * Update env names Signed-off-by: Aaron Crawfis * Fix namespaces Signed-off-by: Aaron Crawfis * Fix recipe Signed-off-by: Aaron Crawfis --------- Signed-off-by: Aaron Crawfis Co-authored-by: Aaron Crawfis Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Fix Dapr sample in CI (#817) * Adding debug for pod list Signed-off-by: willdavsmith * Adding debug for pod list Signed-off-by: willdavsmith * Adding debug for pod list Signed-off-by: willdavsmith * Adding debug for pod list Signed-off-by: willdavsmith * Adding debug for pod list Signed-off-by: willdavsmith * make sure it's not flaky Signed-off-by: willdavsmith * remove debug Signed-off-by: willdavsmith --------- Signed-off-by: willdavsmith Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Force delete Radius application, EKS Cluster, and AWS resources on failed workflow run (#843) Signed-off-by: willdavsmith Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Remove customer label Signed-off-by: Aaron Crawfis Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Add issue labels (#858) Signed-off-by: Aaron Crawfis Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Bump @adobe/css-tools from 4.3.1 to 4.3.2 in /samples/demo/client (#886) Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.3.1 to 4.3.2. - [Changelog](https://github.com/adobe/css-tools/blob/main/History.md) - [Commits](https://github.com/adobe/css-tools/commits) --- updated-dependencies: - dependency-name: "@adobe/css-tools" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Fix Dapr microservices sample (#654) (#890) * Adding application name for dapr app * Adding application name for dapr app * Update samples/dapr/.rad/rad.yaml --------- Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> Co-authored-by: MD Ashique Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> --------- Signed-off-by: willdavsmith Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> Signed-off-by: Aaron Crawfis Signed-off-by: dependabot[bot] Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> Co-authored-by: Will Smith Co-authored-by: Aaron Crawfis Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: MD Ashique * Update changes in test.yaml workflow into v0.28 (#904) * Add test-failure label to issues created for samples failures (#899) Signed-off-by: karishma-chawla <74574173+karishma-chawla@users.noreply.github.com> Co-authored-by: karishma-chawla <74574173+karishma-chawla@users.noreply.github.com> * updating condition to specify scheduled run --------- Signed-off-by: karishma-chawla <74574173+karishma-chawla@users.noreply.github.com> Signed-off-by: Lakshmi Javadekar <103459615+lakshmimsft@users.noreply.github.com> Co-authored-by: Karishma Chawla Co-authored-by: karishma-chawla <74574173+karishma-chawla@users.noreply.github.com> * Fixing AWS RDS Purge workflow (#970) * Add aws login (#974) Signed-off-by: willdavsmith * Add GH action to close stale PRs (#977) * Add GH action to close stale PRs Signed-off-by: karishma-chawla <74574173+karishma-chawla@users.noreply.github.com> * Update CONTRIBUTING.md Co-authored-by: Aaron Crawfis Signed-off-by: Karishma Chawla * Update radius repo link Signed-off-by: Karishma Chawla --------- Signed-off-by: karishma-chawla <74574173+karishma-chawla@users.noreply.github.com> Signed-off-by: Karishma Chawla Co-authored-by: karishma-chawla <74574173+karishma-chawla@users.noreply.github.com> Co-authored-by: Aaron Crawfis * Adding a secton that waits until the app is ready (#980) Signed-off-by: ytimocin * Update images for guestbook sample app (#986) * update images for guestbook sample app Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * update images for guestbook sample app Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * move images to /samples path Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> --------- Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> * Bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /samples/demo/client (#1023) Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4. - [Release notes](https://github.com/webpack/webpack-dev-middleware/releases) - [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4) --- updated-dependencies: - dependency-name: webpack-dev-middleware dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump follow-redirects from 1.15.4 to 1.15.6 in /samples/demo/client (#1014) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump ip from 2.0.0 to 2.0.1 in /samples/demo (#984) Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1. - [Commits](https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1) --- updated-dependencies: - dependency-name: ip dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> * Bump follow-redirects from 1.15.5 to 1.15.6 in /playwright (#1015) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> * Bump express from 4.18.2 to 4.19.2 in /samples/demo/client (#1027) Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2) --- updated-dependencies: - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> * Bump express from 4.18.2 to 4.19.2 in /samples/demo (#1028) Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2) --- updated-dependencies: - dependency-name: express dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> * Bump express from 4.18.2 to 4.19.2 in /samples/dapr/nodeapp (#1026) Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2) --- updated-dependencies: - dependency-name: express dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> * Make env configurable (#1046) Signed-off-by: Reshma Abdul Rahim * Adding test AKS workflow to v0.32 (#1052) * Run functional tests every 2 hours and add another workflow that runs… (#1020) * Run functional tests every 2 hours and add another workflow that runs the tests on AKS instead of k3d Signed-off-by: ytimocin * Triggering workflow Signed-off-by: ytimocin --------- Signed-off-by: ytimocin * Removing the run of the AKS workflow on PRs (#1051) Signed-off-by: ytimocin * Update the timeout (30s) for Playwright Signed-off-by: ytimocin --------- Signed-off-by: ytimocin * Removing code * Removing code * Removing code * Use retry and update eshop playwright tests to wait for the catalog to appear (#1213) Signed-off-by: ytimocin * Fixing eshop page Signed-off-by: willdavsmith --------- Signed-off-by: dependabot[bot] Signed-off-by: Will Tsai <28876888+willtsai@users.noreply.github.com> Signed-off-by: Aaron Crawfis Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> Signed-off-by: willdavsmith Signed-off-by: karishma-chawla <74574173+karishma-chawla@users.noreply.github.com> Signed-off-by: Lakshmi Javadekar <103459615+lakshmimsft@users.noreply.github.com> Signed-off-by: Karishma Chawla Signed-off-by: ytimocin Signed-off-by: Reshma Abdul Rahim Co-authored-by: Aaron Crawfis Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Kotalik Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> Co-authored-by: MD Ashique Co-authored-by: Lakshmi Javadekar <103459615+lakshmimsft@users.noreply.github.com> Co-authored-by: Karishma Chawla Co-authored-by: karishma-chawla <74574173+karishma-chawla@users.noreply.github.com> Co-authored-by: Yetkin Timocin Co-authored-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/bug.md | 38 ++++++ .github/ISSUE_TEMPLATE/feature.md | 18 +++ .github/workflows/close-stale-prs.yml | 27 +++++ .github/workflows/issues.yaml | 5 + .../workflows/purge-aws-rds-snapshots.yaml | 11 ++ .github/workflows/purge-test-resources.yaml | 47 ++++++++ .github/workflows/test.yaml | 37 +++--- CONTRIBUTING.md | 15 +++ README.md | 4 +- playwright/package-lock.json | 71 +++++++++++ playwright/playwright.config.ts | 25 ++-- playwright/tests/demo/demo.app.spec.ts | 1 + playwright/tests/eshop/eshop.app.spec.ts | 87 ++++++++------ playwright/tests/util/helper.ts | 24 ++++ samples/dapr/.rad/rad.yaml | 2 + samples/dapr/README.md | 57 ++++++++- samples/dapr/nodeapp/package-lock.json | 78 ++++++------ samples/dapr/nodeapp/package.json | 2 +- samples/dapr/ui/Dockerfile | 2 + samples/dapr/ui/Startup.cs | 4 + samples/dapr/ui/appsettings.json | 9 +- samples/demo/Chart/values.yaml | 3 +- samples/demo/client/package-lock.json | 112 +++++++++--------- samples/demo/package-lock.json | 90 +++++++------- samples/demo/package.json | 2 +- samples/eshop-dapr/README.md | 2 +- .../guestbook/deploy/frontend-deployment.yaml | 2 +- .../deploy/redis-replica-deployment.yaml | 2 +- 28 files changed, 565 insertions(+), 212 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug.md create mode 100644 .github/ISSUE_TEMPLATE/feature.md create mode 100644 .github/workflows/close-stale-prs.yml create mode 100644 .github/workflows/purge-test-resources.yaml create mode 100644 CONTRIBUTING.md create mode 100644 playwright/tests/util/helper.ts create mode 100644 samples/dapr/.rad/rad.yaml diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md new file mode 100644 index 00000000..83fcd1a7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -0,0 +1,38 @@ +--- +name: Bug Report +about: Report broken functionality within a Radius sample +title: "" +assignees: '' +labels: ["bug"] +--- + +## Bug information + +### Steps to reproduce (required) + + +### Observed behavior (required) + + + + +### Desired behavior (required) + + +### Workaround (optional) + + +## System information + +### rad Version (required) + + + + +### Operating system (required) + + + + +## Additional context + diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md new file mode 100644 index 00000000..2e5e888b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.md @@ -0,0 +1,18 @@ +--- +name: Feature Request +about: Request a feature in Radius samples +title: "" +assignees: '' +--- + +## Overview of feature request + + + +## Acceptance criteria + + + +## Additional context + + diff --git a/.github/workflows/close-stale-prs.yml b/.github/workflows/close-stale-prs.yml new file mode 100644 index 00000000..2ac1cd25 --- /dev/null +++ b/.github/workflows/close-stale-prs.yml @@ -0,0 +1,27 @@ +# This workflow warns and then closes PRs that have had no activity for 90 days. +# +# For more information, see: +# https://github.com/actions/stale +name: Close stale pull requests + +on: + schedule: + - cron: '0 18 * * *' # Run the workflow every day at 6PM UTC (10AM PST). + +jobs: + stale: + + runs-on: ubuntu-latest + permissions: + pull-requests: write + + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-pr-message: 'This pull request has been automatically marked as stale because it has been inactive for 90 days. Remove stale label or comment or this PR will be closed in 7 days.' + stale-pr-label: 'stale' + days-before-pr-stale: 90 # 3 months + days-before-pr-close: 7 + days-before-issue-stale: -1 + days-before-issue-close: -1 \ No newline at end of file diff --git a/.github/workflows/issues.yaml b/.github/workflows/issues.yaml index 3eee2823..6aae5063 100644 --- a/.github/workflows/issues.yaml +++ b/.github/workflows/issues.yaml @@ -3,6 +3,10 @@ name: Issues Automation on: issues: types: [opened, edited, deleted, closed, reopened, labeled, unlabeled, assigned] + +concurrency: + group: issue-${{ github.event.issue.number }} + cancel-in-progress: false jobs: ado: @@ -21,3 +25,4 @@ jobs: ado_new_state: "New" ado_active_state: "Active" ado_close_state: "Closed" + ado_wit: "GitHub Issue" diff --git a/.github/workflows/purge-aws-rds-snapshots.yaml b/.github/workflows/purge-aws-rds-snapshots.yaml index ad8fd4e3..257dd7ba 100644 --- a/.github/workflows/purge-aws-rds-snapshots.yaml +++ b/.github/workflows/purge-aws-rds-snapshots.yaml @@ -3,11 +3,22 @@ on: schedule: # Runs at 00:30 and 12:30 - cron: "30 0,12 * * *" +env: + GH_TOKEN: ${{ github.token }} + AWS_REGION: us-west-2 jobs: purge_rds_snapshots: name: Purge AWS RDS DBInstance snapshots runs-on: [ubuntu-latest] steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Login to AWS + run: | + aws configure set aws_access_key_id ${{ secrets.AWS_ACCESS_KEY_ID }} + aws configure set aws_secret_access_key ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws configure set region ${{ env.AWS_REGION }} + aws configure set output json - name: Purge AWS RDS DBInstance snapshots run: | ./.github/scripts/purge-aws-rds-snapshots.sh diff --git a/.github/workflows/purge-test-resources.yaml b/.github/workflows/purge-test-resources.yaml new file mode 100644 index 00000000..db47b568 --- /dev/null +++ b/.github/workflows/purge-test-resources.yaml @@ -0,0 +1,47 @@ +name: Purge test resources +on: + schedule: + - cron: "30 0,12 * * *" +env: + AZURE_RG_DELETE_LIST_FILE: "az_rg_list.txt" + VALID_RESOURCE_WINDOW: 6*60*60 +jobs: + purge_azure_resources: + name: Azure resources clean-ups + runs-on: [self-hosted, 1ES.Pool=1ES-Radius] + steps: + - name: Login to Azure + run: | + az login --service-principal \ + --username ${{ secrets.AZURE_SP_TESTS_APPID }} \ + --password ${{ secrets.AZURE_SP_TESTS_PASSWORD }} \ + --tenant ${{ secrets.AZURE_SP_TESTS_TENANTID }} + + az account set --subscription ${{ secrets.AZURE_SUBSCRIPTIONID_TESTS }} + + - name: List Test Resource Groups + run: | + echo "## Test resource group list" >> $GITHUB_STEP_SUMMARY + az group list --query "[?starts_with(name, 'samplestest-')].{Name:name, creationTime:tags.creationTime}" -o json > resource_groups.json + + current_time=$(date +%s) + hours_ago=$((current_time - ${{ env.VALID_RESOURCE_WINDOW }})) + + jq -r '.[] | select(.creationTime == null || .creationTime < '$hours_ago') | .Name' resource_groups.json > ${{ env.AZURE_RG_DELETE_LIST_FILE}} + jq -r '.[] | {name: .Name, creationTime: .creationTime // "None"}' resource_groups.json > $GITHUB_STEP_SUMMARY + + - name: Delete Azure Resource Groups + run: | + echo "## Deleting resource group list" >> $GITHUB_STEP_SUMMARY + cat ${{ env.AZURE_RG_DELETE_LIST_FILE}} | while read -r line + do + echo " * $line" >> $GITHUB_STEP_SUMMARY + az group delete --resource-group $line --yes --verbose + done + + - name: Create GitHub issue on failure + if: ${{ failure() }} + run: | + gh issue create --title "Samples purge test resources failed \ + --body "Test failed on ${{ github.repository }}. See [workflow logs](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for more details." \ + s--repo ${{ github.repository }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index dabac0b6..aa377ffe 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -134,7 +134,7 @@ jobs: if: steps.gen-id.outputs.RUN_TEST == 'true' uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 20 - name: az CLI login if: steps.gen-id.outputs.RUN_TEST == 'true' && matrix.credential == 'azure' run: | @@ -270,20 +270,25 @@ jobs: - name: Run Playwright Test if: steps.gen-id.outputs.RUN_TEST == 'true' && matrix.uiTestFile != '' id: run-playwright-test - run: | - if [[ "${{ matrix.container }}" != "" ]]; then - rad resource expose containers ${{ matrix.container }} ${{ matrix.exposeArgs }} --port ${{ matrix.port }} & - echo "Endpoint: http://localhost:${{ matrix.port }}" - export ENDPOINT="http://localhost:${{ matrix.port }}" - else - endpoint="$(rad app status -a ${{ matrix.app }} | sed 's/ /\n/g' | grep http)" - echo "Endpoint: $endpoint" - export ENDPOINT=$endpoint - fi - cd playwright/ - npm ci - npx playwright install --with-deps - npx playwright test ${{ matrix.uiTestFile }} --retries 3 + uses: nick-fields/retry@v3 + with: + timeout_minutes: 5 + max_attempts: 3 + retry_wait_seconds: 30 + command: | + if [[ "${{ matrix.container }}" != "" ]]; then + rad resource expose containers ${{ matrix.container }} ${{ matrix.exposeArgs }} --port ${{ matrix.port }} & + echo "Endpoint: http://localhost:${{ matrix.port }}" + export ENDPOINT="http://localhost:${{ matrix.port }}" + else + endpoint="$(rad app status -a ${{ matrix.app }} | sed 's/ /\n/g' | grep http)" + echo "Endpoint: $endpoint" + export ENDPOINT=$endpoint + fi + cd playwright/ + npm ci + npx playwright install --with-deps + npx playwright test ${{ matrix.uiTestFile }} --retries 3 - name: Upload Playwright Results uses: actions/upload-artifact@v4 if: always() && ( steps.run-playwright-test.outcome == 'success' || steps.run-playwright-test.outcome == 'failure' ) @@ -300,7 +305,7 @@ jobs: # Create pod-logs directory mkdir -p playwright/pod-logs/${{ matrix.name }} # Get pod logs and save to file - namespace="default-${{ matrix.app }}" + namespace="${{ matrix.env }}-${{ matrix.app }}" label="radapp.io/application=${{ matrix.app }}" pod_names=($(kubectl get pods -l $label -n $namespace -o jsonpath='{.items[*].metadata.name}')) for pod_name in "${pod_names[@]}"; do diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..940c9e18 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,15 @@ +# Contributing + +Radius is in an early phase of development right now. We welcome feedback in the form of issues that comes from usage and is aligned with the current scope and goals of the project. We also welcome contributions and PRs for bug fixes or security fixes. For new functionality or new samples please open an issue first to discuss the scope and goals of the feature. We will not accept new functionality or samples without an issue first. + +## How to contribute + +1. Fork the repository +2. Create a branch for your changes +3. Make your changes +4. Open a PR +5. Wait for a maintainer to review your PR + +## Code of Conduct + +Please refer to our [Radius Community Code of Conduct](https://github.com/project-radius/radius/blob/main/CODE_OF_CONDUCT.md) diff --git a/README.md b/README.md index 9acbc809..4f29d254 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Project Radius Samples +# Radius Samples -This repository contains the source code for quickstarts, reference apps, and tutorials for Project Radius. +This repository contains the source code for quickstarts, reference apps, and tutorials for Radius. To try out one of these samples, visit https://docs.radapp.dev diff --git a/playwright/package-lock.json b/playwright/package-lock.json index 2e3324b8..584c5d37 100644 --- a/playwright/package-lock.json +++ b/playwright/package-lock.json @@ -48,6 +48,72 @@ "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "dev": true }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -92,6 +158,11 @@ "node": ">=16" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/typescript": { "version": "5.4.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", diff --git a/playwright/playwright.config.ts b/playwright/playwright.config.ts index e2b6772b..4e300a13 100644 --- a/playwright/playwright.config.ts +++ b/playwright/playwright.config.ts @@ -1,4 +1,4 @@ -import { defineConfig, devices } from '@playwright/test'; +import { defineConfig, devices } from "@playwright/test"; /** * Read environment variables from file. @@ -10,7 +10,7 @@ import { defineConfig, devices } from '@playwright/test'; * See https://playwright.dev/docs/test-configuration. */ export default defineConfig({ - testDir: './tests', + testDir: "./tests", /* Run tests in files in parallel */ fullyParallel: true, /* Fail the build on CI if you accidentally left test.only in the source code. */ @@ -20,31 +20,34 @@ export default defineConfig({ /* Opt out of parallel tests on CI. */ workers: process.env.CI ? 1 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', + reporter: "html", /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { /* Base URL to use in actions like `await page.goto('/')`. */ // baseURL: 'http://127.0.0.1:3000', /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', + trace: "on-first-retry", }, - /* Configure projects for major browsers */ projects: [ { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, + name: "chromium", + use: { ...devices["Desktop Chrome"] }, }, { - name: 'firefox', - use: { ...devices['Desktop Firefox'] }, + name: "firefox", + use: { ...devices["Desktop Firefox"] }, }, { - name: 'webkit', - use: { ...devices['Desktop Safari'] }, + name: "webkit", + use: { ...devices["Desktop Safari"] }, }, ], + timeout: 1 * 60 * 1000, + expect: { + timeout: 30 * 1000, + }, }); diff --git a/playwright/tests/demo/demo.app.spec.ts b/playwright/tests/demo/demo.app.spec.ts index d8751c71..b9819b44 100644 --- a/playwright/tests/demo/demo.app.spec.ts +++ b/playwright/tests/demo/demo.app.spec.ts @@ -1,5 +1,6 @@ import { test, expect } from "@playwright/test"; import { v4 as uuidv4 } from "uuid"; +import { waitForWebApp } from "../util/helper"; test("To-Do App Basic UI Checks", async ({ page }) => { // Listen for all console events and handle errors diff --git a/playwright/tests/eshop/eshop.app.spec.ts b/playwright/tests/eshop/eshop.app.spec.ts index 196dea16..d5cd59bf 100644 --- a/playwright/tests/eshop/eshop.app.spec.ts +++ b/playwright/tests/eshop/eshop.app.spec.ts @@ -19,73 +19,90 @@ test("eShop on Containers App Basic UI and Functionality Checks", async ({ await page.goto(endpoint); // Expect page to have proper URL - expect(page).toHaveURL(new RegExp(`${endpoint}/catalog.*`)); - + await expect(page).toHaveURL(new RegExp(`${endpoint}/catalog.*`)); // Expect page to have proper title - expect(page).toHaveTitle("eShopOnContainers - SPA"); - - // Check for the LOGIN button - await expect(page.getByText("LOGIN")).toBeVisible(); + await expect(page).toHaveTitle("eShopOnContainers - SPA"); - // Click on the LOGIN button - await page.getByText("LOGIN").click(); + // Check for the LOGIN button in the home page + const loginButton = page.getByText("LOGIN"); + await expect(loginButton).toBeVisible(); + await loginButton.click(); - // Expect page to have proper title - expect(page).toHaveTitle("eShopOnContainers - Identity"); + // Expect login page to have proper title + await expect(page).toHaveTitle("eShopOnContainers - Identity"); // Fill in the username and password - expect(page.getByPlaceholder("Username")).toBeVisible(); - await page.getByPlaceholder("Username").click(); - await page.getByPlaceholder("Username").fill("alice"); + const username = page.getByPlaceholder("Username"); + await expect(username).toBeVisible(); + await username.click(); + await username.fill("alice"); - expect(page.getByPlaceholder("Password")).toBeVisible(); - await page.getByPlaceholder("Password").click(); - await page.getByPlaceholder("Password").fill("Pass123$"); + const password = page.getByPlaceholder("Password"); + await expect(password).toBeVisible(); + await password.click(); + await password.fill("Pass123$"); // Click on the LOGIN button await page.getByRole("button", { name: "Login" }).click(); // After login, expect to be redirected to the catalog page // Expect page to have proper URL - expect(page).toHaveURL(new RegExp(`${endpoint}/catalog.*`)); - + await expect(page).toHaveURL(new RegExp(`${endpoint}/catalog.*`)); // Expect page to have proper title - expect(page).toHaveTitle("eShopOnContainers - SPA"); + await expect(page).toHaveTitle("eShopOnContainers - SPA"); // Logged user details should be visible - expect(page.getByText("AliceSmith@email.com")).toBeVisible(); - + const user = page.getByText("AliceSmith@email.com"); + await expect(user).toBeVisible(); // Click on the user details - await page.getByText("AliceSmith@email.com").click(); + await user.click(); // Check dropdown menu - expect(page.getByText("My orders")).toBeVisible(); - expect(page.getByText("Log Out")).toBeVisible(); + await expect(page.getByText("My orders")).toBeVisible(); + await expect(page.getByText("Log Out")).toBeVisible(); + + // Find the catalog + console.log("Finding the catalog"); + const catalogSelector = "esh-catalog"; + await page.waitForSelector(catalogSelector); + const catalog = page.locator(catalogSelector); + await expect(catalog).toBeVisible(); + console.log("Catalog found"); let numberOfItemsAdded = 0; // Add an item to the cart - await page - .locator( - "div:nth-child(2) > .esh-catalog-item > .esh-catalog-thumbnail-wrapper > .esh-catalog-thumbnail-icon > .esh-catalog-thumbnail-icon-svg" - ) - .click(); + console.log("Adding the first item to the cart"); + const firstItemSelector = "div:nth-child(1) > .esh-catalog-item"; + await page.waitForSelector(firstItemSelector); + const firstItem = page.locator(firstItemSelector); + await expect(firstItem).toBeVisible(); + await firstItem.click(); + console.log("Item added to the cart"); + numberOfItemsAdded++; + + // Add an item to the cart + console.log("Adding the second item to the cart"); + const secondItemSelector = "div:nth-child(2) > .esh-catalog-item"; + await page.waitForSelector(secondItemSelector); + const secondItem = page.locator(secondItemSelector); + await expect(secondItem).toBeVisible(); + await secondItem.click(); + console.log("Item added to the cart"); numberOfItemsAdded++; // Go to the cart - await page.getByRole("link", { name: `${numberOfItemsAdded}` }).click(); + const cartLink = page.getByRole("link", { name: `${numberOfItemsAdded}` }); + await expect(cartLink).toBeVisible(); + await cartLink.click(); // Expect page to have proper URL - expect(page).toHaveURL(new RegExp(`${endpoint}/basket.*`)); - + await expect(page).toHaveURL(new RegExp(`${endpoint}/basket.*`)); // Checkout await page.getByRole("button", { name: "Checkout" }).click(); - // Place the order await page.getByRole("button", { name: "Place Order" }).click(); - // Continue Shopping await page.getByRole("link", { name: "Continue Shopping" }).click(); - // Logout await page.locator("div").filter({ hasText: "Log Out" }).nth(0).click(); }); diff --git a/playwright/tests/util/helper.ts b/playwright/tests/util/helper.ts new file mode 100644 index 00000000..45a5b500 --- /dev/null +++ b/playwright/tests/util/helper.ts @@ -0,0 +1,24 @@ +import axios from "axios"; + +export async function waitForWebApp(url: string | undefined, timeout = 30000) { + if (!url) { + throw new Error("URL is not defined"); + } + + const startTime = Date.now(); + while (true) { + try { + await axios.get(url); + console.log(`Web application is ready: ${url}`); + break; + } catch (error) { + console.log(`Web application is not ready: ${url}`); + if (Date.now() - startTime > timeout) { + throw new Error( + `Web application not ready after ${timeout} ms: ${url}` + ); + } + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + } +} diff --git a/samples/dapr/.rad/rad.yaml b/samples/dapr/.rad/rad.yaml new file mode 100644 index 00000000..4daa00b9 --- /dev/null +++ b/samples/dapr/.rad/rad.yaml @@ -0,0 +1,2 @@ +workspace: + application: "dapr" \ No newline at end of file diff --git a/samples/dapr/README.md b/samples/dapr/README.md index 22ca7940..3a9ecceb 100644 --- a/samples/dapr/README.md +++ b/samples/dapr/README.md @@ -2,4 +2,59 @@ This quickstart teaches how to add a Dapr sidecar to your application and use Dapr building blocks. -Visit https://radapp.dev to try it out. +Visit [radapp.dev](https://docs.radapp.dev/getting-started/quickstarts/quickstart-dapr/) for instructions on deploying this quickstart app to try it out. + +## Overview + +You will deploy an online store where you can order items: + +A diagram of the Dapr application + +## Containers + +This Radius application will have two [containers](https://docs.radapp.dev/concepts/appmodel-concept/): + +- A frontend UI for users to place orders. Written with .NET Blazor. +- A backend order processing microservice. Written in Node.JS. + +### `frontend` container + +The user-facing UI app (`frontend`) offers a portal for users to place orders. Upon creating an order, `frontend` uses [Dapr service invocation](https://docs.dapr.io/developing-applications/building-blocks/service-invocation/service-invocation-overview/) to send requests to `nodeapp`. + +The `frontend` container is configured with a [Dapr sidecar extension](https://docs.radapp.dev/reference/resource-schema/link-schema/dapr-schema/extension/) to add the sidecar container. + +A diagram of the complete application + +### `backend` container + +The order processing microservice (`backend`) accepts HTTP requests to create or display orders. It accepts HTTP requests on two endpoints: `GET /order` and `POST /neworder`. + +The `backend` container is configured with a [Dapr sidecar extension](https://docs.radapp.dev/reference/resource-schema/link-schema/dapr-schema/extension/) to add the sidecar container, along with a [Dapr Route](#routes) to model Dapr communication. + +A diagram of the backend order processing service + +## Routes + +Radius offers communication between services via [Routes](https://docs.radapp.dev/concepts/appmodel-concept/#routes). + +### Dapr service invocation + +In this quickstart we will be using a [Dapr HTTP invoke route](https://docs.radapp.dev/reference/resource-schema/link-schema/dapr-schema/http/) resource to model communication from `frontend` to `backend`. This allows `frontend` to use Dapr service invocation to interact with `backend`. + +A diagram of the Dapr service invocation + +## Link + +A [Dapr statestore link](https://docs.radapp.dev/reference/resource-schema/link-schema/dapr-schema/dapr-secretstore/) is used to model and deploy the Dapr statestore component. + +### `statestore` Dapr state store + +The [Dapr state store](https://docs.radapp.dev/reference/resource-schema/link-schema/dapr-schema/dapr-statestore/) resource (`statestore`) stores information about orders. It could be any compatible [Dapr state store](https://docs.dapr.io/developing-applications/building-blocks/state-management/state-management-overview/). + +The Dapr component configuration is automatically generated for the statestore based on the resource or values provided in the link definition. + +#### Swappable infrastructure + +In this quickstart you will be able to swap between different Dapr components, such as Azure Table Storage and a Redis container. While the backing infrastructure will change, the container definitions and connections will remain the same. This allows you to easily swap between different backing infrastructure without rewriting your service code or definition. + +A diagram of the Dapr state store \ No newline at end of file diff --git a/samples/dapr/nodeapp/package-lock.json b/samples/dapr/nodeapp/package-lock.json index 16ec2633..2542cfad 100644 --- a/samples/dapr/nodeapp/package-lock.json +++ b/samples/dapr/nodeapp/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "body-parser": "^1.20.1", - "express": "^4.18.2", + "express": "^4.19.2", "isomorphic-fetch": "^2.2.1" } }, @@ -32,12 +32,12 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -45,7 +45,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -86,17 +86,17 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -177,16 +177,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -495,9 +495,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -666,12 +666,12 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -679,7 +679,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" } @@ -707,14 +707,14 @@ } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" }, "cookie-signature": { "version": "1.0.6", @@ -778,16 +778,16 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -1012,9 +1012,9 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "requires": { "bytes": "3.1.2", "http-errors": "2.0.0", diff --git a/samples/dapr/nodeapp/package.json b/samples/dapr/nodeapp/package.json index b2591e67..2227ce2c 100644 --- a/samples/dapr/nodeapp/package.json +++ b/samples/dapr/nodeapp/package.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "body-parser": "^1.20.1", - "express": "^4.18.2", + "express": "^4.19.2", "isomorphic-fetch": "^2.2.1" } } diff --git a/samples/dapr/ui/Dockerfile b/samples/dapr/ui/Dockerfile index a9f01155..c628b42e 100644 --- a/samples/dapr/ui/Dockerfile +++ b/samples/dapr/ui/Dockerfile @@ -10,4 +10,6 @@ RUN dotnet publish -c release -o /output/ --no-restore -r linux-musl-x64 FROM mcr.microsoft.com/dotnet/aspnet:5.0-alpine WORKDIR /app COPY --from=build /output ./ + ENTRYPOINT ["dotnet", "ui.dll"] +EXPOSE 8080 \ No newline at end of file diff --git a/samples/dapr/ui/Startup.cs b/samples/dapr/ui/Startup.cs index 82a34e26..93a19307 100644 --- a/samples/dapr/ui/Startup.cs +++ b/samples/dapr/ui/Startup.cs @@ -24,6 +24,10 @@ public void ConfigureServices(IServiceCollection services) services.AddServerSideBlazor(); var appId = Environment.GetEnvironmentVariable("CONNECTION_BACKEND_APPID"); + if (string.IsNullOrEmpty(appId)) + { + throw new ArgumentNullException("CONNECTION_BACKEND_APPID", "Please set the environment variable CONNECTION_BACKEND_APPID to the id of the backend app."); + } services.AddSingleton(DaprClient.CreateInvokeHttpClient(appId)); } diff --git a/samples/dapr/ui/appsettings.json b/samples/dapr/ui/appsettings.json index d9d9a9bf..5964f66a 100644 --- a/samples/dapr/ui/appsettings.json +++ b/samples/dapr/ui/appsettings.json @@ -6,5 +6,12 @@ "Microsoft.Hosting.Lifetime": "Information" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + "Kestrel": { + "Endpoints": { + "Http": { + "Url": "http://+:8080" + } + } + } } diff --git a/samples/demo/Chart/values.yaml b/samples/demo/Chart/values.yaml index 9751b981..ac86339d 100644 --- a/samples/demo/Chart/values.yaml +++ b/samples/demo/Chart/values.yaml @@ -1,3 +1,4 @@ image: repository: ghcr.io/radius-project/samples/demo - tag: latest \ No newline at end of file + tag: latest +environment: default \ No newline at end of file diff --git a/samples/demo/client/package-lock.json b/samples/demo/client/package-lock.json index 1af15633..22b9320f 100644 --- a/samples/demo/client/package-lock.json +++ b/samples/demo/client/package-lock.json @@ -26,9 +26,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==" + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==" }, "node_modules/@ampproject/remapping": { "version": "2.2.0", @@ -4709,12 +4709,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -4722,7 +4722,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -5287,9 +5287,9 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } @@ -5300,9 +5300,9 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -7098,16 +7098,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -7379,9 +7379,9 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -12179,9 +12179,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -14345,9 +14345,9 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -15158,9 +15158,9 @@ }, "dependencies": { "@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==" + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==" }, "@ampproject/remapping": { "version": "2.2.0", @@ -18457,12 +18457,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -18470,7 +18470,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -18901,9 +18901,9 @@ } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "convert-source-map": { "version": "1.9.0", @@ -18911,9 +18911,9 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" }, "cookie-signature": { "version": "1.0.6", @@ -20197,16 +20197,16 @@ } }, "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -20434,9 +20434,9 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "for-each": { "version": "0.3.3", @@ -23706,9 +23706,9 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "requires": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -25320,9 +25320,9 @@ } }, "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "requires": { "colorette": "^2.0.10", "memfs": "^3.4.3", diff --git a/samples/demo/package-lock.json b/samples/demo/package-lock.json index 91fb045a..070b153a 100644 --- a/samples/demo/package-lock.json +++ b/samples/demo/package-lock.json @@ -16,7 +16,7 @@ "@types/uuid": "^8.3.4", "bootstrap": "^5.3.1", "dotenv": "^16.0.3", - "express": "^4.18.2", + "express": "^4.19.2", "mongodb": "^4.17.0", "morgan": "^1.10.0", "redis": "^4.4.0", @@ -3229,12 +3229,12 @@ } }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -3242,7 +3242,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -3555,17 +3555,17 @@ } }, "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -3696,16 +3696,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -4148,9 +4148,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==" }, "node_modules/ipaddr.js": { "version": "1.9.1", @@ -4749,9 +4749,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -7888,12 +7888,12 @@ "dev": true }, "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -7901,7 +7901,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -8121,14 +8121,14 @@ } }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" }, "cookie-signature": { "version": "1.0.6", @@ -8218,16 +8218,16 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -8556,9 +8556,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==" }, "ipaddr.js": { "version": "1.9.1", @@ -9004,9 +9004,9 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "requires": { "bytes": "3.1.2", "http-errors": "2.0.0", diff --git a/samples/demo/package.json b/samples/demo/package.json index 4ad5818c..115882a3 100644 --- a/samples/demo/package.json +++ b/samples/demo/package.json @@ -30,7 +30,7 @@ "@types/uuid": "^8.3.4", "bootstrap": "^5.3.1", "dotenv": "^16.0.3", - "express": "^4.18.2", + "express": "^4.19.2", "mongodb": "^4.17.0", "morgan": "^1.10.0", "redis": "^4.4.0", diff --git a/samples/eshop-dapr/README.md b/samples/eshop-dapr/README.md index 4402865a..befaf933 100644 --- a/samples/eshop-dapr/README.md +++ b/samples/eshop-dapr/README.md @@ -1,6 +1,6 @@ # eShop on Dapr reference application -Visit the [Project Radius docs](https://radapp.dev/getting-started/reference-apps/eshop-dapr/) to learn more. +Visit the [Radius docs](https://radapp.dev/getting-started/reference-apps/eshop-dapr/) to learn more. ## Source diff --git a/samples/kubernetes/guestbook/deploy/frontend-deployment.yaml b/samples/kubernetes/guestbook/deploy/frontend-deployment.yaml index 2b08cc9d..9c8b42d5 100644 --- a/samples/kubernetes/guestbook/deploy/frontend-deployment.yaml +++ b/samples/kubernetes/guestbook/deploy/frontend-deployment.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: php-redis - image: gcr.io/google-samples/gb-frontend:v4 + image: ghcr.io/radius-project/samples/gb-frontend:v4 resources: requests: cpu: 100m diff --git a/samples/kubernetes/guestbook/deploy/redis-replica-deployment.yaml b/samples/kubernetes/guestbook/deploy/redis-replica-deployment.yaml index c1e8ca31..9ce86511 100644 --- a/samples/kubernetes/guestbook/deploy/redis-replica-deployment.yaml +++ b/samples/kubernetes/guestbook/deploy/redis-replica-deployment.yaml @@ -18,7 +18,7 @@ spec: spec: containers: - name: slave - image: gcr.io/google_samples/gb-redisslave:v1 + image: ghcr.io/radius-project/samples/gb-redisreplica:v1 resources: requests: cpu: 100m