我有一组三个节点(一个经理,两个 worker )。在我的 swarm 中,我正在运行安装了 docker-swarm-plugin ( https://github.com/jenkinsci/docker-swarm-plugin ) 的 jenkins 服务。我想使用该插件在我的 swarm 中为每个 jenkins 作业创建一个构建代理容器。对于代理,我想使用 jenkins/jnlp-slave docker 镜像 ( https://hub.docker.com/r/jenkinsci/jnlp-slave/ )。图像需要两个参数作为开始:
docker-swarm-plugin 创建三个环境变量:
我通过 JENKINS_SECRET 环境变量(在 Jenkins 插件配置的 ENV 部分)将 secret 传递给代理:
JENKINS_SECRET=$DOCKER_SWARM_PLUGIN_JENKINS_AGENT_SECRET
我尝试使用正则表达式(也在 Jenkins 插件配置的 ENV 部分)传递代理名称:
JENKINS_AGENT_NAME=`echo $DOCKER_SWARM_PLUGIN_JENKINS_AGENT_JNLP_URL | sed ...`
但是该命令没有执行(我理解这是出于安全原因以避免代码注入(inject))。
我想达到什么:
我想在我的 docker swarm 上运行 jenkins,并且我希望 jenkins 在自己的构建代理容器中运行每个作业,该容器在作业完成后被删除。而且我希望构建代理容器分布在整个集群中(jenkins docker-plugin 在运行 jenkins master 的节点上启动它们)。我知道 docker-swarm-plugin 应该做我想做的事。而且我认为 jenkins/jnlp-slave 图像可以用来构建我想要使用的代理容器。但我找不到如何让它们一起工作的解决方案。
谁能给我一些建议?
我是否应该使用另一个与插件配合得更好的图像?
最佳答案
我打开了问题 https://github.com/jenkinsci/docker-swarm-plugin/issues/37在 docker-swarm-plugin 上,现在使用 PR https://github.com/jenkinsci/docker-swarm-plugin/pull/39使用创建的代理名称添加一个新的环境变量。这可以传递给 docker 镜像,一切正常!
关于docker - 如何使用 Jenkins docker-swarm-plugin 使用 docker image jenkins/jnlp-slave(传递代理名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57377058/