あなたは多くの手順とソフトウェアでコードを展開するのにたくさんの時間を費やしていますか?心配しないでください、最も広く利用されているオープンソースのツールであるJenkinsのインストール方法を学ぶための正しい場所にいます。
このチュートリアルでは、UbuntuマシンにJenkinsをインストールして、ボタンをクリックするだけでコードをビルドおよび展開できるようにする方法を学びます。
続けて読んでインストールを始めましょう!
前提条件
この投稿はステップバイステップのチュートリアルです。Ubuntuマシンを用意してください。このチュートリアルではUbuntu 18.04とapacheがインストールされていることを使用します。
UbuntuマシンにJavaバージョン11をインストールする方法
Jenkinsは、継続的インテグレーション(CI)および継続的デプロイメント(CD)ツールであり、さまざまなサーブレットコンテナで実行することができます。例えば、Apache TomcatやGlassFishなどです。ただし、このデモでは、Jenkinsを組み込みのJavaサーブレットコンテナサーバー上で実行します。
Jenkinsと連携するためには、複数のJava実装が利用できますが、本チュートリアルでは最も人気のあるOpenJDKをインストールして使用します。
1. 好きなSSHクライアントを使用してUbuntuマシンにログインしてください。
2. 次に、以下のコマンドを実行してディレクトリ~/install_jenkins_demoを作成し、そのディレクトリに移動します。
3. 以下のコマンドを実行してマシンにJavaをインストールします。apt install

4. 最後に、以下のコマンドを実行して、インストールされたJavaのバージョンを確認します。これにより、Javaが正常にインストールされていることが確認できます。

Ubuntu 18.04 LTSインスタンスにJenkinsをインストールする
UbuntuマシンにJavaがインストールされていることを前提として、マシンにJenkinsをインストールしましょう。Jenkinsのインストールは、他のパッケージのインストール方法と非常に似ています。
まだSSHクライアントにログインしていると仮定して:
1. まず、システムパッケージを更新するためにapt update
コマンドを実行します。
2. 次に、以下のwget
コマンドを実行して、Jenkinsの公開鍵をシステムに追加します。
公開鍵を追加することで、JenkinsサイトがJenkinsの公式リポジトリや必要なパッケージをダウンロードできるようになります。
3. 次のコマンドを実行して、Jenkinsの公式リポジトリをシステムに追加し、システムを更新します。

4. そして、以下のコマンドを実行してJenkins
パッケージをインストール
します。

5. 最後に、以下のservice
コマンドを実行して、Jenkinsサービスの状態を確認します。# Validating the Jenkins service on ubuntu machine service jenkins status
以下のように表示されると、状態がJenkinsサービスがアクティブであることがわかります。

Jenkinsインスタンスの設定
これで、Jenkinsのインストールは半分終わりました。ただし、実際に使用する前に、基本的な設定を行う必要があります。方法は?Jenkinsの設定を始める最初のステップは、新しくインストールしたJenkinsをアンロックすることです。
SSHクライアントにまだログインしていると仮定します:
1. 好きなブラウザを開き、サーバーのIPアドレスの後にポート8080を指定して移動します。jenkins-ip:8080。 リンクに移動した後、管理者パスワードを入力してJenkinsをアンロックする必要があります。管理者パスワードは、サーバーの/var/lib/jenkins/secrets/initialAdminPassword
ディレクトリに保存されています(ステップ2)。

2. 以下のcat
コマンドを実行して、/var/lib/jenkins/secrets/initialAdminPassword
ディレクトリから管理者パスワードをマシンに追加します。
以下の出力に表示される巨大な文字列が管理者パスワードです。Jenkinsをアンロックするためには、管理者パスワードをメモしておいてください(ステップ3)。

3. ウェブブラウザに戻り(Unlock Jenkinsページ)、ステップ2でメモした管理者パスワードを入力します。
Jenkinsをアンロックした後、ブラウザはページにリダイレクトされます。このページではJenkinsインスタンスをプラグインでカスタマイズします(ステップ4)。
4. Jenkinsのカスタマイズページで、提案されたプラグインをインストールオプションをクリックします。
Jenkinsプラグインは、Jenkinsと統合されてGitプラグインなどのタスクを実行するためのサードパーティツールです。Gitプラグインを使用すると、Gitリポジトリに接続したり、Gitコマンドを実行したりすることができます。

5. 下記のように管理者ユーザーの詳細を入力し、保存して続行をクリックして管理者ユーザーを作成します。この管理者ユーザーを使用すると、JenkinsのUIダッシュボードやJenkinsインスタンスで作業することができます。
保存して続行をクリックすると、ステップ5で表示されるインスタンスの設定画面が表示されます。
Jenkinsにはデフォルトでユーザー名とパスワード(
admin: admin
)で作成された管理者ユーザーがありますが、カスタムの管理者ユーザーを作成するオプションも提供されています。カスタムの管理者ユーザーを作成したくない場合は、管理者としてスキップして続行することもできます。

6. 最後に、保存して完了をクリックしてインスタンスの設定を保存します。
インスタンスの設定では、使用するJenkinsのURLを指定することができます。この場合、デフォルトのURL(server-ip:8080)を使用します。


Jenkinsインスタンスのデフォルトポートの変更
以前に、デフォルトではJenkinsはポート8080で実行されることを学びました。これは問題ありません。しかし、ApacheやNGINXなど、同じポートで他のアプリケーションを実行する必要がある場合はどうでしょうか?心配ありません!Jenkinsのデフォルトポート(8080)を変更し、他のポートでJenkinsインスタンスを実行することができます。
1. 好みのテキストエディタで/etc/default/Jenkinsファイルを開き、デフォルトのポートを8080から9090に変更して変更内容を保存します。

2. 次に、以下のコマンドを実行してJenkinsを再起動し、更新された設定が有効になるようにします。
3. 最後に、JenkinsのURLに移動しますが、今回はポートを9090に変更します。以下に示します。

SSL証明書を使用してJenkinsを安全に実行する
これで、Jenkinsインスタンスは完璧にポート9090で実行されます。しかし、セキュリティは確保されていません。SSL証明書を有効にして、Jenkinsインスタンスが攻撃者によって侵害されることを避けましょう。
SSL証明書は、外部認証機関から利用できない場合に、ローカルマシンでテストするために主に使用されます。
Jenkinsインスタンスを保護するためには:
1. 各コマンドを実行して、~/certificatesという名前のディレクトリを作成し、証明書を保存するディレクトリに変更します。
2. 次に、以下のopenssl
コマンドを実行して、証明書署名要求(CSR)と秘密鍵を生成します。

3. 以下のコマンドを実行して、別のディレクトリ(/etc/apache2/ssl
)を作成し、~/certificates/
ディレクトリから証明書を/etc/apache2/ssl
ディレクトリに移動します。
4. デフォルトのSSL Apacheサイト設定ファイル(/etc/apache2/sites-available/default-ssl.conf
)を開き、以下の行を追加します。サーバーの実際の名前である<my-server-name>
を置き換えてください。
以下のコードでは、以前にSSL証明書をコピーした場所(証明書キーとファイル)を指定します。また、Jenkinsがポート9090
にリダイレクトするために、ProxyPass
引数を追加し、ProxyPreserveHost
をオンにします。

5. 以下の各コマンドを実行して、SSLモジュールを有効にし、変更したサイトを有効にし、Apacheサービスを再起動します。
6. 最後に、以下に示すようにHTTPSを使用してJenkinsインスタンスに移動してください。
表示されるように、JenkinsはHTTPSポートでSSL接続で正常に開かれています。セルフサインド証明書(自己作成)ではなく、証明機関によって作成された証明書を使用していないため、安全ではありませんという警告が表示されても心配しないでください。

結論
このチュートリアルでは、UbuntuマシンにJenkinsをインストールし、安全にJenkinsインスタンスにアクセスできることを確認する方法を学びました。
では、Jenkinsを活用するための計画はありますか?ウェブの展開を自動化することでしょうか?それともソフトウェア開発プロセスを改善するためにJenkins CI CDパイプラインを作成することでしょうか?