我刚刚开始使用jenkins并且遇到了$ PATH的问题,所以我决定将自己的docker镜像写为要在其中使用的环境。这是我的Jenkins文件,用于测试它是否有效:
pipeline {
agent {
docker {
image: custom-alpine-nodejs:latest
-p 3000:3000
}
}
stages {
stage('build') {
steps {
// this return root instead of user which i created in my image
// the image i build, run locally and enter whoami output
// the user that i created in the image as expected, except inside jenkins
sh 'whoami'
// doing nvm install 8.11.2 result in nvm not found
// but running the image i build locally works just fine
sh 'nvm install 8.11.2' // not work
nvm install 8.11.2 // tested this also not work
}
}
}
}
这是我的nodejs.Dockerfile
FROM alpine:3.6
RUN adduser -D -g "" jenkins-runner && \
touch /home/jenkins-runner/.bashrc /home/jenkins-runner/.profile /home/jenkins-runner/.zshrc &&\
chown -R jenkins-runner:jenkins-runner /home/jenkins-runner && \
apk -q update && \
apk -q add git curl bash
USER jenkins-runner
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash && \
export NVM_DIR="$HOME/.nvm" && \
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
CMD ["/bin/bash"]
我的Dockerfile在本地执行时按预期运行,我可以运行容器并执行nvm install
而whoami
将返回jenkins-runner
,除了jenkins之外,所有内容都按预期工作。
这只是我的一个Dockerfile,我准备了nodejs.Dockerfile,meteor.Dockerfile,flask.Dockerfile,elixir.Dockerfile,go.Dockerfile,当我在他们做CI时他们看起来只是为我未来的东西做准备similiar。
如果没有这方面的解决方案,如果有人可以告诉我如何进入jenkins,我也会很感激,我可以像处理我的Linux机器一样处理环境,但是我想要的还有非root用户我需要能够运行我的应用程序进行测试或ci / cd。
我正在使用jenkins blue ocean plugin btw。