JENKINSを使用してJAVAアプリケーションを自動的に導入する方法

2283 ワード

実は事の経緯はこうです.
最近、短い時間で小さなプログラムアプリケーションがオンラインになりました.テストの過程で、私たちの開発者は自分が環境をテストする機械にjavaアプリケーションを更新して配置することに反感を持っています.
どうして反感を持っているのですか.以前のチームは运维があったので、今は単独で微信の小さいプログラムを作って、运维の学友は持って来ていないで、配置などはすべて自分で手作業でしなければならなくて、开発の学友に甘やかされてどこがこの息を飲み込むことができて、字を引きずる秘訣を使って、テストの环境は基本的に気持ちを更新して、いくつかテストの进度に影响します.
では、自動化の配置をして、今問題が来て、誰がしますか?
開発は次元を運んでやるべきだと言った.
運維は私がプロジェクトチームの心の中に余裕がなくて力が足りないと言った.
テストはあなたたちが開発したと言って、一労永逸です.
開発はあなたたちのテストが自分でできるかどうかと言っています.あなたは行ってください.私たちに見せてください.
テストによると、jenkinsで簡単なタスクを構築し、このタスクは5分でコードライブラリをポーリングし、コードが更新されると自動的にjarパッケージをbuildし、起動を配置します.どうだ?
開発は私たちが細部にかかわらず、あなたたちは勝手にして、自動的に配置すればいいと言っています.
じゃ、コードライブラリの権限をあげてください.
開発は自分で構成管理者に申請しましょう.
その構成管理者がjenkinsのインストールを手伝ってくれるかどうかをテストします.
開発はあなたができると言って、自分でやりましょう.
そうかもしれませんが、その後、テストの同級生がずっと雑用に忙しい私を見つけて、私は少し時間をかけて配置を手伝ってあげました.
次は私の大まかな「犯行過程」です.
まず、試験環境の機器にjenkinsを装着することを申請します.つまり、試験環境が127.0.0.2であれば、この機器にjenkinsを装着し、この機器がmasterになります.
次のコマンドを使用してjenkinsを起動します.jarパッケージが起動してバックグラウンドに常駐することを望んでいますが、デフォルトではjenkinsはjob内のすべての新しい起動プロセスを乾かすので、この特性をオフにする必要があります.ここを参考に
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

プロジェクトはmavenで構築されているのでjenkinsをインストールしたマシンにmavenをインストールし、mvnコマンドが実行できることを保証します.
gitを使用して最新のコードを引き出す必要があるため、gitをテストマシンにインストールします.
テストマシン上でssh公開鍵を生成し,コード管理プラットフォームの配置公開鍵に追加することは,パスワードを免除してgitを直接使用してコードを引き出すことを目的とする.
gitを使用してテストマシンに最新のコードを引き取ります.gitに問題がないことを確認します.
テストマシンではmvn installを使用してbuild jarパッケージを使用し、buildのプロセスに問題がないことを確認します.
新しいjenkins jobを作成し、コード管理にgitリモートアドレスを入力し、5分間ポーリングを構成します.
構築手順でlinux shellスクリプトを実行することを選択します.スクリプトは次のようになります.
pwd

/usr/local/maven/bin/mvn install

#  jar pid, awk , sed sed, 
java_pid=`ps -C java -o command -o pid | grep jar_name | sed -r "s/java -jar jar_name.jar\s*//g"`

if [[ "$java_pid"=="" ]]; then
        echo "pid do not exists"
        echo $java_pid
else
        echo "kill"
        echo $java_pid
        kill -9 $java_pid
fi

cd target

nohup java -jar jar_name.jar /dev/null 2>&1 &


はい、差は多くありません.何度もデバッグして、fixのいくつかの小さな問題は基本的にできます.
その後のことはこうだった.
テスト:自動化された導入が完了しました.
開発:......
運維:......
構成管理:......
テスト:......