运行ruby测试时,在$PATH中找不到Jenkinsfile docker exec错误可执行文件
我在Jenkinsfile中有一个使用rake测试运行一些ruby测试文件的阶段。但是测试花费的时间太长,所以我计划实现单个测试的并行运行。但我在并行阶段执行单个测试时出错 当我们在lib文件夹中时,所有的测试用例都是使用rake测试运行的 当我们在lib/test文件夹中时,使用rubytest1.rb运行单独的测试用例 当前正在工作的文件:运行ruby测试时,在$PATH中找不到Jenkinsfile docker exec错误可执行文件,ruby,docker,parallel-processing,jenkins-pipeline,Ruby,Docker,Parallel Processing,Jenkins Pipeline,我在Jenkinsfile中有一个使用rake测试运行一些ruby测试文件的阶段。但是测试花费的时间太长,所以我计划实现单个测试的并行运行。但我在并行阶段执行单个测试时出错 当我们在lib文件夹中时,所有的测试用例都是使用rake测试运行的 当我们在lib/test文件夹中时,使用rubytest1.rb运行单独的测试用例 当前正在工作的文件: stage('Test Image') { steps {
stage('Test Image') {
steps {
script {
sh "docker run --rm --entrypoint '' -v \${AWS_CONFIG_FILE:-/home/ubuntu/.aws/config}:/root/.aws/config:ro -v \${AWS_SHARED_CREDENTIALS_FILE:-/home/ubuntu/.aws/credentials}:/root/.aws/credentials:ro -v ${WORKSPACE}/test-results:/srv/www/lib/test/html_reports ${IMAGE_NAME} rake test"
}
}
}
使用并行测试修改了Jenkins文件:
stage('Test the Image') {
parallel {
stage('Test1'){
steps {
script {
sh "docker run --rm --entrypoint '' -v \${AWS_CONFIG_FILE:-/home/ubuntu/.aws/config}:/root/.aws/config:ro -v \${AWS_SHARED_CREDENTIALS_FILE:-/home/ubuntu/.aws/credentials}:/root/.aws/credentials:ro -v ${WORKSPACE}/test-results:/srv/www/lib/test/html_reports docker exec -it ${IMAGE_NAME} bash -c 'cd test && ruby test1.rb'"
}
}
}
stage('Test2'){
steps {
script {
sh "docker run --rm --entrypoint '' -v \${AWS_CONFIG_FILE:-/home/ubuntu/.aws/config}:/root/.aws/config:ro -v \${AWS_SHARED_CREDENTIALS_FILE:-/home/ubuntu/.aws/credentials}:/root/.aws/credentials:ro -v ${WORKSPACE}/test-results:/srv/www/lib/test/html_reports docker exec -it ${IMAGE_NAME} bash -c 'cd test && ruby test2.rb'"
}
}
}
}
}
错误:docker exec\:在$PATH中找不到可执行文件:
Docker文件:
FROM ruby:2.5.3 as build
RUN apt-get update && \
apt-get install -qy \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
RUN apt-get update && \
apt-get install -qy \
docker-ce \
docker-ce-cli \
containerd.io \
build-essential \
libldap-dev \
libsasl2-dev \
libxml2-dev \
libxslt-dev \
libldap2-dev \
libsasl2-dev \
git \
jq
RUN curl -fsSL -o /usr/local/bin/aws-vault 'https://github.com/99designs/aws-vault/releases/download/v5.1.2/aws-vault-linux-amd64' && \
chmod 755 /usr/local/bin/aws-vault
RUN gem install bundler -v '2.0.2'
WORKDIR /tmp
COPY Gemfile* ./
RUN bundler install --without=development
FROM ruby:2.5.3-slim
RUN mkdir -p /srv/www/lib /srv/www/tmp/sockets /srv/www/tmp/pids
COPY --from=build /usr/local/bundle /usr/local/bundle
COPY --from=build /usr/local/bin/aws-vault /usr/local/bin/aws-vault
COPY --from=build /usr/bin/docker* /usr/bin/
COPY ops-cli2.rb /srv/www/lib/cli2.rb
ENV AWS_SHARED_CREDENTIALS_FILE=/root/.aws/credentials
WORKDIR /srv/www/lib
COPY . .
RUN ["chmod", "+x", "/srv/www/lib/cli2.rb"]
ENTRYPOINT ["/srv/www/lib/cli2.rb"]
我认为您可以在命令行中删除docker exec-it