1. 概要

Jenkinsは、無料のオープンソースのJavaベースのWebアプリケーションです。 これは、GitOpsやCI/CDなどのタスク自動化に一般的に使用される汎用自動化サーバーです。 その人気により、 Jenkinsプロジェクトは、Linuxパッケージ、WARファイル、Dockerイメージなどのさまざまな形式でリリースを配布します。さらに、これらのさまざまな配布形式は、ソフトウェアをインストールして実行するためのさまざまなオプションを提供します。

このチュートリアルでは、LinuxにJenkinsをインストールして実行するさまざまな方法を見ていきます。

2. パッケージマネージャーの使用

Jenkinsプロジェクトは、DebianやRedhatなどの有名なLinuxディストリビューションのほとんどでパッケージを維持しています。 他のLinuxパッケージマネージャーで利用可能なJenkinsパッケージの完全なリストについては、公式のJenkinsインストールガイドを参照してください。

一般に、パッケージマネージャーを使用してJenkinsをインストールする手順は、リポジトリを追加し、更新を実行してからインストールすることです。このセクションの残りの部分では、を使用した手順を示します。 apt パッケージマネージャーですが、この手順は、サポートされている他のLinuxディストリビューションにも適用できます。

2.1. Jenkinsリポジトリの追加

パッケージマネージャーを介してJenkinsをインストールする前に、JenkinsDebianリポジトリを追加する必要があります。 まず、Jenkinsサーバーから公式のPGPキーをダウンロードします。 wget に保存します /usr/share/keyrings/jenkins-keyring.asc

$ sudo wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian/jenkins.io.key

次に、Jenkinsリポジトリをリストに追加します。

$ echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian binary/ | sudo tee  /etc/apt/sources.list.d/jenkins.list > /dev/null

最後に、 apt-get update コマンドを実行して、ローカルパッケージインデックスを更新します。

$ sudo apt-get update -qq

2.2. Jenkinsのインストールと実行

Jenkinsを実行できるようにするには、最初に Java Runtime Environment(JRE)をインストールする必要があります。 次に、 apt-getinstallを使用してJenkinsのインストールに進むことができます。

$ sudo apt-get install -y jenkins

インストールが完了したら、ポート8080でリッスンしているバックグラウンドでJenkinsを起動する必要があります。 http:// localhost:8080 を参照すると、Jenkinsの開始ページが表示されます。 さらに、インストールスクリプトはJenkinsをサービスとしてsystemdに追加します。そのステータスを確認するには、 systemctl statusjenkinsコマンドを実行します。

$ systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration Server
     Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-03-12 09:17:29 CET; 21min ago
   Main PID: 5171 (java)
--TRUNCATED--

3. WARファイルを使用したJenkinsのインストールと実行

Linuxパッケージに加えて、Jenkinsプロジェクトは、そのソフトウェアを汎用Webアプリケーションリソース(WAR)ファイル形式で配布します。

通常、WARファイルを提供するには、TomcatやWildFlyなどの専用アプリケーションサーバーが必要です。 ただし、JenkinsWARファイルには組み込みのJettyサーバーも付属しています。 これは、 WARファイルをTomcatなどの専用アプリケーションサーバーにデプロイすることも、スタンドアロンのJavaプロセスとしてデプロイすることもできることを意味します。

Jenkinsの実行に使用するアプローチに関係なく、最初に現在のシステムにJavaランタイム環境(JRE)をインストールする必要があります。

3.1. JenkinsWARファイルのダウンロード

WARファイルをダウンロードするには、その公式配布サイトにアクセスして、「Generic java package(.war)」オプションを選択します。 オプションをクリックすると、すぐにダウンロードが開始されます。

または、wgetを使用して端末にWARファイルをダウンロードすることもできます。

$ wget -O jenkins.war https://get.jenkins.io/war/{version}/jenkins.war

ここで、 {version} は、ダウンロードするバージョン(バージョン2.338など)に置き換える必要があります。

3.2. 組み込みJettyサーバーを使用したJenkinsの実行

組み込みのJettyサーバーを使用してWARファイルを実行するには、 java-jarコマンドを使用できます。

$ java -jar jenkins.war

コマンドを実行すると、ターミナルにログのストリームが表示されます。 この時点で、Jenkinsアプリケーションはポート8080のlocalhostを介してアクセスできるようになります。

3.3. TomcatサーバーへのJenkinsのデプロイ

または、WARファイルをTomcat、Websphere、WildFlyなどの専用アプリケーションサーバーにデプロイすることもできます。 この記事のデモンストレーションの目的で、WARファイルを提供するようにTomcatサーバーをセットアップします。

まず、Tomcatバイナリを公式ダウンロードリンクwgetを使用してダウンロードします。

$ wget -O tomcat.tar.gz https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.59/bin/apache-tomcat-9.0.59.tar.gz

次に、 tarコマンドと–strip-component オプションを使用して、Tomcatファイルを tomcat ディレクトリに解凍し、親フォルダーを削除します。

$ mkdir tomcat && tar -xvzf tomcat.tar.gz -C tomcat --strip-component=1

抽出したTomcatアーカイブのbinフォルダー内に、startup.shがあります。 これを実行してTomcatサービスを開始し、ポート8080で公開できます。

$ tomcat/bin/startup.sh
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

WARファイルをデプロイするには、jenkins.warファイルをtomcat/ webappフォルダーにコピーします。

$ cp jenkins.war ./tomcat/webapps
$ ls -halt ./tomcat/webapps
total 88M
drwxr-x--- 11 user user 4.0K Mar 14 13:46 jenkins
drwxr-x---  8 user user 4.0K Mar 14 13:46 .
-rw-rw-r--  1 user user  87M Mar 14 13:46 jenkins.war
drwxr-x---  6 user user 4.0K Mar 14 13:40 manager
drwxr-x---  6 user user 4.0K Mar 14 13:40 host-manager
drwxr-x---  7 user user 4.0K Mar 14 13:40 examples
drwxr-x--- 15 user user 4.0K Mar 14 13:40 docs
drwxr-x---  3 user user 4.0K Mar 14 13:40 ROOT
drwxrwxr-x  9 user user 4.0K Mar 14 13:40 ..

jenkins.warファイルをコピーした後にwebappsフォルダーでlsを実行すると、同じ中にアーカイブされていないjenkinsフォルダーが見つかります。ディレクトリ。 これは、Tomcatがそのディレクトリ内のWARファイルを自動的に検出してアーカイブ解除するためです。

次に、ディレクトリ名と一致するコンテキストパスでアーカイブされていないWARファイルのコンテンツを提供します。この場合、Jenkinsアプリケーションは http:// localhost:8080/jenkinsでアクセスできるようになります。

4. JenkinsをDockerコンテナとして実行する

Jenkinsプロジェクトは、WARファイルとLinuxパッケージに加えて、Dockerイメージの形式でJenkinsアプリケーションもリリースします。 具体的には、 jenkins /jenkinsイメージ名でJenkinsDockerイメージをリリースします。 以前のアプローチとは異なり、JREはイメージ内にパッケージ化されているため、システムにJREをインストールする必要はありません。

言うまでもなく、Dockerコンテナを実行するには、最初にDockerアプリケーションをインストールする必要があります。 残念ながら、dockerのインストールはこの記事の範囲外です。 ただし、ローカルにdockerアプリケーションをインストールするには、公式インストールガイドを参照できます。

JenkinsをDockerコンテナとして実行するには、 dockerrunコマンドの後にイメージパスjenkins/jenkinsを実行するだけです。

$ docker run --name jenkins -p 8080:8080 -d jenkins/jenkins 

-p オプションを指定して、コンテナーポート8080をローカルインターフェイスのポート8080に公開およびマップします。 そうすることで、localhostのポート8080でJenkinsにアクセスできるようになります。

Dockerコンテナーに関する注意点の1つは、それらが一時的なものであり、デフォルトではデータを永続化しないことです。 Jenkinsにデータを永続化するには、ローカルフォルダーをにマウントする必要があります。 / var / jenkins_home ディレクトリ:

docker run --name jenkins  -p 8080:8080 -d -v /opt/data/jenkins:/var/jenkins_home jenkins/jenkins

上記のコマンドには、 -v オプションが含まれています。このオプションは、ローカルパス / opt / data /jenkinsをJenkinsコンテナ内の/var /jenkins_homeディレクトリにマウントします。 、すべてのデータが存在する場所。

5. 概要

このチュートリアルでは、LinuxサーバーでJenkinsを実行するさまざまな方法について説明しました。

最初に、組み込みのパッケージマネージャーを使用してJenkinsをインストールして実行する方法を示しました。 次に、WARファイルを使用してJenkinsをインストールして実行するより手動の方法を検討しました。 さらに、Tomcatサーバーを使用してWARファイルを実行する方法、またはスタンドアロンのJavaプロセスとして実行する方法を確認しました。 最後に、いくつかの docker コマンドを使用して、JenkinsをDockerコンテナーとして実行する方法を確認しました。