Project: Gravitee.io (Orchestration & Management / API Gateway)
File: Workflows.md

Here is the workflow for a standard pull request. ```mermaid stateDiagram-v2 [*] --> setup %% Backends setup --> validate validate --> build build --> test testPlugin: test - plugin testRepository: test - repository build --> testPlugin build --> testRepository sonarRestApi: Sonar - gravitee-apim-rest-api sonarGateway: Sonar - gravitee-apim-gateway sonarDefinition: Sonar - gravitee-apim-definition sonarPlugin: Sonar - gravitee-apim-plugin sonarRepository: Sonar - gravitee-apim-repository test --> sonarRestApi test --> sonarGateway test --> sonarDefinition testPlugin --> sonarPlugin testRepository --> sonarRepository %% Console webUILintConsole: Lint & test APIM Console setup --> webUILintConsole sonarConsole: Sonar - gravitee-apim-console-webui webUILintConsole --> sonarConsole storybook: Build Console Storybook chromatic: console-webui-chromatic-deployment setup --> storybook storybook --> chromatic webUIConsole: Build APIM Console setup --> webUIConsole deployAzure: console-webui-deploy-on-azure-storage webUIConsole --> deployAzure commentPR: console-webui-comment-pr-after-deployment deployAzure --> commentPR %% Portal webUILintPortal: Lint & test APIM Portal setup --> webUILintPortal sonarPortal: Sonar - gravitee-apim-portal-webui webUILintPortal --> sonarPortal webUIPortal: Build APIM Portal setup --> webUIPortal %% others e2eSDK: Generate e2e tests SDK build --> e2eSDK e2eLintBuild: Lint & build APIM e2e perfLintBuild: Lint & build APIM perf e2eSDK --> e2eLintBuild e2eSDK --> perfLintBuild ``` Here is the workflow triggered after a push on any branch containing `merge` or `run-e2e` in its

It's the same as the standard workflow, but with the addition of: the community build the E2E tests the Cypress UI tests ```mermaid stateDiagram-v2 [*] --> setup communityBuild: community-build [*] --> communityBuild %% Backends setup --> validate validate --> build build --> test testPlugin: test - plugin testRepository: test - repository buildImages: build-images build --> testPlugin build --> testRepository build --> buildImages sonarRestApi: Sonar - gravitee-apim-rest-api sonarGateway: Sonar - gravitee-apim-gateway sonarDefinition: Sonar - gravitee-apim-definition sonarPlugin: Sonar - gravitee-apim-plugin sonarRepository: Sonar - gravitee-apim-repository test --> sonarRestApi test --> sonarGateway test --> sonarDefinition testPlugin --> sonarPlugin testRepository --> sonarRepository %% Console webUILintConsole: Lint & test APIM Console setup --> webUILintConsole sonarConsole: Sonar - gravitee-apim-console-webui webUILintConsole --> sonarConsole storybook: Build Console Storybook chromatic: console-webui-chromatic-deployment setup --> storybook storybook --> chromatic webUIConsole: Build APIM Console setup --> webUIConsole deployAzure: console-webui-deploy-on-azure-storage webUIConsole --> deployAzure commentPR: console-webui-comment-pr-after-deployment deployAzure --> commentPR %% Portal webUILintPortal: Lint & test APIM Portal setup --> webUILintPortal sonarPortal: Sonar - gravitee-apim-portal-webui webUILintPortal --> sonarPortal webUIPortal: Build APIM Portal setup --> webUIPortal %% others e2eSDK: Generate e2e tests SDK build --> e2eSDK e2eLintBuild: Lint & build APIM e2e perfLintBuild: Lint & build APIM perf e2eSDK --> e2eLintBuild e2eSDK --> perfLintBuild state joinstatee2e_test <<join>> buildImages --> joinstatee2e_test e2eLintBuild --> joinstatee2e_test e2eTestV3Mongo: Test APIM E2E - v3 - Mongo e2eTestV3JDBC: Test APIM E2E - v3 - JDBC e2eTestV3Bridge: Test APIM E2E - v3 - Bridge e2eTestJupiterMongo: Test APIM E2E - Jupiter - Mongo e2eTestJupiterJDBC: Test APIM E2E - Jupiter - JDBC e2eTestJupiterBridge: Test APIM E2E - Jupiter - Bridge joinstatee2e_test --> e2eTestV3Mongo joinstatee2e_test --> e2eTestV3JDBC joinstatee2e_test --> e2eTestV3Bridge joinstatee2e_test --> e2eTestJupiterMongo joinstatee2e_test --> e2eTestJupiterJDBC joinstatee2e_test --> e2eTestJupiterBridge state joinstatee2e_cypress <<join>> e2eLintBuild --> joinstatee2e_cypress webUIConsole --> joinstatee2e_cypress webUIPortal --> joinstatee2e_cypress buildImages --> joinstatee2e_cypress e2eCypress: Run Cypress UI tests joinstatee2e_cypress --> e2eCypress ``` Here is the workflow triggered after a merge on the `master` or a support branch. It's the same as the standard workflow, but with the addition of: the community build the E2E tests the Cypress UI tests the publish on Artifactory the publish on Nexus the deploy on Azure Dev Environment ```mermaid stateDiagram-v2 [*] --> setup communityBuild: community-build [*] --> communityBuild %% Backends setup --> validate validate --> build build --> test testPlugin: test - plugin testRepository: test - repository buildImages: build-images build --> testPlugin build --> testRepository build --> buildImages sonarRestApi: Sonar - gravitee-apim-rest-api sonarGateway: Sonar - gravitee-apim-gateway sonarDefinition: Sonar - gravitee-apim-definition sonarPlugin: Sonar - gravitee-apim-plugin sonarRepository: Sonar - gravitee-apim-repository test --> sonarRestApi test --> sonarGateway test --> sonarDefinition testPlugin --> sonarPlugin testRepository --> sonarRepository state joinstatepublish <<join>> test --> joinstatepublish testPlugin --> joinstatepublish testRepository --> joinstatepublish publishOnArtifactory: publish-on-artifactory publishOnNexus: publish-on-nexus joinstatepublish --> publishOnArtifactory joinstatepublish --> publishOnNexus %% Console webUILintConsole: Lint & test APIM Console setup --> webUILintConsole sonarConsole: Sonar - gravitee-apim-console-webui webUILintConsole --> sonarConsole storybook: Build Console Storybook chromatic: console-webui-chromatic-deployment setup --> storybook storybook --> chromatic webUIConsole: Build APIM Console setup --> webUIConsole deployAzure: console-webui-deploy-on-azure-storage webUIConsole --> deployAzure commentPR: console-webui-comment-pr-after-deployment deployAzure --> commentPR %% Portal webUILintPortal: Lint & test APIM Portal setup --> webUILintPortal sonarPortal: Sonar - gravitee-apim-portal-webui webUILintPortal --> sonarPortal webUIPortal: Build APIM Portal setup --> webUIPortal %% others e2eSDK: Generate e2e tests SDK build --> e2eSDK e2eLintBuild: Lint & build APIM e2e perfLintBuild: Lint & build APIM perf e2eSDK --> e2eLintBuild e2eSDK --> perfLintBuild state joinstatee2e_test <<join>> buildImages --> joinstatee2e_test e2eLintBuild --> joinstatee2e_test e2eTestV3Mongo: Test APIM E2E - v3 - Mongo e2eTestV3JDBC: Test APIM E2E - v3 - JDBC e2eTestV3Bridge: Test APIM E2E - v3 - Bridge e2eTestJupiterMongo: Test APIM E2E - Jupiter - Mongo e2eTestJupiterJDBC: Test APIM E2E - Jupiter - JDBC e2eTestJupiterBridge: Test APIM E2E - Jupiter -