Ruby和bundle如何通过SSH与Jenkins实现自动化部署?

2026-04-11 15:551阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计369个文字,预计阅读时间需要2分钟。

Ruby和bundle如何通过SSH与Jenkins实现自动化部署?

我有一个使用Publish Over SSH插件的Jenkins作业,它将script.sh文件发送到远程服务器并执行它。脚本看起来像这样:`cd some_path && bundle exec rake p build`。我收到以下错误:`Your Ruby version is 1.9.3, but your Gemfile specifies '1.8.7'`。

我有一个使用Publish Over SSH插件的Jenkins作业将script.sh发送到远程机器并执行它.脚本看起来像这样:

cd some_path bundle bundle exec rakep build

我收到以下错误

Your Ruby version is 1.9.3, but your Gemfile specified 2.1.0

如果我通过SSH连接到计算机并手动运行或执行此操作,则相同的脚本可以正常运行

echo "bash script.sh" | ssh me@remote_machine

经过一些研究后,我发现本地机器上的这个错误可以通过使用登录shell或(重新)安装包来修复.我做后者没有效果.前者可能是方向,但Jenkins插件不允许我配置任何听起来像它的东西.

我认为错误的原因可能是插件SSH以这种方式(非登录shell?)某些环境变量没有设置 – 所以我为env中找到的任何VAR添加了导出VAR =值,同时手动SHHed与Ruby有关.仍然没有效果.

我不熟悉Ruby,并希望它不是一个愚蠢的问题.任何帮助,将不胜感激.

编辑:

使用哪个ruby我发现Jenkins确实使用了另一个Ruby可执行文件而不是我,即使我们使用相同的SSH凭据.

尝试在脚本上添加此行:

Ruby和bundle如何通过SSH与Jenkins实现自动化部署?

#!/bin/bash --login

如果您正在使用rvm(我相信您这样做),每次进入包含Gemfile的文件夹时,rvm都会更改当前版本的ruby.这个功能存储在需要加载的〜/ .bash_profile中 – 这可以通过添加–login选项来完成.

本文共计369个文字,预计阅读时间需要2分钟。

Ruby和bundle如何通过SSH与Jenkins实现自动化部署?

我有一个使用Publish Over SSH插件的Jenkins作业,它将script.sh文件发送到远程服务器并执行它。脚本看起来像这样:`cd some_path && bundle exec rake p build`。我收到以下错误:`Your Ruby version is 1.9.3, but your Gemfile specifies '1.8.7'`。

我有一个使用Publish Over SSH插件的Jenkins作业将script.sh发送到远程机器并执行它.脚本看起来像这样:

cd some_path bundle bundle exec rakep build

我收到以下错误

Your Ruby version is 1.9.3, but your Gemfile specified 2.1.0

如果我通过SSH连接到计算机并手动运行或执行此操作,则相同的脚本可以正常运行

echo "bash script.sh" | ssh me@remote_machine

经过一些研究后,我发现本地机器上的这个错误可以通过使用登录shell或(重新)安装包来修复.我做后者没有效果.前者可能是方向,但Jenkins插件不允许我配置任何听起来像它的东西.

我认为错误的原因可能是插件SSH以这种方式(非登录shell?)某些环境变量没有设置 – 所以我为env中找到的任何VAR添加了导出VAR =值,同时手动SHHed与Ruby有关.仍然没有效果.

我不熟悉Ruby,并希望它不是一个愚蠢的问题.任何帮助,将不胜感激.

编辑:

使用哪个ruby我发现Jenkins确实使用了另一个Ruby可执行文件而不是我,即使我们使用相同的SSH凭据.

尝试在脚本上添加此行:

Ruby和bundle如何通过SSH与Jenkins实现自动化部署?

#!/bin/bash --login

如果您正在使用rvm(我相信您这样做),每次进入包含Gemfile的文件夹时,rvm都会更改当前版本的ruby.这个功能存储在需要加载的〜/ .bash_profile中 – 这可以通过添加–login选项来完成.