スレーブノードを一台追加してそのノードでビルドを実行してみます
ビルド内容はmavenビルドです
mavenビルドでできた成果物を保存するところまでやってみます
ビルド内容はmavenビルドです
mavenビルドでできた成果物を保存するところまでやってみます
■環境
・マスタノード
CentOS 6.3
Jenkins 1.517
・スレーブノードJenkins 1.517
Java 1.7.0_17
Maven 3.1.0
Maven 3.1.0
■設定
1. スレーブノード追加
Jenkinsの管理→ノードの管理→新規ノード作成
次に、ノードの設定です
適当でも大丈夫ですが、自分は以下のように設定しました
SSHユーザ名と秘密鍵では
Scope:秘密鍵
ユーザー名:root
秘密鍵:Jenkinsマスター上のファイルからでpemファイルのパスを指定、パスフレーズが必要な場合は高度な設定からパスフレーズを入力してからsave
このとき鍵に権限がないとsshのログインでエラーになるので誰でも読み込める権限(666)あたりにしておきます
転送するファイルは「slave.jar」です
slave.jarはJenkinの本体でる「jenkins.war」の中に存在しています
一度、unzip等で展開して抽出してください、抽出したslave.jarを転送すればOKです
転送するパスはノードを追加するときに設定したリモートFSルートのパス「/var/tmp/jenkins_slave」配下に配置します
saveを押下後、slaveに対してSSH経由で必要なjarファイルをリモートFSルートで設定したディレクトリ配下に配置します
エラーがでなければスレーブノードの追加完了です
slaveノードでは mvn コマンドを実行するのでインストールされていない場合は以下を参考にmavenをインストールしてください
http://kakakikikeke.blogspot.jp/2013/10/maven.html
slaveノードがmavenを実行するときに外部のmavenリポジトリからjarを取得する流れがあるのでグローバルにアクセスできるネットワークも必要となります
ノード名:node001 ダムスレーブにチェックを入れてOKを押します
次に、ノードの設定です
適当でも大丈夫ですが、自分は以下のように設定しました
説明:mavenビルドを実行するためのノード 同時ビルド数:1 リモートFSルート:/var/tmp/jenkins_slave ラベル:maven 用途:このマシンを特定ジョブ専用にする 起動方法:SSH経由でUnixマシンのスレーブエージェントを起動 ホスト:node001 認証情報:Manage Credentialsでnode001のSSHのログインユーザ名とパスワードを設定してからここで選択します、秘密鍵認証での設定も可能です 可能性:可能な限りオンラインのままにする
SSHユーザ名と秘密鍵では
Scope:秘密鍵
ユーザー名:root
秘密鍵:Jenkinsマスター上のファイルからでpemファイルのパスを指定、パスフレーズが必要な場合は高度な設定からパスフレーズを入力してからsave
このとき鍵に権限がないとsshのログインでエラーになるので誰でも読み込める権限(666)あたりにしておきます
転送するファイルは「slave.jar」です
slave.jarはJenkinの本体でる「jenkins.war」の中に存在しています
一度、unzip等で展開して抽出してください、抽出したslave.jarを転送すればOKです
転送するパスはノードを追加するときに設定したリモートFSルートのパス「/var/tmp/jenkins_slave」配下に配置します
saveを押下後、slaveに対してSSH経由で必要なjarファイルをリモートFSルートで設定したディレクトリ配下に配置します
エラーがでなければスレーブノードの追加完了です
slaveノードでは mvn コマンドを実行するのでインストールされていない場合は以下を参考にmavenをインストールしてください
http://kakakikikeke.blogspot.jp/2013/10/maven.html
slaveノードがmavenを実行するときに外部のmavenリポジトリからjarを取得する流れがあるのでグローバルにアクセスできるネットワークも必要となります
2. スレーブノードでビルドするジョブの作成
今回はスレーブノードでmavenビルドを実行するためのジョブを作成します
流れとして
①ソースコード転送→②mavenビルド→③成果物デプロイ
の流れを作りたいと思います
①ソースコード転送
②mavenビルド
③成果物デプロイ
あとはgitからcloneする場合はcloneするビルドを実行すればいいし
すでにcloneしてあるならソースを転送するビルドから実行すればmavenビルドが走って成果物ができデプロイされる流れとなります
mavenビルドのジョブのサンプルだけ載せておきます
※見せられないところはマスクしてます、ビルドの手順の設定のところなど参考にしてみてください
流れとして
①ソースコード転送→②mavenビルド→③成果物デプロイ
の流れを作りたいと思います
①ソースコード転送
はじめにスレーブノードに対してソースコードをコピーするジョブを作成します
自分はgitからソースをcloneしているのでそれをtarで固めたあとにnode001に転送しています
転送するときはcapistranoのuploadを使っています
この辺はやり方がいろいろありますが、とりあえず転送できればOKです
※scpでもsftpでもftpでもOKです
自分はgitからソースをcloneしているのでそれをtarで固めたあとにnode001に転送しています
転送するときはcapistranoのuploadを使っています
この辺はやり方がいろいろありますが、とりあえず転送できればOKです
※scpでもsftpでもftpでもOKです
②mavenビルド
mavenビルド用のジョブを作成します
基本はいつも通り作成するので作成時のポイントだけ
「実行するノードを制限」の部分で先ほど作成したノードで実行するように制限します
今回は maven というラベルでノードを作成したので「maven」と入力します
ビルドで「Mavenの呼び出し」を選択してゴール、pom.xmlのパスを設定します
①のジョブが配置したpom.xmlの場所をフルパスで指定すれば大丈夫です
ただ、pom.xmlの中でソースファイルの場所等を相対的に指定している場所があるのならpom.xmlがあるパスまでcdしてからmvnを実行したほうが無難です
プロファイルの指定もしたい場合はゴールの部分に「-Phogehoge」プロファイルの指定をしちゃえば大丈夫です
また実際に作成されたjarファイルやwarファイルはビルドの設定で成果物を残すようにしておくと、リモートFSルート配下にworkspaceディレクトリができ、その配下のジョブ名ディレクトリ配下にできます
基本はいつも通り作成するので作成時のポイントだけ
「実行するノードを制限」の部分で先ほど作成したノードで実行するように制限します
今回は maven というラベルでノードを作成したので「maven」と入力します
ビルドで「Mavenの呼び出し」を選択してゴール、pom.xmlのパスを設定します
①のジョブが配置したpom.xmlの場所をフルパスで指定すれば大丈夫です
ただ、pom.xmlの中でソースファイルの場所等を相対的に指定している場所があるのならpom.xmlがあるパスまでcdしてからmvnを実行したほうが無難です
プロファイルの指定もしたい場合はゴールの部分に「-Phogehoge」プロファイルの指定をしちゃえば大丈夫です
また実際に作成されたjarファイルやwarファイルはビルドの設定で成果物を残すようにしておくと、リモートFSルート配下にworkspaceディレクトリができ、その配下のジョブ名ディレクトリ配下にできます
③成果物デプロイ
これもどんな方法でもいいですが、自分の場合はスレーブノードにcapistranoがインストールされていないので単純にscpでデプロイしました
デプロイする前にssh経由でバックアップを取得しておくといいでしょう
scpやsshの場合はノンパスのssh接続をできるようにしておくと、なお楽にはなります
デプロイする前にssh経由でバックアップを取得しておくといいでしょう
scpやsshの場合はノンパスのssh接続をできるようにしておくと、なお楽にはなります
あとはgitからcloneする場合はcloneするビルドを実行すればいいし
すでにcloneしてあるならソースを転送するビルドから実行すればmavenビルドが走って成果物ができデプロイされる流れとなります
mavenビルドのジョブのサンプルだけ載せておきます
※見せられないところはマスクしてます、ビルドの手順の設定のところなど参考にしてみてください
■参考サイト
0 件のコメント:
コメントを投稿