Replace static port mapping with ephemeral Docker ports and a
scanner script that discovers host-mapped ports at runtime,
generating the fleet config dynamically. This removes the need
for a lock on Linux (parallel E2E runs per agent). Windows
keeps the lock due to GUI/Squish constraints.
To fix errors like these that happen on newer Ubuntu 24.04
[2026-08-05T07:43:07.967Z] + docker compose -p e2e-fleet -f
docker-compose.waku.yml up -d
[2026-08-05T07:43:07.968Z] permission denied while trying to connect
to the docker API at unix:///var/run/docker.sock
script returned exit code 1
Concurrent PR builds on the same agent create separate workspaces
(prs, prs@2, prs@3) each with a different compose project name,
causing port collisions even with the lock in place.
Fix by using `-p e2e-fleet` for all compose commands so every build
manages the same set of containers, and moving fleet teardown into
a try/finally block inside the lock to prevent race conditions with
post.always cleanup.
* chore(@e2e): use local waku fleet for E2E tests
Start local waku nodes via docker-compose before running E2E tests
and configure the app to use them instead of status.prod. This avoids
skewing production metrics, adding unnecessary load to prod hosts,
and generating noise in prod storage DBs.
- https://github.com/status-im/status-app/issues/20126
- https://github.com/status-im/status-go//tree/feat/fleet-override
* fix(@e2e): use host networking for local waku nodes
Switch docker-compose to network_mode:host so waku nodes
bind directly to localhost. Fixes ENR multiaddr containing
Docker internal hostnames/IPs unreachable by the app.
- Remove dns4-domain-name (caused Docker hostname in ENR)
- Use /ip4/127.0.0.1 for staticnode references
- Separate discv5 UDP ports (9000/9001
- Enable REST API for proper healthchecks
- Update fleet config JSON with correct DNS ENRs and store addr
* chore(@e2e): remove status community link from tests
---------
Co-authored-by: Anastasiya <anastasija.ig@gmail.com>
Otherwise we get:
+ J:Usersjenkinsworkspaceindows_x86_64_package_PR-19163_2/scripts/version.sh
J:/Users/jenkins/workspace/indows_x86_64_package_PR-19163_2@tmp/durable-1fe5af3a/script.sh.copy: line 1:
J:Usersjenkinsworkspaceindows_x86_64_package_PR-19163_2/scripts/version.sh: No such file or directory
Signed-off-by: Jakub Sokołowski <jakub@status.im>
- points to `fix-ios-signing-with-fastlane` branch of
`status-jenkins-lib` which provides development certs for PR builds and
distribution certs for release builds.
- adds nix flake to provide ruby dependencies for `fastlane`
- adds config for new build identifier for PRs: `app.status.mobile.pr`
- swaps testflight script with fastlane action
- adds job to build iOS in release
- updates status-go to use nim-sds from
https://github.com/logos-messaging/nim-sds/pull/41
Adapts the docs and different mentions of the repo from status-desktop to status-app
Also adapts the docs to talk about the Status App and not just Status Dekstop. Adds links to the Mobile build too.
Recent upgrade of Jenkins and Git Paramter plugin caused these to appear:
[2025-11-07T12:07:08.487Z] Scheduling project: status-desktop » e2e » prs
Invalid parameter value: (StringParameterValue) GIT_REF='6e42ff2a5cb10933332d6722e1c19babc9973c07'
Which are caused by recently patched vulnerability in the plugin:
https://www.jenkins.io/security/advisory/2025-07-09/#SECURITY-3419https://github.com/jenkinsci/git-parameter-plugin/releases/tag/444.vca_b_84d3703c2
We could disable this check with:
gitParameterDefinition.allowAnyParameterValue=true
But just using a String paramater is simpler and more convenient.
Signed-off-by: Jakub Sokołowski <jakub@status.im>
Nastya wanted to pick hosts to run manual e2e jobs on.
This change will give her options to pick from `linux-01`, `linux-02`
and `linux-03` for linux and choice between `windows-04`, `windows-05`
for windows.
- update status-jenkins-lib to v1.9.30 which provides iOS provisioning
profile and appstore certs.
- builds signed iOS app and pushes to testflight.
- updates testflight metadata with PR link and commit sha it was built
from
- adds `scripts/testflight-changelog.mjs` script used by CI to update PR
metadata.
- set `ITSAppUsesNonExemptEncryption` to `false`
- generate signed APK for PRs
- generate signed AAB for PRs targeting release branches
- updates status-jenkins-lib to v1.9.29 which provides keystore and
credentials for signing
- rename bundle id app.status.mobile
- nuke FOREGROUND_SERVICE permission
- automatically generate versionCode based on minutes since epoch
- nuke unused mobile/android/qt5 dir
- fix path to SecureAndroidAuthentication.java
- bump nim to 2.2.4
Fixes workspace checkout issues by disabling submodule checkout in Jenkins job and adding git submodule checkout after cleanup stage.
CI hosts would occasionally end up in a dirty state and each PR job would checkout git submodules during checkout phase. Ideally cleanup phase should run before checkout because most of the PR issues happen during checkout phase.
Some errors looked like this :
```
> git submodule update --init --recursive vendor/nim-taskpools # timeout=10
ERROR: Checkout failed
hudson.plugins.git.GitException: Command "git submodule update --init --recursive mobile/vendors/openssl" returned status code 1:
stdout: Current branch master is up to date.
Submodule path 'mobile/vendors/openssl/gost-engine': rebased into 'ede3886cc5507c2ba000ab9b057f198da03e8766'
stderr: error: The following untracked working tree files would be overwritten by checkout:
.github/PULL_REQUEST_TEMPLATE
BUILD
BUILD.generated.bzl
BUILD.generated_tests.bzl
CMakeLists.txt
LICENSE
WORKSPACE
crypto_test_data.cc
Please move or remove them before you switch branches.
Aborting
fatal: Unable to checkout 'f1c75347daa2ea81a941e953f2263e0a4d970c8d' in submodule path 'mobile/vendors/openssl/cloudflare-quiche/quiche/deps/boringssl'
fatal: Failed to recurse into submodule path 'mobile/vendors/openssl/cloudflare-quiche'
fatal: Failed to recurse into submodule path 'mobile/vendors/openssl'
```
This also means we have to remove this setting from each job and won't have to remember to add it when making new jobs.
<img width="1332" height="680" alt="Screenshot 2025-09-09 at 5 12 39 PM" src="https://github.com/user-attachments/assets/33633b89-6ccb-457e-847d-d7034ca35be9" />
Fixes:
```
groovy.lang.MissingPropertyException: No such property:
TEST_SCOPE_FLAG for class: groovy.lang.Binding
```
Signed-off-by: Jakub Sokołowski <jakub@status.im>
- `QT6` setup runs the newer ubuntu `22.04` linux image
- `QT6` setup also uses a newer `linuxdeployqt` from here https://github.com/probonopd/linuxdeployqt/releases/tag/continuous
- `E2E` tests were updated to work with QT `6.9.0`.
- introduce a `DummyCompatImports.qml` to fix runtime issues on `linux`.
- introduced `STATUSQ_SANITY_CHECKER_EXCLUDE_FILES ` to exclude `qml` files from sanity checker.
- unused `cpp` jobs have been deleted
related issue : https://github.com/status-im/status-desktop/issues/17639