diff --git a/README.md b/README.md index 409438507..3e1eca70e 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ The SDK simplifies the setup and interaction with SAP AI Core, allowing you to f - [Run the Application Locally](#run-the-application-locally) - [Explore Further Capabilities](#explore-further-capabilities) - [Documentation](#documentation) +- [Build the Project](#build-the-project) - [FAQs](#faqs) - [Contribute, Support and Feedback](#contribute-support-and-feedback) - [Security / Disclosure](#security--disclosure) @@ -137,6 +138,18 @@ For more detailed information and advanced usage, please refer to the following: For updating versions, please refer to the [**Release Notes**](docs/release-notes/release-notes-0-to-14.md). +## Build the Project + +You can build the project using Maven: + +```shell +mvn clean install -DskipTests +``` + +This will install the current `SNAPSHOT` version of the project into your local Maven repository. + +For SAP internal development, you can also use `SNAPSHOT` builds from the [internal](https://int.repositories.cloud.sap/ui/repos/tree/General/proxy-build-snapshots-cloudsdk/com/sap/ai/sdk) and [internet-facing](https://common.repositories.cloud.sap/artifactory/build-snapshots-cloudsdk/com/sap/ai/sdk/) Artifactory. + ## FAQs ### _"How to add a custom header to AI Core requests?"_ diff --git a/docs/adrs/005-release-strategy.md b/docs/adrs/005-release-strategy.md index 56c125625..db91c3137 100644 --- a/docs/adrs/005-release-strategy.md +++ b/docs/adrs/005-release-strategy.md @@ -27,11 +27,12 @@ Since most new features will rely on generated code, the options for Java are li Testing can be performed against multiple landscapes and can vary based on the type of tests. - Unit tests may use test data from any landscape (including development landscapes) manually tested with e.g. Bruno. -- E2E tests may use canary or production landscapes. +- E2E tests may use integration, canary or production landscapes. In case of multiple landscapes: - GitHub matrix builds can be used to easily testing against multiple landscapes - For any differences between landscapes, test toggles need to be considered (e.g. `@EnabledIfSystemProperty`) - Such toggles come with a bit of additional maintenance cost, as they need to be removed once the feature is released to all landscapes + - Alternatively, E2E tests may be executed manually during development against any landscape ## Release @@ -56,41 +57,39 @@ However, here there would be more freedom in when a feature toggle is enabled fo We decide as follows: -> 1. New AI SDK versions are released roughly every 2 weeks, shortly after new AI Core versions have been released to _production EU10_. -> 2. Any _publicly available release_ of the AI SDKs must only contain _public API_ for AI Core features available in _production EU10_ under the service plan _extended_. -> 3. E2E tests run against canary EU12 and production EU10 using test toggles. +> 1. New AI SDK versions are released roughly every 2 weeks, shortly after new AI Core versions have been released to **all** landscapes. +> 2. Any _publicly available release_ of the AI SDKs must only contain _public API_ for AI Core features available in **any** landscape under the service plan _extended_. +> 3. E2E tests run automatically against canary only (EU12 for Java and JS, EU10 for Python). Production EU10 can be used for manual test runs. Further explanations and notes: - Any features released exclusively under the `sap-internal` plan are not supported. - Similarly, any features released only to specific landscapes (other than prod EU10) are not supported. -- There will be no releases of the SDKs to internal artifactory. +- There will be no stable releases of the SDKs to internal artifactory. + For Java, we deliver SNAPSHOT versions to Artifactory, for JS we deliver canary releases to NPM. - Please note that the following is allowed: - Public API in an unreleased SDK version for unreleased AI Core features. Notably, this will **block** the release of the SDK until the AI Core feature is released publicly. - Internal code in a released SDK version for unreleased AI Core features. +- Testing against additional landscapes is possible, but requires maintaining test toggles. ### An Example Development Lifecycle Iteration The following depicts a development flow where the AI SDK development steps are performed as soon as possible. 1. A new AI Core feature is being developed. -2. A PR is raised on the AI SDK with a corresponding implementation, but so far not E2E-tested. - - Potentially aided by unit tests based on test data manually copied from e.g. Bruno. + - (optional) A preview of the changes is created on-demand on the AI SDK. - Generated code is created from a development version of the relevant spec file. -3. (+2 weeks later) The feature is released to EU12 canary landscape. -4. The AI SDK PR is enhanced: - - With an updated spec file. - - With an E2E test against canary. -5. The AI SDK PR is merged. -6. (+1 week later) The feature is released to EU10 production landscape. -7. The E2E test is updated to now also run against production. -8. The AI SDK is released publicly. + - Potentially aided by unit tests based on test data manually copied from e.g. Bruno. +2. (+2 weeks later) The feature is released to EU12 canary landscape. +3. An AI SDK PR is automatically raised with an updated spec file. + - If required, E2E tests are enhanced to cover the additional feature scope. +4. The AI SDK PR is merged. +5. (+1 week later) The feature is released to EU10 production landscape. +6. The AI SDK is released publicly. In case of delays in the release process of AI Core: -- If step (3) is delayed, the open PR may be closed and re-opened later -- If step (5) is delayed, we consider 3 options: +- If step (6) is delayed, we consider 3 options: 1. The PR is reverted, together with potentially other related PRs 2. The AI SDK release is delayed equally 3. The AI SDK is released anyway with exceptional PO approval @@ -98,5 +97,5 @@ In case of delays in the release process of AI Core: ## Further Links - The single source of truth for all landscapes is in [mlf-gitops](https://github.tools.sap/MLF-prod/mlf-gitops-prod) - - In particular, we care about the [version of orchestration in Prod EU10](https://github.tools.sap/MLF-prod/mlf-gitops-prod/blob/aws.eu-central-1.prod-eu/current/services/llm-orchestration/source/Chart.yaml) -- [This JIRA ticket](https://jira.tools.sap/browse/AI-44024) tracks releases \ No newline at end of file + - In particular, we care about the [version of orchestration](https://github.tools.sap/MLF-prod/mlf-gitops-prod/blob/aws.eu-central-1.prod-eu/current/services/llm-orchestration/source/Chart.yaml) +- [This JIRA ticket](https://jira.tools.sap/browse/AI-44024) tracks releases