私は現在、JenkinsとGitLabを使用してプロジェクトのビルドをトリガするビルドパイプラインに取り組んでいます。基本的には、誰かがリポジトリにプッシュするとビルドがトリガされます。また、いくつかのRubyスクリプトはビルドプロセスの一部として実行されます。これらのスクリプトは、Xcodeプロジェクトとソースディレクトリの追加または削除されたファイルとの同期化など、いくつかのプロジェクトのチェックを実行し、いくつかの修正を行います。Rubyの正しいバージョンを見つける方法
私はいくつかのツールを使用してパイプラインを設定しています。ビルドは物理的にビルドスレーブ上にあるマシン上で実行されます。 JenkinsはAWSマシンに導入されています。このため、私はpritunlを使って2つを仮想ネットワーク上で接続しました。ローカルIPを使用してマシン間の通信を行うことができ、SSHは両方の方法でうまく動作します。
リモートにプッシュすると、ビルドはスレーブで正しく開始されますが、完了に失敗します。しかし、SSHを使って手動で端末からアクセスすると、ビルドは正常に動作します。あなたが見ることができるように
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- xcodeproj (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/jenkins/workspace/Core/platform/ios/scripts/pbxsync.rb:58:in `<main>'
、それは、ビルドが失敗し、Xcodeprojを必要とするように失敗します。これは、私はジェンキンスから得る出力されます。それでも、これはJenkinsによってビルドがトリガされた場合にのみ発生し、手動では発生しません。
私は、JenkinsがRubyのインストール方法や、少なくとも異なる環境を使用していると思います。基本的に私が必要とするのは、Jenkinsが使用しているのと同じRuby環境用の宝石をインストールすることです。何か案は?
JenkinsにはリモートスレーブでGroovyスクリプトを実行するコンソールがあります。私はそれを少しでも演奏してきましたが、これまでのところ多くの結論は出ていません。多分それは助けます。
これは重要です。これは私がRubyスクリプトのために使用していシェバングです:#!/usr/bin/env ruby
端末に
、ジェンキンスは、スレーブマシンにアクセスすることであると私は同じユーザーを使用しています。それは "ジェンキンス"と呼ばれています。 /Users/jenkins/.rvm/rubies/ruby-2.4.0
:私は言及を忘れてしまった
一つは、出力は私の右のバージョンを語っているということです。少なくともそれはそれが宝石を積み込もうとしていることを示す道です。そこで、私は次のように試しました:
次に、私はctrl + Dを押して出力を得ません。ルビーのインストールによってgemが正しく見つかっています。
テキストに「編集」タグまたは「更新」タグを使用する必要はありません。代わりに、元の情報を追加した場合はその情報をテキストに入れます。必要に応じてテキストをどこでいつ変更したのかがわかります。 –
'/ usr/bin/env ruby'を使用したり、異なるアカウントやシステム間で一貫性のある結果を得ることはできません。それらが同じように設定されていなければJenkinsを使用することはできません。 'env'はPATHの内部を見てRubyを見つけ、見つかった最初のRubyを返します。あなたのPATHを設定していて、ローカルのオッズを使用するのと同じRubyをインストールしていない限り、良いJenkinsはOSによって/ usr/bin/rubyにインストールされたRubyを見つけています。手動でビルドするとき、Jenkinsがローカルシステムと何を使用しているかを確認する必要があります。 –
さて、はい、どうですか?私はJenkinsがどのインストールを実行しているのか知る必要があることを理解しています。アイデア? –