如何在 Bluemix 管道暂存中避免 "no space left on device"?
How to avoid "no space left on device" on Bluemix pipeline staging?
我正在使用 Bluemix ToolChain 服务,即 CI 服务。
部署暂存失败,因为 no space left to device
。
我使用 manifest.yml 将 disk_quota 设置默认值更改为 1024M 和 2048MB,但两个结果都与默认值相同 disk_quota。
我还尝试将 buildpack 设置默认为 sdk-for-nodejs
,因为如果我使用默认值,它将下载许多不必要的 buildpack 文件(例如 java 相关的 buildpack)。本以为会省钱space,结果还是一样
我该如何解决这个问题?你有什么想法吗?
这是错误日志。 (日志太长,部分日志替换为“:”)
Target: https://api.ng.bluemix.net
Using manifest file /home/pipeline/aafdbd4d-c22d-4fee-ae34-8d1146cacb56/manifest.yml
:
:
Uploading 101M, 117985 files
Done uploading
OK
:
:
Downloading sdk-for-nodejs...
Downloaded sdk-for-nodejs
Creating container
Successfully created container
Downloading app package...
Downloaded app package (107.3M)
Downloading build artifacts cache...
Downloaded build artifacts cache (6M)
Staging...
-----> IBM SDK for Node.js Buildpack v3.10-20170119-1146
Based on Cloud Foundry Node.js Buildpack v1.5.24
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
NODE_MODULES_CACHE=true
-----> Installing binaries
engines.node (package.json): unspecified
engines.npm (package.json): unspecified (use default)
Resolving node version (latest stable) via 'node-version-resolver'
Installing IBM SDK for Node.js (4.7.2) from cache
-----> Restoring cache
-----> Checking and configuring service extensions before installing dependencies
-----> Building dependencies
Prebuild detected (node_modules already exists)
Rebuilding any native modules
Skipping cache restore (new runtime signature)
body-parser@1.17.1 /tmp/app/node_modules/body-parser
:
:
core-util-is@1.0.2 /tmp/app/node_modules/webpack/node_modules/memory-fs/node_modules/readable-stream/node_modules/core-util-is
-----> Installing App Management
-----> Caching build
Saving 2 cacheDirectories (default):
Clearing previous node cache
- node_modules
-----> Build succeeded!
├── body-parser@1.17.1
├── bootstrap@3.3.7
├── config@1.25.1
├── express@4.15.2
├── jquery@3.1.1
├── react@15.4.2
├── react-dom@15.4.2
├── react-redux@4.4.6
├── redux@3.6.0
├── redux-thunk@2.2.0
├── request@2.80.0
└── request-promise@4.1.1
cp: cannot create regular file ‘/tmp/contents666597699/app/node_modules/babel-core/node_modules/babel-register/node_modules/core-js/library/modules/_date-to-primitive.js’: No space left on device
:
:
cp: cannot create regular file ‘/tmp/contents666597699/app/node_modules/babel-core/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.search.js’: No space left on device
cp: : No space left on device
Exit status 1
Staging failed: Exited with status 1
Destroying container
cp: cannot create regular file ‘/tmp/contents666597699/app/node_modules/babel-core/node_modules/babel-register/node_modules/core-js/library/modules/_wks.js’: No space left on device
Successfully destroyed container
FAILED
Error restarting application: StagingError
TIP: use 'cf logs kcuc-web --recent' for more information
Finished: FAILED
这也是我的 manifest.yml 文件。
applications:
- path: .
memory: 256M
instances: 1
domain: mybluemix.net
name: xxxxx
host: xxxxx
disk_quota: 1024M
buildpack: sdk-for-nodejs
env:
DEBUG: 'false'
API_PROTOCOL: https
API_HOST: xxxxx.mybluemix.net
API_PORT: '443'
CLIENT_PORT: '443'
我在 developerWorks 上得到了答案。 (谢谢您,托德·卡普林格。)
在部署阶段复制不必要的 node_modules 目录是根本原因。
所以,我必须加上.cfignore
和node_modules/
。 (语法类似于 .gitignore
)
(为什么不需要?因为构建 -> 部署是链式过程,所以构建已经完成。在这种情况下,部署阶段不需要 node_modules 目录。)
之后,下载的应用程序包大小将小于 1MB,并且消除了不必要的复制任务。
结果不仅部署成功,而且部署上线速度也变快了。
我正在使用 Bluemix ToolChain 服务,即 CI 服务。
部署暂存失败,因为 no space left to device
。
我使用 manifest.yml 将 disk_quota 设置默认值更改为 1024M 和 2048MB,但两个结果都与默认值相同 disk_quota。
我还尝试将 buildpack 设置默认为 sdk-for-nodejs
,因为如果我使用默认值,它将下载许多不必要的 buildpack 文件(例如 java 相关的 buildpack)。本以为会省钱space,结果还是一样
我该如何解决这个问题?你有什么想法吗?
这是错误日志。 (日志太长,部分日志替换为“:”)
Target: https://api.ng.bluemix.net
Using manifest file /home/pipeline/aafdbd4d-c22d-4fee-ae34-8d1146cacb56/manifest.yml
:
:
Uploading 101M, 117985 files
Done uploading
OK
:
:
Downloading sdk-for-nodejs...
Downloaded sdk-for-nodejs
Creating container
Successfully created container
Downloading app package...
Downloaded app package (107.3M)
Downloading build artifacts cache...
Downloaded build artifacts cache (6M)
Staging...
-----> IBM SDK for Node.js Buildpack v3.10-20170119-1146
Based on Cloud Foundry Node.js Buildpack v1.5.24
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
NODE_MODULES_CACHE=true
-----> Installing binaries
engines.node (package.json): unspecified
engines.npm (package.json): unspecified (use default)
Resolving node version (latest stable) via 'node-version-resolver'
Installing IBM SDK for Node.js (4.7.2) from cache
-----> Restoring cache
-----> Checking and configuring service extensions before installing dependencies
-----> Building dependencies
Prebuild detected (node_modules already exists)
Rebuilding any native modules
Skipping cache restore (new runtime signature)
body-parser@1.17.1 /tmp/app/node_modules/body-parser
:
:
core-util-is@1.0.2 /tmp/app/node_modules/webpack/node_modules/memory-fs/node_modules/readable-stream/node_modules/core-util-is
-----> Installing App Management
-----> Caching build
Saving 2 cacheDirectories (default):
Clearing previous node cache
- node_modules
-----> Build succeeded!
├── body-parser@1.17.1
├── bootstrap@3.3.7
├── config@1.25.1
├── express@4.15.2
├── jquery@3.1.1
├── react@15.4.2
├── react-dom@15.4.2
├── react-redux@4.4.6
├── redux@3.6.0
├── redux-thunk@2.2.0
├── request@2.80.0
└── request-promise@4.1.1
cp: cannot create regular file ‘/tmp/contents666597699/app/node_modules/babel-core/node_modules/babel-register/node_modules/core-js/library/modules/_date-to-primitive.js’: No space left on device
:
:
cp: cannot create regular file ‘/tmp/contents666597699/app/node_modules/babel-core/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.search.js’: No space left on device
cp: : No space left on device
Exit status 1
Staging failed: Exited with status 1
Destroying container
cp: cannot create regular file ‘/tmp/contents666597699/app/node_modules/babel-core/node_modules/babel-register/node_modules/core-js/library/modules/_wks.js’: No space left on device
Successfully destroyed container
FAILED
Error restarting application: StagingError
TIP: use 'cf logs kcuc-web --recent' for more information
Finished: FAILED
这也是我的 manifest.yml 文件。
applications:
- path: .
memory: 256M
instances: 1
domain: mybluemix.net
name: xxxxx
host: xxxxx
disk_quota: 1024M
buildpack: sdk-for-nodejs
env:
DEBUG: 'false'
API_PROTOCOL: https
API_HOST: xxxxx.mybluemix.net
API_PORT: '443'
CLIENT_PORT: '443'
我在 developerWorks 上得到了答案。 (谢谢您,托德·卡普林格。)
在部署阶段复制不必要的 node_modules 目录是根本原因。
所以,我必须加上.cfignore
和node_modules/
。 (语法类似于 .gitignore
)
(为什么不需要?因为构建 -> 部署是链式过程,所以构建已经完成。在这种情况下,部署阶段不需要 node_modules 目录。)
之后,下载的应用程序包大小将小于 1MB,并且消除了不必要的复制任务。 结果不仅部署成功,而且部署上线速度也变快了。