J'utilise jhipster 5.1.0, j'ai utilisé "jhipster ci-cd" pour générer le fichier .gitlab-ci.yml. Je fais tourner Gitlab et Gitlab-CI sur un serveur Ubuntu 18.04LTS privé dans mon entreprise. J'ai configuré le Gitlab Runner pour qu'il exécute les builds avec docker.
Mon fichier .gitlab-ci.yml est le suivant (je ne l'ai pas beaucoup modifié) :
image: jhipster/jhipster:v5.1.0
cache:
key: "$CI_COMMIT_REF_NAME"
paths:
- .gradle/wrapper
- .gradle/caches
stages:
- build
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
- ./gradlew yarn_install -PnodeInstall --no-daemon
gradle-build:
stage: build
script:
- ./gradlew compileJava -x check -PnodeInstall --no-daemon
- ./gradlew test -PnodeInstall --no-daemon
- ./gradlew yarn_test -PnodeInstall --no-daemon
- ./gradlew bootJar -Pprod -x check -PnodeInstall --no-daemon
artifacts:
paths:
- build/libs/*.jar
# Uncomment following to expire the artifacts after defined period, https://docs.gitlab.com/ee/ci/yaml/README.html#artifacts-expire_in
# expire_in: 90 day
Voici le résultat de l'exécution de gitlab-ci :
...
Successfully extracted cache
$ export GRADLE_USER_HOME=`pwd`/.gradle
$ ./gradlew compileJava -x check -PnodeInstall --no-daemon
/bin/bash: line 60: ./gradlew: Permission denied
ERROR: Job failed: exit code 1
Comme le problème semble évident, j'ai essayé d'ajouter " - chmod +x gradlew ", avant l'appel " .gradlew " dans la section " before_script ". J'ai pensé que ce serait une bonne idée, parce qu'il était généré par la commande "jhipster ci-cd" avant la 5.1.0, mais plus maintenant. Sans succès : La sortie de Gitlab-CI est devenue la suivante :
...
Successfully extracted cache
$ export GRADLE_USER_HOME=`pwd`/.gradle
$ chmod +x gradlew
chmod: changing permissions of 'gradlew': Operation not permitted
ERROR: Job failed: exit code 1
J'ai donc essayé de passer à l'image docker "openjdk:8" au lieu de "jhipster/jhipster:v5.1.0", dans le fichier .gitlab-ci.yml. Bien mieux, gradle lance la commande "yarn install", mais elle s'arrête à un moment donné, car ce container ne contient pas "libpng-dev" (qui a été ajouté récemment dans le container jhipster, pas de chance !)
...
[5/5] Building fresh packages...
error An unexpected error occurred:
"/builds/epigone/exportCCN/node_modules/pngquant-bin: Command failed.
Exit code: 1
Command: sh
Arguments: -c node lib/install.js
Directory: /builds/epigone/exportCCN/node_modules/pngquant-bin
Output:
⚠ The `/builds/epigone/exportCCN/node_modules/pngquant-bin/vendor/pngquant`
binary doesn't seem to work correctly
⚠ pngquant pre-build test failed
ℹ compiling from source
✔ pngquant pre-build test passed successfully
✖ Error: pngquant failed to build, make sure that libpng-dev is installed
at Promise.all.then.arr (/builds/epigone/exportCCN/node_modules/pngquant-bin/node_modules/bin-build/node_modules/execa/index.js:231:11)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)".
info If you think this is a bug, please open a bug report with the information provided in "/builds/epigone/exportCCN/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
:yarn_install FAILED