2016-07-06 54 views
0

我正在尝试为jenkins创建一个简单的流水线脚本来构建应用程序docker容器并在其中运行一个简单的测试。jenkins和docker的简单流水线脚本

node('swarm') { 
    // My project sources include both build.xml and a Dockerfile to run it in. 
    git credentialsId: 'jenkins-private-key', url: '[email protected]: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 
     } 

    } 

测试构建崩溃,我得到

咕嘟咕嘟没有找到

+2

安装'gulp'? – StephenKing

+0

'npm not found' ....我需要检查这些容器是否正确构建。谢谢 – Marrento

回答

1

你确定你已经吞掉安装容器内的错误?

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

如果你想正确的加入之前运行了一个quickfix你可以尝试安装一饮而尽:

sh 'npm install gulp' 

UPDATE

如此看来,您的容器没有节点安装毕竟,你可以使用official images作为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 
+1

npm找不到....我需要检查这些容器是否正确构建。谢谢 – Marrento

+0

@Marrento考虑接受我的答案,如果它帮助你。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –