Server | EC2 & Docker Deploy with Jenkins Ⅲ


第2編で行われたDockerとJenkinsのインストールが正常に完了した場合、最後にWeb Hookを使用してGitHubとJenkinsに接続し、Jenkinsの自動導入を行います.

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の設定について説明します.
  • まずJenkins>Jenkins管理>プラグイン管理にGitHub統合プラグインをインストールします.

  • 次は
  • で、GitHubで個人Tokenを開きます.

  • バニラのプロフィールを確認するメニューでセツに入ります.メニューの[開発者設定]で、[個人アクセストークン]メニューをクリックします.

    Generate new tokenをクリックして新しいトークンを生成します.Note、Expiration、Select scopes.私の場合、repoadmin:repo_hookを選びました.
    🙋‍♂️ 待って!!!
    EC 2サーバ自体がGit Repositoryをクローンする場合、次のようなパーミッションの問題が発生する可能性があります.この問題はPersonal access tokenによっても解決できる.
  • 参考資料:https://curryyou.tistory.com/3442

  • Tokenの作成が完了すると、EC 2サーバに戻ってJenkinsに関連する鍵を生成します.
  • SSH鍵
  • を生成する.
    $ 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を設定します.
  • Payload URL:http://{IP or Domain}:{Jenkins Port}/github-webhookと記入してください.
  • コンテンツタイプ:application/json
  • に設定
  • Which events ~
  • Let me selectが単一イベントに設定された後、個人のニーズ/動作に応じてWeb Hookを設定できます.
  • Jenkins証憑登録
  • 「Jenkins管理」>「認証情報の管理」>「認証情報」>「グローバル」>「認証情報の追加」をクリックします.
    種類選択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情報の入力
  • ソースコード管理>Git
  • 2httpで始まる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が自動的に実行され、エラーが発生しない場合は、正常に動作していることを示すメッセージが表示されます.