Shellによる導入の自動化


私は命令語が好きです.
最初は黒い画面に字が書かれている様子を見せるために気取っていた理由ですが、最近はこれが一番気持ちがよくて直感的なのでよく使われています.
gitを使用する場合、IDEの機能やgithubデスクトップを使用するよりも、端末にコミットプッシュを簡単に追加するのが好きです.
ソースのインポート時でも、ブランチの切り替え時でも、多くの面から、命令がより直感的で便利だと思います.
したがって、Gitは、導入時にソースコードをインポートして構築し、導入パスに配置し、Tomcatを再駆動する一連のプロセスを毎回1つずつコマンドで入力します.しかし、簡単なエラーを発見したり、ソースコードを修正したり、昨日のようにdependencyチェックができず、1日に何度も配置しなければならない場合、この苦労は負担になります.
ちょうど会社で何度かShellに触れていたのですが、最近ずっと読んでいた李棟旭。'著作'Spring BootとAWSによる個別Webサービス'ではShellを使って導入を自動化する方法も紹介されていたので、関連部分を参考にして、私の都合でShellファイルを作成しました.

シェルファイルの作成


shellファイルを実行するには、まずshellファイルを生成する必要があります.
mkdir script
cd script
vim deploy.sh
まずscriptというディレクトリを作成し、配置します.shというshellファイルをVimエディタとして開きます.これにより自動的に配置されます.shという名前のファイルを生成しvimエディタとして開きます.
#filmUs 프로젝트를 testTomcat에 deploy하는 shell

REPOSITORY=~/gitRepository
PROJECT_NAME=filmUs
TOMCAT=~/tomcat9.0.60_testServer
TODAY=$(date "+%Y%m%d")

cd $REPOSITORY/$PROJECT_NAME/

echo "> git pull"
git pull origin main

echo ">maven clean"
mvn clean

echo "> 프로젝트 Build 시작"
mvn package

echo "> 기존 war 백업"
mv ${TOMCAT}/webapps/ROOT.war ~/backup/ROOT_${TODAY}.war

echo ">ROOT 삭제"
rm -rf $TOMCAT/webaapps/ROOT

echo ">war 파일 배포위치로 이동"
mv $REPOSITORY/$PROJECT_NAME/target/*.war $TOMCAT/webapps/ROOT.war

echo ">tomat 실행"
$TOMCAT/bin/startup.sh
上記のようにコードが記述されています.
シェルに何か特別なことがあるのかと思ったら、普段使っている命令を入力すればいいのです.
まず,最上位のREPOSTORY,PROJECT,TOMCAT,TODAYを変数として宣言した.
その後の内容はソースに注釈が付けられており、普段もこのような手順で作られています.
chmod +x ./deploy.sh
shellファイルの作成が完了したら、ファイルの実行権限を付与します.

shellファイルの実行

./deploy.sh
Shellファイルがパスにある場合./「ファイル名」を使用してshellファイルを実行できます.


shellのechoコマンド、git pull、mvn clean、mvn build、および各種移動コマンドは正常に実行されます.

既存のwarファイルバックアップも正常に実行されていることを確認しました.

shellファイルのクリーンアップ


テストを行い、正常に実行されていることを確認しました.正常に動作するshellが必要です.導入例.shをtestDeployに配備します.これをshに変更し、別のShellファイルにコピーして、本番導入を自動的に実行します.shと名付けて
#prdDeploy.sh
#filmUs 프로젝트를 prdTomcat에 deploy하는 shell

REPOSITORY=~/gitRepository
PROJECT_NAME=filmUs
TOMCAT=~/tomcat9.0.60_filmUs
TODAY=$(date "+%Y%m%d")

cd $REPOSITORY/$PROJECT_NAME/

echo "> git pull"
git pull origin main

echo ">maven clean"
mvn clean

echo "> 프로젝트 Build 시작"
mvn package

echo ">tomcat 중지"
$TOMCAT/bin/shutdown.sh

echo "> 기존 war 백업"
mv ${TOMCAT}/webapps/ROOT.war ~/backup/ROOT_${TODAY}.war

echo ">ROOT 삭제"
rm -rf $TOMCAT/webaapps/ROOT

echo ">war 파일 배포위치로 이동"
mv $REPOSITORY/$PROJECT_NAME/target/*.war $TOMCAT/webapps/ROOT.war

echo ">tomat 실행"
$TOMCAT/bin/startup.sh
実際の実行中のTomcatは常に実行中であるため、中にTomcatを停止するコマンドが追加されているほか、サンプルshellと同じです.
#testDeploy.sh
#filmUs 프로젝트를 testTomcat에 deploy하는 shell

REPOSITORY=~/gitRepository
PROJECT_NAME=filmUs
TOMCAT=~/tomcat9.0.60_testServer

cd $REPOSITORY/$PROJECT_NAME/

echo "> git pull"
git pull origin main

echo ">maven clean"
mvn clean

echo "> 프로젝트 Build 시작"
mvn package

echo ">ROOT 삭제"
rm -rf $TOMCAT/webaapps/ROOT
rm -rf $TOMCAT/webapps/ROOT.war

echo ">war 파일 배포위치로 이동"
mv $REPOSITORY/$PROJECT_NAME/target/*.war $TOMCAT/webapps/ROOT.war

echo ">tomat 실행"
$TOMCAT/bin/startup.sh
デプロイ前のテストtomcatは通常実行中ではないため、停止コマンドもバックアップも必要ありません.

自動化が刺激的...


shellを実行すると、自動的に自動的に配布されるのを見て、初めて符号化したときのように刺激的に感じました.
コマンドが面白くて楽しくできましたが、いろいろな面から、たくさんの人手が必要な仕事を一度にこなすことができて、「自動化の力がすごい」と感じました.
まるで私の工場があったかのように、
この程度で非常に便利になりましたが、Gitにプッシュするだけで自分で配置できる環境はどれくらい便利でしょうか.
この環境も近いうちに構築したい!
リファレンス
  • 李棟旭。著作'Spring BootとAWSによる個別Webサービス