web-dev-qa-db-ja.com

jenkinsでビルドデプロイを自動化するにはどうすればよいですか?

CIにはjenkinsを使用しています。深夜のビルドを取得します。メールまたは通知を受け取ったらすぐにビルドのデプロイを自動化する方法はありますか?任意の提案をいただければ幸いです。

7
Sujith

Jenkinsのビルドからデプロイするメカニズムの1つは、アーティファクトを使用して最新のバイナリを既知の場所に配置し、(秘密鍵で保護された)sshを使用する新しいジョブを開始することです(コンパイル/テストフェーズが成功した場合のみ)。またはscpを使用してアーティファクトをテスト/本番マシンにコピーしてから、インストールを実行します。

一部の自動テストには、同様のメカニズムを使用しています。トリッキーな部分は、シェルコマンドでsshキーを処理することなので、次のようにします。

eval `ssh-agent -s`
ssh-add ~/.ssh/your_private_key_here

その秘密鍵がJenkinsサーバー上にあり、公開鍵がプッシュしようとしているサーバー上にある限り、残りの部分でsshおよびscpコマンドを使用できます。問題のサーバーで機能を実行するためのスクリプト。

ターゲットサーバー側からプロセスを完全に実行する場合は、サーバー上で実行される小さなスクリプトを作成して、Jenkinsサーバービルドのアーティファクトディレクトリ内の新しいファイルをチェックできます。 latestパスのおかげで、これを行うためにビルド番号を知る必要はありません。特定のパスを見つけるには、Jenkinsサーバーにログインして(少なくとも1つのアーティファクトを保存したら)、使用しているプロジェクトを見つけて、最後に成功したアーティファクト、これはアーティファクトの最後に成功したビルドへのURLになります。これらのURLは一定のままであり、常に最新の成功したビルドを指しているため、プロジェクト名またはサーバー名が変更されない限り、URLが変更されることを心配する必要はありません。

[〜#〜] note [〜#〜]:ここには、テストする展開以外の目的でこれを行う場合にトラックを運転できるセキュリティホールがあります。最初のメカニズムの場合、ビルドサーバーにはターゲットへのアクセス(潜在的に破壊的)を与えるsshキーがあります。 2番目のメカニズムの場合、Jenkinsサーバーが自分に適したバイナリのみを提供することを信頼しています。ただし、テスト環境、Push to Stageなどの場合、これらの手法は適切に機能します。

3
gaige

これらは私が知っている方法です:

  • スクリプトを使用する場合:

Jenkins構成では、Mavenゴールの実行後にwindows/Shellコマンドを実行できます。私の場合、Linux上にGlassfishがあり、sshを介してデプロイメントのasadminパラメーターを実行します。サーバーにインスタンスをインストールしました。次のプロセスは、インスタンスの停止、アプリのデプロイ解除、アプリのデプロイ、インスタンスの開始(コマンド)です。

  • Mavenデプロイプラグインの場合:

このプラグインはwar/earファイルを受け取り、ビルドの最後に実行中のリモートアプリケーションサーバーにデプロイします。現在サポートされているコンテナのリストは次のとおりです。

Tomcat 4.x/5.x/6.x/7.x JBoss 3.x/4.x Glassfish 2.x/3.x

https://wiki.jenkins-ci.org/display/JENKINS/Deploy+Plugin

  • 貨物あり:

デプロイプラグインはこれに基づいています。 pom.xmlを編集して、mavenでデプロイするという目標を実行する必要があります。

http://cargo.codehaus.org/

1
Iker Aguayo

Tomcatでは、jenkinsとTomcatを使用した構成:

  • サーバーにjenkinsをインストールしてダウンロードし、サーバーを起動します。その後、jenkinsポータルに移動し、「新しいアイテム」を使用してプロジェクトを作成し、pom.xmlを選択してMavenプロジェクトを作成します。
  • 次に、プロジェクトに移動し、[構成]をクリックして、[このプロジェクトを実行できる場所を制限する]を選択し、レベル式にマスターを追加します。
  • gitで「ソースコード管理」クリックを選択し、gitリポジトリと資格情報およびブランチ名を構成します。
  • 「ビルド」を選択し、ルートpomを追加します:pom.xmlおよび目標とオプション:clean install -DskipTests
  • 「ビルド後のアクション」を選択し、「war/earをコンテナーにデプロイする」を選択します
  • WAR/EARファイル:target/test.war
  • コンテキストパス:テスト
  • コンテナはTomcatを選択し、資格情報を追加します
  • Tomcat URL:例: http:// localhost:8080 /

'Apache-Tomcat-8.5.5\webapps\manager\META-INF\context.xlmファイルを更新します。 Valueタグのコメントを解除します。サーバーを再起動します

context.xmlファイル

Before : 

<Context antiResourceLocking="false" privileged="true">
<Valve className="org.Apache.catalina.valves.RemoteAddrValve"
     allow="192\.168\.0\.9|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

After change :

<Context antiResourceLocking="false" privileged="true" >
</Context>

for auto deployment: go to 'Apache-Tomcat-8.5.5\conf\context.xml' and add antiResourceLocking="true" in 'Context' tag
0
Bheem Singh