jenkins和docker的简单pipe道脚本

我正在尝试为jenkins创build一个简单的pipe道脚本,它将构build应用程序docker容器并在其中运行一个简单的testing。

node('swarm') { // My project sources include both build.xml and a Dockerfile to run it in. git credentialsId: 'jenkins-private-key', url: 'git@github.com:myrepo/myapp.git' try { stage 'Build Docker' def myEnv = docker.build 'repo_folder/myapp:latest' stage 'Test' myEnv.withRun { sh 'gulp test' } stage 'Deploy' echo 'Push to Repo' stage 'Cleanup' echo 'prune and cleanup' sh 'npm prune' sh 'rm node_modules -rf' } catch (err) { currentBuild.result = "FAILURE" throw err } } 

testing版本崩溃,我得到一个错误

吞没find

你确定你在这个容器里面安装了一些?

理想情况下,您应该通过在Dockerfile的末尾添加RUN npm install -g gulp gulp来全局安装它。

如果你想要一个quickfix,你可以尝试在运行之前安装gulp,方法是:

 sh 'npm install gulp' 

UPDATE

所以看起来你的容器没有安装节点,你可以使用官方镜像作为Dockerfile的起点,例如:

 FROM node:6.3.0 

或者你可以自己安装它,这里有一个来自节点官方Dockerfile的有用的代码片段供你添加:

 ENV NODE_VERSION 6.3.0 # gpg keys listed at https://github.com/nodejs/node RUN set -ex \ && for key in \ 9554F04D7259F04124DE6B476D5A82AC7E37093B \ 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ 0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \ FD3A5288F042B6850C66B31F09FE44734EB7990E \ 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ B9AE9905FFD7803F25714661B63B535A4C206CA9 \ C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ ; do \ gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ done RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \ && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ && grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ && tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \ && rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \ && npm install -g npm