Open Build Service-独自のリポジトリを作成します

画像

Open Build Serviceは、GPLの下で配布されるオープンソースソフトウェアであり、人気のあるLinuxディストリビューション用の独自のリポジトリを簡単に整理し、バイナリパッケージをビルドできます。



この記事では、サーバーパーツをopenSUSE 12.1にすばやくインストールする方法を示し、ユーザーの環境を構成し、コンソールから作業するための便利なコマンドのリストを提供します。 もちろん、開発者のサイトからダウンロードできる既製のOpen Build Serverイメージを使用できます。 ただし、たとえば、VirtualBoxでは、これらのイメージからのインストールは行われません。 いずれにしても、自分でインストールパスをたどると、システムがどのように機能するかを把握するのが常に簡単になります。 それでは始めましょう。



まず、Ossリポジトリが接続されていることを確認する必要があります(これはメインのopenSUSEリポジトリですが、何らかの理由で新しいバージョンにすぐには含まれません)。 Apache2、MySQLサーバーなどのパッケージをインストールする必要があります。

#zypper addrepo download.opensuse.org/distribution/12.1/repo/oss/ openSUSE-12.1-Oss
      
      





リポジトリを追加して、実際にOpen Build Server自体をインストールします。

 #sudo zypper addrepo zypper addrepo download.opensuse.org/repositories/openSUSE:/Tools:/Unstable/openSUSE_12.1/openSUSE:Tools:Unstable.repo #sudo zypper refresh
      
      





これでインストールを開始できます。

 #sudo zypper in obs-server obs-api
      
      





インストールは、apache、mysql-server、rubygemsなどの必要なパッケージのパックをプルします。 わずか約90MB。

インストールが完了したら、構成ファイルにいくつかの変更を加えます。 これを行うには、 / etc / sysconfig / obs-serverを開き、それらを見つけて次の行に移動します。

 OBS_SRC_SERVER=«localhost:5352» OBS_REPO_SERVERS=«localhost:5252»
      
      





サービスを開始します:

 rcobsrepserver start rcobssrcserver start rcobsscheduler start rcobsdispatcher start rcobspublisher start
      
      





データベースの作成とその充填に進みます。

 mysql> create database api_production; mysql> create database webui_production; mysql> create user 'obs'@'%' identified by 'obspassword'; mysql> create user 'obs'@'localhost' identified by 'obspassword'; mysql> GRANT all privileges ON api_production.* TO 'obs'@'%', 'obs'@'localhost'; mysql> GRANT all privileges ON webui_production.* TO 'obs'@'%', 'obs'@'localhost'; mysql> FLUSH PRIVILEGES;
      
      





mysql APIとWebUIへの接続を設定しましょう。 これを行うには、便利なエディターでファイル/srv/www/obs/api/config/database.ymlを開き、

/srv/www/obs/webui/config/database.yml 、次のブロックを見つけて編集します。

 production: adapter: mysql2 database: api_production username: obs password: obspassword
      
      





データベースを入力し、tmpフォルダーとlogフォルダーに必要な権限を設定します

 cd /srv/www/obs/api/ sudo RAILS_ENV=«production» rake db:setup sudo chown -R wwwrun.www log tmp cd /srv/www/obs/webui/ sudo RAILS_ENV=«production» rake db:setup sudo chown -R wwwrun.www log tmp
      
      





Apacheを構成します。 apache2-mod_xforwardモジュールをインストールします。 これを行うには、別のリポジトリを接続します。

 zypper addrepo download.opensuse.org/repositories/openSUSE:/Tools/SLE_11/ Tools-SLE zypper refresh zypper in apache2-mod_xforward
      
      





必要なモジュールを/ etc / sysconfig / apache2に接続します。

 APACHE_MODULES="… passenger rewrite proxy proxy_http xforward headers"
      
      





SSLサポートを有効にし、証明書を生成します。 / etc / sysconfig / apache2を再度開き、次の行を見つけます。

 APACHE_SERVER_FLAGS="-DSSL"
      
      





 mkdir /srv/obs/certs openssl genrsa -out /srv/obs/certs/server.key 1024 openssl req -new -key /srv/obs/certs/server.key -out /srv/obs/certs/server.csr openssl x509 -req -days 365 -in /srv/obs/certs/server.csr -signkey /srv/obs/certs/server.key -out /srv/obs/certs/server.crt cat /srv/obs/certs/server.key /srv/obs/certs/server.crt > /srv/obs/certs/server.pem
      
      





use_xforward:trueを/srv/www/obs/webui/config/options.ymlおよび/srv/www/obs/api/config/options.yml設定ます



今、非常に重要なニュアンスがあります。 ファイル/srv/www/obs/webui/config/environments/production.rbを開き、CONFIG ['frontend_host'] = "localhost"という行を探し、localhostの代わりに、証明書を生成するときに指定したサーバー名を書き込みます。

これを行わないと、WebUIまたはAPIを開こうとすると、「ホスト名がサーバー証明書と一致しません」というエラーが表示されます。



再起動を実行します。

 rcapache2 restart rcobsapidelayed restart
      
      





パフォーマンスをチェックします。

再起動後、Apache APIが利用可能になります。 servername:444.





WebUIは次のWebサイトで入手できます。 servername



servername





デフォルトのユーザー名とパスワードはadmin / opensuseです。

WebUIの使用については説明しません。 インターフェイスは直感的で便利です。



OSC(openSUSE Build Service Commander)の使用により注意を払うようにしましょう。 このパッケージは、ほぼすべてのLinuxディストリビューションで利用可能です。 これにより、プロジェクト、パッケージを作成し、ソースファイルをダウンロードできます。

私はUbuntuを使用していますので、インストールには以下を使用します:

 apt-get install osc
      
      





次のステップは、サーバーでの作業に必要な構成ファイルを作成することです。 osc lsなどのoscコマンドを使用して、自動モードで作成できます。 ただし、ホームディレクトリのルートに次の内容の.oscrcファイルを作成する方が簡単です。

.oscrc
 [一般]
 apiurl = https://サーバー名:444
 use_keyring = 0

 [https://サーバー名:444]
ユーザー=管理者
 pass = opensuse
キーリング= 0




servernameの代わりに、サーバーの名前を書き込みます。 名前は、証明書の作成時に指定した名前と再度一致する必要があります。一致しない場合、「証明書検証エラー:ピア証明書commonNameがホストと一致しません」というエラーが表示されます。

osc lsコマンドを実行して接続を確認します(プロジェクトを一覧表示します)。

証明書を受け入れます。

 The server certificate failed verification Would you like to 0 — quit (default) 1 — continue anyways 2 — trust the server certificate permanently 9 — review the server certificate Enter choice [0129]: 2
      
      





新しいプロジェクトを作成してみましょう。

 osc meta prj -e MyProject
      
      





MyProjectはプロジェクトの名前です。

その後、新しいプロジェクトの構成のxmlファイルが開きます。ここで、少なくともタイトルと説明を指定する必要があります。 ここで、このプロジェクトで収集されるシステムパッケージを示す行のコメントを解除できます。

プロジェクトのxml構成の例:

project.xml
 <プロジェクト名= "MyProject">
   <title> MyProject </ title>
   <description> MyTestProject </ description>
   <person role = "maintainer" userid = "Admin" />
   <person role = "bugowner" userid = "Admin" />
   <公開>
     <無効/>
   </ publish>
   <ビルド>
     <有効化/>
   </ build>
   <debuginfo>
     <無効/>
   </ debuginfo>
   <リポジトリ名= "openSUSE_Factory">
     <path project = "openSUSE:Factory" repository = "standard" />
     <arch> x86_64 </ arch>
     <arch> i586 </ arch>
   </ repository>
   <リポジトリ名= "openSUSE_11.2">
     <path project = "openSUSE:11.2" repository = "standard" />
     <arch> x86_64 </ arch>
     <arch> i586 </ arch>
   </ repository>
   <リポジトリ名= "openSUSE_11.1">
     <path project = "openSUSE:11.1" repository = "standard" />
     <arch> x86_64 </ arch>
     <arch> i586 </ arch>
   </ repository>
   <リポジトリ名= "Fedora_12">
     <path project = "Fedora:12" repository = "standard" />
     <arch> x86_64 </ arch>
     <arch> i586 </ arch>
   </ repository>
   <リポジトリ名= "SLE_11">
     <path project = "SUSE:SLE-11" repository = "standard" />
     <arch> x86_64 </ arch>
     <arch> i586 </ arch>
   </ repository>
 </ project>




パッケージは同じ方法で作成されます。

 osc meta pkg -e MyProject MyPackage
      
      





MyProjectはプロジェクトの名前、MyPackageは新しいパッケージです。

プロジェクトとパッケージが作成されたので、バイナリパッケージの収集元のサーバーにソースファイルを送信する必要があります。

最初に、作業マシンでプロジェクトのローカルコピーを作成します。

 osc co MyProject
      
      





その後、ディレクトリMyProject / MyPackageの階層が必要です。 ソースファイルをMyPackageディレクトリに配置し、次のコマンドでバージョン管理に追加します。

 osc add MyProject/MyPackage/MyFiles
      
      





サーバーにアップロードします

 osc ci MyProject/MyPackage -m «Your comment» –skip-validation
      
      





ソースがサーバーに到達すると、システムは自動的にバイナリパッケージの収集を開始します。

次のコマンドでアセンブリの結果を確認します

 osc results MyProject/MyPackage
      
      





ここで、プロジェクトの.repoファイルへのリンクを取得します。 これを行うには、プロジェクトディレクトリに移動し、次のコマンドを実行します。

 osc repourls
      
      





これで、リポジトリをLinuxマシンに接続してパッケージをインストールできるようになりました。



約束どおり、コンソールからプロジェクトとパッケージを操作するためのコマンドの短いリストを個別に提供します。

 #  . osc ls # . osc meta prj -e ProjectName # . osc meta pkg -e ProjectName PackageName #   . osc rdelete ProjectName/PackageName #   . osc co ProjectName #     . osc add ProjectName/PackageName/YourFiles #  . osc rremove ProjectName PackageName SourceName osc update ProjectName #   . osc ci ProjectName -m «Your comment» --skip-validation #   . osc ci Project Name/Package Name -m «Your comment» #   osc results Project Name/Package Name #   (   ). osc buildlog Platform Arch (osc buildlog xUbuntu_12.04 i586) # URLs .repo  (   ) osc repourls
      
      






All Articles