status-desktop/ci
Jakub Sokołowski 44ed858363
ci: fix Xvfb conflicts due to parallel builds
By default these settings are disable:
```java
    /** Let Xvfb pick display number */
    private boolean autoDisplayName = false;
```
https://github.com/jenkinsci/xvfb-plugin/blob/88cb84e0/src/main/java/org/jenkinsci/plugins/xvfb/Xvfb.java#L434-L435
```java
    /** Run on same node in parallel */
    private boolean parallelBuild = false;
```
https://github.com/jenkinsci/xvfb-plugin/blob/88cb84e0/src/main/java/org/jenkinsci/plugins/xvfb/Xvfb.java#L440-L441

Which means that this code doesn't have an effect by default:
```java
        final int executorNumber= executor.getNumber();

        if (parallelBuild) {
            final Computer[] computers = Jenkins.get().getComputers();
            final int nodeIndex = Arrays.binarySearch(computers, currentComputer, ComputerNameComparator.INSTANCE);

            return nodeIndex * 100 + executorNumber + displayNameOffset;
        }
        else {
            return executorNumber + displayNameOffset;
        }
```
https://github.com/jenkinsci/xvfb-plugin/blob/88cb84e0/src/main/java/org/jenkinsci/plugins/xvfb/Xvfb.java#L637-L647

And causes errors like this:
```
$ /usr/bin/Xvfb :0 -screen 0 1024x768x24 -fbdir /home/jenkins/workspace/desktop_branches_uitests_PR-6952/.xvfb-3-..fbdir7194278924155710961
Xvfb starting(EE)
Fatal server error:
(EE) Server is already active for display 0
```

Signed-off-by: Jakub Sokołowski <jakub@status.im>
2022-08-10 18:42:17 +02:00
..
cpp chore(CPP): foundation for user onboarding 2022-07-07 23:23:09 +02:00
Dockerfile chore: update go version in dockerfile 2022-08-03 09:40:47 -04:00
Jenkinsfile ci: add a combined Jenkinsfile for releases 2021-04-14 15:36:00 -04:00
Jenkinsfile.combined feat(@wallet): Add opensea api key 2022-02-16 10:29:00 +01:00
Jenkinsfile.linux chore: update go version in dockerfile 2022-08-03 09:40:47 -04:00
Jenkinsfile.linux-cpp.todo chore(CPP): foundation for user onboarding 2022-07-07 23:23:09 +02:00
Jenkinsfile.mac-cpp.todo chore(CPP/CI): basic CI setup for linux cmake build 2022-07-01 14:41:28 +02:00
Jenkinsfile.macos ci: bump macos job timeout to 25 minutes 2022-07-01 11:52:49 +02:00
Jenkinsfile.uitests ci: fix Xvfb conflicts due to parallel builds 2022-08-10 18:42:17 +02:00
Jenkinsfile.windows ci: remove caching of dependencies 2022-04-15 12:45:27 +02:00
Jenkinsfile.windows-cpp.todo chore(CPP/CI): basic CI setup for linux cmake build 2022-07-01 14:41:28 +02:00
README.md add Jenkinsfiles and Dockerfile for CI 2020-07-01 22:06:37 +02:00

README.md

Description

These Jenkinsfiles are used to run CI jobs in Jenkins. You can find them here: https://ci.status.im/job/nim-status-client/

Builds

Linux

In order to build the Linux version of the application we use a modified a12e/docker-qt:5.14-gcc_64 Docker image with the addition of Git and Golang.

The image is built with Dockerfile using:

docker build -t statusteam/nim-status-client-build:latest .

And pushed to: https://hub.docker.com/r/statusteam/nim-status-client-build

MacOS

The MacOS builds are run on MacOS hosts and expect Command Line Toold and XCode to be installed, as well as QT being available under /usr/local/qt.

It also expects the presence of the following credentials:

  • macos-keychain-identity - ID of used signing certificate.
  • macos-keychain-pass - Password to unlock the keychain.
  • macos-keychain-file - Keychain file with the MacOS signing certificate.

You can read about how to create such a keychain here.