Jenkinsは、広く使用されているオープンソースのCI/CDツールを提供しています。この記事では、Jenkinsをインストールし、SSHを使用してサーバーにファイルを送信するためにGithubで構成する方法を学習します。
Jenkinsのインストール:
JenkinsはJAVAベースのアプリケーションであるため、まず、JAVAをインストールする必要があります。次のコマンドは、centos7にJAVAをインストールします。
sudo yum install java-1.8.0-openjdk-devel
Javaのバージョンを確認する
[[email protected] ~]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
次に、次のコマンドを使用してJenkinsリポジトリを構成します。
curl --silent --location http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo | sudo tee /etc/yum.repos.d/jenkins.repo
これにより、次の出力が表示されます。
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1
次に、次のコマンドを実行してJenkinsキーを追加します。
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
これでJenkinsリポジトリが構成され、次の簡単なコマンドを使用してJenkinsをインストールする準備が整いました。
sudo yum install jenkins
インストールが完了したら、Jenkinsサービスを確認し、システムの再起動時に有効にします。
sudo systemctl start Jenkins
sudo systemctl enable jenkins
次に、システムを再起動し、次のコマンドを使用してjenkinsサービスが実行されていることを確認します。
sudo systemctl enable jenkins
次に、ファイアウォールでJenkinsを許可します。
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
設定の構成:
Jenkinsを直接使用することはできません。ドメイン名またはIPアドレスをWebブラウザに入力してから、Jenkinsのデフォルトのポート番号8080を入力する必要があります。
上のスクリーンショットでは、Jenkinsの自動生成されたパスワードを1回入力する必要があります。次のコマンドを実行してパスワードを取得します。
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
これにより、2179c452db3b45f98cf9e4c4961ab635 のような出力が得られます。
パスワードの後に、Jenkinsシステムにプラグインをインストールする必要があります。そのためには、インストール済みの推奨プラグインを選択して、すべてのデフォルトプラグインをインストールします。
すべての詳細を入力し、[保存して続行]をクリックします。
次に、インスタンス構成を要求されます。ここで、デフォルトのポート番号も変更できます。
これで、Jenkinsが保存され、使用できるようになりました。
おめでとうございます。新しいJenkinsのセットアップが正常に完了し、使用できるようになりました。
次のスクリーンショットは、Jenkinsのデフォルトのダッシュボードを示しています。
Jenkins構成:
プラグインのインストール:
次の手順に進む前に、必ず次のプラグインをインストールしてください。
[Jenkinsの管理]->[プラグインの管理]->[利用可能]->[フィルター]->[GitHubとの統合に必要な次のプラグインを検索]に移動します。
SSH経由で公開
Git
GitHubプラグイン
Gitクライアントプラグイン
ここでは、SSH経由でファイルをサーバーにプッシュするためにPublishOverSSHプラグインが必要でした。
クレデンシャルを追加する:
Jenkinsにサーバークレデンシャルを追加する必要があります。
Jenkinsダッシュボード→[資格情報]→[システム]→[グローバル資格情報(無制限)]→[資格情報の追加]に移動します
インストールするクレデンシャルの種類を選択できます。ここで、後で使用するためにGitHubクレデンシャルのユーザー名とパスワードを追加します。
Jenkinsサーバー上のssh。
Jenkinsは、sshを使用してリモートサーバーに接続し、スクリプトを実行したり、コマンドを実行したり、あるサーバーから別のサーバーにファイルをコピーしたりできます。
この目的のために、Jenkinsサーバーとリモートサーバーの間にssh接続を作成する必要があります。
次のステップでは、Jenkinsサーバーに接続するJenkinsにSSHクレデンシャルを追加します。
Jenkinsからユーザーrootを使用してWebサーバーに接続したい。たとえば、Webサーバーは138.197.151.144でuser rootであるため、sshを使用してそのサーバーにログインする必要があります。
ssh [email protected]
次に、ホームディレクトリに移動し、.sshフォルダにcdします。
cd ~/.ssh
次のステップは、Webサーバー上でrootユーザーの秘密鍵と公開鍵を生成することです。
ssh-keygen -t rsa -f private_key_for_jenkins
上記のコマンドを実行すると、「パスフレーズを入力してください」というメッセージが表示されます。パスフレーズを入力する必要はありません。したがって、Enterキーを2回クリックすると、Webサーバーprivate_key_for_jenkinsとprivate_key_for_jenkins.pubに2つのキーが生成されます。
ここで、private_key_for_jenkinsは138.197.151.144の秘密鍵であり、このファイルの内容をJenkinsサーバーに使用する必要があります。
Webサーバーの公開鍵であるprivate_key_for_jenkins.pubという2番目のファイルがあります。そのデータを同じディレクトリにあるauthorized_keysという別のファイルにコピーする必要があります。
ほとんどの場合、authorized_keysファイルは〜/ .ssh /フォルダーにありますが、欠落している場合があり、新しいauthorized_keysファイルを生成する必要があります。次のコマンドを実行して、authorized_keysにコピーします。このコマンドは、使用可能な場合は新しいauthorized_keysも生成します。
cat private_key_for_jenkins.pub > authorized_keys
次に、Jenkinsサーバーにログインし、[Jenkinsの管理]->[システムの構成]
に移動します。Webブラウザでhttp:// ip_address:8080 / configureを直接書き込むこともできます。これにより、ssh構成用のシステムの構成が開きます。
次に、「Jenkinsの構成」でSSHサーバーのサーバーセクションを探します。このセクションは、Jenkinsサーバーに「SSHクレデンシャルプラグイン」がインストールされている場合にのみ利用できることに注意してください。
[SSH経由で公開]セクションに移動し、キーに移動して、private_key_for_jenkinsのコンテンツを貼り付けます
[SSHサーバー]オプションで、[追加]ボタンをクリックし、SSHサーバーの詳細を入力します。詳細オプションからsshポートやその他の設定を変更できます。
変更を加えた後、[構成のテスト]をクリックすると、すべての設定が正しい場合、上のスクリーンショットに示すような成功メッセージが表示されます。
sshを使用して複数のサーバーに同じコードを公開するための要件に従って、複数のサーバーを追加できることに注意してください。
そのためには、前述のようにサーバーごとに秘密鍵を生成し、それらの秘密鍵をJenkinsサーバーに追加する必要があります。
最後に、[保存]ボタンをクリックして、変更を保存します。リモートサーバーへのssh接続が正常に作成されました。これで、ファイルをリモートサーバーに送信し、そのサーバーで任意のコマンドまたはスクリプトを実行できるようになりました。
Githubを使用したJenkins構成
PUSHおよびPULLリクエストによってトリガーされるビルドを自動化するには、JenkinsWebHookを各GitHubリポジトリまたは組織のWebhookに追加する必要があります。
GithubリポジトリからWebhookを設定する手順。
1.GitHubアカウントにログインします
2.Webhookを設定する必要があるリポジトリをクリックします
3.そのリポジトリの設定オプションに移動します
4. Webhookをクリックして、ペイロードURLを追加します。http:// jenkins_ip:8080 / github-webhook /
のようになります。5.コンテンツタイプからエンコーディングタイプとして「application/json」を選択します
6. [シークレット]を空白のままにします(Jenkinsの[システムの構成]-> [GitHubプラグイン]セクションでシークレットが作成および構成されている場合を除く)
7.[個々のイベントを選択させてください]を選択します
8.PUSHおよびプルリクエストイベントを有効にします
9.「アクティブ」がチェックされていることを確認します
10.最後に[Webhookを追加]ボタンをクリックします。
詳細については、以下のスクリーンショットを確認してください。
Jenkinsは、そのリポジトリのプッシュおよびプルリクエスト通知を受信し、関連するビルドが自動的にトリガーされます。
Jenkinsで最初のジョブを作成する
次に、Jenkinsダッシュボードに移動して新しいアイテムを選択します 次に、アイテム名を入力して、フリースタイルプロジェクトを選択します 。
[OK]をクリックすると、構成セクションにリダイレクトされます。
下のスクリーンショットに示すように、現在一般タブにいます。一般に、タブでプロジェクトの説明を入力し、Githubプロジェクトをクリックします。ここに、プロジェクトのGitHubURLを入力します。
次に、ソースコード管理に移動し、Gitをクリックして、コードを取得する場所からリポジトリのURLを入力します。
すでにGitHubクレデンシャルを追加しているので、ドロップダウンメニューをクリックして、GitHubのユーザー名とパスワードを選択します。
次に、ブランチに移動して* / masterブランチを構築して選択します。プロジェクトの要件に従って、任意のブランチを追加できます。
次に、[ビルドトリガー]タブに移動し、GITScmポーリングオプションのGithubフックトリガーを選択します。これにより、GitHubリポジトリに変更を加えるたびに
自動的にビルドされます。
次に、ビルド環境に移動し、ビルドの実行後に[ファイルの送信]または[SSH経由でコマンドを実行]を選択します。
これにより、ビルドの実行後にファイルがリモートサーバーに送信されます。
SSHパブリッシャーに移動->SSHサーバー->ドロップダウンメニューからサーバー名を選択
ここでは詳細パラメータを設定することもできますが、現在は基本設定を使用しています。
次に、sshにコピーするファイルの種類を追加する必要があります。ここでは、GitHubリポジトリのすべてのフォルダーとファイルを選択します。ファイルの追加とフォルダの選択については、ソースファイルに**/*を追加するだけです。
同様の方法で、Execコマンドテキストボックスに、リモートサーバーで実行される任意のコマンドを指定できます。
次に、ファイルをコピーする必要があるリモートディレクトリを指定します。これはオプションのオプションです。
SSHパブリッシャー->転送->転送セット->ソースファイル->追加**/*
SSHパブリッシャー->転送->転送セット->リモートディレクトリ->/jenkins-test
SSHパブリッシャー->転送->転送セット->Execコマンド->コマンド
デフォルトでは、Jenkinsは.git .svn .gitignoreなどの特定のファイルを除外します。ここでは、すべてのファイルをリモートサーバーにコピーします。そのためには、Execコマンドのすぐ下にある[詳細設定]ボタンをクリックし、[デフォルトで除外しない]オプションをオンにします。
以上です。ビルド後のアクションには、プロジェクトのニーズに応じて使用できる多くのオプションがあります。
構成をテストするときが来ました。
Jenkinsダッシュボードに移動し、プロジェクトJenkins-testをクリックします。
次に、ビルドの[今すぐビルド]オプションをクリックします。ビルドプロセスが失敗した場合は、黄色のアイコンでビルドバージョン番号が表示されます。
スクリーンショットに示されているビルド番号をクリックするだけで、ビルドプロセスを確認しましょう。
次に、[コンソール出力]をクリックします。ここでは、冗長モードのすべてのプロセスを確認できます。
最後に、「 Finished:SUCCESS」が表示されます。 コンソール出力の最後の行。
おめでとう! JenkinsはGitHubと正常に統合され、すぐに使用できるようになりました。