我正在创建一个从centOS创建自己的容器的Jenkins管道
使用agent { dockerfile true }
然后使用以下方法调用自定义脚本:
pipeline {
agent { dockerfile true }
stages {
stage('Build') {
steps {
sh 'whoami'
sh 'printenv'
sh './rpmBuild.sh'
}
}
}
}
然后问一下,当用sudo调用任何命令失败时,它会给出sudo: unknown uid xxx: who are you?
答案 0 :(得分:0)
jenkins无法识别的UID xxx是运行jenkins的服务器/ ubuntu系统中jenkin的用户ID,并且管道正在jenkins id不同的docker容器中运行。因此,詹金斯服务器ID在Docker内部未被识别。
因此,这对我有用: 更改自:JENKINS_USER = $ NAME 到:JENKINS_USER =“ root” 在/ etc / default / jenkins
中这可以从管道的控制台输出(在开始时显示)进行验证: $ docker run -t -d -u 0:0 ....
此0:0指示其以root用户身份运行。 遇到此问题时,我的密码是xxx:yyy而不是0:0。 xxx:yyy与在运行jenkins的服务器/ ubuntu系统中的/ etc / passwd中的jenkins用户相同。
希望这会有所帮助!
答案 1 :(得分:-1)
在容器内,您需要具有jenkins用户的passwd,group和sudoers文件。 jenkins用户需要设置为具有无密码的sudo(import spacy
from spacy.attrs import *
import numpy as np
nlp = spacy.load('en_core_web_lg')
texts = ["this is some sentence","This is the last sentence"]
max_length =10
data = np.zeros((len(texts), max_length), dtype=np.uint64)
for row, doc in enumerate(nlp.pipe(texts, n_threads=8, batch_size=10000)):
dat = doc.to_array([LEMMA, IS_STOP])
# Check to see if text length is not 0
if len(dat) > 0:
delete = np.where(dat[:, 1] == 1)
dat = np.delete(dat, delete, 0)
length = min(len(dat), max_length)
data[row, :length] = dat[:length, 0].ravel()
)。
一种方法是正确设置主机的jenkins帐户,然后以以下方式运行docker:
%jenkins ALL=(ALL) NOPASSWD: ALL