Google Cloud Builder - не удается выполнить сборку gulp - PullRequest
0 голосов
/ 29 июня 2018

Задача

Я работаю над добавлением пары дополнительных шагов сборки к нашему текущему, функциональному конвейеру сборки. Проблема в том, что gulp не может найти модули, когда дело доходит до компиляции JavaScript. Ниже вы найдете соответствующий раздел нашего cloudbuild.yaml и скрипты bash.

Ожидаемые результаты

Мне нужно, чтобы Vue.js и SCSS были обработаны и подготовлены для развертывания в нашей производственной среде. В целом, наша цель состоит в том, чтобы удалить перенесенные JS и CSS из нашего репозитория Git и иметь только тот источник, с которым мы работаем, в репо.

Код поддержки

cloudbuild.yaml:

- name: 'gcr.io/cloud-builders/npm:node-9.10.0'
  id: npm-install
  entrypoint: 'bash'
  args:
    - '-c'
    - |
      sh nodeprep.sh
  waitFor: ['-']

- name: 'gcr.io/cloud-builders/npm:node-9.10.0'
  id: gulp-build
  entrypoint: 'bash'
  args: 
    - '-c'
    - |
      sh gulpprep.sh
  waitFor: ['npm-install']

nodeprep.sh:

#!/bin/bash
npm install --production
npm rebuild node-sass --force # necessary to resolve architecture differences

gulpprep.sh

#!/bin/bash
node_modules/.bin/gulp deploy-build --production

Ошибка

В зависимости от флага --production мы получаем разные ошибки. Вот ошибка, которую мы получаем при установленном флаге --production, как показано выше в nodeprep.sh:

: events.js:165
:       throw er; // Unhandled 'error' event
:       ^
: 
: Error: Cannot find module 'Axios' from '/workspace/js/vue-mini-apps/ha/src'
:     at /workspace/node_modules/browser-resolve/node_modules/resolve/lib/async.js:46:17
:     at process (/workspace/node_modules/browser-resolve/node_modules/resolve/lib/async.js:173:43)
:     at ondir (/workspace/node_modules/browser-resolve/node_modules/resolve/lib/async.js:188:17)
:     at load (/workspace/node_modules/browser-resolve/node_modules/resolve/lib/async.js:69:43)
:     at onex (/workspace/node_modules/browser-resolve/node_modules/resolve/lib/async.js:92:31)
:     at /workspace/node_modules/browser-resolve/node_modules/resolve/lib/async.js:22:47
:     at FSReqWrap.oncomplete (fs.js:170:21)
: Emitted 'error' event at:
:     at Labeled.<anonymous> (/workspace/node_modules/read-only-stream/index.js:28:44)
:     at Labeled.emit (events.js:180:13)
:     at Labeled.<anonymous> (/workspace/node_modules/stream-splicer/index.js:130:18)
:     at Labeled.emit (events.js:180:13)
:     at Deps.<anonymous> (/workspace/node_modules/stream-splicer/index.js:130:18)
:     at Deps.emit (events.js:180:13)
:     at /workspace/node_modules/module-deps/index.js:361:30
:     at onresolve (/workspace/node_modules/module-deps/index.js:179:25)
:     at /workspace/node_modules/browserify/index.js:490:22
:     at /workspace/node_modules/browser-resolve/index.js:265:24
2018/06/28 14:39:32 status changed to "ERROR"
ERROR
ERROR: build step "gcr.io/cloud-builders/npm@sha256:43d8b9b86f899f5622a668c7d7ad7493a323740440cf79089953cddc17a4ad2a" failed: exit status 1
2018/06/28 14:39:35 Build finished with ERROR status

Это вывод при удалении --production:

Step #1 - "gulp-build": Already have image (with digest): gcr.io/cloud-builders/npm:node-9.10.0
Starting Step #1 - "gulp-build"
Step #1 - "gulp-build": module.js:545
Step #1 - "gulp-build":     throw err;
Step #1 - "gulp-build":     ^
Step #1 - "gulp-build": 
Step #1 - "gulp-build": Error: Cannot find module '../lib/completion'
Step #1 - "gulp-build":     at Function.Module._resolveFilename (module.js:543:15)
Step #1 - "gulp-build":     at Function.Module._load (module.js:470:25)
Step #1 - "gulp-build":     at Module.require (module.js:593:17)
Step #1 - "gulp-build":     at require (internal/module.js:11:18)
Step #1 - "gulp-build":     at Object.<anonymous> (/workspace/node_modules/.bin/gulp:13:18)
Step #1 - "gulp-build":     at Module._compile (module.js:649:30)
Step #1 - "gulp-build":     at Object.Module._extensions..js (module.js:660:10)
Step #1 - "gulp-build":     at Module.load (module.js:561:32)
Step #1 - "gulp-build":     at tryModuleLoad (module.js:501:12)
Step #1 - "gulp-build":     at Function.Module._load (module.js:493:3)
Finished Step #1 - "gulp-build"
2018/06/28 16:24:44 status changed to "ERROR"
ERROR
ERROR: build step "gcr.io/cloud-builders/npm@sha256:43d8b9b86f899f5622a668c7d7ad7493a323740440cf79089953cddc17a4ad2a" failed: exit status 1

Перемещение node_modules из каталога возвращает следующие ошибки:

: 
: > proj@ build /workspace
: > cross-env NODE_ENV=production browserify -g envify js/vue-mini-apps/materials/app.js | uglifyjs -c warnings=false -m > js/vue-mini-apps/dist/materials.js
: 
: module.js:545
:     throw err;
:     ^
: 
: Error: Cannot find module '../dist'
:     at Function.Module._resolveFilename (module.js:543:15)
:     at Function.Module._load (module.js:470:25)
:     at Module.require (module.js:593:17)
:     at require (internal/module.js:11:18)
:     at Object.<anonymous> (/workspace/node_modules/.bin/cross-env:3:1)
:     at Module._compile (module.js:649:30)
:     at Object.Module._extensions..js (module.js:660:10)
:     at Module.load (module.js:561:32)
:     at tryModuleLoad (module.js:501:12)
:     at Function.Module._load (module.js:493:3)
: module.js:545
:     throw err;
:     ^
: 
: Error: Cannot find module '../tools/node'
:     at Function.Module._resolveFilename (module.js:543:15)
:     at Function.Module._load (module.js:470:25)
:     at Module.require (module.js:593:17)
:     at require (internal/module.js:11:18)
:     at Object.<anonymous> (/workspace/node_modules/.bin/uglifyjs:6:16)
:     at Module._compile (module.js:649:30)
:     at Object.Module._extensions..js (module.js:660:10)
:     at Module.load (module.js:561:32)
:     at tryModuleLoad (module.js:501:12)
:     at Function.Module._load (module.js:493:3)
: npm ERR! code ELIFECYCLE
: npm
:  ERR! 
: errno 1
: npm ERR! proj@ build: `cross-env NODE_ENV=production browserify -g envify js/vue-mini-apps/materials/app.js | uglifyjs -c warnings=false -m > js/vue-mini-apps/dist/materials.js`
: npm ERR! Exit status 1
: npm ERR!
:  
: npm ERR! Failed at the proj@ build script.
: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
: 
: npm ERR! A complete log of this run can be found in:
: npm ERR!     /builder/home/.npm/_logs/2018-06-28T22_33_47_659Z-debug.log

Сборки успешны на локальном хосте и не выполняются при выполнении этой команды:

container-builder-local --config=cloudbuild.yaml --dryrun=false .

Попытки (и совершенно неудачные) решения

Как только это будет работать с container-builder-local, я смогу протестировать его на GCP. Прямо сейчас я довольно хорошо застрял, потому что я сделал все, что могу придумать на данный момент, включая:

  • rm -rf node_modules как первая команда в nodeprep.sh
  • npm cache clear просто чтобы быть уверенным (npm жалуется и рекомендует npm cache verify вместо этого, кажется, все еще не имеет никакого эффекта)
  • добавление npm run-script build (работает cross-env NODE_ENV=production browserify -g envify js/vue-mini-apps/materials/app.js | uglifyjs -c warnings=false -m > js/vue-mini-apps/dist/materials.js).
  • Я даже пытался переместить node_modules из каталога проекта, поэтому npm install не имеет другого выбора, кроме как создать новый каталог node_modules - это приводит к тому, что gulp вообще не устанавливается при запуске npm install.

Я немного растерялся из-за того, что мне делать дальше. Кажется, чем глубже я спускаюсь по этой кроличьей норе, тем более прогрессивно нарушаются эти этапы сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...