Server | EC2 & Docker Deploy with Jenkins Ⅲ
第2編で行われたDockerとJenkinsのインストールが正常に完了した場合、最後にWeb Hookを使用してGitHubとJenkinsに接続し、Jenkinsの自動導入を行います.
Web開発において、Web Hookとは何ですか?
カスタムcallbackを使用して、Webページまたはアプリケーションの動作を向上または変更する方法.
以前、Github RepositoryのMaster Branchでコードプッシュやリクエストなどの動作が発生した場合、Jenkinsでこれをキャプチャすべきだと述べていました.
GitHubとJenkinsはまったく異なるソフトウェアとサービスで、彼らはどのように一方の変化を捉えていますか?
このとき使っているのがWeb Hookです.GitHubとJenkinsをWeb Hookに接続し、状態変化をキャプチャします.バージョン.配布
Web Hookの設定について説明します.まずJenkins>Jenkins管理>プラグイン管理にGitHub統合プラグインをインストールします.
次はで、GitHubで個人Tokenを開きます.
バニラのプロフィールを確認するメニューでセツに入ります.メニューの[開発者設定]で、[個人アクセストークン]メニューをクリックします.
Generate new tokenをクリックして新しいトークンを生成します.Note、Expiration、Select scopes.私の場合、
🙋♂️ 待って!!!
EC 2サーバ自体がGit Repositoryをクローンする場合、次のようなパーミッションの問題が発生する可能性があります.この問題はPersonal access tokenによっても解決できる.参考資料:https://curryyou.tistory.com/3442
Tokenの作成が完了すると、EC 2サーバに戻ってJenkinsに関連する鍵を生成します. SSH鍵 を生成する.
プロジェクトをアップロードするGitHub Repository>Settings>Deploy Keyをクリックします.
GitHub Repository>Settings>Webhooks>Add WebhookをクリックしてGitHubにWeb Hookを設定します.
Payload URL: コンテンツタイプ: に設定 Which events ~ Let me selectが単一イベントに設定された後、個人のニーズ/動作に応じてWeb Hookを設定できます.
Jenkins証憑登録 「Jenkins管理」>「認証情報の管理」>「認証情報」>「グローバル」>「認証情報の追加」をクリックします.
種類選択
Private Key>Enterを直接確認し、Privateキーを入力します.
Public Keyを検索するように、
Jenkins Itemの作成
Item-
Github情報の入力 ソースコード管理>Git 2
Git URLは、GitHub Repositoryアドレスを
エラーが消えているのが見えます.
証明書設定の前にPrivate Keyを登録するときに作成された証明書.
WebHookを使用してGitHubとJenkinsが接続されているため、コンストラクション誘発は「GitHub hookトリガはGITSCMポーリング用」に設定されています.
Buildに関するshellスクリプトを作成するとJenkins設定は終了します.
Build - Execute shell
Ubuntuでは、ユーザー権限エラーの問題が頻繁に発生します.Gradle構築時にパーミッションエラーが発生する可能性があるため、
3番目のDocker Runコマンドの場合:
最初の行は、既存のDocker Contenterで「ラベル名」を含むコンテナをクエリーおよび削除するコマンドです.
2行目は、「タグ名」を指定し、EC 2ポートとDockerポートの間でDockerイメージを実行するコマンドです.私が担当しているプロジェクトでは、SpringBootプロジェクトは8081ポートに割り当てられているので、
上記の手順が順調に進んでいる場合は、実際にコードを作成するか、Pull Requestを送信してGit Hubを更新してみてください.
Build&Runが自動的に実行され、エラーが発生しない場合は、正常に動作していることを示すメッセージが表示されます.
5. GitHub - Jenkins Web Hook
Web開発において、Web Hookとは何ですか?
カスタムcallbackを使用して、Webページまたはアプリケーションの動作を向上または変更する方法.
以前、Github RepositoryのMaster Branchでコードプッシュやリクエストなどの動作が発生した場合、Jenkinsでこれをキャプチャすべきだと述べていました.
GitHubとJenkinsはまったく異なるソフトウェアとサービスで、彼らはどのように一方の変化を捉えていますか?
このとき使っているのがWeb Hookです.GitHubとJenkinsをWeb Hookに接続し、状態変化をキャプチャします.バージョン.配布
Web Hookの設定について説明します.
次は
バニラのプロフィールを確認するメニューでセツに入ります.メニューの[開発者設定]で、[個人アクセストークン]メニューをクリックします.
Generate new tokenをクリックして新しいトークンを生成します.Note、Expiration、Select scopes.私の場合、
repo
とadmin:repo_hook
を選びました.🙋♂️ 待って!!!
EC 2サーバ自体がGit Repositoryをクローンする場合、次のようなパーミッションの問題が発生する可能性があります.この問題はPersonal access tokenによっても解決できる.
Tokenの作成が完了すると、EC 2サーバに戻ってJenkinsに関連する鍵を生成します.
$ sudo mkdir /var/lib/jenkins/.ssh
$ sudo ssh-keygen -t rsa -f /var/lib/jenkins/.ssh/id_rsa
鍵の作成が完了したら、GitHub Deploy Keyとして登録する必要があります.プロジェクトをアップロードするGitHub Repository>Settings>Deploy Keyをクリックします.
$ cat id_rsa.pub
上記のコマンドを使用してPublic Keyの値を検索し、Keyを使用して対応する値を登録します.GitHub Repository>Settings>Webhooks>Add WebhookをクリックしてGitHubにWeb Hookを設定します.
http://{IP or Domain}:{Jenkins Port}/github-webhook
と記入してください.application/json
、種類選択
SSH Username with private key
.Private Key>Enterを直接確認し、Privateキーを入力します.
Public Keyを検索するように、
cat
コマンドを使用してPrivate Keyを検索し、値を入力します.# Private Key 찾기
$ cat id_rsa
最後にJenkinsでプロジェクト設定を行います.Jenkins Itemの作成
Item-
Freestyle project
の作成Github情報の入力
http
で始まるGithub Repoアドレスを入力すると、次のエラーが発生します.Git URLは、GitHub Repositoryアドレスを
https
ではなくssh
タイプに設定することで、エラーを解決することができる.エラーが消えているのが見えます.
証明書設定の前にPrivate Keyを登録するときに作成された証明書.
WebHookを使用してGitHubとJenkinsが接続されているため、コンストラクション誘発は「GitHub hookトリガはGITSCMポーリング用」に設定されています.
Buildに関するshellスクリプトを作成するとJenkins設定は終了します.
Build - Execute shell
# 1. gradle build
chmod +x gradlew # Permission Denied 권한 오류를 해결하기 위한 명령어
./gradlew clean build
# 2. Docker build
docker build --tag==[태그이름] .
# 3. Docker run
docker ps -q --filter name=[태그이름] | grep -q . && docker rm -f $(docker ps -aq --filter name=[태그이름])
docker run -d --name 태그이름 -p [EC2포트]:[Docker포트] [태그이름]:latest
1番と2番は基本的なgradle buildとdocker buildコマンド語です.Ubuntuでは、ユーザー権限エラーの問題が頻繁に発生します.Gradle構築時にパーミッションエラーが発生する可能性があるため、
chmod
ライセンスコマンドを作成する必要があります.3番目のDocker Runコマンドの場合:
最初の行は、既存のDocker Contenterで「ラベル名」を含むコンテナをクエリーおよび削除するコマンドです.
2行目は、「タグ名」を指定し、EC 2ポートとDockerポートの間でDockerイメージを実行するコマンドです.私が担当しているプロジェクトでは、SpringBootプロジェクトは8081ポートに割り当てられているので、
8081:8081
に設定されています.上記の手順が順調に進んでいる場合は、実際にコードを作成するか、Pull Requestを送信してGit Hubを更新してみてください.
Build&Runが自動的に実行され、エラーが発生しない場合は、正常に動作していることを示すメッセージが表示されます.
Reference
この問題について(Server | EC2 & Docker Deploy with Jenkins Ⅲ), 我々は、より多くの情報をここで見つけました https://velog.io/@yb_engineer/Server-EC2-Docker-Deploy-with-Jenkins-rckdi742テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol