QA@IT

jenkinsでrailsのタスク実行

4816 PV

お世話になります
そもそも実行すべきでないかもしれないので、聞くだけ聞いてみるのですが

jenkinsでrailsのタスクを実行しようと考えています
(シェルで単純に実行しようとしてます)

export PATH="/Users/shiratsu/.rvm/gems/ruby-2.1.0/bin/:$PATH"
/Users/shiratsu/.rvm/rubies/ruby-2.1.0/bin/gem install railties
cd /Users/shiratsu/caferails
rails runner -e development Tasks::GeoCooding.execute

こんな感じで考えているのですが、いま下記エラーで詰まってます

ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted @ chmod_internal - /Users/shiratsu/.rvm/rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/wrappers/ruby
Build step 'シェルの実行' marked build as failure
Finished: FAILURE

パーミッションを与えればいいんでしょうけど、モグラたたきみたくなりそうだなと。。。

何か他にいい方法があれば、または、すべきでないなど、ご教授いただければと思います
よろしくお願いします

回答

Jenkins をOS X のログインユーザー権限のデーモンで自動起動しておく設定
https://gist.github.com/shunirr/3522219

私は上記gistの内容をもとに、自分の権限でjenkinsを動かしています。
Jenkinsとユーザ権限に関して私はこれで解決しました。

編集 履歴 (0)
  • おお、試してみます
    ありがとうございます
    -
  • やったのですが、結果変わらずでした。。。 -
  • 念のため、Jenkinsがログインユーザの権限で起動されているかどうかはご確認いただけますでしょうか。kenchanさんのコメントにありますようにwhoamiコマンドや、idコマンドで確認できます。 -

RVMをお使いのようですが、2つほど気になった点があります。

  • Jenkinsの実行ユーザとRVMをインストールしたユーザは同一でしょうか
  • RVMを使っているユーザでは、bashrcなどに source $HOME/.rvm/scripts/rvm という設定をしていると思うのですが、これに相当する記述がないのではないでしょうか

推測になりますが、JenkinsからShellを実行するユーザがRVMをインストールしたユーザになり、RVMの設定が正しく行われれば実行できるのではないかと思います。

編集 履歴 (0)
  • 返信ありがとうございます
    >Jenkinsの実行ユーザとRVMをインストールしたユーザは同一でしょうか

    違いますね。やっぱりそういうことですか

    >RVMを使っているユーザでは、bashrcなどに source >$HOME/.rvm/scripts/rvm という設定をしていると思うのですが、これ>に相当する記述がないのではないでしょうか

    確認してみます

    -
  • >$HOME/.rvm/scripts/rvm という設定をしていると思うのですが、これ>に相当する記述がないのではないでしょうか

    これはありました
    -
  • >JenkinsからShellを実行するユーザがRVMをインストールしたユーザにな>り、RVMの設定が正しく行われれば実行できるのではないかと思います。

    これはジョブの実行ユーザを変更するということでしょうか
    -
  • iwadamonさんの方法でうまくいきそうな感じはあるのですが、例えば、Jenkinsのジョブで今実行中のユーザと、RVMの設定がちゃんと読み込まれているか確認してみてはどうでしょう。

    ```
    whoami

    rvm list
    ```

    こんなジョブを作ってみてはどうでしょう。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。