このトピックでは、WordPress を使用して、Jenkins、CloudOps Orchestration Service (OOS)、および Object Storage Service (OSS) を使用して自動デプロイを実装する方法について説明します。
背景情報
WordPress の詳細については、「GitHub」をご参照ください。
CloudOps Orchestration Service: Alibaba Cloud が提供する自動 O&M サービスで、ソフトウェアバージョン管理と段階的リリースに使用されます。詳細については、「OOS とは」をご参照ください。
OSS: ビルドされたソフトウェアパッケージを保存するために使用されます。複数のストレージタイプがサポートされています。詳細については、「OSS とは」をご参照ください。
Jenkins: ビルドプロセスを自動化し、トリガーに応じて OSS および OOS のソフトウェアパッケージを更新するために使用されます。詳細については、「Jenkins 公式 Web サイト」をご参照ください。
Resource Orchestration Service (ROS): Alibaba Cloud が提供する自動リソースデプロイサービスです。ROS を使用すると、システムが依存する Elastic Compute Service (ECS)、ApsaraDB RDS、Server Load Balancer (SLB) などのクラウドリソースを数回クリックするだけでデプロイできます。詳細については、「ROS とは」をご参照ください。
WordPress 環境を作成する
ROS を使用して ECS と ApsaraDB RDS で WordPress 環境を作成するには、次の手順を実行します。
ROS コンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[サンプル テンプレート] ページで、[ECS および Apsaradb For RDS に基づく Wordpress 環境の作成] という名前のテンプレートを見つけ、[スタックの作成] をクリックします。

パラメーターを設定し、[作成] をクリックします。
スタックが作成された後、スタックリストで WordPress スタックを表示できます。出力例:

WordPressUrl に対応する [値] 列の WordPress URL をクリックして、WordPress Web サイトを表示します。
WordPressUrl パラメーターの値を確認します。これは、スタンドアロン WordPress ウェブサイトの URL を示します。ブラウザで URL を開き、ウェブサイトがデプロイされていることを確認します。
Alibaba Cloud CLI をインストールして構成する
この例では、macOS を使用しています。
Alibaba Cloud CLI は、AccessKey ペアを取得するために RAM ユーザーを作成します。
詳細については、「RAM ユーザーの作成」をご参照ください。
Alibaba Cloud CLI をインストールします。
brew install aliyun-cliAlibaba Cloud CLI を構成します。
aliyun configureAlibaba Cloud CLI が使用可能かどうかを確認します。使用可能な場合は、コマンド出力でサポートされているリージョンを表示できます。
aliyun ecs DescribeRegionsJenkins をインストールして構成する
この例では、macOS を使用しています。他のオペレーティングシステムに Jenkins をインストールする方法の詳細については、「Jenkins のインストール」をご参照ください。
最新バージョンをインストールします。
brew install jenkinsLTS バージョンをインストールします。
brew install jenkins-ltsJenkins を起動します。
brew services start jenkins-ltsブラウザで
localhost:8080を開きます。指定されたディレクトリからパスワードをコピーし、管理者パスワード フィールドに貼り付けて、[続行] をクリックします。

デフォルトのプラグインをインストールします。

ユーザー名とパスワードを構成し、Jenkins にログインします。
Jenkins を使用してソフトウェアパッケージを更新する
Jenkins のホームページで、[新規アイテム] をクリックします。
[フリースタイルプロジェクト] を選択し、[アイテム名を入力してください] フィールドにプロジェクトの名前を入力して、[OK] をクリックします。
[ソースコード管理] タブに移動し、[Git] を選択して、リポジトリ URL を入力します。
https://github.com/WordPress/WordPress.git[ビルド] タブに移動し、[ビルド手順の追加] をクリックして、ドロップダウンリストから [シェルを実行] を選択します。次のスクリプトをコピーして [コマンド] フィールドに貼り付けます。このスクリプトは、WordPress の master ブランチをパッケージ化し、パッケージを oss://wordpress-test-oos パスにコピーし、OOS に wordpress という名前のソフトウェアパッケージを作成するために使用されます。
version=`date +%s` # Generate the wordpress_$version.tar package. tar -cvf wordpress_$version.tar `find .|grep -v wp-config-sample.php|grep -v targets|grep -v .git|grep -v ^\.$` # Copy the package to OSS. /usr/local/bin/aliyun oss cp wordpress_$version.tar oss://wordpress-test-oos/wordpress_$version.tar templateName=wordpress # Specify the OSS path of the package and configure the installation script. # { # "FormatVersion": "OOS-2020-01-01-Package", # "Description": "", # "Packages": [{ # "Name": "wordpress_$version.tar", # "Location": "oss://wordpress-test-oos/wordpress_$version.tar", # "InstallScript": "test -e wordpress || mkdir wordpress && cd wordpress && mv ../wordpress_$version.tar . && tar xvf wordpress_$version.tar > /dev/null && rm wordpress_$version.tar && cp -rf * /var/www/html/", # "UninstallScript": "echo uninstall", # "Targets": [{ # "PlatForm": "centos", # "Architect": "x86_64" # }] # }] # } templateContent="{\"FormatVersion\":\"OOS-2020-01-01-Package\",\"Description\":\"\",\"Packages\":[{\"Name\":\"wordpress_$version.tar\",\"Location\":\"oss://wordpress-test-oos/wordpress_$version.tar\",\"InstallScript\":\"test -e wordpress || mkdir wordpress && cd wordpress && mv ../wordpress_$version.tar . && tar xvf wordpress_$version.tar > /dev/null && rm wordpress_$version.tar && cp -rf * /var/www/html/\",\"UninstallScript\":\"echo uninstall\",\"Targets\":[{\"PlatForm\":\"centos\",\"Architect\":\"x86_64\"}]}]}" # Update the software package in OOS. /usr/local/bin/aliyun oos CreateTemplate --TemplateName=$templateName --Content "$templateContent" || /usr/local/bin/aliyun oos UpdateTemplate --TemplateName=$templateName --Content "$templateContent" # Delete the temporary package. rm wordpress_$version.tar[保存] をクリックします。
[Build Now] をクリックしてデプロイを開始します。[ビルド履歴] の下のビルド番号をクリックすると、デプロイ ステータスを確認できます。

[コンソール出力] では、このデプロイのログを確認できます。
プロセス全体には、Git からコードをプルし、tar コマンドを実行してパッケージを生成し、パッケージを OSS にコピーし、OOS に wordpress という名前のパッケージを作成することが含まれます。パッケージを表示するには、OOS コンソールにログインし、左側のナビゲーションウィンドウで [サーバー管理] > [拡張機能] を選択します。[拡張機能] ページで、[カスタム拡張機能] タブをクリックします。

[カスタム拡張機能] タブで、パッケージの [アクション] 列の [詳細] をクリックして、パッケージ名、ストレージの場所、インストール スクリプト、アンインストール スクリプト、過去のバージョンなど、パッケージの詳細を表示します。

OOS コンソールでソフトウェアパッケージをデプロイする
OOS コンソール にログインします。
を選択し、[作成] をクリックします。
[タスクバッチソフトウェア管理の作成] ページで、パブリック拡張機能([wordpress ワンクリック])とインスタンスを選択し、[作成] をクリックします。
説明この例では、ROS によって作成されたインスタンスを選択します。

インスタンスのロールを構成し、[承認] をクリックします。
[インスタンスの選択] オプションが選択不可になっている場合は、このステップを実行してインスタンスのロールを設定します。OOS はこのロールを使用して、パッケージ情報と OSS バケットをダウンロードするための権限を取得します。その他のシナリオでは、このステップをスキップします。


ロールに権限を付与します。
既存の RAM ロールに AliyunOOSReadOnlyAccess ポリシーと AliyunOSSReadOnlyAccess ポリシーがアタッチされており、ECS が信頼されたサービスとして選択されている場合は、[作成] をクリックします。実行リストで実行が成功します。
インスタンスの RAM ロールを作成するには、次の手順を実行します。
RAM コンソール にログインします。[ロール] ページで、[ロールの作成] をクリックします。[ロールタイプの選択] ステップで、[信頼されたエンティティの選択] として [Alibaba Cloud サービス] を選択します。[ロールの構成] ステップで、[信頼されたサービスの選択] ドロップダウンリストから [Elastic Compute Service] を選択し、その他のパラメーターを構成して、[OK] をクリックします。RAM ロールが作成されます。
作成した RAM ロールに、AliyunOOSReadOnlyAccess ポリシーと AliyunOSSReadOnlyAccess ポリシーをアタッチします。

タスクバッチインスタンス操作の作成 ページに移動し、[タスクタイプ] として [インスタンス操作] を選択し、[実行する操作] セクションで [ロールの追加] をクリックして、作成した RAM ロールをインスタンスに割り当てます。
RAM ロールが割り当てられた後、[タスクバッチソフトウェア管理の作成] ページに戻り、RAM ロールが割り当てられているインスタンスを選択し、[作成] をクリックします。

[タスク実行管理] ページで、実行ステータスを確認します。この例では、実行は成功し、最新の WordPress ファイルが /var/www/html に表示されます。[操作] 列の [詳細] をクリックして、実行の詳細を表示できます。

まとめ
OOS と Jenkins を使用することで、継続的インテグレーションまたは継続的デリバリー (CI/CD) プロセスが完了します。OOS は、ソフトウェアバージョンを管理し、アプリケーションを段階的リリースモードでデプロイできる拡張機能を提供します。Jenkins では、OOS の拡張機能を直接呼び出して、デプロイプロセスを自動化することもできます。OOS と Jenkins を使用してイメージを自動的に更新する方法の詳細については、「Jenkins、OOS、OSS を使用した自動イメージ更新の実装」のトピックを参照してください。