标签: jenkins

git-upload-pack 无限期挂起

我有以下调用结构:

  1. 詹金斯跑了fab -Huser@host set_repository_commit_hash:123abc
  2. set_repository_commit_hash运行git fetchpty = False
  3. 子进程ssh git@github.com git-upload-pack 'user/repository.git'永远不会完成。

我试过git fetch在本地克隆中运行并成功,但运行ssh git@github.com git-upload-pack 'user/repository.git'只返回以下内容并挂起:

00ab84249d3bb20930c185c08848c60b71f7b28990d6 HEADmulti_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed agent=git/1.8.4
0041cb34b1c8ca75d478df38c794fc15c5f01cc6377e refs/heads/branch_name
004012577068adf47015001bfa0cff9386d6cdf497ce refs/heads/[...]
003f84249d3bb20930c185c08848c60b71f7b28990d6 refs/heads/master
[a couple more lines like the ones above, then:]
0000
Run Code Online (Sandbox Code Playgroud)

这是一个已知的 SSH/Git/Fabric/Jenkins 问题吗?

我做到strace了,但我没有记录会话。我相信它被卡在了read.

可能的相关链接:

  1. Jenkins 问题 14752:SCM 轮询/最大并发轮询数 = 1 挂起 github 轮询
  2. 为什么 git-upload-pack (在 git clone …

ssh git jenkins

32
推荐指数
1
解决办法
8138
查看次数

使用“su - ”更改用户会给出“用户没有密码条目”

具体来说,我正在尝试通过切换到“jenkins”用户来测试我的构建服务器上的某些内容:

sudo su - jenkins
No passwd entry for user 'jenkins'
Run Code Online (Sandbox Code Playgroud)

linux su not-root-user jenkins passwd

22
推荐指数
1
解决办法
12万
查看次数

如何在 Jenkins 的 Docker 容器中运行构建

我正在尝试使用 Jenkins 在 Docker 容器中构建 C++ 项目。我在 Jenkins 中构建或在 Jenkins 之外的容器中构建都没有问题。

以下是我尝试过的。为清楚起见,我省略了卷映射。

情况1

以下命令在 shell 中成功运行构建。

docker run --rm --interactive=true --tty=true $IMAGE make
Run Code Online (Sandbox Code Playgroud)

但是,当在 Jenkins 中作为“执行 shell”步骤运行时,Docker 会返回以下错误。

cannot enable tty mode on non tty input
Run Code Online (Sandbox Code Playgroud)

案例二

以下命令与前一个命令类似,但禁用交互性。

docker run --rm $IMAGE make
Run Code Online (Sandbox Code Playgroud)

Jenkins 可以成功运行构建。但是,在中止构建时会出现严重的问题。构建会立即标记为中止,但容器会继续运行,直到构建完成。退出后容器也不会被移除。

在 shell 中运行时,命令会成功构建,但无法中断它。退出后容器也会被移除。

有谁知道如何在 Jenkins 的 Docker 容器中干净地运行构建并保留中止构建的能力?

使用任何 Jenkins 插件都不是一种选择,因为 Docker 调用在脚本内部并且无法轻松提取。

tty jenkins pty docker

19
推荐指数
1
解决办法
2万
查看次数

如何默认禁用 jenkins 中的“CSRF 保护”

我需要禁用默认启用的 jenkins 中的 CSRF 保护。问题是在容器化之后,当我旋转一个里面有 jenkins 的新容器时,它会抛出“没有有效的面包屑”错误。

我目前正在使用此 cmd 打开 jenkins 应用程序。

/usr/bin/java  -server -Djava.net.preferIPv4Stack=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration=false  -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=9090 --ajp13Port=-1
Run Code Online (Sandbox Code Playgroud)

debian jenkins

11
推荐指数
2
解决办法
1万
查看次数

Jenkins 不使用系统的语言环境

我在詹金斯有一个有趣的行为。
Jenkins 的 shell 不使用我的系统语言环境。

Jenkinsjenkins在我的系统上以用户身份运行。

jenkins通过 SSH登录:

locale 显示:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
等等...

env显示LANGLANGUAGE变量:

LANG=en_US.UTF-8
LANGUAGE=en_US:en

id 显示用户ID:

uid=1008(詹金斯) gid=...

将上述命令输入到 jenkins 作业 shell:

locale 显示:

LANG=
LANGUAGE=
LC_CTYPE="POSIX"
等等...

env没有表现出LANGLANGUAGE变数

id 显示用户 ID(如预期):

uid=1008(詹金斯) gid=...

文件:

/etc/profile 包含:

export LANG=en_US.UTF-8
export LANGUAGE=en_US:en

/etc/default/locale 包含:

export LANG=en_US.UTF-8
export LANGUAGE=en_US:en

启动脚本/etc/init.d/jenkins应该导出系统的语言环境:

# 加载环境
if [ -r /etc/default/locale ]; 然后
。/etc/default/locale
export LANG LANGUAGE …

shell ubuntu locale bashrc jenkins

10
推荐指数
1
解决办法
2万
查看次数

从詹金斯调用 sudo

我有一台构建机器,它的用户abc具有有限的 sudo 访问权限。当我查看源代码并运行我的构建脚本时,它工作正常。构建脚本包含的sudo调用没有说“sudo: no tty present and no askpass program specified”。但是当我在添加为奴隶的构建机器上对 Jenkins 做同样的事情时,它显示“sudo:没有 tty 存在并且没有指定 askpass 程序”。

我找到了一种解决方案,说要Default requiretty在文件中注释掉/etc/sudoers。但我无权访问此文件。

我怎样才能克服这个问题?

sudo tty not-root-user jenkins

8
推荐指数
1
解决办法
4万
查看次数

詹金斯 if 语句

我正在尝试在 Jenkins (1.638) 的 Execute Shell 上编写一个简单的 If 语句。我查看了类似的问题 ,但它仍然不起作用(请参阅下面的结果输出)。我尝试了 [[ 和 [ 以及相关的空格,看来 Jenkins 的处理方式与常规 bash 不同。我什至在 if 和 ; 的同一行上尝试了 then。任何的想法 ?

if [[ "${BRANCH_NAME}" == "master" ]] || [[ "${BRANCH_NAME}" == "master_dev" ]]
then
    ./runUnitTests.sh ${REPOSITORY_NAME} ${BASE_BUILD_CORE} ${BRANCH_NAME} ${BUILD_NUMBER} || echo "The npm may fail but the report exists"
fi
Run Code Online (Sandbox Code Playgroud)

詹金斯的结果是

  • [[升级==主]]/tmp/hudson11669113852432623.sh:2:/tmp/hudson11669113852432623.sh:[[:未找到
  • [[ 升级 == master_dev ]] /tmp/hudson11669113852432623.sh: 2: /tmp/hudson11669113852432623.sh: [[: 未找到 [核心] $ /bin/sh -xe /tmp/hudson729526230219526408.

bash jenkins

7
推荐指数
1
解决办法
3万
查看次数

Jenkins 应该在哪里设置环境变量

我正在使用 Jenkins 在 Linux 上使用 Maven 自动构建应用程序。

我应该在哪里设置环境变量,例如$JAVA_HOME和附加项目,$PATH以便 Jenkins 可以使用它们?

我尝试了几个不同的地方,但都没有成功。我不确定詹金斯使用什么样的外壳,无论是登录/非登录、交互式还是非交互式。

shell environment-variables jenkins

7
推荐指数
2
解决办法
5万
查看次数

一个用户帐户中的“无法连接到显示”

我有一个用 Qt 编写的 GUI 应用程序,我想通过 ssh(或 Jenkins)运行测试。只有一个用户帐户,它允许在显示模式下运行它(我以前这样做时是ofc export $DISPLAY=:0。在其他用户 jenkins 上,我在控制台中看到了一个错误:

QXcbConnection: Could not connect to display :0 
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能允许该用户以图形模式运行应用程序?我使用 Ubuntu 14.04。

ubuntu x-server jenkins

6
推荐指数
1
解决办法
4万
查看次数

哪个目录占用的空间最多

Jenkins 已停止构建,我可以从 df 中看到:/var 已达到最大值。在此之后,我可以看到罪魁祸首是 /var/lib/jenkins

52K     alternatives
...
4.0K    games
2.3G    jenkins   <--this one
4.0K    logrotate.status
...
12M     yum
2.4G    total
Run Code Online (Sandbox Code Playgroud)

但是,当我进入 jenkins 目录查看哪个文件夹消耗了这 2.3GB 的大部分时,出现了一些奇怪的结果:

$ sudo du -csh *
16K     config.xml
0       Connection Activity monitoring to slaves.log
0       Download metadata.log
0       Fingerprint cleanup.log
7.3M    fingerprints
4.0K    hudson.maven.MavenModuleSet.xml
4.0K    hudson.model.UpdateCenter.xml
4.0K    hudson.scm.CVSSCM.xml
4.0K    hudson.scm.SubversionSCM.xml
4.0K    hudson.tasks.Ant.xml
4.0K    hudson.tasks.Mailer.xml
4.0K    hudson.tasks.Maven.xml
4.0K    hudson.tasks.Shell.xml
4.0K    hudson.triggers.SCMTrigger.xml
4.0K    identity.key.enc
4.0K    jenkins.diagnostics.ooom.OutOfOrderBuildMonitor
4.0K    jenkins.model.ArtifactManagerConfiguration.xml
4.0K    jenkins.model.DownloadSettings.xml
4.0K    jenkins.model.JenkinsLocationConfiguration.xml
4.0K    jenkins.mvn.GlobalMavenConfig.xml
4.0K    jenkins.security.QueueItemAuthenticatorConfiguration.xml …
Run Code Online (Sandbox Code Playgroud)

shell disk-usage filenames jenkins

5
推荐指数
1
解决办法
7388
查看次数