1

我想从 Jenkins 服务器下载一个需要用户和密码的文件(slave-agent.jnlp)。(使用 Java)

既然不能在 URL 中给出用户名和密码,那么有什么方法可以实现呢?

谢谢,多伦

4

2 回答 2

2

这是我用来启动从节点的 shell 脚本:

#!/bin/bash

if [ ! -e slave.jar ] || [ ! -e commons-codec-1.7.jar ]; then
   curl -O "https://my.jenkins.host/jnlpJars/slave.jar"
   curl -O "https://my.nexus.repo/service/local/repositories/central/content/commons-codec/commons-codec/1.7/commons-codec-1.7.jar"
fi

nohup java -jar slave.jar -cp commons-codec-1.7.jar \
     -jnlpUrl https://my.jenkins.host/computer/My_slave/slave-agent.jnlp \
     -jnlpCredentials myuser:myusertoken \
     > $0.log 2>&1 &

笔记:

  • 我的从站是临时启动的,所以我选择注册一个名为“My_slave”的从站,然后使用从站的 JNLP URL 在另一台机器上运行从站。这意味着从站仍然集中配置
  • 可能不再需要添加 commons-codec jar。这是身份验证错误JENKINS-9679的解决方法
  • 我在我的 Jenkins 用户帐户中配置了一个用户令牌。这避免了我必须将密码放入 shell 脚本

其他注意事项:

  • 使用 SSH 插件是配置从节点的最简单方法,前提是从节点是 unix 并且您已正确设置 SSH 密钥。这种 JNLP 方法有效但很繁琐。
  • 另一个需要考虑的有趣插件是swarm 插件。我没有使用过它,但我喜欢奴隶不必预先注册的方式。

更新

关于如何使用 swarm 插件的简洁博客文章:

于 2013-06-04T17:37:40.843 回答
1

可以在 url 中提及用户名和密码,如下所示:

http://username:password@example.com/
于 2013-06-02T06:00:26.240 回答