Swarmのアップグレード
このセクションでは、Swarmパッケージ、OVA、tarballのインストール環境を新しいリリースにアップグレードする方法について説明します。
Swarmがまだ稼働していない場合は、ここで説明する手順を実行する必要はありません。代わりに、「Swarmのインストール手順」を参照してください。
Swarmのアップグレードプロセス:
- パッケージを使用してSwarmをインストールした場合は、「Swarmパッケージのインストール環境のアップグレード」を参照してください。
- OVAを使用してSwarmをインストールした場合は、「Swarmパッケージのインストール環境のアップグレード」を参照してください。
-
Swarmバージョン2021.1以降、Swarm OVAオペレーティングシステムがUbuntu 20.04 LTS (旧称: Ubuntu 16.04 LTS)になりました。16.04 LTS OVAを使用している場合は、20.04 LTS OVAを導入し、Swarmのインストール環境を新しいOVAに移動することをお勧めします。Ubuntu 20.04 LTS OVAの導入方法とSwarmインスタンスの移動方法については、「OVAからSwarm VMの展開と構成を行う」と「Swarmインスタンスの移動」を参照してください。
-
20.04 LTS OVAへの移行後にSwarmをアップグレードする場合は、パッケージを使用してアップグレードしてください。パッケージを使用したアップグレードの方法については、「Swarmパッケージのインストール環境のアップグレード」を参照してください。
- ソース配布アーカイブファイル(tarファイル)を使用してSwarmをインストールした場合は、「Swarmのtarballインストール環境のアップグレード」を参照してください。
Swarmパッケージのインストール環境のアップグレード
- Swarmのランタイム依存関係は、リリースによって異なります。アップグレードを開始する前に、現在のシステムがSwarmのランタイム依存関係を満たしているかどうかを確認する必要があります。詳細については、「ランタイム依存関係」を参照してください。
-
Swarmをアップグレードする前に、PHPの要件を確認してください。詳細については、「PHP」」を参照してください。
- Swarmをアップグレードする前に、Helixサーバの要件を確認してください。詳細については、「Helix Coreサーバの要件」を参照してください。
- バージョン2020.1以降のHelixサーバでは、Swarmでストリーム仕様ファイルの編集と表示を行うための権限が変更されました。SwarmユーザがSwarmでストリーム仕様ファイルの表示や編集を行うには、ディポ全体(//...)に対するadmin 権限が必要です。
-
バージョン2017.2以前のSwarmをアップグレードしたら、Swarmのインデックスをアップグレードする必要があります。これが、アップグレードの最後の手順になります。この手順を行うことにより、[ダッシュボード]ページと[レビューリスト]ページで、レビューに対するアクティビティの履歴が正しい順序で表示されるようになります。
-
バージョン2020.2以前のSwarmをアップグレードする際に、スラッシュ(/)が含まれているuseridsが存在する場合は、/etc/apache2/sites-enabled/perforce-swarm-site.confファイルのVirtualHostブロックに「AllowEncodedSlashes NoDecode」を追加します。VirtualHostブロックの詳細については、「Apache構成」を参照してください。
Swarmのアップグレードを開始する前に
Swarmのワークフロー機能はSwarm 2018.2で導入されました。このバージョンでは、ワークフロー機能はデフォルトで無効になっていましたが、バージョン2019.2以降のSwarmでは、デフォルトで有効になっています。
Swarmのワークフロー機能ではなく、strictトリガとenforceトリガを使用してコミットを制御している場合は、以下の点に注意してください。
- Swarmのワークフロー機能を使用する場合: strictトリガとenforceトリガをコメント化して、新しいワークフロートリガを使用する必要があります。
- EXEMPT_FILE_COUNT
- EXEMPT_EXTENSIONS
-
strictトリガ とenforceトリガを引き続き使用する場合: 現在のenforceトリガとstrictトリガをそのまま使用し、ワークフロー機能を無効にしてください。ただし、これらのトリガは、今後のリリースでは使用できなくなります。
ヒントSwarmのconfig.phpファイルでワークフロー機能を無効にした場合、ワークフローがSwarmで処理されなくなりますが、Helixサーバがワークフロートリガスクリプトを実行するたびに、わずかなオーバーヘッドが発生します。次のワークフロートリガ行をコメント化すると、このオーバーヘッドをなくすことができます: swarm.enforce change-submit、swarm.strict change-content、swarm.shelvesub shelve-submit
既知の制約事項
ワークフロートリガは、Swarm 2018.1以前のバージョンで使用可能な以下のトリガ機能をサポートしていません。
引き続きこれらのトリガ機能を使用する場合は、以下の説明のように、ワークフロー機能を無効にした状態で、現在のenforceトリガとstrictトリガをそのまま使用する必要があります。
ワークフロー機能を使用するかどうかにより、使用する必要があるトリガが異なるため、アップグレードを開始する前に、ワークフロー機能を使用するかどうかを決めてください。トリガの要件について詳しくは、Swarmのアップグレードの「トリガの更新」セクションを参照してください。
Swarmのアップグレード
Swarm 2015.2 リリースでは、パッケージ名が変更されています。ここで説明する手順を実行すると、Swarmのパッケージが最新バージョンにアップグレードされます。
Swarm 2021.1以降、Swarmパッケージをアップグレードすると、Swarmログのローテーションを管理するためのログローテーション機能がインストールされるようになりました。パッケージのアップグレード中にSwarmの既存のカスタムログローテーション設定ファイルが見つかった場合は、新しいログローテーション設定を無効にする方法が記載された通知が表示されます。
ログローテーション設定の詳細については、「ログローテーション機能」を参照してください。
以下で説明するプロセスは、Swarmのダウンタイムを最小限に抑えることを目的としていますが、短時間のダウンタイムが発生するのを避けることはできません。ただし、Helixサーバでダウンタイムが発生することはありません。アップグレードが正常に完了すると、すべてのSwarmユーザがシステムからログアウトされます。
実稼働環境でSwarmを使用している場合は、最初にテスト環境や開発環境などでこのアップグレードプロセスのテストを行うことをお勧めします。
- 以下に示す各OSディストリビューションで操作を実行します。
-
PHPのアップグレードプロセスの一環として、Apache 2.2サーバは停止し無効化された状態になります。Apache 2.2サーバを別のアプリケーション用に使用している場合、それらのアプリケーションも動作を停止します。これらのアプリケーションをアップグレードしてPHP 7とApache 2.4で動作するようにするか、アプリケーションを別のサーバに移動させてください。
-
Swarm 2019.1~2020.1: これらのバージョンのSwarmでは、CentOS/RHEL 7用のSCLリポジトリのPHPパッケージが使用されていました。これは、CentOS/RHELの標準バージョンよりも新しいバージョンのPHPにアクセスできるようにするためです。この場合、Apache用のhttpd24-httpdパッケージを使用する必要がありました。必要なパッケージは、すべて/opt/rhにインストールされていました。
Swarm 2020.2: このバージョンのSwarmでは、CentOS/RHEL 7と8用のRemiリポジトリが使用されます。これにより、標準のファイルシステム構造にPHP7.4がインストールされます。そのため、Apache用の旧バージョンのhttpd24-httpdが必要なくなり、標準システムバージョンのApacheが再度使用されることになりました。
バージョン2019.1から2020.1までのSwarmでは、以下の場所にSCL Apacheサイト構成ファイルがインストールされていました。
/opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf
この構成ファイルが存在する状態でSwarmをバージョン2020.2にアップグレードすると、この構成ファイルが/etc/httpd/conf.d/perforce-swarm-site.confディレクトリにコピーされます(このディレクトリ内にファイルが存在しない場合)。また、このファイルが上書きされ、参照先が/var/log/httpd24から/var/log/httpdに変更されます。
Swarm用のサイト構成ファイルが/etc/httpdディレクトリ内に既に存在する場合、構成ファイルのコピー操作と上書き操作は実行されません。
アップグレードが完了すると、httpd24-httpdが無効になります。
-
Apacheサーバの起動時にApache HTTPサーバのLinuxテストページが表示されないようにするには、/etc/httpd/conf.d/ディレクトリのwelcome.confファイルの内容をコメント化します。
-
Apacheサーバの起動時に、Swarmの構成情報の代わりにApache HTTPサーバのサンプル構成情報が読み込まれないようにするため、/etc/httpd/conf.d/ディレクトリ内のautoindex.confファイルの名前をz-autoindex.confなどに変更してください。この処理が必要になる理由は、/etc/httpd/conf.d/ディレクトリ内で最初に見つかった構成ファイル(アルファベット順)がApacheによって実行されないようにする必要があるためです。実行する必要があるのは、perforce-swarm-site.confファイルです。
- epel-release-latest-7.noarch.rpmリポジトリ構成パッケージを展開します。これにより、SwarmからEPELパッケージにアクセスできるようになります。
- Remiリポジトリ構成パッケージを展開します(このパッケージを展開する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです)。これにより、SwarmからPHP 7.xにアクセスできるようになります。
- yum-utilsパッケージをインストールします。これにより、yum-config-managerコマンドを実行できるようになります。
- PHPのデフォルトバージョン/単一バージョンをインストールします。
- remi-php*を無効にします。
- PHP 7.4を有効にします。
- PHPのアップグレードを実行します。これにより、Swarmパッケージもアップグレードされます。
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php74
yum update
- 上記の手順でyum updateコマンドを実行しなかった場合、以下のコマンドでSwarmパッケージのアップグレードを実行します。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバが自動的に起動しないように無効にします。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバを停止します。
- 特殊なphp.ini構成オプションが指定されている場合は、php.iniファイルを/etc/php.d/php.ini/ディレクトリにコピーします。以下に例を示します。
- perforce-swarm-site.confファイルを/etc/httpd/conf.d/ディレクトリにコピーします(まだコピーされていない場合)。以下に例を示します。
- sedコマンドを使用して、perforce-swarm-site.confファイルに記述されている/log/httpd24というファイルパスを/log/httpd/で置き換えます。
- Apache 2.4 HTTPサーバを有効にします。これにより、サーバが自動的に起動します。
- Apache 2.4 HTTPサーバを起動します。
-
オプションのImageMagick: ImageMagickを有効にすると、Swarmで、画像を次の形式で表示することができます: BMP、EPS、PSD、TGA、TIFF
- ImageMagickをインストールします。
- Webサーバを再起動します。これにより、ImageMagickが取得されます。
yum install ImageMagick
systemctl restart httpd
- Swarm 2020.1をアップグレードする場合は、Redisサーバを再起動します。
- SELinuxがシステムで正常に動作していることを確認します。CentOS上のSELinuxを設定する方法については、「CentOS/RHEL上のSELinuxの構成」を参照してください。
-
PHPのアップグレードプロセスの一環として、Apache 2.2サーバは停止し無効化された状態になります。Apache 2.2サーバを別のアプリケーション用に使用している場合、それらのアプリケーションも動作を停止します。これらのアプリケーションをアップグレードしてPHP 7とApache 2.4で動作するようにするか、アプリケーションを別のサーバに移動させてください。
-
Swarm 2019.1~2020.1: これらのバージョンのSwarmでは、CentOS/RHEL 7用のSCLリポジトリのPHPパッケージが使用されていました。これは、CentOS/RHELの標準バージョンよりも新しいバージョンのPHPにアクセスできるようにするためです。この場合、Apache用のhttpd24-httpdパッケージを使用する必要がありました。必要なパッケージは、すべて/opt/rhにインストールされていました。
Swarm 2020.2: このバージョンのSwarmでは、CentOS/RHEL 7と8用のRemiリポジトリが使用されます。これにより、標準のファイルシステム構造にPHP7.4がインストールされます。そのため、Apache用の旧バージョンのhttpd24-httpdが必要なくなり、標準システムバージョンのApacheが再度使用されることになりました。
バージョン2019.1から2020.1までのSwarmでは、以下の場所にSCL Apacheサイト構成ファイルがインストールされていました。
/opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf
この構成ファイルが存在する状態でSwarmをバージョン2020.2にアップグレードすると、この構成ファイルが/etc/httpd/conf.d/perforce-swarm-site.confディレクトリにコピーされます(このディレクトリ内にファイルが存在しない場合)。また、このファイルが上書きされ、参照先が/var/log/httpd24から/var/log/httpdに変更されます。
Swarm用のサイト構成ファイルが/etc/httpdディレクトリ内に既に存在する場合、構成ファイルのコピー操作と上書き操作は実行されません。
アップグレードが完了すると、httpd24-httpdが無効になります。
-
Apacheサーバの起動時にApache HTTPサーバのLinuxテストページが表示されないようにするには、/etc/httpd/conf.d/ディレクトリのwelcome.confファイルの内容をコメント化します。
-
Apacheサーバの起動時に、Swarmの構成情報の代わりにApache HTTPサーバのサンプル構成情報が読み込まれないようにするため、/etc/httpd/conf.d/ディレクトリ内のautoindex.confファイルの名前をz-autoindex.confなどに変更してください。この処理が必要になる理由は、/etc/httpd/conf.d/ディレクトリ内で最初に見つかった構成ファイル(アルファベット順)がApacheによって実行されないようにする必要があるためです。実行する必要があるのは、perforce-swarm-site.confファイルです。
- epel-release-latest-8.noarch.rpmリポジトリ構成パッケージを展開します。これにより、SwarmからEPELパッケージにアクセスできるようになります。
- Remiリポジトリ構成パッケージを展開します(このパッケージを展開する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです)。これにより、SwarmからPHP 7.xにアクセスできるようになります。
- yum-utilsパッケージをインストールします。これにより、yum-config-managerコマンドを実行できるようになります。
- PHPのデフォルトバージョン/単一バージョンをインストールします。
- PHP 7.4用のモジュールストリームを有効にします。
- PHP 7.4をインストールします。
- PHPのアップグレードを実行します。これにより、Swarmパッケージもアップグレードされます。
dnf module reset php
dnf module install php:remi-7.4
dnf update
- 上記の手順でdnf updateコマンドを実行しなかった場合、以下のコマンドでSwarmパッケージのアップグレードを実行します。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバが自動的に起動しないように無効にします。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバを停止します。
- 特殊なphp.ini構成オプションが指定されている場合は、php.iniファイルを/etc/php.d/php.ini/ディレクトリにコピーします。以下に例を示します。
- perforce-swarm-site.confファイルを/etc/httpd/conf.d/ディレクトリにコピーします(まだコピーされていない場合)。以下に例を示します。
- sedコマンドを使用して、perforce-swarm-site.confファイルに記述されている/log/httpd24というファイルパスを/log/httpd/で置き換えます。
- Apache 2.4 HTTPサーバを有効にします。これにより、サーバが自動的に起動します。
- Apache 2.4 HTTPサーバを起動します。
-
オプションのImageMagick: ImageMagickを有効にすると、Swarmで、画像を次の形式で表示することができます: BMP、EPS、PSD、TGA、TIFF
- ImageMagickをインストールします。
- Webサーバを再起動します。これにより、ImageMagickが取得されます。
yum install ImageMagick
systemctl restart httpd
- Swarm 2020.1をアップグレードする場合は、Redisサーバを再起動します。
- SELinuxがシステムで正常に動作していることを確認します。CentOS上のSELinuxを設定する方法については、「CentOS/RHEL上のSELinuxの構成」を参照してください。
-
PHPのアップグレードプロセスの一環として、Apache 2.2サーバは停止し無効化された状態になります。Apache 2.2サーバを別のアプリケーション用に使用している場合、それらのアプリケーションも動作を停止します。これらのアプリケーションをアップグレードしてPHP 7とApache 2.4で動作するようにするか、アプリケーションを別のサーバに移動させてください。
-
Swarm 2019.1~2020.1: これらのバージョンのSwarmでは、CentOS/RHEL 7用のSCLリポジトリのPHPパッケージが使用されていました。これは、CentOS/RHELの標準バージョンよりも新しいバージョンのPHPにアクセスできるようにするためです。この場合、Apache用のhttpd24-httpdパッケージを使用する必要がありました。必要なパッケージは、すべて/opt/rhにインストールされていました。
Swarm 2020.2: このバージョンのSwarmでは、CentOS/RHEL 7と8用のRemiリポジトリが使用されます。これにより、標準のファイルシステム構造にPHP7.4がインストールされます。そのため、Apache用の旧バージョンのhttpd24-httpdが必要なくなり、標準システムバージョンのApacheが再度使用されることになりました。
バージョン2019.1から2020.1までのSwarmでは、以下の場所にSCL Apacheサイト構成ファイルがインストールされていました。
/opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf
この構成ファイルが存在する状態でSwarmをバージョン2020.2にアップグレードすると、この構成ファイルが/etc/httpd/conf.d/perforce-swarm-site.confディレクトリにコピーされます(このディレクトリ内にファイルが存在しない場合)。また、このファイルが上書きされ、参照先が/var/log/httpd24から/var/log/httpdに変更されます。
Swarm用のサイト構成ファイルが/etc/httpdディレクトリ内に既に存在する場合、構成ファイルのコピー操作と上書き操作は実行されません。
アップグレードが完了すると、httpd24-httpdが無効になります。
-
Apacheサーバの起動時にApache HTTPサーバのLinuxテストページが表示されないようにするには、/etc/httpd/conf.d/ディレクトリのwelcome.confファイルの内容をコメント化します。
-
Apacheサーバの起動時に、Swarmの構成情報の代わりにApache HTTPサーバのサンプル構成情報が読み込まれないようにするため、/etc/httpd/conf.d/ディレクトリ内のautoindex.confファイルの名前をz-autoindex.confなどに変更してください。この処理が必要になる理由は、/etc/httpd/conf.d/ディレクトリ内で最初に見つかった構成ファイル(アルファベット順)がApacheによって実行されないようにする必要があるためです。実行する必要があるのは、perforce-swarm-site.confファイルです。
- epel-release-latest-7.noarch.rpmリポジトリ構成パッケージを展開します。これにより、SwarmからEPELパッケージにアクセスできるようになります。
- Remiリポジトリ構成パッケージを展開します(このパッケージを展開する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです)。これにより、SwarmからPHP 7.xにアクセスできるようになります。
- yum-utilsパッケージをインストールします。これにより、yum-config-managerコマンドを実行できるようになります。
- 一部の依存関係に対してオプションのチャンネルを有効にします。
- PHPのデフォルトバージョン/単一バージョンをインストールします。
- remi-php*を無効にします。
- PHP 7.4を有効にします。
- PHPのアップグレードを実行します。これにより、Swarmパッケージもアップグレードされます。
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php74
yum update
- 上記の手順でyum updateコマンドを実行しなかった場合、以下のコマンドでSwarmパッケージのアップグレードを実行します。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバが自動的に起動しないように無効にします。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバを停止します。
- 特殊なphp.ini構成オプションセットが指定されている場合は、php.iniファイルを/etc/php.d/ディレクトリにコピーします。以下に例を示します。
- perforce-swarm-site.confファイルを/etc/httpd/conf.d/ディレクトリにコピーします(まだコピーされていない場合)。以下に例を示します。
- sedコマンドを使用して、perforce-swarm-site.confファイルに記述されている/log/httpd24というファイルパスを/log/httpd/で置き換えます。
- Apache 2.4 HTTPサーバを有効にします。これにより、サーバが自動的に起動します。
- Apache 2.4 HTTPサーバを起動します。
-
オプションのImageMagick: ImageMagickを有効にすると、Swarmで、画像を次の形式で表示することができます: BMP、EPS、PSD、TGA、TIFF
- ImageMagickをインストールします。
- Webサーバを再起動します。これにより、ImageMagickが取得されます。
yum install ImageMagick
systemctl restart httpd
- Swarm 2020.1をアップグレードする場合は、Redisサーバを再起動します。
- SELinuxがシステムで正常に動作していることを確認します。RHEL上のSELinuxを設定する方法については、「CentOS/RHEL上のSELinuxの構成」を参照してください。
-
PHPのアップグレードプロセスの一環として、Apache 2.2サーバは停止し無効化された状態になります。Apache 2.2サーバを別のアプリケーション用に使用している場合、それらのアプリケーションも動作を停止します。これらのアプリケーションをアップグレードしてPHP 7とApache 2.4で動作するようにするか、アプリケーションを別のサーバに移動させてください。
-
Swarm 2019.1~2020.1: これらのバージョンのSwarmでは、CentOS/RHEL 7用のSCLリポジトリのPHPパッケージが使用されていました。これは、CentOS/RHELの標準バージョンよりも新しいバージョンのPHPにアクセスできるようにするためです。この場合、Apache用のhttpd24-httpdパッケージを使用する必要がありました。必要なパッケージは、すべて/opt/rhにインストールされていました。
Swarm 2020.2: このバージョンのSwarmでは、CentOS/RHEL 7と8用のRemiリポジトリが使用されます。これにより、標準のファイルシステム構造にPHP7.4がインストールされます。そのため、Apache用の旧バージョンのhttpd24-httpdが必要なくなり、標準システムバージョンのApacheが再度使用されることになりました。
バージョン2019.1から2020.1までのSwarmでは、以下の場所にSCL Apacheサイト構成ファイルがインストールされていました。
/opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf
この構成ファイルが存在する状態でSwarmをバージョン2020.2にアップグレードすると、この構成ファイルが/etc/httpd/conf.d/perforce-swarm-site.confディレクトリにコピーされます(このディレクトリ内にファイルが存在しない場合)。また、このファイルが上書きされ、参照先が/var/log/httpd24から/var/log/httpdに変更されます。
Swarm用のサイト構成ファイルが/etc/httpdディレクトリ内に既に存在する場合、構成ファイルのコピー操作と上書き操作は実行されません。
アップグレードが完了すると、httpd24-httpdが無効になります。
-
Apacheサーバの起動時にApache HTTPサーバのLinuxテストページが表示されないようにするには、/etc/httpd/conf.d/ディレクトリのwelcome.confファイルの内容をコメント化します。
-
Apacheサーバの起動時に、Swarmの構成情報の代わりにApache HTTPサーバのサンプル構成情報が読み込まれないようにするため、/etc/httpd/conf.d/ディレクトリ内のautoindex.confファイルの名前をz-autoindex.confなどに変更してください。この処理が必要になる理由は、/etc/httpd/conf.d/ディレクトリ内で最初に見つかった構成ファイル(アルファベット順)がApacheによって実行されないようにする必要があるためです。実行する必要があるのは、perforce-swarm-site.confファイルです。
- epel-release-latest-8.noarch.rpmリポジトリ構成パッケージを展開します。これにより、SwarmからEPELパッケージにアクセスできるようになります。
- Remiリポジトリ構成パッケージを展開します(このパッケージを展開する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです)。これにより、SwarmからPHP 7.xにアクセスできるようになります。
- yum-utilsパッケージをインストールします。これにより、yum-config-managerコマンドを実行できるようになります。
- 一部の依存関係に対してオプションのチャンネルを有効にします。
- PHPのデフォルトバージョン/単一バージョンをインストールします。
- PHP 7.4用のモジュールストリームを有効にします。
- PHP 7.4をインストールします。
- PHPのアップグレードを実行します。これにより、Swarmパッケージもアップグレードされます。
dnf module reset php
dnf module install php:remi-7.4
dnf update
- 上記の手順でdnf updateコマンドを実行しなかった場合、以下のコマンドでSwarmパッケージのアップグレードを実行します。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバが自動的に起動しないように無効にします。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバを停止します。
- 特殊なphp.ini構成オプションセットが指定されている場合は、php.iniファイルを/etc/php.d/ディレクトリにコピーします。以下に例を示します。
- perforce-swarm-site.confファイルを/etc/httpd/conf.d/ディレクトリにコピーします(まだコピーされていない場合)。以下に例を示します。
- sedコマンドを使用して、perforce-swarm-site.confファイルに記述されている/log/httpd24というファイルパスを/log/httpd/で置き換えます。
- Apache 2.4 HTTPサーバを有効にします。これにより、サーバが自動的に起動します。
- Apache 2.4 HTTPサーバを起動します。
-
オプションのImageMagick: ImageMagickを有効にすると、Swarmで、画像を次の形式で表示することができます: BMP、EPS、PSD、TGA、TIFF
- ImageMagickをインストールします。
- Webサーバを再起動します。これにより、ImageMagickが取得されます。
yum install ImageMagick
systemctl restart httpd
- Swarm 2020.1をアップグレードする場合は、Redisサーバを再起動します。
- SELinuxがシステムで正常に動作していることを確認します。RHEL上のSELinuxを設定する方法については、「CentOS/RHEL上のSELinuxの構成」を参照してください。
- 通常、いくつかのSwarm用メジャーアップデートが毎年リリースされますが、そのほかにも、パッチによるアップデートがリリースされる場合があります。Swarmのアップデートがリリースされているかどうかを確認するには、以下のOSディストリビューションでコマンドを実行します。
sudo apt-get update
sudo apt-get install helix-swarm helix-swarm-triggers helix-swarm-optional
以下に示すバージョンのCentOSディストリビューションで操作を実行します。
以下で説明するPHPとApacheのアップグレードプロセスのすべての手順を実行する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです。2回目以降のSwarmのアップグレードでは、手順eを実行するだけでSwarmをアップグレードすることができます。ImageMagickをインストールする場合は手順mを実行し、SELinuxが正常に動作しているかどうかを確認する場合は手順oを実行します。
アップグレードプロセスを実行すると、epel-release-latest-7.noarch.rpmファイルが展開され、SwarmからEPELリポジトリにアクセスできるようになります。また、remi-release-7.rpmファイルが展開され、SwarmからPHP 7.xとApache 2.4にアクセスできるようになります。最初にSwarmをアップグレードし、Apache 2.2サーバを無効にして停止します。次に、特定のSwarmファイルをコピーし、Apache 2.4用に編集します。最後に、Apache 2.4サーバを有効にして起動します。
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
Remiリポジトリが展開されていない場合、次の手順を実行すると、以下に示すようなエラーが表示されます。
yum install yum-utils
yum install helix-swarm helix-swarm-triggers helix-swarm-optional
Swarm 2019.3をSwarm 2021.1にアップグレードする場合は、SwarmのPHP 7.1ファイルを削除します。
yum remove $(yum list installed | grep php71 | awk '{print $1}')
systemctl disable httpd
systemctl stop httpd
cp /etc/opt/rh/rh-php72/php.d/php.ini /etc/php.d/php.ini
$ cp /opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf /etc/httpd/conf.d/perforce-swarm-site.conf
$ sed -i "s#/log/httpd24/#/log/httpd/#g" /etc/httpd/conf.d/perforce-swarm-site.conf
systemctl enable httpd
systemctl start httpd
systemctl restart redis-server-swarm
以下で説明するPHPとApacheのアップグレードプロセスのすべての手順を実行する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです。2回目以降のSwarmのアップグレードでは、手順eを実行するだけでSwarmをアップグレードすることができます。ImageMagickをインストールする場合は手順mを実行し、SELinuxが正常に動作しているかどうかを確認する場合は手順oを実行します。
アップグレードプロセスを実行すると、epel-release-latest-8.noarch.rpmファイルが展開され、SwarmからEPELリポジトリにアクセスできるようになります。また、remi-release-8.rpmファイルが展開され、SwarmからPHP 7.xとApache 2.4にアクセスできるようになります。最初にSwarmをアップグレードし、Apache 2.2サーバを無効にして停止します。次に、特定のSwarmファイルをコピーし、Apache 2.4用に編集します。最後に、Apache 2.4サーバを有効にして起動します。
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Remiリポジトリが展開されていない場合、次の手順を実行すると、以下に示すようなエラーが表示されます。
yum install yum-utils
yum install helix-swarm helix-swarm-triggers helix-swarm-optional
Swarm 2019.3をSwarm 2021.1にアップグレードする場合は、SwarmのPHP 7.1ファイルを削除します。
yum remove $(yum list installed | grep php71 | awk '{print $1}')
systemctl disable httpd
systemctl stop httpd
cp /etc/opt/rh/rh-php72/php.d/php.ini /etc/php.d/php.ini
$ cp /opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf /etc/httpd/conf.d/perforce-swarm-site.conf
$ sed -i "s#/log/httpd24/#/log/httpd/#g" /etc/httpd/conf.d/perforce-swarm-site.conf
systemctl enable httpd
systemctl start httpd
systemctl restart redis-server-swarm
以下に示すバージョンのRHELディストリビューションで操作を実行します。
以下で説明するアップグレードプロセスのすべての手順を実行する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです。2回目以降のSwarmのアップグレードでは、手順fを実行するだけでSwarmをアップグレードすることができます。ImageMagickをインストールする場合は手順nを実行し、SELinuxがシステムで正常に動作しているかどうかを確認する場合は手順pを実行します。
アップグレードプロセスを実行すると、epel-release-latest-7.noarch.rpmファイルが展開され、SwarmからEPELリポジトリにアクセスできるようになります。また、remi-release-7.rpmファイルが展開され、SwarmからPHP 7.xとApache 2.4にアクセスできるようになります。最初にSwarmをアップグレードし、Apache 2.2サーバを無効にして停止します。次に、特定のSwarmファイルをコピーし、Apache 2.4用に編集します。最後に、Apache 2.4サーバを有効にして起動します。
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
Remiリポジトリを有効にしなかった場合、次の手順を実行すると、以下に示すようなエラーが表示されます。
Error: Package: helix-swarm-2020.2-1845646.el6.x86_64 (perforce)
Requires: rh-php74
yum install yum-utils
subscription-manager repos --enable=rhel-7-server-optional-rpms
yum install helix-swarm helix-swarm-triggers helix-swarm-optional
Swarm 2019.3をSwarm 2021.1にアップグレードする場合は、SwarmのPHP 7.1ファイルを削除します。
yum remove $(yum list installed | grep php71 | awk '{print $1}')
systemctl disable httpd
systemctl stop httpd
cp /etc/opt/rh/rh-php72/php.d/php.ini /etc/php.d/php.ini
$ cp /opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf /etc/httpd/conf.d/perforce-swarm-site.conf
$ sed -i "s#/log/httpd24/#/log/httpd/#g" /etc/httpd/conf.d/perforce-swarm-site.conf
systemctl enable httpd
systemctl start httpd
systemctl restart redis-server-swarm
以下で説明するアップグレードプロセスのすべての手順を実行する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです。2回目以降のSwarmのアップグレードでは、手順fを実行するだけでSwarmをアップグレードすることができます。ImageMagickをインストールする場合は手順nを実行し、SELinuxがシステムで正常に動作しているかどうかを確認する場合は手順pを実行します。
アップグレードプロセスを実行すると、epel-release-latest-8.noarch.rpmファイルが展開され、SwarmからEPELリポジトリにアクセスできるようになります。また、remi-release-8.rpmファイルが展開され、SwarmからPHP 7.xとApache 2.4にアクセスできるようになります。最初にSwarmをアップグレードし、Apache 2.2サーバを無効にして停止します。次に、特定のSwarmファイルをコピーし、Apache 2.4用に編集します。最後に、Apache 2.4サーバを有効にして起動します。
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Remiリポジトリを有効にしなかった場合、次の手順を実行すると、以下に示すようなエラーが表示されます。
Error: Package: helix-swarm-2021.1-1845646.el6.x86_64 (perforce)
Requires: rh-php74
dnf install yum-utils
subscription-manager repos --enable=rhel-8-server-optional-rpms
yum install helix-swarm helix-swarm-triggers helix-swarm-optional
Swarm 2019.3をSwarm 2021.1にアップグレードする場合は、SwarmのPHP 7.1ファイルを削除します。
yum remove $(yum list installed | grep php71 | awk '{print $1}')
systemctl disable httpd
systemctl stop httpd
cp /etc/opt/rh/rh-php72/php.d/php.ini /etc/php.d/php.ini
$ cp /opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf /etc/httpd/conf.d/perforce-swarm-site.conf
$ sed -i "s#/log/httpd24/#/log/httpd/#g" /etc/httpd/conf.d/perforce-swarm-site.conf
systemctl enable httpd
systemctl start httpd
systemctl restart redis-server-swarm
sudo apt-get update
sudo apt-get -s upgrade | grep swarm
yum list updates | grep swarm
Swarmは、Redisサーバを使用してキャッシュを管理します。アップグレードを実行すると、RedisサーバがSwarmマシンにインストールされて設定されます。自分専用のRedisサーバを使用する方法については、「自分専用のRedisサーバを使用する」を参照してください。
トリガの更新
-
新しいSwarmトリガスクリプトをHelix Coreサーバマシンにコピーします。このトリガスクリプトは、
SWARM_ROOT/p4-bin/scripts/swarm-trigger.pl
です。このスクリプトを使用するには、Helixサーバマシンにバージョン5.08以降のPerlをインストールする必要があります(最新バージョンをインストールすることをお勧めします)。SwarmでSSLを使用している場合は、PerlモジュールのIO::Socket::SSL
も必要になります。警告この時点で既存のトリガスクリプトを上書きしないでください。スクリプトに新しい名前を付けます(
swarm-trigger-new.pl
など)。 -
Helixサーバマシン上の同じディレクトリ内に
swarm-trigger.conf
というファイルを作成して、Swarmトリガスクリプトを設定します。このスクリプトには以下を指定する必要があります。注意swarm-trigger.conf
ファイルがすでに存在する場合は、追加の設定は不要です。# SWARM_HOST (required) # Hostname of your Swarm instance, with leading "http://" or "https://". SWARM_HOST="http://my-swarm-host" # SWARM_TOKEN (required) # The token used when talking to Swarm to offer some security. To obtain the # value, log in to Swarm as a super user and select 'About Swarm' to see the # token value. SWARM_TOKEN="MY-UUID-STYLE-TOKEN" # ADMIN_USER (optional) ワークフロー機能が有効になっている場合は使用しないでください(ワークフロー機能はデフォルトで有効になっています) # For enforcing reviewed changes, optionally specify the normal Perforce user # with admin privileges (to read keys); if not set, will use whatever Perforce # user is set in environment. ADMIN_USER= # ADMIN_TICKET_FILE (optional) ワークフロー機能が有効になっている場合は使用しないでください(ワークフロー機能はデフォルトで有効になっています) # For enforcing reviewed changes, optionally specify the location of the # p4tickets file if different from the default ($HOME/.p4tickets). # Ensure this user is a member of a group with an 'unlimited' or very long # timeout; then, manually login as this user from the Perforce server machine to # set the ticket. ADMIN_TICKET_FILE= # VERIFY_SSL (optional) # If HTTPS is being used on the Swarm web server, then this controls whether # the SSL certificate is validated or not. By default this is set to 1, which # means any SSL certificates must be valid. If the web server is using a self # signed certificate, then this must be set to 0. # set the ticket. VERIFY_SSL=1
必須のSWARM_HOST変数とSWARM_TOKEN変数に、以前のSwarmトリガスクリプト(通常は
swarm-trigger.pl
)の設定を入力します。ヒントADMIN_USER変数とADMIN_TICKET変数は、バージョン2019.1以前のSwarmの'enforce triggers'で使用されていました。明示的にワークフローを無効にして、非推奨の'enforce triggers'を使用しない限り、これらの変数は削除してかまいません。
注意バージョン2015.4以前のSwarmの場合: 以前のSwarmでは、Swarmのトリガスクリプトファイルをシェルスクリプトとして使用することができました (通常は
swarm-trigger.sh
)。Swarmでは、Perlトリガスクリプトファイル(通常は
swarm-trigger.pl
)を使用する必要があります。 -
Linuxの場合: 以下のコマンドを実行して、スクリプトが実行可能かどうかを確認します。
$ sudo chmod +x swarm-trigger-new.pl
-
新しいトリガスクリプトの名前を次のように変更します。
Linuxの場合:
$ mv swarm-trigger-new.pl swarm-trigger.pl
Windowsの場合:
C:\> ren swarm-trigger-new.pl swarm-trigger.pl
-
Helixサーバのトリガを更新します。
警告-
「swarm.shelvedel shelve-delete」というトリガ行は、バージョン2018.1以降のSwarmで追加され、バージョン2020.1で更新された行です。
- バージョン2017.4以前のSwarmをアップグレードする場合: 「
swarm.shelvedel shelve-delete
」というトリガ行をHelixサーバのトリガテーブルに追加します(まだ追加されていない場合)。詳しくは、「Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。」を参照してください。 - バージョン2018.xまたはバージョン2019.xのSwarmをアップグレードする場合: Helixサーバのトリガテーブル内の「
swarm.shelvedel shelve-delete
」というトリガ行を、アップグレード先バージョンのSwarmで指定されているトリガ行に置き換えます。
- バージョン2017.4以前のSwarmをアップグレードする場合: 「
-
ワークフロー機能:
バージョン2019.2以降のSwarmでは、ワークフロー機能がデフォルトで有効になっています。ワークフロー機能を有効にするためのトリガ行は、ワークフロー機能を無効にするためのトリガ行とは異なります。
- ワークフロー機能を有効にする(これがデフォルト設定です):
- Helixサーバのトリガテーブルで、次のトリガ行をコメント化します(これらのトリガ行が記述されている場合): swarm.enforce.1、swarm.enforce.2、swarm.strict.1、swarm.strict.2。詳細については、「Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。」を参照してください。
- 次のトリガ行をHelixサーバのトリガテーブルに追加します(これらのトリガ行がまだ追加されていない場合):
swarm.enforce change-submit
、swarm.strict change-content
、swarm.shelvesub shelve-submit
。詳細については、「Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。」を参照してください。
- ワークフロー機能を無効にする:
Helixサーバのトリガテーブルで、次のトリガ行をコメント化します(これらのトリガ行が記述されている場合):
swarm.enforce change-submit
、swarm.strict change-content
、swarm.shelvesub shelve-submit
。詳細については、「Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。」を参照してください。
- ワークフロー機能を有効にする(これがデフォルト設定です):
-
Swarmトリガスクリプトを実行して、Perforceトリガテーブルに含める必要があるトリガ行をキャプチャします(WindowsとLinuxの場合はCtrl+Cキーを、macOSの場合はCommand+Cキーを使用します)。
Linuxの場合:
$ ./swarm-trigger.pl -o
Windowsの場合:
C:\> path/to/perl swarm-trigger.pl -o
- super 権限を持つPerforceユーザとして
p4 triggers
コマンドを実行し、前述の手順でキャプチャしたすべてのswarm.*
行を置き換えます(WindowsとLinuxの場合はCtrl+Vキーを、macOSの場合はCommand+Vキーを使用します)。これによって、Perforceトリガテーブルは更新されます。
重要各種のトリガオプションを適用するなどの目的でSwarmのトリガ行がカスタマイズされている場合は、更新後のトリガ行でも同じカスタマイズ作業を繰り返してください。
-
アップグレードの確認
Swarmを起動すると、Redisキャッシュの確認処理が実行されます。この確認処理の実行中は、Swarmにログインすることはできません。Redisキャッシュの確認処理にかかる時間は、Swarm上のユーザ数、グループ数、プロジェクト数によって異なります。メモリキャッシュを永続化すると、Swarmが起動するまでの時間を短縮することができます。メモリキャッシュを永続化するには、バックグラウンドでの保存機能を無効にして追加保存機能を有効にします(これらの設定は、redis-server.confファイルで行います)。詳しくは、「Redisサーバ構成ファイル」を参照してください。
アップグレード後のSwarmインスタンスが正しく稼働するかどうかを確認するには、以下の手順を実行します。
- 以下のチェンジリストを新しく作成します。
- 変更されたファイルが1つ以上含まれているチェンジリスト
- チェンジリストの説明に#reviewキーワードが含まれているチェンジリスト
- 作成したチェンジリストをP4Vで右クリックし、[ファイルを保留...]をクリックします。
- チェンジリストに対して新しいSwarmレビューが作成されたことを確認します。
- Swarmレビューが作成されている場合は、Swarmトリガが機能します。
- Swarmレビューが作成されていない場合は、以下の説明を参照してください。
[新しいSwarmレビューを要求...]を選択しないでください。これを選択するとAPIが使用されるため、Swarmトリガのテストが完全には実行されません。
アップグレード環境の確認時に新しいSwarmレビューが作成されていない場合は、一部のSwarmトリガがHelixサーバにインストールされていない可能性があります。新しいトリガが定期的にSwarmに追加されるため、アップグレードを行う場合はこれらのトリガをインストールする必要があります。詳しくは、上記の「トリガの更新」セクションを参照してください。HelixサーバでSwarmトリガを設定する方法については、「Swarm用のHelix Coreサーバの構成」を参照してください。
Swarmインデックスのアップグレード
バージョン2017.2以前のSwarmをアップグレードする場合は、インデックスをアップグレードする必要があります。これにより、[ダッシュボード]ページと[レビューリスト]ページで、レビューに対するアクティビティの履歴が正しい順序で表示されるようになります。
バージョン2017.3以降のSwarmをアップグレードする場合は、インデックスをアップグレードする必要はありません。
インデックスのアップグレードプロセスは、Swarmシステムの仕様に合わせて設定することができます。詳細については、「インデックスのアップグレード」を参照してください。
以下のURLにアクセスし、admin 権限を持つユーザとしてアップグレードを実行してください。
http://SWARM-HOST/upgrade
Swarmのアップグレード後に初めてSwarmの特定のページにアクセスすると、ブラウザのハードリフレッシュを実行するためのメッセージが表示される場合があります。このメッセージが表示されるのは、一部のSwarmページのUIとコンテンツが更新されているためです。この場合、ページキャッシュの情報が古くなっているため、ブラウザをハードリフレッシュしてアップグレード後のページを読み込む必要があります。例えば、Windows/Linux上でChromeを使用している場合は、CTRL + F5キーを押し、MacOSでChromeを使用している場合は、Command + Shift + Rキーを押します。
操作はこれで完了です。
Swarmのtarballインストール環境のアップグレード
- Swarmのランタイム依存関係は、リリースによって異なります。アップグレードを開始する前に、現在のシステムがSwarmのランタイム依存関係を満たしているかどうかを確認する必要があります。詳細については、「ランタイム依存関係」を参照してください。
-
使用しているP4PHP Helix APIに対するPHPインタフェース。Helixサーバマシンと連携するPHPコードを記述することができます。を、新しいリリースのSwarmに付属しているP4PHPバージョンにアップグレードする必要があります。
- 推奨事項に従って、Swarmに付属しているP4PHPを使用するようにPHPがすでに設定されている場合は、このアップグレードが自動的に実行されます。
- その他の方法を使用して手動でP4PHPをインストールした場合は、以下のアップグレード手順を実行する前に、最新のSwarm tarballに含まれているP4PHPのバージョンを使用してSwarmを設定します。詳細については、「PHP構成」を参照してください。
Swarmのパッケージ、OVA、tarballを使用したインストール:SwarmがサポートするPHP 7の各バージョン用として、2つのバージョンのP4PHPが用意されています。これらはp4-bin/bin.linux26x86_64ディレクトリにあります。
- perforce-php7x.soはSSL 1.0.2を使用するシステムに対応しています。
- perforce-php7x-ssl1.1.1.soは、SSL 1.1.1を使用するシステムに対応しています(デフォルト設定の場合、Ubuntu 18.04とUbuntu 20.04ではSSL 1.1.1が使用されます)。
「x」は、PHP 7のバージョンです。
perforce.iniファイルがP4PHPの正しいバージョンを指しておらず、SSLが有効になったHelixサーバに接続している場合、以下のような動作になります。
- Swarm Webページが読み込まれず、Connection Resetエラーが表示される。
- Apacheのエラーログに、「undefined symbol:SSLeay」というメッセージが記録される場合がある。
-
Swarmをアップグレードする前に、PHPの要件を確認してください。詳細については、「PHP」」を参照してください。
- Swarmをアップグレードする前に、Helixサーバの要件を確認してください。詳細については、「Helix Coreサーバの要件」を参照してください。
- バージョン2020.1以降のHelixサーバでは、Swarmでストリーム仕様ファイルの編集と表示を行うための権限が変更されました。SwarmユーザがSwarmでストリーム仕様ファイルの表示や編集を行うには、ディポ全体(//...)に対するadmin 権限が必要です。
OVAのアップグレードプロセス:
- 推奨:「Swarmパッケージのインストール環境のアップグレード」セクションに記載されている手順を実行することをお勧めします。
- 非推奨:「Swarmのtarballインストール環境のアップグレード」セクションに記載されている手順を実行することはお勧めしません。
-
バージョン2017.2以前のSwarmをアップグレードしたら、Swarmのインデックスをアップグレードする必要があります。これが、アップグレードの最後の手順になります。この手順を行うことにより、[ダッシュボード]ページと[レビューリスト]ページで、レビューに対するアクティビティの履歴が正しい順序で表示されるようになります。
-
バージョン2020.2以前のSwarmをアップグレードする際に、スラッシュ(/)が含まれているuseridsが存在する場合は、/etc/apache2/sites-enabled/perforce-swarm-site.confファイルのVirtualHostブロックに「AllowEncodedSlashes NoDecode」を追加します。VirtualHostブロックの詳細については、「Apache構成」を参照してください。
Swarmのアップグレードを開始する前に
Swarmのワークフロー機能はSwarm 2018.2で導入されました。このバージョンでは、ワークフロー機能はデフォルトで無効になっていましたが、バージョン2019.2以降のSwarmでは、デフォルトで有効になっています。
Swarmのワークフロー機能ではなく、strictトリガとenforceトリガを使用してコミットを制御している場合は、以下の点に注意してください。
- Swarmのワークフロー機能を使用する場合: strictトリガとenforceトリガをコメント化して、新しいワークフロートリガを使用する必要があります。
- EXEMPT_FILE_COUNT
- EXEMPT_EXTENSIONS
-
strictトリガ とenforceトリガを引き続き使用する場合: 現在のenforceトリガとstrictトリガをそのまま使用し、ワークフロー機能を無効にしてください。ただし、これらのトリガは、今後のリリースでは使用できなくなります。
ヒントSwarmのconfig.phpファイルでワークフロー機能を無効にした場合、ワークフローがSwarmで処理されなくなりますが、Helixサーバがワークフロートリガスクリプトを実行するたびに、わずかなオーバーヘッドが発生します。次のワークフロートリガ行をコメント化すると、このオーバーヘッドをなくすことができます: swarm.enforce change-submit、swarm.strict change-content、swarm.shelvesub shelve-submit
既知の制約事項
ワークフロートリガは、Swarm 2018.1以前のバージョンで使用可能な以下のトリガ機能をサポートしていません。
引き続きこれらのトリガ機能を使用する場合は、以下の説明のように、ワークフロー機能を無効にした状態で、現在のenforceトリガとstrictトリガをそのまま使用する必要があります。
ワークフロー機能を使用するかどうかにより、使用する必要があるトリガが異なるため、アップグレードを開始する前に、ワークフロー機能を使用するかどうかを決めてください。トリガの要件について詳しくは、Swarmのアップグレードの「トリガの更新」セクションを参照してください。
Swarmのアップグレード
以下で説明するプロセスは、Swarmのダウンタイムを最小限に抑えることを目的としていますが、短時間のダウンタイムが発生するのを避けることはできません。ただし、Helixサーバでダウンタイムが発生することはありません。アップグレードが正常に完了すると、すべてのSwarmユーザがシステムからログアウトされます。
実稼働環境でSwarmを使用している場合は、最初にテスト環境や開発環境などでこのアップグレードプロセスのテストを行うことをお勧めします。
CentOS/RHEL: PHP 7.xとApache 2.4のインストール
CentOSとRHELにはデフォルトでPHP 7.xとApache 2.4がインストールされていないため、Swarmをアップグレードする前にシステムをアップグレードする必要があります。このプロセスを実行する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです。
-
PHPのアップグレードプロセスの一環として、Apache 2.2サーバは停止し無効化された状態になります。Apache 2.2サーバを別のアプリケーション用に使用している場合、それらのアプリケーションも動作を停止します。これらのアプリケーションをアップグレードしてPHP 7とApache 2.4で動作するようにするか、アプリケーションを別のサーバに移動させてください。
-
CentOS 7: SwarmからPHP 7.xにアクセスできるようにするには、Remiリポジトリ構成パッケージ(remi-release-7.rpm)を使用します。このRedHatリポジトリで、sclo-php7x-php-pecl-redis拡張機能とsclo-php7x-php-pecl-igbinary拡張機能を使用することはできません。これらの拡張機能は、別の場所で使用する必要があります。
-
RHEL 7: SwarmからPHP 7.xと各種の必須PHP拡張機能にアクセスできるようにするには、Remiリポジトリ構成パッケージ(remi-release-7.rpm)を使用します。php7x-php-pecl-redis拡張機能とphp7x-php-pecl-igbinary拡張機能は、このRedHatリポジトリでは使用できません。別の場所で使用する必要があります。
-
Swarm 2019.1~2020.1: これらのバージョンのSwarmでは、CentOS/RHEL 7用のSCLリポジトリのPHPパッケージが使用されていました。これは、CentOS/RHELの標準バージョンよりも新しいバージョンのPHPにアクセスできるようにするためです。この場合、Apache用のhttpd24-httpdパッケージを使用する必要がありました。必要なパッケージは、すべて/opt/rhにインストールされていました。
Swarm 2020.2: このバージョンのSwarmでは、CentOS/RHEL 7と8用のRemiリポジトリが使用されます。これにより、標準のファイルシステム構造にPHP7.4がインストールされます。そのため、Apache用の旧バージョンのhttpd24-httpdが必要なくなり、標準システムバージョンのApacheが再度使用されることになりました。
バージョン2019.1から2020.1までのSwarmでは、以下の場所にSCL Apacheサイト構成ファイルがインストールされていました。
/opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf
この構成ファイルが存在する状態でSwarmをバージョン2020.2にアップグレードすると、この構成ファイルが/etc/httpd/conf.d/perforce-swarm-site.confディレクトリにコピーされます(このディレクトリ内にファイルが存在しない場合)。また、このファイルが上書きされ、参照先が/var/log/httpd24から/var/log/httpdに変更されます。
Swarm用のサイト構成ファイルが/etc/httpdディレクトリ内に既に存在する場合、構成ファイルのコピー操作と上書き操作は実行されません。
アップグレードが完了すると、httpd24-httpdが無効になります。
-
Apacheサーバの起動時にApache HTTPサーバのLinuxテストページが表示されないようにするには、/etc/httpd/conf.d/ディレクトリのwelcome.confファイルの内容をコメント化します。
-
Apacheサーバの起動時に、Swarmの構成情報の代わりにApache HTTPサーバのサンプル構成情報が読み込まれないようにするため、/etc/httpd/conf.d/ディレクトリ内のautoindex.confファイルの名前をz-autoindex.confなどに変更してください。この処理が必要になる理由は、/etc/httpd/conf.d/ディレクトリ内で最初に見つかった構成ファイル(アルファベット順)がApacheによって実行されないようにする必要があるためです。実行する必要があるのは、perforce-swarm-site.confファイルです。
このセクションでは、リポジトリを使用してシステム上にPHP 7.xとApache 2.4をインストールする方法について説明します。
- このプロセスを実行する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです。PHP 7.xをインストールし、SwarmのApache設定を移行します。これにより、Apache 2.4が使用されるようになります。以下のOSディストリビューションで操作を実行してください。
- epel-release-latest-7.noarch.rpmリポジトリ構成パッケージを展開します。これにより、SwarmからEPELパッケージにアクセスできるようになります。
- Remiリポジトリ構成パッケージを展開します(このパッケージを展開する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです)。これにより、SwarmからPHP 7.xにアクセスできるようになります。
- yum-utilsパッケージをインストールします。これにより、yum-config-managerコマンドを実行できるようになります。
- PHPのデフォルトバージョン/単一バージョンをインストールします。
- remi-php*を無効にします。
- PHP 7.4を有効にします。
- PHPのアップグレードを実行します。これにより、Swarmパッケージもアップグレードされます。
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php74
yum update
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバが自動的に起動しないように無効にします。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバを停止します。
- PHP 7.2をアップグレードする場合は、30-perforce.iniファイルを/etc/php.d/ディレクトリにコピーします。これにより、iniファイルの名前がperforce.iniに変わります。
- PHP 7.2をアップグレードする場合は、sedコマンドを使用して、perforce.iniファイル内の「PHP 7.2」の箇所を「PHP 7.4」に置き換えます。
- 特殊なphp.ini構成オプションセットが指定されている場合は、php.iniファイルを/etc/php.d/ディレクトリにコピーします。以下に例を示します。
- perforce-swarm-site.confファイルを/etc/httpd/conf.d/ディレクトリにコピーします(まだコピーされていない場合)。以下に例を示します。
- sedコマンドを使用して、perforce-swarm-site.confファイルに記述されている/log/httpd24というファイルパスを/log/httpd/で置き換えます。
- Apache 2.4 HTTPサーバを有効にします。これにより、サーバが自動的に起動します。
- Apache 2.4 HTTPサーバを起動します。
- SELinuxがシステムで正常に動作していることを確認します。CentOS上のSELinuxを設定する方法については、「CentOS/RHEL上のSELinuxの構成」を参照してください。
- epel-release-latest-8.noarch.rpmリポジトリ構成パッケージを展開します。これにより、SwarmからEPELパッケージにアクセスできるようになります。
- Remiリポジトリ構成パッケージを展開します(このパッケージを展開する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです)。これにより、SwarmからPHP 7.xにアクセスできるようになります。
- yum-utilsパッケージをインストールします。これにより、yum-config-managerコマンドを実行できるようになります。
- PHPのデフォルトバージョン/単一バージョンをインストールします。
- PHP 7.4用のモジュールストリームを有効にします。
- PHP 7.4をインストールします。
- PHPのアップグレードを実行します。これにより、Swarmパッケージもアップグレードされます。
dnf module reset php
dnf module install php:remi-7.4
dnf update
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバが自動的に起動しないように無効にします。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバを停止します。
- PHP 7.2をアップグレードする場合は、30-perforce.iniファイルを/etc/php.d/ディレクトリにコピーします。これにより、iniファイルの名前がperforce.iniに変わります。
- PHP 7.2をアップグレードする場合は、sedコマンドを使用して、perforce.iniファイル内の「PHP 7.2」の箇所を「PHP 7.4」に置き換えます。
- 特殊なphp.ini構成オプションセットが指定されている場合は、php.iniファイルを/etc/php.d/ディレクトリにコピーします。以下に例を示します。
- perforce-swarm-site.confファイルを/etc/httpd/conf.d/ディレクトリにコピーします(まだコピーされていない場合)。以下に例を示します。
- sedコマンドを使用して、perforce-swarm-site.confファイルに記述されている/log/httpd24というファイルパスを/log/httpd/で置き換えます。
- Apache 2.4 HTTPサーバを有効にします。これにより、サーバが自動的に起動します。
- Apache 2.4 HTTPサーバを起動します。
- SELinuxがシステムで正常に動作していることを確認します。CentOS上のSELinuxを設定する方法については、「CentOS/RHEL上のSELinuxの構成」を参照してください。
- epel-release-latest-7.noarch.rpmリポジトリ構成パッケージを展開します。これにより、SwarmからEPELパッケージにアクセスできるようになります。
- Remiリポジトリ構成パッケージを展開します(このパッケージを展開する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです)。これにより、SwarmからPHP 7.xにアクセスできるようになります。
- yum-utilsパッケージをインストールします。これにより、yum-config-managerコマンドを実行できるようになります。
-
一部の依存関係に対してオプションのチャンネルを有効にします。
- PHPのデフォルトバージョン/単一バージョンをインストールします。
- remi-php*を無効にします。
- PHP 7.4を有効にします。
- PHPをアップグレードします。
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php74
yum update
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバが自動的に起動しないように無効にします。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバを停止します。
- PHP 7.2をアップグレードする場合は、30-perforce.iniファイルを/etc/php.d/perforce.ini/ディレクトリにコピーします。これにより、iniファイルの名前がperforce.iniに変わります。
- PHP 7.2をアップグレードする場合は、sedコマンドを使用して、perforce.iniファイル内の「PHP 7.2」の箇所を「PHP 7.4」に置き換えます。
- 特殊なphp.ini構成オプションセットが指定されている場合は、php.iniファイルを/etc/php.d/ディレクトリにコピーします。以下に例を示します。
- perforce-swarm-site.confファイルを/etc/httpd/conf.d/ディレクトリにコピーします(まだコピーされていない場合)。以下に例を示します。
- sedコマンドを使用して、perforce-swarm-site.confファイルに記述されている/log/httpd24というファイルパスを/log/httpd/で置き換えます。
- Apache 2.4 HTTPサーバを有効にします。これにより、サーバが自動的に起動します。
- Apache 2.4 HTTPサーバを起動します。
- SELinuxがシステムで正常に動作していることを確認します。RHEL 7上のSELinuxを設定する方法については、「CentOS/RHEL上のSELinuxの構成」を参照してください。
- epel-release-latest-8.noarch.rpmリポジトリ構成パッケージを展開します。これにより、SwarmからEPELパッケージにアクセスできるようになります。
- Remiリポジトリ構成パッケージを展開します(このパッケージを展開する必要があるのは、初めてPHP 7.xにアップグレードする場合だけです)。これにより、SwarmからPHP 7.xにアクセスできるようになります。
- yum-utilsパッケージをインストールします。これにより、yum-config-managerコマンドを実行できるようになります。
-
一部の依存関係に対してオプションのチャンネルを有効にします。
- PHPのデフォルトバージョン/単一バージョンをインストールします。
- PHP 7.4用のモジュールストリームを有効にします。
- PHP 7.4をインストールします。
- PHPをアップグレードします。
dnf module reset php
dnf module install php:remi-7.4
dnf update
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバが自動的に起動しないように無効にします。
- Apache 2.2をアップグレードする場合は、Apache 2.2 HTTPサーバを停止します。
- PHP 7.2をアップグレードする場合は、30-perforce.iniファイルを/etc/php.d/perforce.ini/ディレクトリにコピーします。これにより、iniファイルの名前がperforce.iniに変わります。
- PHP 7.2をアップグレードする場合は、sedコマンドを使用して、perforce.iniファイル内の「PHP 7.2」の箇所を「PHP 7.4」に置き換えます。
- 特殊なphp.ini構成オプションセットが指定されている場合は、php.iniファイルを/etc/php.d/ディレクトリにコピーします。以下に例を示します。
- perforce-swarm-site.confファイルを/etc/httpd/conf.d/ディレクトリにコピーします(まだコピーされていない場合)。以下に例を示します。
- sedコマンドを使用して、perforce-swarm-site.confファイルに記述されている/log/httpd24というファイルパスを/log/httpd/で置き換えます。
- Apache 2.4 HTTPサーバを有効にします。これにより、サーバが自動的に起動します。
- Apache 2.4 HTTPサーバを起動します。
- SELinuxがシステムで正常に動作していることを確認します。RHEL 7上のSELinuxを設定する方法については、「CentOS/RHEL上のSELinuxの構成」を参照してください。
- これで、PHP 7.xとApache 2.4がインストールされました。次に、Swarmマシン上でSwarm Redisサービスの設定を行います(「Swarmマシン上でRedisの設定を行う」を参照)。
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
Swarm 2019.3をSwarm 2021.1にアップグレードする場合は、SwarmのPHP 7.1ファイルを削除します。
$ yum remove $(yum list installed | grep php71 | awk '{print $1}')
$ systemctl disable httpd
$ systemctl stop httpd
$ cp /etc/opt/rh/rh-php72/php.d/30-perforce.ini /etc/php.d/perforce.ini
$ sed -i "s/72/74/g" /etc/php.d/perforce.ini
$ cp /etc/opt/rh/rh-php72/php.d/php.ini /etc/php.d/php.ini
$ cp /opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf /etc/httpd/conf.d/perforce-swarm-site.conf
$ sed -i "s#/log/httpd24/#/log/httpd/#g" /etc/httpd/conf.d/perforce-swarm-site.conf
$ systemctl enable httpd
$ systemctl start httpd
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
yum install yum-utils
Swarm 2019.3をSwarm 2021.1にアップグレードする場合は、SwarmのPHP 7.1ファイルを削除します。
$ yum remove $(yum list installed | grep php71 | awk '{print $1}')
$ systemctl disable httpd
$ systemctl stop httpd
$ cp /etc/opt/rh/rh-php72/php.d/30-perforce.ini /etc/php.d/perforce.ini
$ sed -i "s/72/74/g" /etc/php.d/perforce.ini
$ cp /etc/opt/rh/rh-php72/php.d/php.ini /etc/php.d/php.ini
$ cp /opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf /etc/httpd/conf.d/perforce-swarm-site.conf
$ sed -i "s#/log/httpd24/#/log/httpd/#g" /etc/httpd/conf.d/perforce-swarm-site.conf
$ systemctl enable httpd
$ systemctl start httpd
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
subscription-manager repos --enable=rhel-7-server-optional-rpms
Swarm 2019.3をSwarm 2021.1にアップグレードする場合は、SwarmのPHP 7.1ファイルを削除します。
$ yum remove $(yum list installed | grep php71 | awk '{print $1}')
$ systemctl disable httpd
$ systemctl stop httpd
$ cp /etc/opt/rh/rh-php72/php.d/30-perforce.ini /etc/php.d/perforce.ini
$ sed -i "s/72/74/g" /etc/php.d/perforce.ini
$ cp /etc/opt/rh/rh-php72/php.d/php.ini /etc/php.d/php.ini
$ cp /opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf /etc/httpd/conf.d/perforce-swarm-site.conf
$ sed -i "s#/log/httpd24/#/log/httpd/#g" /etc/httpd/conf.d/perforce-swarm-site.conf
$ systemctl enable httpd
$ systemctl start httpd
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf install yum-utils
subscription-manager repos --enable=rhel-8-server-optional-rpms
Swarm 2019.3をSwarm 2021.1にアップグレードする場合は、SwarmのPHP 7.1ファイルを削除します。
$ yum remove $(yum list installed | grep php71 | awk '{print $1}')
$ systemctl disable httpd
$ systemctl stop httpd
$ cp /etc/opt/rh/rh-php72/php.d/30-perforce.ini /etc/php.d/perforce.ini
$ sed -i "s/72/74/g" /etc/php.d/perforce.ini
$ cp /etc/opt/rh/rh-php72/php.d/php.ini /etc/php.d/php.ini
$ cp /opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf /etc/httpd/conf.d/perforce-swarm-site.conf
$ sed -i "s#/log/httpd24/#/log/httpd/#g" /etc/httpd/conf.d/perforce-swarm-site.conf
$ systemctl enable httpd
$ systemctl start httpd
Swarmマシン上でRedisの設定を行う
アップグレードするSwarmのバージョンに応じて、以下のいずれかの手順を実行してください。
Swarmでは、Redisを使用してキャッシュを管理する必要があります。デフォルト設定の場合、Swarmは、Swarmマシン上で専用のRedisサーバを使用します。Swarmは、Helixサーバのデータをキャッシュすることにより、Swarmで実行される一般的な検索処理のパフォーマンスを改善し、Helixサーバに対する負荷を軽減します。 Redisは、Swarm Tarballに付属しています。
このセクションでは、Swarmマシン上でSwarm Redisサービスを設定する方法について説明します。Swarm Redisサーバを使用する場合は、以下の構成ファイルのデフォルト値を変更しないでください。
必要な場合は、Swarm Redisサーバの代わりに、自分専用のRedisサーバを使用することができます。自分専用のRedisを使用するようにSwarmを設定する手順については、「自分専用のRedisサーバを使用する」を参照してください。
SwarmのSWARM_ROOT/p4-bin/bin.linux26x86_64/ディレクトリには、以下に示す2つのRedisバイナリが保管されています。
- redis-server-swarm
- redis-cli-swarm
- Redisキャッシュデータベースを設定し、/opt/perforce/etc/ディレクトリ内のredis-server.confファイルを開いて、以下の情報を入力します。
- 以下の設定は、redis-server.confファイルで定義されているデフォルト設定です。このファイルには、Swarm用のRedis構成に関する詳細情報が記述されています。
- 多数のユーザ、グループ、プロジェクトが存在するSwarmシステムの場合、メモリキャッシュを永続化すると、起動時間を短縮できる可能性があります。メモリキャッシュを永続化するには、バックグラウンドでの保存機能を無効にして追加保存機能を有効にします。詳細については、redis-server.confファイルのコメントを参照してください。
- bind 127.0.0.1 - RedisサーバのIPアドレス(ループバックインタフェース)
- port 7379 - Redisサーバのポート番号
- supervised autoを指定すると、upstartまたはsystemdの使用状況が自動的に検出され、プロセスでスーパーバイザを使用する準備が整ったことが通知されます。
- 「save ""」を指定すると、バックグラウンドでの保存処理が無効になります(推奨)。
- dir /opt/perforce/swarm/redis - Redisキャッシュデータベースが保存されるディレクトリ
- Swarmを開始する前にRedisキャッシュデータベースを実行する必要があります。そのため、Redisキャッシュデータベースを、システムの起動時に自動的に開始されるサービスとして設定することをお勧めします。
- このサンプルスクリプトにより、RedisサービスがPerforceユーザとして稼働します。
- このサンプルスクリプトでは、/opt/perforce/etc/redis-server.confディレクトリ内の構成ファイルが使用されます。
- このサンプルスクリプトは、/opt/perforce/swarm/p4-bin/bin.linux26x86_64/にデータベースサーバがインストールされていることを前提としています。
SWARM_ROOT/data/config.php
ファイルが存在しない場合は、新しく作成します。SWARM_ROOT/data/config.php
ファイルのredisブロックには、Swarm Redisサーバのpassword、namespace、host、portに関する情報が記述されています。- password: Redisサーバのパスワードを指定します。デフォルト値はnullです。Swarm Redisサーバを使用する場合は、デフォルト値のままにしておく必要があります。
- namespaceには、Redisキャッシュのキー値で使用されるプレフィックスを指定します。デフォルト値はSwarmです。Swarm Redisサーバを使用する場合は、デフォルト値のままにしておく必要があります。
- host: Redisサーバのホスト名を指定します。デフォルト値はlocalhostです。Swarm Redisサーバを使用する場合は、デフォルト値のままにしておく必要があります。
- port: Redisサーバのポート番号を指定します。デフォルト値は「7379」です。ネットワーク上の他のRedisサーバとの競合を避けるため、Swarmではポート7379がデフォルトのポートとして使用されます。Swarm Redisサーバを使用する場合は、デフォルト値のままにしておく必要があります。Swarm Redisサーバ以外のサーバについては、ポート6379がデフォルトのポートとして使用されます。
- items_batch_size: Redisに対するmset呼び出しで許可されるキーと値のペアの最大数を指定します。この最大数を超えた場合は、処理効率を考慮して一括処理されます。デフォルト値は「100000」です。
- check_integrity: Swarmが停止している状態でHelixサーバで変更を行った場合や、更新中にエラーが発生した場合などに、RedisキャッシュがHelixサーバに同期されていない状態になる可能性があります。Swarmでは、通常の整合性チェックを実行して、RedisキャッシュとHelixサーバが同期されているかどうかを確認することができます。整合性チェックで同期されていないキャッシュファイルが見つかった場合は、Swarmにより、そのキャッシュ内のデータが自動的に更新されます。
- population_lock_timeout: キャッシュに初めてデータを取り込む際のタイムアウトを秒単位で指定します。Swarmシステムの規模が大きいために、キャッシュへのデータ取り込みがタイムアウトになった場合は、このタイムアウト時間の値を増やしてください。デフォルト値は「300」秒です。
bind 127.0.0.1
port 7379
supervised auto
save ""
dir /opt/perforce/swarm/redis
デフォルト値:
Redisサーバの設定を変更する場合は、Laminas Redisアダプタ内で変更を行ってください。Laminas Redisアダプタの詳細については、Laminas Redisアダプタのドキュメントを参照してください。
以下に示すサンプルスクリプトの動作は以下のようになります。
Redisをサーバとして設定する場合は、以下のコード行が記述されたスクリプトを/etc/systemd/systemディレクトリに追加します。
redis-server-swarm.service
[Unit]
Description=Redis Server for Swarm
After=network.target
[Service]
ExecStart=/opt/perforce/swarm/p4-bin/bin.linux26x86_64/redis-server-swarm /opt/perforce/etc/redis-server.conf
ExecStop=/opt/perforce/swarm/p4-bin/bin.linux26x86_64/redis-cli-swarm shutdown
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIndentifier=redis
User=perforce
Group=perforce
[Install]
WantedBy=multi-user.target
<?php
// this block should be a peer of 'p4'
'redis' => array(
'options' => array(
'password' => null, // Defaults to null
'namespace' => 'Swarm',
'server' => array(
'host' => 'localhost', // Defaults to 'localhost' or enter your Redis server hostname
'port' => '7379', // Defaults to '7379 or enter your Redis server port
),
),
'items_batch_size' => 100000,
'check_integrity' => '03:00', // Defaults to '03:00' Use one of the following two formats:
// 1) The time of day that the integrity check starts each day. Set in 24 hour format with leading zeros and a : separator
// 2) The number of seconds between each integrity check. Set as a positive integer. Specify '0' to disable the integrity check.
'population_lock_timeout' => 300, // Timeout for initial cache population. Defaults to 300 seconds.
),
構成可能変数:
1つのRedisサーバに対して複数のSwarmインスタンスが稼働している場合、各Swarmサーバで異なるRedis名前空間を使用する必要があります。これにより、個別のSwarmインスタンスのキャッシュデータを識別できるようになります。名前空間の長さは128文字以内に制限されています。
1つ以上のSwarmインスタンスが複数のHelixサーバに接続されている場合、Redisの名前空間にはserver labelが含められるため、名前空間の長さが127文字以内に制限されます。詳細については、「複数のHelixサーバインスタンス」を参照してください。
この「100000」というデフォルト値は、処理効率とプロジェクトデータの複雑度のバランスを考慮して決定された値です。通常、このデフォルト値を変更する必要はありませんが、変更する必要がある場合は、事前にサポートチームに連絡してください。
check_integrity構成可能変数を使用して、Redisキャッシュの整合性チェックを実行するタイミングを指定することができます。一日のうちの特定の時間を指定することも(24時間形式で指定、1桁の時間の場合は先頭にゼロを付加)、チェック処理の実行間隔を秒数(正の整数)で指定することもできます。整合性チェックを無効にする場合は、値として「0」を設定します。デフォルト値は「03:00」です。
Swarmでは、Redisを使用してキャッシュを管理する必要があります。デフォルト設定の場合、Swarmは、Swarmマシン上で専用のRedisサーバを使用します。Swarmは、Helixサーバのデータをキャッシュすることにより、Swarmで実行される一般的な検索処理のパフォーマンスを改善し、Helixサーバに対する負荷を軽減します。 Redisは、Swarm Tarballに付属しています。
Swarm Redisサーバではなく、自分専用のRedisサーバを使用している場合は、その専用サーバを、Swarmの現在のバージョンにアップグレードする必要があります。
SwarmのSWARM_ROOT/p4-bin/bin.linux26x86_64/ディレクトリには、以下に示す2つのRedisバイナリが保管されています。
- redis-server-swarm
- redis-cli-swarm
新しいバージョンのSwarmに付属しているRedisバイナリが更新されると、Redisサーバが新しいバージョンに自動的にアップグレードされます。元のRedis構成ファイルは変更されません。Swarm Redisサーバを使用する場合は、Redis構成ファイルのデフォルト値を変更しないでください。
Redisサーバの再起動:
Redisバイナリが更新されている状態で、Redisをサービスとして実行する場合(この方法をお勧めします)、新しいバージョンのRedisサーバを使用するには、Redisサーバを再起動する必要があります。
- Redisサーバを再起動するには、以下のコマンドを実行します。
- これで、新しいバージョンのRedisサーバが起動します。
systemctl restart redis-server-swarm
多数のユーザ、グループ、プロジェクトが存在するSwarmシステムの場合、メモリキャッシュを永続化すると、起動時間を短縮できる可能性があります。メモリキャッシュを永続化するには、バックグラウンドでの保存機能を無効にして追加保存機能を有効にします。詳細については、redis-server.confファイルのコメントを参照してください。
これで、Swarmマシンに対してSwarm Redisサービスが設定されました。次に、Swarmのアップグレードを行います。詳細については、「のアップグレードSwarm」を参照してください。
のアップグレードSwarm
このセクションでは、付属のアーカイブファイルを使用してSwarmをアップグレードする手順について説明します。SWARM_ROOT
は、Swarmの現在のインストール場所を表しています。
OVAのインストール環境の場合は、SWARM_ROOT
は/opt/perforce/swarm
になります。
-
新しいTARファイルをhttps://www.perforce.com/downloads/helix-swarmからダウンロードします。
-
以下のコマンドを実行して、新しい
swarm.tgz
を展開します。$ tar -zxf swarm.tgz
swarm.tgz
の内容が、swarm-version
という名前の最上位フォルダに展開されます。version
は、ダウンロードされたバージョンです。このディレクトリは、下記の例ではSWARM_NEW
に置き換えられています。 -
SWARM_NEW
を、SWARM_ROOT
のピアになるように移動します。$ mv SWARM_NEW SWARM_ROOT/../
-
SWARM_ROOT/data/config.php
ファイルをSWARM_ROOT
からSWARM_NEW
へコピーします。$ cp -p SWARM_ROOT/data/config.php SWARM_NEW/data/
-
キュートークンディレクトリを作成します。
$ mkdir SWARM_NEW/data/queue
-
既存のトリガトークンをコピーします。
$ sudo cp -pR SWARM_ROOT/data/queue/tokens SWARM_NEW/data/queue/
-
新しいSwarmのデータディレクトリに正しい所有権を割り当てます。
$ sudo chown -R www-data SWARM_NEW/data
注意上記の
www-data
ユーザはWebサーバユーザ名の一例です。この名前はディストリビューションやカスタマイズに応じて異なります。例えば、Red Hat/Fedora/CentOSのユーザは一般的にapache
、Debian/Ubuntuのユーザはwww-data
、SuSEのユーザはwwwrun
、macOSのユーザは_www
です。
トリガの更新
-
新しいSwarmトリガスクリプトをHelix Coreサーバマシンにコピーします。このトリガスクリプトは、
SWARM_ROOT/p4-bin/scripts/swarm-trigger.pl
です。このスクリプトを使用するには、Helixサーバマシンにバージョン5.08以降のPerlをインストールする必要があります(最新バージョンをインストールすることをお勧めします)。SwarmでSSLを使用している場合は、PerlモジュールのIO::Socket::SSL
も必要になります。警告この時点で既存のトリガスクリプトを上書きしないでください。スクリプトに新しい名前を付けます(
swarm-trigger-new.pl
など)。 -
Helixサーバマシン上の同じディレクトリ内に
swarm-trigger.conf
というファイルを作成して、Swarmトリガスクリプトを設定します。このスクリプトには以下を指定する必要があります。注意swarm-trigger.conf
ファイルがすでに存在する場合は、追加の設定は不要です。# SWARM_HOST (required) # Hostname of your Swarm instance, with leading "http://" or "https://". SWARM_HOST="http://my-swarm-host" # SWARM_TOKEN (required) # The token used when talking to Swarm to offer some security. To obtain the # value, log in to Swarm as a super user and select 'About Swarm' to see the # token value. SWARM_TOKEN="MY-UUID-STYLE-TOKEN" # ADMIN_USER (optional) ワークフロー機能が有効になっている場合は使用しないでください(ワークフロー機能はデフォルトで有効になっています) # For enforcing reviewed changes, optionally specify the normal Perforce user # with admin privileges (to read keys); if not set, will use whatever Perforce # user is set in environment. ADMIN_USER= # ADMIN_TICKET_FILE (optional) ワークフロー機能が有効になっている場合は使用しないでください(ワークフロー機能はデフォルトで有効になっています) # For enforcing reviewed changes, optionally specify the location of the # p4tickets file if different from the default ($HOME/.p4tickets). # Ensure this user is a member of a group with an 'unlimited' or very long # timeout; then, manually login as this user from the Perforce server machine to # set the ticket. ADMIN_TICKET_FILE= # VERIFY_SSL (optional) # If HTTPS is being used on the Swarm web server, then this controls whether # the SSL certificate is validated or not. By default this is set to 1, which # means any SSL certificates must be valid. If the web server is using a self # signed certificate, then this must be set to 0. # set the ticket. VERIFY_SSL=1
必須のSWARM_HOST変数とSWARM_TOKEN変数に、以前のSwarmトリガスクリプト(通常は
swarm-trigger.pl
)の設定を入力します。ヒントADMIN_USER変数とADMIN_TICKET変数は、バージョン2019.1以前のSwarmの'enforce triggers'で使用されていました。明示的にワークフローを無効にして、非推奨の'enforce triggers'を使用しない限り、これらの変数は削除してかまいません。
注意バージョン2015.4以前のSwarmの場合: 以前のSwarmでは、Swarmのトリガスクリプトファイルをシェルスクリプトとして使用することができました (通常は
swarm-trigger.sh
)。Swarmでは、Perlトリガスクリプトファイル(通常は
swarm-trigger.pl
)を使用する必要があります。 -
Linuxの場合: 以下のコマンドを実行して、スクリプトが実行可能かどうかを確認します。
$ sudo chmod +x swarm-trigger-new.pl
-
新しいトリガスクリプトの名前を次のように変更します。
Linuxの場合:
$ mv swarm-trigger-new.pl swarm-trigger.pl
Windowsの場合:
C:\> ren swarm-trigger-new.pl swarm-trigger.pl
-
Helixサーバのトリガを更新します。
警告-
「swarm.shelvedel shelve-delete」というトリガ行は、バージョン2018.1以降のSwarmで追加され、バージョン2020.1で更新された行です。
- バージョン2017.4以前のSwarmをアップグレードする場合: 「
swarm.shelvedel shelve-delete
」というトリガ行をHelixサーバのトリガテーブルに追加します(まだ追加されていない場合)。詳しくは、「Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。」を参照してください。 - バージョン2018.xまたはバージョン2019.xのSwarmをアップグレードする場合: Helixサーバのトリガテーブル内の「
swarm.shelvedel shelve-delete
」というトリガ行を、アップグレード先バージョンのSwarmで指定されているトリガ行に置き換えます。
- バージョン2017.4以前のSwarmをアップグレードする場合: 「
-
ワークフロー機能:
バージョン2019.2以降のSwarmでは、ワークフロー機能がデフォルトで有効になっています。ワークフロー機能を有効にするためのトリガ行は、ワークフロー機能を無効にするためのトリガ行とは異なります。
- ワークフロー機能を有効にする(これがデフォルト設定です):
- Helixサーバのトリガテーブルで、次のトリガ行をコメント化します(これらのトリガ行が記述されている場合): swarm.enforce.1、swarm.enforce.2、swarm.strict.1、swarm.strict.2。詳細については、「Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。」を参照してください。
- 次のトリガ行をHelixサーバのトリガテーブルに追加します(これらのトリガ行がまだ追加されていない場合):
swarm.enforce change-submit
、swarm.strict change-content
、swarm.shelvesub shelve-submit
。詳細については、「Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。」を参照してください。
- ワークフロー機能を無効にする:
Helixサーバのトリガテーブルで、次のトリガ行をコメント化します(これらのトリガ行が記述されている場合):
swarm.enforce change-submit
、swarm.strict change-content
、swarm.shelvesub shelve-submit
。詳細については、「Helixサーバのトリガテーブルを更新し、トリガスクリプトを実行します。」を参照してください。
- ワークフロー機能を有効にする(これがデフォルト設定です):
-
Swarmトリガスクリプトを実行して、Perforceトリガテーブルに含める必要があるトリガ行をキャプチャします(WindowsとLinuxの場合はCtrl+Cキーを、macOSの場合はCommand+Cキーを使用します)。
Linuxの場合:
$ ./swarm-trigger.pl -o
Windowsの場合:
C:\> path/to/perl swarm-trigger.pl -o
- super 権限を持つPerforceユーザとして
p4 triggers
コマンドを実行し、前述の手順でキャプチャしたすべてのswarm.*
行を置き換えます(WindowsとLinuxの場合はCtrl+Vキーを、macOSの場合はCommand+Vキーを使用します)。これによって、Perforceトリガテーブルは更新されます。
重要各種のトリガオプションを適用するなどの目的でSwarmのトリガ行がカスタマイズされている場合は、更新後のトリガ行でも同じカスタマイズ作業を繰り返してください。
-
古いSwarmインスタンスを新しいSwarmインスタンスで置き換える
以下のコマンドを実行して、古いSwarmを新しいSwarmに置き換えます。この手順ではダウンタイムが生じます。
$ sudo apache2ctl stop; mv SWARM_ROOT SWARM.old; mv SWARM_NEW SWARM_ROOT; sudo apache2ctl start
Swarm起動時に以下のエラーメッセージが表示される場合は、Swarmが使用しているP4PHPのバージョンが正しくありません。Swarm tarballには最新のバージョンのP4PHPが含まれていますが、SwarmがそのバージョンのP4PHPを使用するように設定する必要があります。P4PHPの新しいバージョンを使用するようSwarmを設定する手順については、「PHP構成」を参照してください。
Swarm構成キャッシュの削除
Swarm構成キャッシュを削除すると、アップグレード後のSwarmで、新しいモジュールと更新されたモジュールが強制的に使用されるようになります。Swarm構成キャッシュを削除するには、admin ユーザとして、以下のcurl要求を実行します。
curl -u "username:password" -X DELETE "https://myswarm.url/api/v10/cache/config/"
構成キャッシュの詳しい削除方法については、「Swarm構成キャッシュファイルの削除(v9以降)」を参照してください。
アップグレードの確認
Swarmを起動すると、Redisキャッシュの確認処理が実行されます。この確認処理の実行中は、Swarmにログインすることはできません。Redisキャッシュの確認処理にかかる時間は、Swarm上のユーザ数、グループ数、プロジェクト数によって異なります。メモリキャッシュを永続化すると、Swarmが起動するまでの時間を短縮することができます。メモリキャッシュを永続化するには、バックグラウンドでの保存機能を無効にして追加保存機能を有効にします(これらの設定は、redis-server.confファイルで行います)。詳しくは、「Redisサーバ構成ファイル」を参照してください。
新しいSwarmインスタンスが正しく稼働するかどうかを確認するには、以下の手順を実行します。
- 以下のチェンジリストを新しく作成します。
- 変更されたファイルが1つ以上含まれているチェンジリスト
- チェンジリストの説明に#reviewキーワードが含まれているチェンジリスト
- 作成したチェンジリストをP4Vで右クリックし、[ファイルを保留...]をクリックします。
- チェンジリストに対して新しいSwarmレビューが作成されたことを確認します。
- Swarmレビューが作成されている場合は、Swarmトリガが機能します。
- Swarmレビューが作成されていない場合は、以下の説明を参照してください。
[新しいSwarmレビューを要求...]を選択しないでください。これを選択するとAPIが使用されるため、Swarmトリガのテストが完全には実行されません。
アップグレード環境の確認時に新しいSwarmレビューが作成されていない場合は、一部のSwarmトリガがHelixサーバにインストールされていない可能性があります。新しいトリガが定期的にSwarmに追加されるため、アップグレードを行う場合はこれらのトリガをインストールする必要があります。詳しくは、上記の「トリガの更新」セクションを参照してください。HelixサーバでSwarmトリガを設定する方法については、「Swarm用のHelix Coreサーバの構成」を参照してください。
Swarmインデックスのアップグレード
バージョン2017.2以前のSwarmをアップグレードする場合は、インデックスをアップグレードする必要があります。これにより、[ダッシュボード]ページと[レビューリスト]ページで、レビューに対するアクティビティの履歴が正しい順序で表示されるようになります。
バージョン2017.3以降のSwarmをアップグレードする場合は、インデックスをアップグレードする必要はありません。
インデックスのアップグレードプロセスは、Swarmシステムの仕様に合わせて設定することができます。詳細については、「インデックスのアップグレード」を参照してください。
以下のURLにアクセスし、admin 権限を持つユーザとしてアップグレードを実行してください。
http://SWARM-HOST/upgrade
Swarmのアップグレード後に初めてSwarmの特定のページにアクセスすると、ブラウザのハードリフレッシュを実行するためのメッセージが表示される場合があります。このメッセージが表示されるのは、一部のSwarmページのUIとコンテンツが更新されているためです。この場合、ページキャッシュの情報が古くなっているため、ブラウザをハードリフレッシュしてアップグレード後のページを読み込む必要があります。例えば、Windows/Linux上でChromeを使用している場合は、CTRL + F5キーを押し、MacOSでChromeを使用している場合は、Command + Shift + Rキーを押します。
操作はこれで完了です。