首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Jenkins在运行sh‘’时返回并退出代码127?

为什么Jenkins在运行sh‘’时返回并退出代码127?
EN

Stack Overflow用户
提问于 2022-05-20 15:10:37
回答 1查看 1.5K关注 0票数 0

我在sh 'python -version‘和sh 'python3 -版本中遇到了同样的错误,我不知道为什么当Dockerfile映像安装了python,my版本: 2.319.3我将标签添加到节点时,我不知道为什么Jenkins不识别这个命令.回声和ls命令工作,我不知道我是否理解它非常哈哈哈帮助!

My管线:

代码语言:javascript
复制
pipeline {
    agent {
        label 'python'
    }
    stages {
        stage ('Test') {
            steps {
                sh 'echo Aloha!!!!!'
            }
        }
        stage ('Is there any python?') {
            steps {
                sh 'python3 --version'
            }
        }
    }
}

我的Dockerfile

代码语言:javascript
复制
FROM ubuntu:21.10

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -qy git wget software-properties-common openssh-server && \
    sed -i 's|session    required     pam_loginuid.so|session    optional     pam_loginuid.so|g' /etc/pam.d/sshd && \
    mkdir -p /var/run/sshd && \
    apt-get install -qy openjdk-8-jdk && \
    apt-get install -qy maven && \
    apt-get install -qy apt-utils && \
    useradd -ms /bin/bash jenkins && \
    echo "jenkins:jenkins" | chpasswd && \
    mkdir /home/jenkins/.m2

RUN mkdir /home/jenkins/.ssh/ && \
    touch /home/jenkins/.ssh/authorized_keys

RUN chown -R jenkins:jenkins /home/jenkins/.m2/ && \
    chown -R jenkins:jenkins /home/jenkins/.ssh/

RUN apt-get install python3

RUN apt-get update && apt-get install python3-pip python3.9-venv -y

RUN cd "$(dirname $(which python3))" && \
    ln -s idle3 idle && \
    ln -s pydoc3 pydoc && \
    ln -s python3 python && \
    ln -s python3-config python-config

COPY .pypirc /home/jenkins/

EXPOSE 22

CMD ["/usr/sbin/sshd", "-D"]

Jenkins

代码语言:javascript
复制
[Pipeline] { (Is there any python?)
[Pipeline] sh
+ python3 --version
/var/jenkins_home/workspace/Jobs/Pipeline Github Example@tmp/durable-a28fa974/script.sh: 1: python3: not found
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE
EN

回答 1

Stack Overflow用户

发布于 2022-05-20 23:34:52

Jenkins代理标签表示一个或一个组工作节点,Jenkins主节点将在该节点上调度作业/管道运行。

因此,您的管道被分配到在worker节点'python‘上运行,错误告诉您它无法在worker节点上找到python可执行文件。

您需要将机器/vm注册到Jenkins主节点,使其充当Jenkins工作者节点,在注册时,可以为worker节点指定标签,然后可以使用label来引用作业/管道中的工作者节点。

一种选择是在工作节点python上准备python。

另一种选择是使用您的Dockerfile作为整个管道或单个阶段的代理。更多细节:https://www.jenkins.io/doc/book/pipeline/syntax/#agent

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72321201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档