057956181e11e2531da413fd8089524a3ca38100
azure-pipelines/main.yml
| ... | ... | @@ -28,7 +28,7 @@ resources: |
| 28 | 28 | # For available versions, please have a look here (use the tag, not the release name): |
| 29 | 29 | # https://github.tools.sap/SAPMobile/sap-mobile-pipeline/releases |
| 30 | 30 | # ---------- |
| 31 | - ref: 'refs/tags/3.13.3' |
|
| 31 | + #ref: 'refs/tags/3.13.3' |
|
| 32 | 32 | |
| 33 | 33 | ################################################################# |
| 34 | 34 | ######################### Pipeline Start ######################## |
| ... | ... | @@ -53,3 +53,4 @@ extends: |
| 53 | 53 | # to determine which app is to be built/released/signed |
| 54 | 54 | # Default: Race Manager App |
| 55 | 55 | momaAssemblyId: 189 |
| 56 | + naasReleaseEnabled: true |
configuration/createHudsonJobForBug.sh
| ... | ... | @@ -5,8 +5,7 @@ if [ $# -eq 0 ]; then |
| 5 | 5 | echo |
| 6 | 6 | echo "Constructs a Hudson job for the given bugid" |
| 7 | 7 | echo "Example: $0 4221 [ {Bugzilla-API-Key} ]" |
| 8 | - echo "Builds a Hudson job for bug branch bug4221, linking to the Bugzilla bug and copying a release" |
|
| 9 | - echo "from Github to https://releases.sapsailing.com if the Github Actions Workflow built one." |
|
| 8 | + echo "Builds a Hudson job for bug branch bug4221, and linking to the Bugzilla bug." |
|
| 10 | 9 | echo "If a Bugzilla API Key is provided (may also be specified in the BUGZILLA_API_KEY environment" |
| 11 | 10 | echo "variable), it is used to add the bug summary to the build job's description." |
| 12 | 11 | echo "Get a Bugzilla API Key for your user account at https://bugzilla.sapsailing.com/bugzilla/userprefs.cgi?tab=apikey" |
java/com.sap.sailing.www/release_notes_admin.html
| ... | ... | @@ -23,6 +23,11 @@ |
| 23 | 23 | <div class="mainContent"> |
| 24 | 24 | <h2 class="releaseHeadline">Release Notes - Administration Console</h2> |
| 25 | 25 | <div class="innerContent"> |
| 26 | + <h2 class="articleSubheadline">January 2026</h2> |
|
| 27 | + <ul class="bulletList"> |
|
| 28 | + <li>Extended RabbitMQ channel heartbeat interval to 1h. This will suffice even for |
|
| 29 | + longer garbage collection cycles that may happen during replica set start-up.</li> |
|
| 30 | + </ul> |
|
| 26 | 31 | <h2 class="articleSubheadline">December 2025</h2> |
| 27 | 32 | <ul class="bulletList"> |
| 28 | 33 | <li>Added boat class Fareast 28R.</li> |
java/com.sap.sse.replication/src/com/sap/sse/replication/RabbitMQConnectionFactoryHelper.java
| ... | ... | @@ -5,7 +5,7 @@ import com.rabbitmq.client.ConnectionFactory; |
| 5 | 5 | public class RabbitMQConnectionFactoryHelper { |
| 6 | 6 | /** |
| 7 | 7 | * Creates a RabbitMQ {@link ConnectionFactory} that has a connection timeout of 30s, a network recovery interval of |
| 8 | - * 10s, a heartbeat interval of 6 minutes, and that uses automatic recovery and topology recovery. |
|
| 8 | + * 10s, a heartbeat interval of 30 minutes, and that uses automatic recovery and topology recovery. |
|
| 9 | 9 | */ |
| 10 | 10 | public static ConnectionFactory getConnectionFactory() { |
| 11 | 11 | final ConnectionFactory connectionFactory = new ConnectionFactory(); |
| ... | ... | @@ -13,7 +13,7 @@ public class RabbitMQConnectionFactoryHelper { |
| 13 | 13 | connectionFactory.setAutomaticRecoveryEnabled(true); |
| 14 | 14 | connectionFactory.setTopologyRecoveryEnabled(true); |
| 15 | 15 | connectionFactory.setNetworkRecoveryInterval(10000); |
| 16 | - connectionFactory.setRequestedHeartbeat(360); |
|
| 16 | + connectionFactory.setRequestedHeartbeat(1800); |
|
| 17 | 17 | return connectionFactory; |
| 18 | 18 | } |
| 19 | 19 | } |
wiki/howto/onboarding.md
| ... | ... | @@ -13,9 +13,15 @@ First of all, make sure you've looked at [http://www.amazon.de/Patterns-Elements |
| 13 | 13 | - The primary Git repository for the project is hosted on Github (see [https://github.com/SAP/sailing-analytics](https://github.com/SAP/sailing-analytics)). To clone, use ``git@github.com:SAP/sailing-analytics.git``. |
| 14 | 14 | - If you are on Windows, keep in mind you may run into the following problem. By default, the filesystem in Windows enforces a 260 character limit on paths. The longest path length for a file in this project, if the drive name is included, is 263 characters. A possible solution is to pass a single character name for the project folder in the git clone command, and clone the project on drive root, which may bring the longest file path down to compatible length. Alternatively, Windows 10 and 11 offer settings to enable a much much longer maximum file path that requires additional configuration. You may check that out at your own will. |
| 15 | 15 | - To gain write access you have to become member of the [sailing-analytics-team](https://github.com/orgs/SAP/teams/sailing-analytics-team) organization. For that you need to [link your Github user to the Github SAP organization](https://wiki.one.int.sap/wiki/display/ospodocs/Self-Service+for+Joining+an+SAP+GitHub+Organization). For that to work, your Github account needs to have your @sap.com e-mail address assigned and verified. We still have a shadow repository around that, e.g., powers our Wiki at [https://wiki.sapsailing.com](https://wiki.sapsailing.com) and which lives at ``ssh://trac@sapsailing.com/home/trac/git``. |
| 16 | + - Announcements relevant for developers are posted on [GitHub](https://github.com/SAP/sailing-analytics) in the Discussions tab. In order to get notifications you can subscribe to discussions by clicking on "Watch" in the Repository, then "Custom". In the new Popup select "Discussions" and confirm by clicking "Apply". |
|
| 17 | + |
|
| 18 | + <img src="/wiki/images/github/GitHubWatch.jpg" style="width: 50%"/> |
|
| 19 | + <img src="/wiki/images/github/GitHubSubscribe.jpg" style="width: 50%"/> |
|
| 16 | 20 | |
| 17 | 21 | - In case you'd like to get access to the external git at `ssh://trac@sapsailing.com/home/trac/git` please send your SSH public key to one of the project maintainers, requesting git access. Make sure to NOT generate the key using Putty. Putty keys don't work reliably under Linux and on Windows/Cygwin environments. Use ssh-keygen in a Cygwin or Linux or MacOS/X environment instead. For further instructions for generating an ssh-key see [GitHub](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent). |
| 18 | 22 | Note: If you want to use the ssh-key in the context of our solution, it can be an RSA or ED25519 format. Example for creating a key: `ssh-keygen -t ed25519 -b 512 -C "test@test.com"`. Make sure to set a non-empty password for your key. |
| 23 | + Everytime you use your ssh key with encryption key you get prompted to provide the passphrase. |
|
| 24 | + To automate this process you can setup an ssh agent. On Linux your desktop environment will usually handle this for you. For macOS you can use this [guide](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent). |
|
| 19 | 25 | |
| 20 | 26 | 2. Bugzilla |
| 21 | 27 | |
| ... | ... | @@ -36,7 +42,7 @@ First of all, make sure you've looked at [http://www.amazon.de/Patterns-Elements |
| 36 | 42 | ### Installations |
| 37 | 43 | 1. Eclipse IDE for Eclipse Committers, version ["2025-12"](https://www.eclipse.org/downloads/packages/release/2025-12/r/eclipse-ide-eclipse-committers). If you are using a Mac and want to use SAPJVM, this has to be the 64 bit version. This is because SAPJVM is not available for Apple Silicon Macs, and Eclipse's OS architecture must match the JVM architecture. Mac users can install SDKMAN! to manage and install different JDKs. For example Amazon Corretto 8: `sdk install java 8.0.472-amzn`. |
| 38 | 44 | 2. JDK 1.8 (Java SE 8), ideal is the SAPJVM 1.8: Go to [https://tools.eu1.hana.ondemand.com/#cloud](https://tools.eu1.hana.ondemand.com/#cloud), scroll down to `SAP JVM` select your operating System, extract the downloaded .zip into desired location (e.g. Windows `C:\Program Files\Java`. If you want to make this your default JDK, set the `JAVA_HOME` variable to it. In any case, set the `JAVA8_HOME` variable to it which is required by a few build scripts where certain steps currently are not yet compatible with newer JDK releases. For Gradle builds (currently using Gradle 7.6), such as our Android build process, also install Java 17 and set the `JAVA17_HOME` variable to it. |
| 39 | -3. Git (e.g. Git for Windows v2.18), [http://git-scm.com](http://git-scm.com) / [https://git-for-windows.github.io](https://git-for-windows.github.io)still |
|
| 45 | +3. Git (e.g. Git for Windows v2.18), [http://git-scm.com](http://git-scm.com) / [https://git-for-windows.github.io](https://git-for-windows.github.io) still |
|
| 40 | 46 | 4. Configure git (see [Git repository configuration essentials](#git-repository-configuration-essentials)) |
| 41 | 47 | 5. MongoDB (at least Release 6.0), download: [https://www.mongodb.com/](https://www.mongodb.com/). You may need to choose the community edition. In addition, install `mongosh`. |
| 42 | 48 | 6. RabbitMQ, download from [http://www.rabbitmq.com](http://www.rabbitmq.com). Requires Erlang to be installed. RabbitMQ installer will assist in installing Erlang. Some sources report that there may be trouble with the latest versions of RabbitMQ. In some cases, McAffee seems to block the installation of the latest version on SAP hardware; in other cases connection problems to the newest versions have been reported. We know that version 3.6.8 works well. [https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_8](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_6_8) |
wiki/images/github/GitHubSubscribe.jpg
| ... | ... | Binary files /dev/null and b/wiki/images/github/GitHubSubscribe.jpg differ |
wiki/images/github/GitHubWatch.jpg
| ... | ... | Binary files /dev/null and b/wiki/images/github/GitHubWatch.jpg differ |
wiki/info/landscape/building-and-deploying.md
| ... | ... | @@ -91,7 +91,7 @@ When working with Hyperspace to prepare the creation of the actual Azure Pipelin |
| 91 | 91 | |
| 92 | 92 | The pipeline configuration is produced as a [Github pull request](https://github.tools.sap/SAP-Sailing-Analytics/sapsailing/pull/1) for the Git repository used for Hyperspace onboarding. In particular, it contains a "Fastlane" configuration under ``fastlane/Fastfile`` and the actual pipeline configuration in ``azure-pipelines/mail.yml``. The fastlane config in ``fastlane/Fastfile`` we could slighly adjust and simplify because we only build ``.apk`` files, no ``.aab`` libraries. Furthermore, we need adjustments for the location of the ``gradle.properties`` file into which a git-based technical version identifier shall be generated during the build process. Later more on the details of this. |
| 93 | 93 | |
| 94 | -In the ``azure-pipelines/main.yml`` file under the ``trigger:`` property we configure which Git branches and/or tags shall trigger a pipeline execution. The core part then is defined by a reference to the pipeline's template, and specific adjustments can then be made to the template pipeline in the ``extends:`` section. The ``isRelease`` boolean property controls whether the build shall be a release build that triggers code signing, in particular. The ``productiveBranchName`` property controls for buils of which branch all scanning and test tasks shall be performed. We required special adjustments of the ``jdkVersion`` property to ``11`` and the ``androidVersion`` to ``33`` for our Gradle app build to work. Furthermore, the MoMa Assembly ID must be configured in the ``momaAssemblyId`` property. Each app folder now has its own ``files2sign.json`` file in its app folder under ``mobile/`` because this allows us to limit the build output to files under the app's own folder. |
|
| 94 | +In the ``azure-pipelines/main.yml`` file under the ``trigger:`` property we configure which Git branches and/or tags shall trigger a pipeline execution. The core part then is defined by a reference to the pipeline's template, and specific adjustments can then be made to the template pipeline in the ``extends:`` section. The ``isRelease`` boolean property controls whether the build shall be a release build that triggers code signing, in particular. The ``productiveBranchName`` property controls for buils of which branch all scanning and test tasks shall be performed. We required special adjustments of the ``jdkVersion`` property to ``17`` and the ``androidVersion`` to ``35`` for our Gradle app build to work. Furthermore, the MoMa Assembly ID must be configured in the ``momaAssemblyId`` property. Each app folder now has its own ``files2sign.json`` file in its app folder under ``mobile/`` because this allows us to limit the build output to files under the app's own folder. |
|
| 95 | 95 | |
| 96 | 96 | Since we want to build and release two apps out of one Git repo and ideally with one pipeline, we work with Git branches, one per app that we want to release, as follows: |
| 97 | 97 | |
| ... | ... | @@ -114,6 +114,7 @@ Couldn't fetch secret at 'piper/PIPELINE-GROUP-5565/PIPELINE-29049/cumulus' - Er |
| 114 | 114 | see also [here](https://pages.github.tools.sap/SAPMobile/Documentation/Support/faq/#my-pipeline-fails-with-invalid-secret-id-or-invalid-role-id). |
| 115 | 115 | |
| 116 | 116 | The build uses a SonarQube check step. For that, the [SonarQube Security Configuration](https://sonar.tools.sap/account/security) is where we create access tokens. These, in turn, have to be set in the [Vault here](https://vault.tools.sap/ui/vault/secrets/piper/kv/PIPELINE-GROUP-5565%2FPIPELINE-29049%2Fsonar-SAP-Sailing-Analytics-Sonarqube/details?namespace=ies%2Fhyperspace%2Fpipelines) as a new version in the ``token`` field, with the ``url`` field being set to ``https://sonar.tools.sap``. These tokens are good for at most one year. The error we see upon token expiry would be something like |
| 117 | + |
|
| 117 | 118 | ``` |
| 118 | 119 | error sonarExecuteScan - 18:56:54.249 ERROR Error during SonarScanner CLI execution |
| 119 | 120 | info sonarExecuteScan - java.lang.IllegalStateException: Error status returned by url [https://sonar.tools.sap/api/v2/analysis/jres?os=linux&arch=x86_64]: 401 |
| ... | ... | @@ -123,7 +124,7 @@ Our points of contact for the Hyperspace / Azure Pipeline migration are Marc Bor |
| 123 | 124 | |
| 124 | 125 | ### Running a Build / Release / Promote Cycle |
| 125 | 126 | |
| 126 | -To release the apps, go to the MoMa records of the two apps ([https://moma.mo.sap.corp/#/apps/124](https://moma.mo.sap.corp/#/apps/124) and [https://moma.mo.sap.corp/#/apps/123](https://moma.mo.sap.corp/#/apps/123)) and from there into the Assembly-Data and press the "Add Release" button. Make sure the "Build System" is set to "free - Hyperspace Azure Pipelines". Then run the ``configuration/releaseAndroidApps.sh`` script, like this: |
|
| 127 | +To release the apps, go to the MoMa records of the two apps ([https://moma.mo.sap.corp/#/apps/124](https://moma.mo.sap.corp/#/apps/124) and [https://moma.mo.sap.corp/#/apps/123](https://moma.mo.sap.corp/#/apps/123)) and from there into the Assembly-Data and press the "Add Release" button. Make sure the "Build System" is set to "free - Hyperspace Azure Pipelines". Make sure you set the "Is this build to be uploaded to Google Play Store (after manual approval)?" field to "Yes - directly to Google Play (General Availability)" in case you have tested you apps already and are sure they can be uploaded to the public store. Otherwise, select "Yes - but to Google Closed Track first (with option for GA afterwards)" which will upload to the Google Closed Track store first, so you can test the apps once more prior to publication. In this case you'll have to resume or reject the "Manual Validation" step (GP Prod Deploy?) after your tests. Then run the ``configuration/releaseAndroidApps.sh`` script, like this: |
|
| 127 | 128 | |
| 128 | 129 | ``` |
| 129 | 130 | ./configuration/releaseAndroidApps.sh |
| ... | ... | @@ -139,6 +140,8 @@ Additional options: |
| 139 | 140 | |
| 140 | 141 | It starts with checking out the ``hyperspace`` branch, then increments the minor version number by one in all relevant files, in particular the ``files2sign.json`` files and the ``gradle.properties`` files in the app directories. It then commits these changes to the ``hyperspace`` branch and checks out each release branch one after another, merges the ``hyperspace`` branch with the version number updates and all other functional changes into the release branch and pushes it. This triggers the release build pipeline execution including code signing in Azure DevOps. The pipeline executions including their logs can be observed [here](https://dev.azure.com/hyperspace-mobile/SAP-Sailing-Analytics/_build?definitionId=496). |
| 141 | 142 | |
| 142 | -When the release pipelines ran successfully, they will have updated the MoMa assembly metadata for the respective apps, including the version numbers and the staging repositories used. Furthermore, a "Build Release Pipeline Project Link" is generated, such as [https://gkemobilepipelines.jaas-gcp.cloud.sap.corp/job/NAAS%20-%20Mobile%20Freestyle/job/com.sap.sailing.android.buoy.positioning.app-android/](https://gkemobilepipelines.jaas-gcp.cloud.sap.corp/job/NAAS%20-%20Mobile%20Freestyle/job/com.sap.sailing.android.buoy.positioning.app-android/) for the SAP Sailing Buoy Pinger app, and [https://gkemobilepipelines.jaas-gcp.cloud.sap.corp/job/NAAS%20-%20Mobile%20Freestyle/job/com.sap.sailing.racecommittee.app-android/](https://gkemobilepipelines.jaas-gcp.cloud.sap.corp/job/NAAS%20-%20Mobile%20Freestyle/job/com.sap.sailing.racecommittee.app-android/) for the SAP Sailing Race Manager app. Before using these pipelines, go to the MoMa Google Play Metadata section for each app you'd like to release and click on "Add Release" there, too. You will have to make a few adjustments to some fields, such as that you're only releasing a "Patch" with specific release notes which you then have to submit to naming@sap.com for approval before you can send them to LXLabs using the respective button on the Google Play Metadata page in MoMa. |
|
| 143 | +When the release pipelines ran successfully, they will have updated the MoMa assembly metadata for the respective apps, including the version numbers and the staging repositories used. |
|
| 144 | + |
|
| 145 | +(In previous pipeline versions, a "Build Release Pipeline Project Link" was generated, such as [https://gkemobilepipelines.jaas-gcp.cloud.sap.corp/job/NAAS%20-%20Mobile%20Freestyle/job/com.sap.sailing.android.buoy.positioning.app-android/](https://gkemobilepipelines.jaas-gcp.cloud.sap.corp/job/NAAS%20-%20Mobile%20Freestyle/job/com.sap.sailing.android.buoy.positioning.app-android/) for the SAP Sailing Buoy Pinger app, and [https://gkemobilepipelines.jaas-gcp.cloud.sap.corp/job/NAAS%20-%20Mobile%20Freestyle/job/com.sap.sailing.racecommittee.app-android/](https://gkemobilepipelines.jaas-gcp.cloud.sap.corp/job/NAAS%20-%20Mobile%20Freestyle/job/com.sap.sailing.racecommittee.app-android/) for the SAP Sailing Race Manager app. Before using these pipelines, we would go to the MoMa Google Play Metadata section for each app you'd like to release and click on "Add Release" there, too. You will have to make a few adjustments to some fields, such as that you're only releasing a "Patch" with specific release notes which you then have to submit to naming@sap.com for approval before you can send them to LXLabs using the respective button on the Google Play Metadata page in MoMa. Only once you have all approvals in place, use the "Build Release Pipeline Project Link" for the app you'd like to release and run a build there. Note that these builds have interactive steps that pause and ask you to confirm the promotion to the Play Store. Your released app(s) should then show in the Google Play Store after a few hours.) |
|
| 143 | 146 | |
| 144 | -Only once you have all approvals in place, use the "Build Release Pipeline Project Link" for the app you'd like to release and run a build there. Note that these builds have interactive steps that pause and ask you to confirm the promotion to the Play Store. Your released app(s) should then show in the Google Play Store after a few hours. |
|
| ... | ... | \ No newline at end of file |
| 0 | +Now (2026-01-23) the "NAAS Promote" step in the Azure build pipeline will upload the readily-built apps to the Google Play store (supposedly after a human-in-the-loop confirmation). We haven't completed this process yet because we are currently still in the transition. NAAS, however, |
|
| ... | ... | \ No newline at end of file |