Skip to content

Gradle build daemon disappeared unexpectedly #13493

@rgarrigue

Description

@rgarrigue

Ionic version: (check one with "x")
(For Ionic 1.x issues, please use https://github.com/ionic-team/ionic-v1)
[ ] 2.x
[x] 3.x
[ ] 4.x

I'm submitting a ... (check one with "x")
[x] bug report (sort of, just asking for lead to solve my CI issue)
[ ] feature request

Current behavior:

I'm trying to set up a CI to build Ionic project. The SCM is Gitlab 10, the CI being Gitlab-CI.

A gitlab-runner 10.1.0 running over an AWS EC2 instance with Amazon Linux is the component executing the build job. Here's the .gitlab-ci.yml defining the job

image: beevelop/ionic:latest
stages:
  - build
build:
  stage: build
  script:
    - df -m
    - free -m
    - npm install
    - ionic config set -g telemetry false
    - ionic info
    - ionic cordova platform add android
    - ionic cordova build android --debug

The script part itself is executed in a fresh beevelop/ionic:latest container. Just to be sure, I did all those step manually on the same container running on my workstation. It worked there.

But on the runner, it's ending with a Gradle build daemon disappeared unexpectedly. I tried all the options I could find, like ionic cordova build android --debug -- -- --gradleArg=--no-daemon, nothing. I buffed the EC2 up to 2CPU 4Go RAM, didn't worked out too. The full build log is below, including ionic info.

Expected behavior:

A working build.

Steps to reproduce:

The .gitlab-ci.yml is above, one just need a functionnal Gitlab + Gitlab-CI with a runner, a simple ionic project (I tried on a brand new Ionic project).

Related code:

Here's the build log

Running with gitlab-runner 10.1.0 (c1ecf97f)
  on gitlab-r-02 (31c1f0fa)
Using Docker executor with image beevelop/ionic:latest ...
Using docker image sha256:74098c81ad48af3ac7f7d789ce2d18c09e436d06fe4f6400dea5daaac2fadb65 for predefined container...
Pulling docker image beevelop/ionic:latest ...
Using docker image beevelop/ionic:latest ID=sha256:c0f7c2839d534fcb2a426ce2a71a9c0c84cba7289c3978e9f85b17ae645df7ae for build container...
Running on runner-31c1f0fa-project-141-concurrent-0 via gitlab-r-02...
Fetching changes...
Removing .sourcemaps/
Removing node_modules/
Removing platforms/
Removing plugins/
Removing www/
HEAD is now at 9f8f522 Update .gitlab-ci.yml
From https://gitlab.company.fr/mygituser/mygitrepo
   9f8f522..8465d36  master     -> origin/master
Checking out 8465d368 as master...
Skipping Git submodules setup
$ df -m
Filesystem     1M-blocks  Used Available Use% Mounted on
overlay             7934  5462      2375  70% /
tmpfs                497     0       497   0% /dev
tmpfs                497     0       497   0% /sys/fs/cgroup
/dev/xvda1          7934  5462      2375  70% /cache
shm                   64     0        64   0% /dev/shm
tmpfs                497     0       497   0% /sys/firmware
$ free -m
              total        used        free      shared  buff/cache   available
Mem:            993         129         643           0         220         710
Swap:             0           0           0
$ npm install

> node-sass@4.5.3 install /builds/mygituser/mygitrepo/node_modules/node-sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v4.5.3/linux-x64-57_binding.node
Download complete
Binary saved to /builds/mygituser/mygitrepo/node_modules/node-sass/vendor/linux-x64-57/binding.node
Caching binary to /root/.npm/node-sass/4.5.3/linux-x64-57_binding.node

> uglifyjs-webpack-plugin@0.4.6 postinstall /builds/mygituser/mygitrepo/node_modules/uglifyjs-webpack-plugin
> node lib/post_install.js


> node-sass@4.5.3 postinstall /builds/mygituser/mygitrepo/node_modules/node-sass
> node scripts/build.js

Binary found at /builds/mygituser/mygitrepo/node_modules/node-sass/vendor/linux-x64-57/binding.node
Testing binary
Binary is fine
added 539 packages in 14.378s
$ ionic config set -g telemetry false
[OK] telemetry set to false in ../../../root/.ionic/config.json!
$ ionic info

cli packages: (/opt/node/lib/node_modules)

    @ionic/cli-utils  : 1.19.0
    ionic (Ionic CLI) : 3.19.0

local packages:

    @ionic/app-scripts : 3.1.0
    Ionic Framework    : ionic-angular 3.9.2

System:

    Node : v8.9.1
    npm  : 5.5.1 
    OS   : Linux 4.9

Misc:

    backend : pro
$ ionic cordova platform add android
> ionic integrations enable cordova
✔ Downloading integration cordova - done!

--no-confirm: The config.xml file exists in project. Overwrite? No

--no-confirm: The resources/ directory exists in project. Overwrite? No
✔ Copying integrations files to project - done!
[OK] Added cordova integration!
✔ Creating ./www directory for you - done!
> cordova platform add android --save
Using cordova-fetch for cordova-android@~6.3.0
Adding android project...
Creating Cordova project for the Android platform:
	Path: platforms/android
	Package: io.ionic.starter
	Name: MyApp
	Activity: MainActivity
	Android target: android-26
Subproject Path: CordovaLib
Android project created with cordova-android@6.3.0
Discovered plugin "ionic-plugin-keyboard" in config.xml. Adding it to the project
Installing "ionic-plugin-keyboard" for android
Adding ionic-plugin-keyboard to package.json
Saved plugin info for "ionic-plugin-keyboard" to config.xml
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the project
Installing "cordova-plugin-whitelist" for android

               This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version, you do *not* need this plugin since the whitelist will be built in.
          
Adding cordova-plugin-whitelist to package.json
Saved plugin info for "cordova-plugin-whitelist" to config.xml
Discovered plugin "cordova-plugin-device" in config.xml. Adding it to the project
Installing "cordova-plugin-device" for android
Adding cordova-plugin-device to package.json
Saved plugin info for "cordova-plugin-device" to config.xml
Discovered plugin "cordova-plugin-splashscreen" in config.xml. Adding it to the project
Installing "cordova-plugin-splashscreen" for android
Adding cordova-plugin-splashscreen to package.json
Saved plugin info for "cordova-plugin-splashscreen" to config.xml
Discovered plugin "cordova-plugin-ionic-webview" in config.xml. Adding it to the project
Installing "cordova-plugin-ionic-webview" for android
Adding cordova-plugin-ionic-webview to package.json
Saved plugin info for "cordova-plugin-ionic-webview" to config.xml
--save flag or autosave detected
Saving android@~6.3.0 into config.xml file ...

$ ionic cordova build android --debug
Running app-scripts build: --platform android --target cordova
[13:44:29]  build dev started ... 
[13:44:29]  clean started ... 
[13:44:29]  clean finished in 1 ms 
[13:44:29]  copy started ... 
[13:44:29]  deeplinks started ... 
[13:44:29]  deeplinks finished in 17 ms 
[13:44:29]  transpile started ... 
[13:44:33]  transpile finished in 4.18 s 
[13:44:33]  preprocess started ... 
[13:44:33]  preprocess finished in 1 ms 
[13:44:33]  webpack started ... 
[13:44:33]  copy finished in 4.32 s 
[13:44:39]  webpack finished in 6.69 s 
[13:44:39]  sass started ... 
[13:44:41]  sass finished in 1.28 s 
[13:44:41]  postprocess started ... 
[13:44:41]  postprocess finished in 7 ms 
[13:44:41]  lint started ... 
[13:44:41]  build dev finished in 12.25 s 
> cordova build android --debug
ANDROID_HOME=/opt/android
JAVA_HOME=/usr/lib/jvm/java-8-oracle
[13:44:47]  lint finished in 6.11 s 
:wrapper

BUILD SUCCESSFUL

Total time: 5.859 secs
Subproject Path: CordovaLib
Downloading https://services.gradle.org/distributions/gradle-3.3-all.zip
.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Unzipping /root/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zip to /root/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9
Set executable permissions for: /root/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3/bin/gradle
Starting a Gradle Daemon (subsequent builds will be faster)
The message received from the daemon indicates that the daemon has disappeared.
Build request sent: Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}
Attempting to read last messages from the daemon log...
Daemon pid: 423
  log file: /root/.gradle/daemon/3.3/daemon-423.out.log
----- Last  20 lines from daemon log file - daemon-423.out.log -----
13:45:01.858 [DEBUG] [org.gradle.internal.remote.internal.inet.TcpIncomingConnector] Accepted connection from /127.0.0.1:42990 to /127.0.0.1:39679.
13:45:02.079 [INFO] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] after free system memory (109.1 MB) fell below threshold of 402.7 MB
13:45:02.080 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] stopOnExpiration() called on daemon
13:45:02.081 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] awaitExpiration() called on daemon
13:45:02.083 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] daemon is running. Sleeping until state changes.
13:45:02.202 [DEBUG] [org.gradle.launcher.daemon.server.SynchronizedDispatchConnection] thread 13: received class org.gradle.launcher.daemon.protocol.Build
13:45:02.202 [DEBUG] [org.gradle.launcher.daemon.server.DefaultDaemonConnection] thread 13: Received non-IO message from client: Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}
13:45:02.211 [INFO] [org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler] Received command: Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}.
13:45:02.211 [DEBUG] [org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler] Starting executing command: Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo} with connection: socket connection from /127.0.0.1:39679 to /127.0.0.1:42990.
13:45:02.213 [ERROR] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] Command execution: started DaemonCommandExecution[command = Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}, connection = DefaultDaemonConnection: socket connection from /127.0.0.1:39679 to /127.0.0.1:42990] after 0.0 minutes of idle
13:45:02.214 [INFO] [org.gradle.launcher.daemon.server.DaemonRegistryUpdater] Marking the daemon as busy, address: [84ca3680-4b5b-432e-a660-1785a49d05a9 port:39679, addresses:[/127.0.0.1]]
13:45:02.214 [DEBUG] [org.gradle.launcher.daemon.registry.PersistentDaemonRegistry] Marking busy by address: [84ca3680-4b5b-432e-a660-1785a49d05a9 port:39679, addresses:[/127.0.0.1]]
13:45:02.214 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire exclusive lock on daemon addresses registry.
13:45:02.215 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired.
13:45:02.218 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
13:45:02.218 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] resetting idle timer
13:45:02.218 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] daemon is running. Sleeping until state changes.
13:45:02.223 [INFO] [org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy] Daemon is about to start building Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}. Dispatching build started information...
13:45:02.224 [DEBUG] [org.gradle.launcher.daemon.server.SynchronizedDispatchConnection] thread 15: dispatching class org.gradle.launcher.daemon.protocol.BuildStarted
13:45:02.247 [DEBUG] [org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment] Configuring env variables: {PATH=/builds/mygituser/mygitrepo/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/android/tools:/opt/android/platform-tools:/opt/android/build-tools/27.0.0:/usr/share/ant/bin:/usr/share/maven/bin:/usr/share/gradle/bin:/opt/node/bin:/opt/android/tools/bin, IONIC_SOURCE_MAP_TYPE=source-map, IONIC_CLI_LIB=/opt/node/lib/node_modules/ionic/dist/index.js, IONIC_SELECT_POPOVER_CLASSNAME=SelectPopover, IONIC_PICKER_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/picker/picker-component.js, CI_PROJECT_URL=https://gitlab.company.fr/mygituser/mygitrepo, IONIC_APP_SCRIPTS_DIR=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts, CI_COMMIT_REF_SLUG=master, IONIC_MODAL_CONTROLLER_CLASSNAME=ModalController, CI_PROJECT_PATH_SLUG=mygituser-commande-d-ia, ANDROID_HOME=/opt/android, IONIC_TYPESCRIPT_DIR=/builds/mygituser/mygitrepo/node_modules/typescript, IONIC_APP_ENTRY_POINT=/builds/mygituser/mygitrepo/src/app/main.ts, IONIC_POPOVER_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/popover/popover-component.ngfactory.js, IONIC_MINIFY_CSS=false, IONIC_PLATFORM=android, IONIC_ALERT_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/alert/alert-component.ngfactory.js, IONIC_PURGE_UNUSED_FONTS=true, IONIC_MODAL_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/modal/modal-component.ngfactory.js, PWD=/builds/mygituser/mygitrepo, CI_SERVER=yes, IONIC_LOADING_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/loading/loading.js, IONIC_TOAST_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/toast/toast.js, IONIC_TMP_DIR=/builds/mygituser/mygitrepo/.tmp, CI_BUILD_NAME=build, IONIC_APP_NG_MODULE_CLASS=AppModule, CI_PIPELINE_SOURCE=push, IONIC_LOADING_CONTROLLER_CLASSNAME=LoadingController, CI_RUNNER_ID=23, IONIC_ACTION_SHEET_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/action-sheet/action-sheet-component.js, IONIC_ALERT_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/alert/alert.js, CI_REGISTRY_USER=gitlab-ci-token, CI_COMMIT_REF_NAME=master, IONIC_ENABLE_LINT=true, IONIC_PIPES_DIR=/builds/mygituser/mygitrepo/src/pipes, IONIC_DIRECTIVES_DIR=/builds/mygituser/mygitrepo/src/directives, IONIC_RXJS_DIR=/builds/mygituser/mygitrepo/node_modules/rxjs, IONIC_ACTION_SHEET_CONTROLLER_CLASSNAME=ActionSheetController, ANDROID_APIS=android-10,android-15,android-16,android-17,android-18,android-19,android-20,android-21,android-22,android-23,android-24,android-25,android-26, IONIC_TOAST_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/toast/toast-controller.js, IONIC_GENERATE_SOURCE_MAP=true, IONIC_MODAL_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/modal/modal.js, IONIC_SOURCEMAP_DIR=/builds/mygituser/mygitrepo/.sourcemaps, IONIC_POPOVER_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/popover/popover.js, SHLVL=1, CI_BUILD_REF_NAME=master, IONIC_NG_MODULE_FILENAME_SUFFIX=.module.ts, IONIC_LOADING_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/loading/loading-controller.js, CI_REGISTRY=dockerhub.company.fr, IONIC_ROOT_DIR=/builds/mygituser/mygitrepo, CI_JOB_STAGE=build, JAVA_HOME=/usr/lib/jvm/java-8-oracle, IONIC_POLYFILL_FILE_NAME=polyfills.js, TERM=xterm, IONIC_READ_CONFIG_JSON=true, IONIC_PROJECT_DIR=/builds/mygituser/mygitrepo, IONIC_HTML_TO_SERVE=index.html, GRADLE_HOME=/usr/share/gradle, IONIC_OUTPUT_CSS_FILE_NAME=main.css, ANT_HOME=/usr/share/ant, IONIC_WEBPACK_FACTORY=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts/dist/webpack/ionic-webpack-factory.js, CI_BUILD_STAGE=build, IONIC_ACTION_SHEET_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/action-sheet/action-sheet-component.ngfactory.js, IONIC_TOAST_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/toast/toast-component.js, CI_PROJECT_NAMESPACE=mygituser, CI_PIPELINE_ID=164, IONIC_ANGULAR_DIR=/builds/mygituser/mygitrepo/node_modules/ionic-angular, CI_BUILD_TOKEN=xxxxxxxxxxxxxxxxxxxx, IONIC_ACTION_SHEET_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/action-sheet/action-sheet-controller.js, CI_PROJECT_NAME=mygitrepo, CI_BUILD_REF_SLUG=master, CI=true, IONIC_PROVIDERS_DIR=/builds/mygituser/mygitrepo/src/providers, IONIC_PICKER_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/picker/picker-controller.js, IONIC_WEBPACK_LOADER=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts/dist/webpack/loader.js, CI_JOB_TOKEN=xxxxxxxxxxxxxxxxxxxx, IONIC_APP_NG_MODULE_PATH=/builds/mygituser/mygitrepo/src/app/app.module.ts, CI_SERVER_TLS_CA_FILE=/builds/mygituser/mygitrepo.tmp/CI_SERVER_TLS_CA_FILE, IONIC_TS_CONFIG=/builds/mygituser/mygitrepo/tsconfig.json, IONIC_PICKER_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/picker/picker-component.ngfactory.js, IONIC_ANGULAR_TEMPLATE_DIR=/builds/mygituser/mygitrepo/node_modules/ionic-angular/templates, IONIC_SELECT_POPOVER_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/select/select-popover-component.js, NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat, CI_PROJECT_DIR=/builds/mygituser/mygitrepo, IONIC_MINIFY_JS=false, IONIC_VERSION=3.19.0, CI_COMMIT_SHA=8465d368032bb55ae70c1d14645f2d07842b455b, ANDROID_SDK_URL=https://dl.google.com/android/repository/tools_r25.2.5-linux.zip, IONIC_CLI_BIN=/opt/node/lib/node_modules/ionic/bin/ionic, IONIC_DEEPLINKS_DIR=/builds/mygituser/mygitrepo/src, IONIC_SRC_DIR=/builds/mygituser/mygitrepo/src, CI_SERVER_REVISION=8895150, IONIC_ENV=dev, IONIC_PARSE_DEEPLINKS=true, IONIC_COMPONENTS_NG_MODULE_PATH=/builds/mygituser/mygitrepo/src/components/components.module.ts, IONIC_NODE_MODULES_DIR=/builds/mygituser/mygitrepo/node_modules, IONIC_PROJECT_FILE=ionic.config.json, MAVEN_HOME=/usr/share/maven, IONIC_WWW_DIR=/builds/mygituser/mygitrepo/www, IONIC_SKIP_IONIC_ANGULAR_VERSION=false, CI_SERVER_NAME=GitLab, CORDOVA_VERSION=7.1.0, IONIC_ALERT_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/alert/alert-component.js, IONIC_BUILD_DIR=/builds/mygituser/mygitrepo/www/build, GITLAB_USER_NAME=R??my Garrigue, CI_RUNNER_TAGS=docker, IONIC_MOVE_SOURCE_MAPS=true, IONIC_COMPONENTS_DIR=/builds/mygituser/mygitrepo/src/components, OLDPWD=/builds/mygituser/mygitrepo/platforms/android, IONIC_DIRECTIVES_NG_MODULE_PATH=/builds/mygituser/mygitrepo/src/directives/directives.module.ts, IONIC_CACHE_LOADER=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts/dist/webpack/cache-loader.js, ANDROID_BUILD_TOOLS_VERSION=27.0.0, IONIC_ANGULAR_CORE_DIR=/builds/mygituser/mygitrepo/node_modules/@angular/core, IONIC_LOADING_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/loading/loading-component.ngfactory.js, IONIC_PICKER_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/picker/picker.js, DEBIAN_FRONTEND=noninteractive, IONIC_FONTS_DIR=/builds/mygituser/mygitrepo/www/assets/fonts, GITLAB_CI=true, CI_REGISTRY_IMAGE=dockerhub.company.fr/mygituser/mygitrepo, IONIC_ALERT_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/alert/alert-controller.js, CI_JOB_ID=246, GITLAB_USER_ID=2, IONIC_CLI_LOCAL_ERROR=LOCAL_CLI_NOT_FOUND, IONIC_AOT=false, IONIC_START_WATCH_TIMEOUT=3000, IONIC_POPOVER_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/popover/popover-controller.js, CI_SERVER_VERSION=10.0.3, IONIC_MODAL_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/modal/modal-component.js, GITLAB_USER_EMAIL=myuser@company.fr, CI_BUILD_REF=8465d368032bb55ae70c1d14645f2d07842b455b, CI_PROJECT_ID=141, XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt, CI_RUNNER_DESCRIPTION=gitlab-r-02, IONIC_PAGES_DIR=/builds/mygituser/mygitrepo/src/pages, CI_REGISTRY_PASSWORD=xxxxxxxxxxxxxxxxxxxx, IONIC_TOAST_CONTROLLER_CLASSNAME=ToastController, CI_PROJECT_PATH=mygituser/mygitrepo, IONIC_SELECT_POPOVER_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/select/select-popover-component.ngfactory.js, NODEJS_VERSION=8.9.1, CI_DISPOSABLE_ENVIRONMENT=true, CI_CONFIG_PATH=.gitlab-ci.yml, CI_BUILD_BEFORE_SHA=8465d368032bb55ae70c1d14645f2d07842b455b, IONIC_TARGET=cordova, IONIC_APP_ROOT_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/app/app-root.js, IONIC_POPOVER_CONTROLLER_CLASSNAME=PopoverController, IONIC_OUTPUT_JS_FILE_NAME=main.js, IONIC_CORE_DIR=/builds/mygituser/mygitrepo/node_modules/ionic-angular, IONIC_POPOVER_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/popover/popover-component.js, IONIC_CORE_COMPILER_FILE_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/compiler, CI_BUILD_ID=246, HOSTNAME=runner-31c1f0fa-project-141-concurrent-0, CI_JOB_NAME=build, IONIC_OPTIMIZE_JS=false, IONIC_ANGULAR_ENTRY_POINT=/builds/mygituser/mygitrepo/node_modules/ionic-angular/index.js, GITLAB_USER_LOGIN=myuser, IONIC_GLOB_UTIL=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts/dist/util/glob-util.js, IONIC_LOADING_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/loading/loading-component.js, IONIC_PIPES_NG_MODULE_PATH=/builds/mygituser/mygitrepo/src/pipes/pipes.module.ts, IONIC_TOAST_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/toast/toast-component.ngfactory.js, IONIC_ALERT_CONTROLLER_CLASSNAME=AlertController, CI_REPOSITORY_URL=https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.company.fr/mygituser/mygitrepo.git, IONIC_PICKER_CONTROLLER_CLASSNAME=PickerController, HOME=/root, IONIC_ACTION_SHEET_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/action-sheet/action-sheet.js, IONIC_MODAL_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/modal/modal-controller.js}
----- End of the daemon log -----


FAILURE: Build failed with an exception.

* What went wrong:
Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Error: /builds/mygituser/mygitrepo/platforms/android/gradlew: Command failed with exit code 1 Error output:
The message received from the daemon indicates that the daemon has disappeared.
Build request sent: Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}
Attempting to read last messages from the daemon log...
Daemon pid: 423
  log file: /root/.gradle/daemon/3.3/daemon-423.out.log
----- Last  20 lines from daemon log file - daemon-423.out.log -----
13:45:01.858 [DEBUG] [org.gradle.internal.remote.internal.inet.TcpIncomingConnector] Accepted connection from /127.0.0.1:42990 to /127.0.0.1:39679.
13:45:02.079 [INFO] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] after free system memory (109.1 MB) fell below threshold of 402.7 MB
13:45:02.080 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] stopOnExpiration() called on daemon
13:45:02.081 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] awaitExpiration() called on daemon
13:45:02.083 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] daemon is running. Sleeping until state changes.
13:45:02.202 [DEBUG] [org.gradle.launcher.daemon.server.SynchronizedDispatchConnection] thread 13: received class org.gradle.launcher.daemon.protocol.Build
13:45:02.202 [DEBUG] [org.gradle.launcher.daemon.server.DefaultDaemonConnection] thread 13: Received non-IO message from client: Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}
13:45:02.211 [INFO] [org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler] Received command: Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}.
13:45:02.211 [DEBUG] [org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler] Starting executing command: Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo} with connection: socket connection from /127.0.0.1:39679 to /127.0.0.1:42990.
13:45:02.213 [ERROR] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] Command execution: started DaemonCommandExecution[command = Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}, connection = DefaultDaemonConnection: socket connection from /127.0.0.1:39679 to /127.0.0.1:42990] after 0.0 minutes of idle
13:45:02.214 [INFO] [org.gradle.launcher.daemon.server.DaemonRegistryUpdater] Marking the daemon as busy, address: [84ca3680-4b5b-432e-a660-1785a49d05a9 port:39679, addresses:[/127.0.0.1]]
13:45:02.214 [DEBUG] [org.gradle.launcher.daemon.registry.PersistentDaemonRegistry] Marking busy by address: [84ca3680-4b5b-432e-a660-1785a49d05a9 port:39679, addresses:[/127.0.0.1]]
13:45:02.214 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire exclusive lock on daemon addresses registry.
13:45:02.215 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired.
13:45:02.218 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
13:45:02.218 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] resetting idle timer
13:45:02.218 [DEBUG] [org.gradle.launcher.daemon.server.DaemonStateCoordinator] daemon is running. Sleeping until state changes.
13:45:02.223 [INFO] [org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy] Daemon is about to start building Build{id=35870ef8-9c4a-4a4b-90db-23d0162ac966.1, currentDir=/builds/mygituser/mygitrepo}. Dispatching build started information...
13:45:02.224 [DEBUG] [org.gradle.launcher.daemon.server.SynchronizedDispatchConnection] thread 15: dispatching class org.gradle.launcher.daemon.protocol.BuildStarted
13:45:02.247 [DEBUG] [org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment] Configuring env variables: {PATH=/builds/mygituser/mygitrepo/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/android/tools:/opt/android/platform-tools:/opt/android/build-tools/27.0.0:/usr/share/ant/bin:/usr/share/maven/bin:/usr/share/gradle/bin:/opt/node/bin:/opt/android/tools/bin, IONIC_SOURCE_MAP_TYPE=source-map, IONIC_CLI_LIB=/opt/node/lib/node_modules/ionic/dist/index.js, IONIC_SELECT_POPOVER_CLASSNAME=SelectPopover, IONIC_PICKER_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/picker/picker-component.js, CI_PROJECT_URL=https://gitlab.company.fr/mygituser/mygitrepo, IONIC_APP_SCRIPTS_DIR=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts, CI_COMMIT_REF_SLUG=master, IONIC_MODAL_CONTROLLER_CLASSNAME=ModalController, CI_PROJECT_PATH_SLUG=mygituser-commande-d-ia, ANDROID_HOME=/opt/android, IONIC_TYPESCRIPT_DIR=/builds/mygituser/mygitrepo/node_modules/typescript, IONIC_APP_ENTRY_POINT=/builds/mygituser/mygitrepo/src/app/main.ts, IONIC_POPOVER_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/popover/popover-component.ngfactory.js, IONIC_MINIFY_CSS=false, IONIC_PLATFORM=android, IONIC_ALERT_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/alert/alert-component.ngfactory.js, IONIC_PURGE_UNUSED_FONTS=true, IONIC_MODAL_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/modal/modal-component.ngfactory.js, PWD=/builds/mygituser/mygitrepo, CI_SERVER=yes, IONIC_LOADING_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/loading/loading.js, IONIC_TOAST_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/toast/toast.js, IONIC_TMP_DIR=/builds/mygituser/mygitrepo/.tmp, CI_BUILD_NAME=build, IONIC_APP_NG_MODULE_CLASS=AppModule, CI_PIPELINE_SOURCE=push, IONIC_LOADING_CONTROLLER_CLASSNAME=LoadingController, CI_RUNNER_ID=23, IONIC_ACTION_SHEET_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/action-sheet/action-sheet-component.js, IONIC_ALERT_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/alert/alert.js, CI_REGISTRY_USER=gitlab-ci-token, CI_COMMIT_REF_NAME=master, IONIC_ENABLE_LINT=true, IONIC_PIPES_DIR=/builds/mygituser/mygitrepo/src/pipes, IONIC_DIRECTIVES_DIR=/builds/mygituser/mygitrepo/src/directives, IONIC_RXJS_DIR=/builds/mygituser/mygitrepo/node_modules/rxjs, IONIC_ACTION_SHEET_CONTROLLER_CLASSNAME=ActionSheetController, ANDROID_APIS=android-10,android-15,android-16,android-17,android-18,android-19,android-20,android-21,android-22,android-23,android-24,android-25,android-26, IONIC_TOAST_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/toast/toast-controller.js, IONIC_GENERATE_SOURCE_MAP=true, IONIC_MODAL_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/modal/modal.js, IONIC_SOURCEMAP_DIR=/builds/mygituser/mygitrepo/.sourcemaps, IONIC_POPOVER_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/popover/popover.js, SHLVL=1, CI_BUILD_REF_NAME=master, IONIC_NG_MODULE_FILENAME_SUFFIX=.module.ts, IONIC_LOADING_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/loading/loading-controller.js, CI_REGISTRY=dockerhub.company.fr, IONIC_ROOT_DIR=/builds/mygituser/mygitrepo, CI_JOB_STAGE=build, JAVA_HOME=/usr/lib/jvm/java-8-oracle, IONIC_POLYFILL_FILE_NAME=polyfills.js, TERM=xterm, IONIC_READ_CONFIG_JSON=true, IONIC_PROJECT_DIR=/builds/mygituser/mygitrepo, IONIC_HTML_TO_SERVE=index.html, GRADLE_HOME=/usr/share/gradle, IONIC_OUTPUT_CSS_FILE_NAME=main.css, ANT_HOME=/usr/share/ant, IONIC_WEBPACK_FACTORY=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts/dist/webpack/ionic-webpack-factory.js, CI_BUILD_STAGE=build, IONIC_ACTION_SHEET_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/action-sheet/action-sheet-component.ngfactory.js, IONIC_TOAST_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/toast/toast-component.js, CI_PROJECT_NAMESPACE=mygituser, CI_PIPELINE_ID=164, IONIC_ANGULAR_DIR=/builds/mygituser/mygitrepo/node_modules/ionic-angular, CI_BUILD_TOKEN=xxxxxxxxxxxxxxxxxxxx, IONIC_ACTION_SHEET_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/action-sheet/action-sheet-controller.js, CI_PROJECT_NAME=mygitrepo, CI_BUILD_REF_SLUG=master, CI=true, IONIC_PROVIDERS_DIR=/builds/mygituser/mygitrepo/src/providers, IONIC_PICKER_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/picker/picker-controller.js, IONIC_WEBPACK_LOADER=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts/dist/webpack/loader.js, CI_JOB_TOKEN=xxxxxxxxxxxxxxxxxxxx, IONIC_APP_NG_MODULE_PATH=/builds/mygituser/mygitrepo/src/app/app.module.ts, CI_SERVER_TLS_CA_FILE=/builds/mygituser/mygitrepo.tmp/CI_SERVER_TLS_CA_FILE, IONIC_TS_CONFIG=/builds/mygituser/mygitrepo/tsconfig.json, IONIC_PICKER_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/picker/picker-component.ngfactory.js, IONIC_ANGULAR_TEMPLATE_DIR=/builds/mygituser/mygitrepo/node_modules/ionic-angular/templates, IONIC_SELECT_POPOVER_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/select/select-popover-component.js, NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat, CI_PROJECT_DIR=/builds/mygituser/mygitrepo, IONIC_MINIFY_JS=false, IONIC_VERSION=3.19.0, CI_COMMIT_SHA=8465d368032bb55ae70c1d14645f2d07842b455b, ANDROID_SDK_URL=https://dl.google.com/android/repository/tools_r25.2.5-linux.zip, IONIC_CLI_BIN=/opt/node/lib/node_modules/ionic/bin/ionic, IONIC_DEEPLINKS_DIR=/builds/mygituser/mygitrepo/src, IONIC_SRC_DIR=/builds/mygituser/mygitrepo/src, CI_SERVER_REVISION=8895150, IONIC_ENV=dev, IONIC_PARSE_DEEPLINKS=true, IONIC_COMPONENTS_NG_MODULE_PATH=/builds/mygituser/mygitrepo/src/components/components.module.ts, IONIC_NODE_MODULES_DIR=/builds/mygituser/mygitrepo/node_modules, IONIC_PROJECT_FILE=ionic.config.json, MAVEN_HOME=/usr/share/maven, IONIC_WWW_DIR=/builds/mygituser/mygitrepo/www, IONIC_SKIP_IONIC_ANGULAR_VERSION=false, CI_SERVER_NAME=GitLab, CORDOVA_VERSION=7.1.0, IONIC_ALERT_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/alert/alert-component.js, IONIC_BUILD_DIR=/builds/mygituser/mygitrepo/www/build, GITLAB_USER_NAME=R??my Garrigue, CI_RUNNER_TAGS=docker, IONIC_MOVE_SOURCE_MAPS=true, IONIC_COMPONENTS_DIR=/builds/mygituser/mygitrepo/src/components, OLDPWD=/builds/mygituser/mygitrepo/platforms/android, IONIC_DIRECTIVES_NG_MODULE_PATH=/builds/mygituser/mygitrepo/src/directives/directives.module.ts, IONIC_CACHE_LOADER=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts/dist/webpack/cache-loader.js, ANDROID_BUILD_TOOLS_VERSION=27.0.0, IONIC_ANGULAR_CORE_DIR=/builds/mygituser/mygitrepo/node_modules/@angular/core, IONIC_LOADING_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/loading/loading-component.ngfactory.js, IONIC_PICKER_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/picker/picker.js, DEBIAN_FRONTEND=noninteractive, IONIC_FONTS_DIR=/builds/mygituser/mygitrepo/www/assets/fonts, GITLAB_CI=true, CI_REGISTRY_IMAGE=dockerhub.company.fr/mygituser/mygitrepo, IONIC_ALERT_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/alert/alert-controller.js, CI_JOB_ID=246, GITLAB_USER_ID=2, IONIC_CLI_LOCAL_ERROR=LOCAL_CLI_NOT_FOUND, IONIC_AOT=false, IONIC_START_WATCH_TIMEOUT=3000, IONIC_POPOVER_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/popover/popover-controller.js, CI_SERVER_VERSION=10.0.3, IONIC_MODAL_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/modal/modal-component.js, GITLAB_USER_EMAIL=myuser@company.fr, CI_BUILD_REF=8465d368032bb55ae70c1d14645f2d07842b455b, CI_PROJECT_ID=141, XFILESEARCHPATH=/usr/dt/app-defaults/%L/Dt, CI_RUNNER_DESCRIPTION=gitlab-r-02, IONIC_PAGES_DIR=/builds/mygituser/mygitrepo/src/pages, CI_REGISTRY_PASSWORD=xxxxxxxxxxxxxxxxxxxx, IONIC_TOAST_CONTROLLER_CLASSNAME=ToastController, CI_PROJECT_PATH=mygituser/mygitrepo, IONIC_SELECT_POPOVER_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/select/select-popover-component.ngfactory.js, NODEJS_VERSION=8.9.1, CI_DISPOSABLE_ENVIRONMENT=true, CI_CONFIG_PATH=.gitlab-ci.yml, CI_BUILD_BEFORE_SHA=8465d368032bb55ae70c1d14645f2d07842b455b, IONIC_TARGET=cordova, IONIC_APP_ROOT_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/app/app-root.js, IONIC_POPOVER_CONTROLLER_CLASSNAME=PopoverController, IONIC_OUTPUT_JS_FILE_NAME=main.js, IONIC_CORE_DIR=/builds/mygituser/mygitrepo/node_modules/ionic-angular, IONIC_POPOVER_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/popover/popover-component.js, IONIC_CORE_COMPILER_FILE_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/compiler, CI_BUILD_ID=246, HOSTNAME=runner-31c1f0fa-project-141-concurrent-0, CI_JOB_NAME=build, IONIC_OPTIMIZE_JS=false, IONIC_ANGULAR_ENTRY_POINT=/builds/mygituser/mygitrepo/node_modules/ionic-angular/index.js, GITLAB_USER_LOGIN=myuser, IONIC_GLOB_UTIL=/builds/mygituser/mygitrepo/node_modules/@ionic/app-scripts/dist/util/glob-util.js, IONIC_LOADING_COMPONENT_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/loading/loading-component.js, IONIC_PIPES_NG_MODULE_PATH=/builds/mygituser/mygitrepo/src/pipes/pipes.module.ts, IONIC_TOAST_COMPONENT_FACTORY_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/toast/toast-component.ngfactory.js, IONIC_ALERT_CONTROLLER_CLASSNAME=AlertController, CI_REPOSITORY_URL=https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.company.fr/mygituser/mygitrepo.git, IONIC_PICKER_CONTROLLER_CLASSNAME=PickerController, HOME=/root, IONIC_ACTION_SHEET_VIEW_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/action-sheet/action-sheet.js, IONIC_MODAL_CONTROLLER_PATH=/builds/mygituser/mygitrepo/node_modules/ionic-angular/components/modal/modal-controller.js}
----- End of the daemon log -----


FAILURE: Build failed with an exception.

* What went wrong:
Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
[ERROR] An error occurred while running cordova build android --debug (exit code 1).
        
ERROR: Job failed: exit code 1

Other information:

I asked the author of the docker image, beevelop/ionic, no better lead.

Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):


cli packages: (/opt/node/lib/node_modules)

    @ionic/cli-utils  : 1.19.0
    ionic (Ionic CLI) : 3.19.0

local packages:

    @ionic/app-scripts : 3.1.0
    Ionic Framework    : ionic-angular 3.9.2

System:

    Node : v8.9.1
    npm  : 5.5.1 
    OS   : Linux 4.9

Misc:

    backend : pro

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions