ICFI / eagle

1 stars 4 forks source link

pngquant binary doesn't seem to work correctly #26

Closed jamiejackson closed 6 years ago

jamiejackson commented 6 years ago

Jenkins build:

  • The /var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/pngquant-bin/vendor/pngquant binary doesn't seem to work correctly
    • Is there something wrong with this package?

https://github.com/imagemin/pngquant-bin/issues/78#issuecomment-374170356

@jwilcoxen45 , is image-webpack-loader necessary, BTW?

jamiejackson commented 6 years ago

Proof of Concept Solution

If we end up needing that package:

I exec'ed into the running Jenkins container:

docker exec -it --user root 140 bash

And installed some libpng* packages:

apt-get update && apt-get -y install libpng*

If we need this, then we'll bake it into the Jenkins image. I'm not crazy about all of these dependencies in the Jenkins image, though. I'm considering building the app's JAR in docker. For a quick and dirty fix, though, we'll probably start by loading up the Jenkins image with what it needs.

Results

Before

...
npm info lifecycle pngquant-bin@4.0.0~postinstall: pngquant-bin@4.0.0

> pngquant-bin@4.0.0 postinstall /var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/pngquant-bin
> node lib/install.js

  ⚠ The `/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/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 (/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/bin-build/node_modules/execa/index.js:231:11)
    at process._tickCallback (internal/process/next_tick.js:68:7)
npm verb lifecycle pngquant-bin@4.0.0~postinstall: unsafe-perm in lifecycle true
npm verb lifecycle pngquant-bin@4.0.0~postinstall: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/pngquant-bin/node_modules/.bin:/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/.bin:/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
npm verb lifecycle pngquant-bin@4.0.0~postinstall: CWD: /var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/pngquant-bin
npm info lifecycle pngquant-bin@4.0.0~postinstall: Failed to exec postinstall script
npm timing action:postinstall Completed in 8304ms
npm verb unlock done using /var/jenkins_home/.npm/_locks/staging-1f5e59b468aa1814.lock for /var/jenkins_home/workspace/eagle_jj/eagle/node_modules/.staging
npm WARN rollback Rolling back balanced-match@1.0.0 failed (this is probably harmless): EBUSY: resource busy or locked, unlink '/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/chokidar/node_modules/fsevents/node_modules/balanced-match/.nfsb72ddc94d067600e00000dd3'
npm WARN rollback Rolling back abbrev@1.1.1 failed (this is probably harmless): EBUSY: resource busy or locked, unlink '/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/chokidar/node_modules/fsevents/node_modules/abbrev/.nfsed818421624776ac00000dd2'
npm WARN rollback Rolling back aproba@1.2.0 failed (this is probably harmless): EBUSY: resource busy or locked, unlink '/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/chokidar/node_modules/fsevents/node_modules/aproba/.nfs48bc08b1bd4191c800000dd5'
npm WARN rollback Rolling back chownr@1.0.1 failed (this is probably harmless): EBUSY: resource busy or locked, unlink '/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/chokidar/node_modules/fsevents/node_modules/chownr/.nfs9cb9fbc2cc720ede00000dd6'
npm WARN rollback Rolling back console-control-strings@1.1.0 failed (this is probably harmless): EBUSY: resource busy or locked, unlink 
...

After

...
npm info lifecycle pngquant-bin@4.0.0~postinstall: pngquant-bin@4.0.0

> pngquant-bin@4.0.0 postinstall /var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/pngquant-bin
> node lib/install.js

  ⚠ The `/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/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
  ✔ pngquant built successfully
npm verb lifecycle pngquant-bin@4.0.0~postinstall: unsafe-perm in lifecycle true
npm verb lifecycle pngquant-bin@4.0.0~postinstall: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/pngquant-bin/node_modules/.bin:/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/.bin:/var/jenkins_home/workspace/eagle_jj/eagle/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
npm verb lifecycle pngquant-bin@4.0.0~postinstall: CWD: /var/jenkins_home/workspace/eagle_jj/eagle/node_modules/image-webpack-loader/node_modules/pngquant-bin
npm info lifecycle imagemin-pngquant@5.1.0~postinstall: imagemin-pngquant@5.1.0
npm info lifecycle image-webpack-loader@4.3.1~postinstall: image-webpack-loader@4.3.1
npm timing action:postinstall Completed in 14505ms
...
jamiejackson commented 6 years ago

Building in docker now (#33), with dependencies baked-in.