From e8ccdce19e832de766ec80c804b6af750ab900c0 Mon Sep 17 00:00:00 2001 From: Volodymyr Lunov Date: Thu, 5 Oct 2023 13:43:42 +0200 Subject: [PATCH 01/14] Initial documentation sturucture. --- ...ointegration-of-spryker-module-releases.md | 37 +++++++++++++++++++ docs/scu/dev/features/security-upgrades.md | 37 +++++++++++++++++++ docs/scu/dev/features/upgrade-verification.md | 21 +++++++++++ 3 files changed, 95 insertions(+) create mode 100644 docs/scu/dev/features/autointegration-of-spryker-module-releases.md create mode 100644 docs/scu/dev/features/security-upgrades.md create mode 100644 docs/scu/dev/features/upgrade-verification.md diff --git a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md new file mode 100644 index 00000000000..3f5f9e9a96a --- /dev/null +++ b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md @@ -0,0 +1,37 @@ +--- +title: Integration of Code Releases into your project repository +description: How Spryker Code Upgrader automatically integreates code releases into your code base +template: concept-topic-template +--- + +# Challenges of integrating Spryker Code Releases + +Spryker architecture requires to connect functionalities of different modules in your project code by using the defined extention points. Spryker Code Upgrader automatically integrates Plugins, sets configurations keys, adds new translations etc to your project code. This results in removing the manual step when your engineer needs to understand and apply code changes to activate the new feature in your project. + +Explain supported extention points: +- Configurations (find links) + default php + module config +- Plugin stacks (find links) +- Translations (find links) +- XML +- ??? + +# How to enable and configure + +- enabled by default +- not all the releases are integrated, but those having high integratability coverage +- code is process by code style fixers, ensure you have it in your project + + How Upgrader decides what release to integrate? +- each release has an integrability coverage which is from 0 to 100%, Upgrader integrates those releases having 70+% but it can be changed by self-service. + +# What is integrability coverage +- internally Spryker tests how the release can be integrated and what plugins, configuration etc need to change in your project code the coverage shows the number of those changes that can be replayed automatically +- there are some releases that do not need any integrations (so called module-only releases), these receive 100% coverage. Explain what module-only means or find a better name +- you can see the coverage of each release in the PR that is created by Spryker Code Upgrader + +# What to do if you see a generated code, that is not valid +1. Ensure that your project code is passing Upgradability Guidelines and Evaluator check (links) +2. Quick fix might be to manually correct the generated code +3. If none of those help, please contact us diff --git a/docs/scu/dev/features/security-upgrades.md b/docs/scu/dev/features/security-upgrades.md new file mode 100644 index 00000000000..85bc4fe23f9 --- /dev/null +++ b/docs/scu/dev/features/security-upgrades.md @@ -0,0 +1,37 @@ +--- +title: Handling Security Releases by Spryker Code Upgrader +description: How Spryker Code Upgrader works with releases related to known security vulnerabilities +template: concept-topic-template +--- + +Receive security releases before any other releases offered to you by Spryker Code Upgrader, ensuring the timely application of critical security fixes. And run static code analsys tools to detect other known vulnerabilities. + +# What kind of security releases covered? + +Spryker Code Upgrader service helps you with vulnerabilities form these three sources: +1. Spryker Security releases +2. PHP Ecosystem +3. NPM Ecosystem + +## Spryker Security releases + +1. What is that. +Example of a security release in the release app. Screenshot? +2. How to receive them as an upgrade via SCU +- emphasise the prio of security releases vs others +- explain that it works between majors +- explain that major upgrade will need to be done manually +3. How to detect vulnerabilities via Evaluator -> link to respective evaluator pages +- How it works under the hood internally etc. + +## PHP Ecosystem +1. What is that. +2. How to detect vulnerabilities via Evaluator -> link to respective evaluator pages +- How it works under the hood internally etc. + +## NPM Ecosystem +1. What is that. +2. How to detect vulnerabilities via Evaluator -> link to respective evaluator pages +- How it works under the hood internally etc. +- Explain critical vs info etc on the evaluator pages + diff --git a/docs/scu/dev/features/upgrade-verification.md b/docs/scu/dev/features/upgrade-verification.md new file mode 100644 index 00000000000..15a55375223 --- /dev/null +++ b/docs/scu/dev/features/upgrade-verification.md @@ -0,0 +1,21 @@ +--- +title: Active detection of incompatibilies +description: How Spryker Code Upgrader actively detects and warns you when your code becomes incompatible with the code in upgraded modules +template: concept-topic-template +--- + +It is very important for Spryker Code Upgrader to ensure stability of the upgrades. On the one hand you have your automated tests that you rely on, those tests are run in your CI system and you use them before you merge the pull requested created by Spryker Code Upgrader. On the other hand and in addition we run a number of code checks to offer an early warning system even without having a full context or knowledge of your project. + +# What kind of validations we run? + +- Major code releases +- PHP Broken Files (phpstan) +- Conflict between your class that extended a private class in a Spryker module and when Spryker changed their class in the release +- Module name conflict checker +- Release integration warnings +- Upgrader warnings + +# What to do when you see these warnings in the PR? + +Generic explanation about how to check a file in PHP Storm -> fix the file, rename module or class, recheck the inherited class to be compatible with the base one. + From e183fe0cb193d8427c02a9039f1862ff6744830a Mon Sep 17 00:00:00 2001 From: Sergey Romankov Date: Mon, 9 Oct 2023 11:46:22 +0300 Subject: [PATCH 02/14] SDK-4673 update documentation --- ...ointegration-of-spryker-module-releases.md | 54 ++++++++++--------- docs/scu/dev/features/security-upgrades.md | 48 +++++++++++------ docs/scu/dev/features/upgrade-verification.md | 25 ++++++--- 3 files changed, 78 insertions(+), 49 deletions(-) diff --git a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md index 3f5f9e9a96a..9ed7dc08860 100644 --- a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md +++ b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md @@ -6,32 +6,38 @@ template: concept-topic-template # Challenges of integrating Spryker Code Releases -Spryker architecture requires to connect functionalities of different modules in your project code by using the defined extention points. Spryker Code Upgrader automatically integrates Plugins, sets configurations keys, adds new translations etc to your project code. This results in removing the manual step when your engineer needs to understand and apply code changes to activate the new feature in your project. - -Explain supported extention points: -- Configurations (find links) - default php - module config -- Plugin stacks (find links) -- Translations (find links) -- XML -- ??? +Spryker architecture provides extensibility of different modules by using extension points in the project code. +With Spryker Code Upgrader, the process of integrating plugins, configuration updates, adding new translations, and other code changes is automated. +As the result the manual step can be skipped when engineers have to understand and apply code changes by themselves in order to add new features in the project. + +Supported extension points: +- Configure + - module + - environment +- Copy module files +- Add/Remove + - plugin + - navigation + - widget + - glue relationship +- Add + - transfer + - db schema + +# What is release rating +The release rating is a measure of the integrability coverage of each spryker release, representing the percentage of integrated plugins, configurations, schemas, and other components. +This rating is determined through internal testing, where the updated code is compared with the released code to assess the level of integration achieved. + +There are some kind of releases that provide only dependency updates without any code integrations (so called module-only releases). Such releases have 100% coverage. + +The rating for each applied release can be found in the upgrader pull request description. # How to enable and configure +By default, the Integrator is enabled. It applies integrations of releases that have rating of more than 70% (this threshold can be configured through the spryker CI configuration). -- enabled by default -- not all the releases are integrated, but those having high integratability coverage -- code is process by code style fixers, ensure you have it in your project - - How Upgrader decides what release to integrate? -- each release has an integrability coverage which is from 0 to 100%, Upgrader integrates those releases having 70+% but it can be changed by self-service. - -# What is integrability coverage -- internally Spryker tests how the release can be integrated and what plugins, configuration etc need to change in your project code the coverage shows the number of those changes that can be replayed automatically -- there are some releases that do not need any integrations (so called module-only releases), these receive 100% coverage. Explain what module-only means or find a better name -- you can see the coverage of each release in the PR that is created by Spryker Code Upgrader +It is important to note that after the integration process is completed, a style fixer is applied to the updated files. It's recommended for the project to have its own style fixer to expose project-specific code style conventions. # What to do if you see a generated code, that is not valid -1. Ensure that your project code is passing Upgradability Guidelines and Evaluator check (links) -2. Quick fix might be to manually correct the generated code -3. If none of those help, please contact us +1. Make sure that your project code follows the Upgradability Guidelines and passes the [Evaluator check](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html). +2. You can try manually updating the generated code as a quick fix. +3. If none of the above solutions work, please contact us for further assistance. diff --git a/docs/scu/dev/features/security-upgrades.md b/docs/scu/dev/features/security-upgrades.md index 85bc4fe23f9..f846e9bd0ac 100644 --- a/docs/scu/dev/features/security-upgrades.md +++ b/docs/scu/dev/features/security-upgrades.md @@ -4,34 +4,48 @@ description: How Spryker Code Upgrader works with releases related to known secu template: concept-topic-template --- -Receive security releases before any other releases offered to you by Spryker Code Upgrader, ensuring the timely application of critical security fixes. And run static code analsys tools to detect other known vulnerabilities. +TBD: Generic Description # What kind of security releases covered? -Spryker Code Upgrader service helps you with vulnerabilities form these three sources: +The static code analysis tools provide the capability to detect various known vulnerabilities. + +These tools assist in identifying and preventing potential security risks from these sources: 1. Spryker Security releases 2. PHP Ecosystem 3. NPM Ecosystem ## Spryker Security releases -1. What is that. -Example of a security release in the release app. Screenshot? -2. How to receive them as an upgrade via SCU -- emphasise the prio of security releases vs others -- explain that it works between majors -- explain that major upgrade will need to be done manually -3. How to detect vulnerabilities via Evaluator -> link to respective evaluator pages -- How it works under the hood internally etc. +Security release is a type of release that aims to deliver a security vulnerability fixes, rather than introducing new features or functionalities. +The example of security release is [https://api.release.spryker.com/release-group/4753](https://api.release.spryker.com/release-group/4753) + +The security releases are applied alongside other releases, but the security release being prioritized and delivered first, ensuring the fast delivery of critical security updates. + +Automatic installation of security releases is only available between the major version releases. However, the major releases require manual installation, similar to all major releases. + +[Evaluator analysis tool](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html) can be used to detect if there are any security fixes available for the Spryker modules in your project. +It has the corresponding [Spryker security checker](docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-security-checker.md) for that. ## PHP Ecosystem -1. What is that. -2. How to detect vulnerabilities via Evaluator -> link to respective evaluator pages -- How it works under the hood internally etc. +The PHP ecosystem refers to everything related to the PHP code, which includes the Spryker PHP conventions and rules. + +To detect violations related to it [Evaluator analysis tool](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html) can be used. + +The Evaluator checkers responsible for that: +- [Additional logic in dependency provider checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/additional-logic-in-dependency-provider.html) +- [Container set function checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/container-set-function.html) +- [Dead code checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/dead-code-checker.html) +- [Minimum allowed shop version checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/minimum-allowed-shop-version.html) +- [Multidimensional array checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/multidimensional-array.html) +- [Open-source vulnerabilities checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/open-source-vulnerabilities.html) +- [PHP versions checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/php-version.html) +- [Plugin registration with restrictions checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/plugin-registration-with-restrintions.html) +- [Single plugin argument checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/single-plugin-argument.html) +- [Spryker dev packages checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-dev-packages-checker.html) +- [Upgradability guidelines checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/upgradability-guidelines.html) ## NPM Ecosystem -1. What is that. -2. How to detect vulnerabilities via Evaluator -> link to respective evaluator pages -- How it works under the hood internally etc. -- Explain critical vs info etc on the evaluator pages +The NPM ecosystem refers to everything related to the packages and tools available through the NPM. +NPM violations can be detected by [Evaluator analysis tool](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html) with the corresponding [NPM checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/npm-checker.html) for that. diff --git a/docs/scu/dev/features/upgrade-verification.md b/docs/scu/dev/features/upgrade-verification.md index 15a55375223..0dbdafc5d6b 100644 --- a/docs/scu/dev/features/upgrade-verification.md +++ b/docs/scu/dev/features/upgrade-verification.md @@ -6,16 +6,25 @@ template: concept-topic-template It is very important for Spryker Code Upgrader to ensure stability of the upgrades. On the one hand you have your automated tests that you rely on, those tests are run in your CI system and you use them before you merge the pull requested created by Spryker Code Upgrader. On the other hand and in addition we run a number of code checks to offer an early warning system even without having a full context or knowledge of your project. -# What kind of validations we run? +# Validations and warnings -- Major code releases -- PHP Broken Files (phpstan) -- Conflict between your class that extended a private class in a Spryker module and when Spryker changed their class in the release -- Module name conflict checker -- Release integration warnings -- Upgrader warnings +The upgrader offers validations ensure the accuracy and safety of the upgrade process. +The warnings provide guidance on potential risks or necessary actions for a successful upgrade. + +Warning types: +- Major code releases warning. + All the major releases should be installed manually to avoid the BC breaks. +- PHP Broken Files. + Phpstan checks project code after each release application and provides corresponding warnings. +- Conflict between project class, which extends a private class in a Spryker module, and a changes made by Spryker in their latest release. + To resolve this conflict need to re-write custom class with the necessary updates. +- Module name conflict warnings. + Custom project module has the same name with spryker released module and should be renamed. +- Release integration warnings (warnings related to the integration process) +- Upgrader warnings (warnings related to the upgrader process) # What to do when you see these warnings in the PR? -Generic explanation about how to check a file in PHP Storm -> fix the file, rename module or class, recheck the inherited class to be compatible with the base one. +In most cases, warnings come with specific information that helps you identify the class or file needed to fix the issue. +Most of these issues are easily fixable by an IDE. From c0e4e9579c9428aae2d42f981d053154e7c89278 Mon Sep 17 00:00:00 2001 From: Volodymyr Lunov Date: Mon, 9 Oct 2023 15:05:03 +0200 Subject: [PATCH 03/14] Extend secuity description and minor corrections. --- ...ointegration-of-spryker-module-releases.md | 46 +++++++++---------- docs/scu/dev/features/security-upgrades.md | 7 ++- docs/scu/dev/features/upgrade-verification.md | 10 ++-- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md index 9ed7dc08860..526472e0a85 100644 --- a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md +++ b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md @@ -11,33 +11,33 @@ With Spryker Code Upgrader, the process of integrating plugins, configuration up As the result the manual step can be skipped when engineers have to understand and apply code changes by themselves in order to add new features in the project. Supported extension points: -- Configure - - module - - environment -- Copy module files -- Add/Remove - - plugin - - navigation - - widget - - glue relationship -- Add - - transfer - - db schema - -# What is release rating -The release rating is a measure of the integrability coverage of each spryker release, representing the percentage of integrated plugins, configurations, schemas, and other components. -This rating is determined through internal testing, where the updated code is compared with the released code to assess the level of integration achieved. - -There are some kind of releases that provide only dependency updates without any code integrations (so called module-only releases). Such releases have 100% coverage. - -The rating for each applied release can be found in the upgrader pull request description. +- Configuration + - Module + - Environment +- Copying module files +- Adding/Removing + - Plugin + - Navigation element + - Widget + - Glue relationship +- Adding + - Transfer definition + - DB schema definition + +# What is a release rating +The release rating is a measure of the integrability coverage of each Spryker release, representing the percentage of automatically integratable plugins, configurations, schemas, and other components. +This rating is determined during internal testing, where the generated integration code is compared with the manually released code to assess the level of integration achieved. If both are equal, then the release is fully integratable. + +There are some kind of releases that provide only dependency updates without any code integrations (so called module-only releases). Such releases have 100% coverage. + +The rating for each suggested release can be found in the Upgrader pull request description. # How to enable and configure -By default, the Integrator is enabled. It applies integrations of releases that have rating of more than 70% (this threshold can be configured through the spryker CI configuration). +By default, the Integrator is enabled. It applies integrations of releases with rating 70% or more (this threshold can be configured through the spryker CI configuration). -It is important to note that after the integration process is completed, a style fixer is applied to the updated files. It's recommended for the project to have its own style fixer to expose project-specific code style conventions. +It is important to note that after the integration process is completed, a style fixer is applied to the changed files. It's recommended for the project to have its own style fixer to expose project-specific code style conventions. # What to do if you see a generated code, that is not valid 1. Make sure that your project code follows the Upgradability Guidelines and passes the [Evaluator check](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html). -2. You can try manually updating the generated code as a quick fix. +2. You can try manually correcting the generated code as a quick fix. 3. If none of the above solutions work, please contact us for further assistance. diff --git a/docs/scu/dev/features/security-upgrades.md b/docs/scu/dev/features/security-upgrades.md index f846e9bd0ac..9ef78792ae3 100644 --- a/docs/scu/dev/features/security-upgrades.md +++ b/docs/scu/dev/features/security-upgrades.md @@ -4,7 +4,10 @@ description: How Spryker Code Upgrader works with releases related to known secu template: concept-topic-template --- -TBD: Generic Description +Being on top of security releases of your vendor or 3rd-parties is very crusial: +* *Vulnerability Mitigation*: Security updates often address known vulnerabilities or weaknesses in software. Installing these updates promptly helps to mitigate these vulnerabilities, reducing the risk of unauthorized access, data breaches, or malicious activities. +* *Enhanced Protection and risk mitigation*: Security updates typically include patches and improvements that enhance the overall security of the system. +* *Regulatory Compliance*: Many regulatory bodies require organizations to maintain up-to-date security measures, which often includes installing security updates promptly. Compliance with these regulations not only reduces legal and financial risks but also helps to maintain a positive reputation and trust with stakeholders and customers. # What kind of security releases covered? @@ -20,7 +23,7 @@ These tools assist in identifying and preventing potential security risks from t Security release is a type of release that aims to deliver a security vulnerability fixes, rather than introducing new features or functionalities. The example of security release is [https://api.release.spryker.com/release-group/4753](https://api.release.spryker.com/release-group/4753) -The security releases are applied alongside other releases, but the security release being prioritized and delivered first, ensuring the fast delivery of critical security updates. +The security releases are applied alongside other releases, but the security release is being prioritized and delivered first, ensuring the fast delivery of critical security updates. Automatic installation of security releases is only available between the major version releases. However, the major releases require manual installation, similar to all major releases. diff --git a/docs/scu/dev/features/upgrade-verification.md b/docs/scu/dev/features/upgrade-verification.md index 0dbdafc5d6b..562acfb0e56 100644 --- a/docs/scu/dev/features/upgrade-verification.md +++ b/docs/scu/dev/features/upgrade-verification.md @@ -4,7 +4,7 @@ description: How Spryker Code Upgrader actively detects and warns you when your template: concept-topic-template --- -It is very important for Spryker Code Upgrader to ensure stability of the upgrades. On the one hand you have your automated tests that you rely on, those tests are run in your CI system and you use them before you merge the pull requested created by Spryker Code Upgrader. On the other hand and in addition we run a number of code checks to offer an early warning system even without having a full context or knowledge of your project. +It is very important for Spryker Code Upgrader to ensure stability of the upgrades. On the one hand you have your automated tests that you rely on, those tests are run in your CI system and you use them before you merge the pull request created by Spryker Code Upgrader. On the other hand and in addition we run a number of code checks to offer an early warning system even without having a full context or knowledge of your project. # Validations and warnings @@ -13,11 +13,11 @@ The warnings provide guidance on potential risks or necessary actions for a succ Warning types: - Major code releases warning. - All the major releases should be installed manually to avoid the BC breaks. -- PHP Broken Files. + All the major releases should be installed manually to integrate the BC breaks. +- PHP Broken Files. Phpstan checks project code after each release application and provides corresponding warnings. - Conflict between project class, which extends a private class in a Spryker module, and a changes made by Spryker in their latest release. - To resolve this conflict need to re-write custom class with the necessary updates. + To resolve this conflict you need to re-write the custom class with the necessary changes. - Module name conflict warnings. Custom project module has the same name with spryker released module and should be renamed. - Release integration warnings (warnings related to the integration process) @@ -26,5 +26,5 @@ Warning types: # What to do when you see these warnings in the PR? In most cases, warnings come with specific information that helps you identify the class or file needed to fix the issue. -Most of these issues are easily fixable by an IDE. +Most of these issues are easily fixable in your IDE. From 94c174c80cca770ed3a85d261a7fb05e02b1d87d Mon Sep 17 00:00:00 2001 From: Sergey Romankov Date: Mon, 9 Oct 2023 16:21:44 +0300 Subject: [PATCH 04/14] SDK-4673 review fixes --- .../autointegration-of-spryker-module-releases.md | 4 ++-- docs/scu/dev/features/security-upgrades.md | 8 -------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md index 9ed7dc08860..e78a366a07d 100644 --- a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md +++ b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md @@ -10,7 +10,7 @@ Spryker architecture provides extensibility of different modules by using extens With Spryker Code Upgrader, the process of integrating plugins, configuration updates, adding new translations, and other code changes is automated. As the result the manual step can be skipped when engineers have to understand and apply code changes by themselves in order to add new features in the project. -Supported extension points: +Extension points that upgrader supports: - Configure - module - environment @@ -28,7 +28,7 @@ Supported extension points: The release rating is a measure of the integrability coverage of each spryker release, representing the percentage of integrated plugins, configurations, schemas, and other components. This rating is determined through internal testing, where the updated code is compared with the released code to assess the level of integration achieved. -There are some kind of releases that provide only dependency updates without any code integrations (so called module-only releases). Such releases have 100% coverage. +There are type of releases that provide only dependency updates without any code integrations (so called module-only releases). Such releases have 100% coverage. The rating for each applied release can be found in the upgrader pull request description. diff --git a/docs/scu/dev/features/security-upgrades.md b/docs/scu/dev/features/security-upgrades.md index f846e9bd0ac..8757f744928 100644 --- a/docs/scu/dev/features/security-upgrades.md +++ b/docs/scu/dev/features/security-upgrades.md @@ -33,17 +33,9 @@ The PHP ecosystem refers to everything related to the PHP code, which includes t To detect violations related to it [Evaluator analysis tool](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html) can be used. The Evaluator checkers responsible for that: -- [Additional logic in dependency provider checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/additional-logic-in-dependency-provider.html) -- [Container set function checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/container-set-function.html) -- [Dead code checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/dead-code-checker.html) -- [Minimum allowed shop version checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/minimum-allowed-shop-version.html) -- [Multidimensional array checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/multidimensional-array.html) - [Open-source vulnerabilities checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/open-source-vulnerabilities.html) - [PHP versions checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/php-version.html) -- [Plugin registration with restrictions checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/plugin-registration-with-restrintions.html) -- [Single plugin argument checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/single-plugin-argument.html) - [Spryker dev packages checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-dev-packages-checker.html) -- [Upgradability guidelines checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/upgradability-guidelines.html) ## NPM Ecosystem The NPM ecosystem refers to everything related to the packages and tools available through the NPM. From 8148085ab3e3e5a91c54c26398d7026e2a042d7f Mon Sep 17 00:00:00 2001 From: Sergey Romankov Date: Mon, 9 Oct 2023 16:26:32 +0300 Subject: [PATCH 05/14] SDK-4673 review fixes --- .../features/autointegration-of-spryker-module-releases.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md index 526472e0a85..ffee6eb4849 100644 --- a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md +++ b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md @@ -10,7 +10,7 @@ Spryker architecture provides extensibility of different modules by using extens With Spryker Code Upgrader, the process of integrating plugins, configuration updates, adding new translations, and other code changes is automated. As the result the manual step can be skipped when engineers have to understand and apply code changes by themselves in order to add new features in the project. -Supported extension points: +Extension points that upgrader supports: - Configuration - Module - Environment @@ -28,7 +28,7 @@ Supported extension points: The release rating is a measure of the integrability coverage of each Spryker release, representing the percentage of automatically integratable plugins, configurations, schemas, and other components. This rating is determined during internal testing, where the generated integration code is compared with the manually released code to assess the level of integration achieved. If both are equal, then the release is fully integratable. -There are some kind of releases that provide only dependency updates without any code integrations (so called module-only releases). Such releases have 100% coverage. +There are type of releases that provide only dependency updates without any code integrations (so called module-only releases). Such releases have 100% coverage. The rating for each suggested release can be found in the Upgrader pull request description. From 20eefb118a94fc705904f9e1376d338fb1f40865 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 17 Oct 2023 14:33:49 +0300 Subject: [PATCH 06/14] rename --- ...ointegration-of-spryker-module-releases.md | 43 ------------------- .../dev/features/integrating-code-releases.md | 43 +++++++++++++++++++ 2 files changed, 43 insertions(+), 43 deletions(-) delete mode 100644 docs/scu/dev/features/autointegration-of-spryker-module-releases.md create mode 100644 docs/scu/dev/features/integrating-code-releases.md diff --git a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md b/docs/scu/dev/features/autointegration-of-spryker-module-releases.md deleted file mode 100644 index ffee6eb4849..00000000000 --- a/docs/scu/dev/features/autointegration-of-spryker-module-releases.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Integration of Code Releases into your project repository -description: How Spryker Code Upgrader automatically integreates code releases into your code base -template: concept-topic-template ---- - -# Challenges of integrating Spryker Code Releases - -Spryker architecture provides extensibility of different modules by using extension points in the project code. -With Spryker Code Upgrader, the process of integrating plugins, configuration updates, adding new translations, and other code changes is automated. -As the result the manual step can be skipped when engineers have to understand and apply code changes by themselves in order to add new features in the project. - -Extension points that upgrader supports: -- Configuration - - Module - - Environment -- Copying module files -- Adding/Removing - - Plugin - - Navigation element - - Widget - - Glue relationship -- Adding - - Transfer definition - - DB schema definition - -# What is a release rating -The release rating is a measure of the integrability coverage of each Spryker release, representing the percentage of automatically integratable plugins, configurations, schemas, and other components. -This rating is determined during internal testing, where the generated integration code is compared with the manually released code to assess the level of integration achieved. If both are equal, then the release is fully integratable. - -There are type of releases that provide only dependency updates without any code integrations (so called module-only releases). Such releases have 100% coverage. - -The rating for each suggested release can be found in the Upgrader pull request description. - -# How to enable and configure -By default, the Integrator is enabled. It applies integrations of releases with rating 70% or more (this threshold can be configured through the spryker CI configuration). - -It is important to note that after the integration process is completed, a style fixer is applied to the changed files. It's recommended for the project to have its own style fixer to expose project-specific code style conventions. - -# What to do if you see a generated code, that is not valid -1. Make sure that your project code follows the Upgradability Guidelines and passes the [Evaluator check](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html). -2. You can try manually correcting the generated code as a quick fix. -3. If none of the above solutions work, please contact us for further assistance. diff --git a/docs/scu/dev/features/integrating-code-releases.md b/docs/scu/dev/features/integrating-code-releases.md new file mode 100644 index 00000000000..d9efaf6b833 --- /dev/null +++ b/docs/scu/dev/features/integrating-code-releases.md @@ -0,0 +1,43 @@ +--- +title: Integrating code releases +description: Spryker Code Upgrader automatically integrates code releases +template: concept-topic-template +--- + +Spryker architecture provides extensibility of different modules by using extension points in the project code. With Spryker Code Upgrader, the process of integrating plugins, configuration updates, adding new translations, and other code changes is automated. As a result, to add new features, developers don't need to manually apply code changes. + +The upgrader supports the following extension points: +- Configuration: + - Module + - Environment +- Copying module files +- Adding and removing the following: + - Plugin + - Navigation element + - Widget + - Glue relationship +- Adding the following: + - Transfer definition + - DB schema definition + +## Release rating + +The release rating is a measure of the integrability coverage of a code release. It represents the percentage of automatically integratable plugins, configurations, schemas, and other components. + +This rating is determined during internal testing, where the generated integration code is compared with the manually released code to assess the level of integration achieved. If both are equal, then the release is fully integratable. + +There are type of releases that provide only dependency updates without any code integrations, so-called module-only releases. Such releases have 100% coverage. + +The Upgrader's PRs contain the rating for the suggested releases. + +# Enable and configure + +The Integrator is enabled by default. It integrates the releases with rating 70% or more. You can adjust this treshold to your requirements in Spryker CI. + +After a release is integrated, a style fixer is applied to the changed files. We recommend implementing your own style fixer to expose project-specific code style conventions. + +# What to do if you see a generated code, that is not valid + +1. Make sure that your project code follows the Upgradability Guidelines and passes the [Evaluator check](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html). +2. You can try manually correcting the generated code as a quick fix. +3. If none of the above solutions work, please contact us for further assistance. From 81cea2b71a6a17dca428031e2e2dc660dfa0b127 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Tue, 17 Oct 2023 15:05:37 +0300 Subject: [PATCH 07/14] rename --- .../features/integrating-security-releases.md | 32 +++++++++++++ docs/scu/dev/features/security-upgrades.md | 46 ------------------- 2 files changed, 32 insertions(+), 46 deletions(-) create mode 100644 docs/scu/dev/features/integrating-security-releases.md delete mode 100644 docs/scu/dev/features/security-upgrades.md diff --git a/docs/scu/dev/features/integrating-security-releases.md b/docs/scu/dev/features/integrating-security-releases.md new file mode 100644 index 00000000000..7234527c1f6 --- /dev/null +++ b/docs/scu/dev/features/integrating-security-releases.md @@ -0,0 +1,32 @@ +--- +title: Integrating security releases +description: How Spryker Code Upgrader works with releases related to known security vulnerabilities +template: concept-topic-template +--- + +Being on top of security releases of your vendor or third parties is very crucial: +* *Vulnerability mitigation*: Security updates often address known vulnerabilities or weaknesses in software. Installing these updates helps to mitigate these vulnerabilities, reducing the risk of unauthorized access, data breaches, or malicious activities. +* *Enhanced protection and risk mitigation*: Security updates typically include patches and improvements that enhance the overall security of the system. +* *Regulatory compliance*: Many regulatory bodies require organizations to maintain up-to-date security measures, which often includes installing security updates promptly. Compliance with these regulations reduces legal and financial risks and helps to maintain a positive reputation and trust with stakeholders and customers. + +## Coverage of security releases + +The static code analysis tools provide the capability to detect various known vulnerabilities. These tools assist in identifying and preventing potential security risks from the following sources: +* Spryker security releases +* PHP ecosystem +* NPM ecosystem + +## Spryker Security releases + +A security release is a type of release that aims to deliver vulnerability fixes rather than introducing new features or functionalities. +Here's an example of a security release: [4753](https://api.release.spryker.com/release-group/4753). + +Even though security releases are applied alongside other releases, they are prioritized to ensure a quick delivery of critical security updates. + +## Installing security releases + +Automatic installation of security releases is only available for minor releases. The major releases require a manual installation. + +## Checking for available security fixes + +To check for available security fixes for your project, [run the evaluator tool](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html). diff --git a/docs/scu/dev/features/security-upgrades.md b/docs/scu/dev/features/security-upgrades.md deleted file mode 100644 index 436f10762db..00000000000 --- a/docs/scu/dev/features/security-upgrades.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Handling Security Releases by Spryker Code Upgrader -description: How Spryker Code Upgrader works with releases related to known security vulnerabilities -template: concept-topic-template ---- - -Being on top of security releases of your vendor or 3rd-parties is very crusial: -* *Vulnerability Mitigation*: Security updates often address known vulnerabilities or weaknesses in software. Installing these updates promptly helps to mitigate these vulnerabilities, reducing the risk of unauthorized access, data breaches, or malicious activities. -* *Enhanced Protection and risk mitigation*: Security updates typically include patches and improvements that enhance the overall security of the system. -* *Regulatory Compliance*: Many regulatory bodies require organizations to maintain up-to-date security measures, which often includes installing security updates promptly. Compliance with these regulations not only reduces legal and financial risks but also helps to maintain a positive reputation and trust with stakeholders and customers. - -# What kind of security releases covered? - -The static code analysis tools provide the capability to detect various known vulnerabilities. - -These tools assist in identifying and preventing potential security risks from these sources: -1. Spryker Security releases -2. PHP Ecosystem -3. NPM Ecosystem - -## Spryker Security releases - -Security release is a type of release that aims to deliver a security vulnerability fixes, rather than introducing new features or functionalities. -The example of security release is [https://api.release.spryker.com/release-group/4753](https://api.release.spryker.com/release-group/4753) - -The security releases are applied alongside other releases, but the security release is being prioritized and delivered first, ensuring the fast delivery of critical security updates. - -Automatic installation of security releases is only available between the major version releases. However, the major releases require manual installation, similar to all major releases. - -[Evaluator analysis tool](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html) can be used to detect if there are any security fixes available for the Spryker modules in your project. -It has the corresponding [Spryker security checker](docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-security-checker.md) for that. - -## PHP Ecosystem -The PHP ecosystem refers to everything related to the PHP code, which includes the Spryker PHP conventions and rules. - -To detect violations related to it [Evaluator analysis tool](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html) can be used. - -The Evaluator checkers responsible for that: -- [Open-source vulnerabilities checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/open-source-vulnerabilities.html) -- [PHP versions checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/php-version.html) -- [Spryker dev packages checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/spryker-dev-packages-checker.html) - -## NPM Ecosystem -The NPM ecosystem refers to everything related to the packages and tools available through the NPM. - -NPM violations can be detected by [Evaluator analysis tool](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html) with the corresponding [NPM checker](/docs/scos/dev/guidelines/keeping-a-project-upgradable/upgradability-guidelines/npm-checker.html) for that. From fcd7851347a915bd9fdfc8ef0b6a36aaf8e74790 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 18 Oct 2023 09:24:21 +0300 Subject: [PATCH 08/14] review --- .../dev/features/integrating-code-releases.md | 16 ++++++++-------- docs/scu/dev/features/upgrade-verification.md | 13 ++++++------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/docs/scu/dev/features/integrating-code-releases.md b/docs/scu/dev/features/integrating-code-releases.md index d9efaf6b833..c247c221376 100644 --- a/docs/scu/dev/features/integrating-code-releases.md +++ b/docs/scu/dev/features/integrating-code-releases.md @@ -4,10 +4,10 @@ description: Spryker Code Upgrader automatically integrates code releases template: concept-topic-template --- -Spryker architecture provides extensibility of different modules by using extension points in the project code. With Spryker Code Upgrader, the process of integrating plugins, configuration updates, adding new translations, and other code changes is automated. As a result, to add new features, developers don't need to manually apply code changes. +Spryker architecture supports the extensions of modules using extension points in the project code. With Spryker Code Upgrader, the process of integrating plugins, configuration updates, adding new translations, and other code changes is automated. As a result, to add new features, developers don't need to apply code changes manually. -The upgrader supports the following extension points: -- Configuration: +The Upgrader supports the following extension points: +- Configuration of the following: - Module - Environment - Copying module files @@ -20,15 +20,15 @@ The upgrader supports the following extension points: - Transfer definition - DB schema definition -## Release rating +## Release integrability rating -The release rating is a measure of the integrability coverage of a code release. It represents the percentage of automatically integratable plugins, configurations, schemas, and other components. +Release integrability rating is a measure of the integrability coverage of a code release. It represents the percentage of automatically integratable plugins, configurations, schemas, and other components. -This rating is determined during internal testing, where the generated integration code is compared with the manually released code to assess the level of integration achieved. If both are equal, then the release is fully integratable. +This rating is determined during the internal testing where the generated integration code is compared with the manually released code to assess the level of integration achieved. If both are equal, then the release is fully auto-integratable. -There are type of releases that provide only dependency updates without any code integrations, so-called module-only releases. Such releases have 100% coverage. +There are types of releases that provide only dependency updates without any code integrations, so-called module-only releases. Such releases have 100% coverage. -The Upgrader's PRs contain the rating for the suggested releases. +Each of the Upgrader's PRs contains the release rating of the suggested release. # Enable and configure diff --git a/docs/scu/dev/features/upgrade-verification.md b/docs/scu/dev/features/upgrade-verification.md index 562acfb0e56..a89ca71440a 100644 --- a/docs/scu/dev/features/upgrade-verification.md +++ b/docs/scu/dev/features/upgrade-verification.md @@ -4,7 +4,7 @@ description: How Spryker Code Upgrader actively detects and warns you when your template: concept-topic-template --- -It is very important for Spryker Code Upgrader to ensure stability of the upgrades. On the one hand you have your automated tests that you rely on, those tests are run in your CI system and you use them before you merge the pull request created by Spryker Code Upgrader. On the other hand and in addition we run a number of code checks to offer an early warning system even without having a full context or knowledge of your project. +It is very important for Spryker Code Upgrader to ensure stability of the upgrades. On the one hand you have your automated tests that you rely on, those tests are run in your CI system and you use them before you merge the pull request created by Spryker Code Upgrader. On the other hand and in addition we run a number of code checks to offer an early warning system. # Validations and warnings @@ -12,14 +12,14 @@ The upgrader offers validations ensure the accuracy and safety of the upgrade pr The warnings provide guidance on potential risks or necessary actions for a successful upgrade. Warning types: -- Major code releases warning. +- Major code release. All the major releases should be installed manually to integrate the BC breaks. -- PHP Broken Files. +- Broken PHP files. Phpstan checks project code after each release application and provides corresponding warnings. -- Conflict between project class, which extends a private class in a Spryker module, and a changes made by Spryker in their latest release. - To resolve this conflict you need to re-write the custom class with the necessary changes. +- Conflict between a project class that extends a private class in a module and the changes introduced in the latest release. + To resolve this conflict you need to rewrite the custom class with the necessary changes. - Module name conflict warnings. - Custom project module has the same name with spryker released module and should be renamed. + A Custom project module matches the name of the spryker released module and should be renamed. - Release integration warnings (warnings related to the integration process) - Upgrader warnings (warnings related to the upgrader process) @@ -27,4 +27,3 @@ Warning types: In most cases, warnings come with specific information that helps you identify the class or file needed to fix the issue. Most of these issues are easily fixable in your IDE. - From 99fb8c37a6e1f2203371a7c38fa901573a62d9c3 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 18 Oct 2023 15:29:43 +0300 Subject: [PATCH 09/14] Update integrating-code-releases.md --- .../dev/features/integrating-code-releases.md | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/docs/scu/dev/features/integrating-code-releases.md b/docs/scu/dev/features/integrating-code-releases.md index c247c221376..c73e3523907 100644 --- a/docs/scu/dev/features/integrating-code-releases.md +++ b/docs/scu/dev/features/integrating-code-releases.md @@ -22,22 +22,26 @@ The Upgrader supports the following extension points: ## Release integrability rating -Release integrability rating is a measure of the integrability coverage of a code release. It represents the percentage of automatically integratable plugins, configurations, schemas, and other components. +Release integrability rating is a measure of the integrability coverage of a code release. It is the percentage of automatically integratable plugins, configurations, schemas, and other components. -This rating is determined during the internal testing where the generated integration code is compared with the manually released code to assess the level of integration achieved. If both are equal, then the release is fully auto-integratable. +This rating is determined during the internal testing where the generated integration code is compared with the manually released code to assess the level of integration achieved. If both are equal, the release is fully auto-integratable. -There are types of releases that provide only dependency updates without any code integrations, so-called module-only releases. Such releases have 100% coverage. +There are types of releases that provide only dependency updates without any code integrations, so-called module-only releases. Such releases are 100% auto-integratable. -Each of the Upgrader's PRs contains the release rating of the suggested release. +## Release integrability rating threshold -# Enable and configure +By default, the Upgrader creates PRs for all the releases with rating 70% or more. The description of the PRs contains the rating of the suggested release. -The Integrator is enabled by default. It integrates the releases with rating 70% or more. You can adjust this treshold to your requirements in Spryker CI. +You can configure the threshold per your requirements in Spryker CI. -After a release is integrated, a style fixer is applied to the changed files. We recommend implementing your own style fixer to expose project-specific code style conventions. +## Implementing and applying style fixers -# What to do if you see a generated code, that is not valid +After a release is integrated, a style fixer is applied to the changed files. We recommend implementing your own style fixer to expose project-specific code and style conventions. -1. Make sure that your project code follows the Upgradability Guidelines and passes the [Evaluator check](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html). -2. You can try manually correcting the generated code as a quick fix. -3. If none of the above solutions work, please contact us for further assistance. +## Fixing generated code + +If you see errors in the generated code, do the following: + +1. Double-check if your code follows the upgradability guidelines by [running the Evaluator](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html). +2. If you see any quick fixes, try manually correcting the errors. +3. Contact us for further assistance. From 02afaccfed3fc19f7c72d5b81d33ce22c113e049 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 18 Oct 2023 15:50:00 +0300 Subject: [PATCH 10/14] review --- .../features/integrating-security-releases.md | 7 ++++--- docs/scu/dev/features/upgrade-verification.md | 19 ++++++++----------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/scu/dev/features/integrating-security-releases.md b/docs/scu/dev/features/integrating-security-releases.md index 7234527c1f6..1f68ee70b1e 100644 --- a/docs/scu/dev/features/integrating-security-releases.md +++ b/docs/scu/dev/features/integrating-security-releases.md @@ -18,13 +18,14 @@ The static code analysis tools provide the capability to detect various known vu ## Spryker Security releases -A security release is a type of release that aims to deliver vulnerability fixes rather than introducing new features or functionalities. -Here's an example of a security release: [4753](https://api.release.spryker.com/release-group/4753). +A security release is a type of release that aims to deliver vulnerability fixes rather than introducing new features or functionalities. Here's an example of a security release: [4753](https://api.release.spryker.com/release-group/4753). -Even though security releases are applied alongside other releases, they are prioritized to ensure a quick delivery of critical security updates. +Even though security releases are applied alongside other releases, they are prioritized to ensure faster delivery of critical security updates. ## Installing security releases +The Upgrader creates PR for security releases in the same way it does for the regular code releases. For more information, see [Integrating code releases](/docs/scu/dev/features/integrating-code-releases.html) + Automatic installation of security releases is only available for minor releases. The major releases require a manual installation. ## Checking for available security fixes diff --git a/docs/scu/dev/features/upgrade-verification.md b/docs/scu/dev/features/upgrade-verification.md index a89ca71440a..2136cbad683 100644 --- a/docs/scu/dev/features/upgrade-verification.md +++ b/docs/scu/dev/features/upgrade-verification.md @@ -15,15 +15,12 @@ Warning types: - Major code release. All the major releases should be installed manually to integrate the BC breaks. - Broken PHP files. - Phpstan checks project code after each release application and provides corresponding warnings. -- Conflict between a project class that extends a private class in a module and the changes introduced in the latest release. - To resolve this conflict you need to rewrite the custom class with the necessary changes. + Phpstan checks the project's code after a release is integrated. To resolve the issue, fix the identified broken files. +- Conflict between a project class that extends a private class in a Spryker module and the changes introduced in the latest release. + To resolve the conflict, rewrite the custom class with the necessary changes. - Module name conflict warnings. - A Custom project module matches the name of the spryker released module and should be renamed. -- Release integration warnings (warnings related to the integration process) -- Upgrader warnings (warnings related to the upgrader process) - -# What to do when you see these warnings in the PR? - -In most cases, warnings come with specific information that helps you identify the class or file needed to fix the issue. -Most of these issues are easily fixable in your IDE. + A project module matches the name of a Spryker module. To resolve the issue, rename the project-level module. +- Release integration warnings. + Resolve the issue using the instructions in the warning. +- Upgrader warnings + Resolve the issue using the instructions in the warning. From 5c3ed0e9d70ef7f7e328d3db6a9ee7118513c230 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Wed, 18 Oct 2023 17:35:19 +0300 Subject: [PATCH 11/14] review --- .../202204.0/configure-services.md | 2 +- .../dev/features/integrating-code-releases.md | 3 +- docs/scu/dev/features/upgrade-verification.md | 28 +++++++------------ 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/docs/scos/dev/the-docker-sdk/202204.0/configure-services.md b/docs/scos/dev/the-docker-sdk/202204.0/configure-services.md index 03fe52093c1..936fecfc05f 100644 --- a/docs/scos/dev/the-docker-sdk/202204.0/configure-services.md +++ b/docs/scos/dev/the-docker-sdk/202204.0/configure-services.md @@ -501,7 +501,7 @@ Once New Relic is enabled, in the New Relic dashboard, you may see either `compa {% info_block infoBox %} -If you update the name of an application, [contact support]((/docs/scos/user/intro-to-spryker/support/how-to-use-the-support-portal.html) to update the changes in your APM. +If you update the name of an application, [contact support](/docs/scos/user/intro-to-spryker/support/how-to-use-the-support-portal.html) to update the changes in your APM. {% endinfo_block %} diff --git a/docs/scu/dev/features/integrating-code-releases.md b/docs/scu/dev/features/integrating-code-releases.md index c73e3523907..8af4f14a7be 100644 --- a/docs/scu/dev/features/integrating-code-releases.md +++ b/docs/scu/dev/features/integrating-code-releases.md @@ -43,5 +43,6 @@ After a release is integrated, a style fixer is applied to the changed files. We If you see errors in the generated code, do the following: 1. Double-check if your code follows the upgradability guidelines by [running the Evaluator](/docs/scos/dev/guidelines/keeping-a-project-upgradable/run-the-evaluator-tool.html). + After fixing the upgradability issues, close the PR with errors and restart the Upgrader to get a new PR. 2. If you see any quick fixes, try manually correcting the errors. -3. Contact us for further assistance. +3. [Contact us](/docs/scos/user/intro-to-spryker/support/how-to-use-the-support-portal.html) for further assistance. diff --git a/docs/scu/dev/features/upgrade-verification.md b/docs/scu/dev/features/upgrade-verification.md index 2136cbad683..5da6df0097b 100644 --- a/docs/scu/dev/features/upgrade-verification.md +++ b/docs/scu/dev/features/upgrade-verification.md @@ -1,26 +1,18 @@ --- -title: Active detection of incompatibilies +title: Handling upgrade warnings description: How Spryker Code Upgrader actively detects and warns you when your code becomes incompatible with the code in upgraded modules template: concept-topic-template --- -It is very important for Spryker Code Upgrader to ensure stability of the upgrades. On the one hand you have your automated tests that you rely on, those tests are run in your CI system and you use them before you merge the pull request created by Spryker Code Upgrader. On the other hand and in addition we run a number of code checks to offer an early warning system. +To ensure successful upgrades, Spryker Code Upgrader evaluates your project before creating each PR. We recommend implementing your own CI system with tests that should run before you merge PRs. The Upgrader's warning system focuses on preventing upgrade-related issues. -# Validations and warnings - -The upgrader offers validations ensure the accuracy and safety of the upgrade process. The warnings provide guidance on potential risks or necessary actions for a successful upgrade. -Warning types: -- Major code release. - All the major releases should be installed manually to integrate the BC breaks. -- Broken PHP files. - Phpstan checks the project's code after a release is integrated. To resolve the issue, fix the identified broken files. -- Conflict between a project class that extends a private class in a Spryker module and the changes introduced in the latest release. - To resolve the conflict, rewrite the custom class with the necessary changes. -- Module name conflict warnings. - A project module matches the name of a Spryker module. To resolve the issue, rename the project-level module. -- Release integration warnings. - Resolve the issue using the instructions in the warning. -- Upgrader warnings - Resolve the issue using the instructions in the warning. +| WARNING TYPE | HOW TO ADDRESS THE WARNING | +| - | - | +| Major code release | Notifies your about a major release you need to install manually to integrate BC breaks. | +| Broken PHP files | Identifies broken PHP files in the code using Phpstan. To resolve the issue, fix the identified broken files. +| Class conflict | Conflict between a project class that extends a private class in a Spryker module and the changes introduced in the latest release. To resolve the conflict, rewrite the custom class with the necessary changes. | +| Module name conflict | Name of a project module matches the name of a Spryker module. | To resolve the issue, rename the project-level module. +| Release integration | Resolve the issue using the information in the warning. | +| Upgrader-related | Resolve the issue using the information in the warning. | From 9f739319f7f27e9fa2804008ca36c49f6ffff458 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 20 Oct 2023 10:01:47 +0300 Subject: [PATCH 12/14] rename --- .../handling-upgrade-warnings.md} | 8 ++++---- .../integrating-code-releases.md | 0 .../integrating-security-releases.md | 0 3 files changed, 4 insertions(+), 4 deletions(-) rename docs/scu/dev/{features/upgrade-verification.md => integrating-code-releases/handling-upgrade-warnings.md} (73%) rename docs/scu/dev/{features => integrating-code-releases}/integrating-code-releases.md (100%) rename docs/scu/dev/{features => integrating-code-releases}/integrating-security-releases.md (100%) diff --git a/docs/scu/dev/features/upgrade-verification.md b/docs/scu/dev/integrating-code-releases/handling-upgrade-warnings.md similarity index 73% rename from docs/scu/dev/features/upgrade-verification.md rename to docs/scu/dev/integrating-code-releases/handling-upgrade-warnings.md index 5da6df0097b..a25bf988e7a 100644 --- a/docs/scu/dev/features/upgrade-verification.md +++ b/docs/scu/dev/integrating-code-releases/handling-upgrade-warnings.md @@ -4,15 +4,15 @@ description: How Spryker Code Upgrader actively detects and warns you when your template: concept-topic-template --- -To ensure successful upgrades, Spryker Code Upgrader evaluates your project before creating each PR. We recommend implementing your own CI system with tests that should run before you merge PRs. The Upgrader's warning system focuses on preventing upgrade-related issues. +To ensure successful upgrades, Spryker Code Upgrader evaluates your project before creating a PR. If there is anything that might affect the upgrade process, the PR will contain a warning. The Upgrader's warning system focuses on preventing upgrade-related issues. We recommend implementing your own CI system with tests and running it before you merge PRs. -The warnings provide guidance on potential risks or necessary actions for a successful upgrade. +The following table explains each warning type and how to address it. | WARNING TYPE | HOW TO ADDRESS THE WARNING | | - | - | | Major code release | Notifies your about a major release you need to install manually to integrate BC breaks. | -| Broken PHP files | Identifies broken PHP files in the code using Phpstan. To resolve the issue, fix the identified broken files. +| Broken PHP files | Identifies broken PHP files in the code using Phpstan. To resolve the issue, fix the identified broken files. | | Class conflict | Conflict between a project class that extends a private class in a Spryker module and the changes introduced in the latest release. To resolve the conflict, rewrite the custom class with the necessary changes. | -| Module name conflict | Name of a project module matches the name of a Spryker module. | To resolve the issue, rename the project-level module. +| Module name conflict | Name of a project module matches the name of a Spryker module. | To resolve the issue, rename the project-level module. | | Release integration | Resolve the issue using the information in the warning. | | Upgrader-related | Resolve the issue using the information in the warning. | diff --git a/docs/scu/dev/features/integrating-code-releases.md b/docs/scu/dev/integrating-code-releases/integrating-code-releases.md similarity index 100% rename from docs/scu/dev/features/integrating-code-releases.md rename to docs/scu/dev/integrating-code-releases/integrating-code-releases.md diff --git a/docs/scu/dev/features/integrating-security-releases.md b/docs/scu/dev/integrating-code-releases/integrating-security-releases.md similarity index 100% rename from docs/scu/dev/features/integrating-security-releases.md rename to docs/scu/dev/integrating-code-releases/integrating-security-releases.md From 77739036552c31ac43eb11339464ce4653715c20 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 20 Oct 2023 11:20:12 +0300 Subject: [PATCH 13/14] sidebar --- _data/sidebars/scu_dev_sidebar.yml | 8 ++++++++ algolia_config/_pbc_all.yml | 2 +- algolia_config/_scu_dev.yml | 2 +- algolia_config/_sdk_dev.yml | 2 +- .../integrating-security-releases.md | 2 +- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/_data/sidebars/scu_dev_sidebar.yml b/_data/sidebars/scu_dev_sidebar.yml index b65f7ae0bea..08331eff495 100644 --- a/_data/sidebars/scu_dev_sidebar.yml +++ b/_data/sidebars/scu_dev_sidebar.yml @@ -35,6 +35,14 @@ entries: url: /docs/scu/dev/change-default-branch.html - title: Roll back upgrades url: /docs/scu/dev/roll-back-upgrades.html + - title: Integrating code releases + url: /docs/scu/dev/integrating-code-releases/integrating-code-releases.html + nested: + - title: Integrating security releases + url: /docs/scu/dev/integrating-code-releases/integrating-security-releases.html + - title: Handling upgrade warnings + url: /docs/scu/dev/integrating-code-releases/handling-upgrade-warnings.html + - title: Troubleshooting nested: - title: Check Spryker Code Upgrader logs diff --git a/algolia_config/_pbc_all.yml b/algolia_config/_pbc_all.yml index 928953495d7..ddf6f749b7c 100644 --- a/algolia_config/_pbc_all.yml +++ b/algolia_config/_pbc_all.yml @@ -8,7 +8,7 @@ algolia: - docs/scos/user/**/*.md - docs/scos/dev/**/*.md - docs/scu/dev/**/*.md - - docs/ca/dev/spryker-cloud-commerce-os/**/*.md + - docs/ca/dev/**/*.md - docs/fes/dev/**/*.md - docs/acp/user/**/*.md - docs/sdk/dev/**/*.md diff --git a/algolia_config/_scu_dev.yml b/algolia_config/_scu_dev.yml index dad552afc3f..e7739376bc4 100644 --- a/algolia_config/_scu_dev.yml +++ b/algolia_config/_scu_dev.yml @@ -8,7 +8,7 @@ algolia: - docs/scos/user/**/*.md - docs/scos/dev/**/*.md - docs/pbc/all/**/*.md - - docs/ca/dev/spryker-cloud-commerce-os/**/*.md + - docs/ca/dev/**/*.md - docs/fes/dev/**/*.md - docs/acp/user/**/*.md - docs/sdk/dev/**/*.md diff --git a/algolia_config/_sdk_dev.yml b/algolia_config/_sdk_dev.yml index 7a3cd224042..db1ed271029 100644 --- a/algolia_config/_sdk_dev.yml +++ b/algolia_config/_sdk_dev.yml @@ -8,7 +8,7 @@ algolia: - docs/scos/user/**/*.md - docs/scos/dev/**/*.md - docs/scu/dev/**/*.md - - docs/ca/dev/spryker-cloud-commerce-os/**/*.md + - docs/ca/dev/**/*.md - docs/acp/user/**/*.md - docs/fes/dev/**/*.md - docs/pbc/all/**/*.md diff --git a/docs/scu/dev/integrating-code-releases/integrating-security-releases.md b/docs/scu/dev/integrating-code-releases/integrating-security-releases.md index 1f68ee70b1e..4cd3e017258 100644 --- a/docs/scu/dev/integrating-code-releases/integrating-security-releases.md +++ b/docs/scu/dev/integrating-code-releases/integrating-security-releases.md @@ -1,6 +1,6 @@ --- title: Integrating security releases -description: How Spryker Code Upgrader works with releases related to known security vulnerabilities +description: Spryker Code Upgrader prioritizes security releases over regular releases template: concept-topic-template --- From c4a77d0ea33a0d05c2e11591072cf15232ab4483 Mon Sep 17 00:00:00 2001 From: Andrii Tserkovnyi Date: Fri, 20 Oct 2023 14:16:00 +0300 Subject: [PATCH 14/14] Update integrating-security-releases.md --- .../integrating-code-releases/integrating-security-releases.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/scu/dev/integrating-code-releases/integrating-security-releases.md b/docs/scu/dev/integrating-code-releases/integrating-security-releases.md index 4cd3e017258..793786ec70f 100644 --- a/docs/scu/dev/integrating-code-releases/integrating-security-releases.md +++ b/docs/scu/dev/integrating-code-releases/integrating-security-releases.md @@ -24,7 +24,7 @@ Even though security releases are applied alongside other releases, they are pri ## Installing security releases -The Upgrader creates PR for security releases in the same way it does for the regular code releases. For more information, see [Integrating code releases](/docs/scu/dev/features/integrating-code-releases.html) +The Upgrader creates PR for security releases in the same way it does for the regular code releases. For more information, see [Integrating code releases](/docs/scu/dev/integrating-code-releases/integrating-code-releases.html) Automatic installation of security releases is only available for minor releases. The major releases require a manual installation.