我正在尝试从一个运行在Docker映像中的Jenkins文件执行以下命令:sh "cd ./src/common && npm install"
Jenkins日志显示如下:
18:56:46 + cd ./src/common
18:56:46 + npm install
18:56:46
[Pipeline] }
18:56:46 $ docker stop --time=1
02b60e1ac63b72e7a57356249d7ba48b720bf6f0c7df2addd20b7a2d45201ef5
18:56:48 $ docker rm -f
02b60e1ac63b72e7a57356249d7ba48b720bf6f0c7df2addd20b7a2d45201ef5
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // stage
[Pipeline] echo
18:56:48 Exception: hudson.AbortException: script returned exit code 243
[Pipeline] error
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // timestamps
[Pipeline] End of Pipeline
ERROR: hudson.AbortException: script returned exit code 243
当我在不使用docker镜像的情况下运行它时,它运行得很好。但是,我现在需要使用Docker镜像。
以下是我的Docker镜像文件:
FROM node:16
ENV PROJECT_DIR /usr/local/bin/src/oppt
WORKDIR ${PROJECT_DIR}
RUN apt-get update -y
RUN apt-get install zip -y
RUN apt-get install curl -y
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN ./aws/install
COPY . ${PROJECT_DIR}/
我已经试过了:sh(script: """ #!/bin/bash pushd ./src/common && npm install && popd""")
但它仍然不工作。
错误是在npm install
不知何故,但它没有抛出它或被登录到jenkins。
我已经完成了./src/common
目录的ls
,预期的文件在那里,package.json
和package-lock.json
npm install
应该创建一个node-modules
文件夹,并将依赖项放在其中,但这并没有发生。如果它是IO配股发行,那么它应该抛出这样的错误,但它不是。或者,即使包文件是坏的(实际上并不是),它也应该抛出一些错误。
感谢任何帮助!
谢谢。
答案是:
sh "HOME=${WORKSPACE} && cd ${WORKSPACE}/src/common && some command"
必须先设置Docker的工作空间位置,然后到该位置执行你想要的命令。