WordPressのテーマカスタマイズ等をGitLabで管理しているため、自動でテーマの更新を行うようにしています。
GitLabへのpushを行なった時に、webhookを使って、release.phpを起動し子テーマを更新しています。
Gitの導入
MixHostは、Gitが入っていません。(私が契約した段階ではGitは入っていませんでしたが、現在も同じかはわかりません)
MEMO
参考にしていた記事が消えています。覚えているのは、gettextをインストールしてからgitをインストールする必要があることです。
また、自動更新(クローン)を行うため、curl-develも必要になります。
GitLabからの簡易デプロイ
簡易デプロイの方式は以下の記事を参考にしています
参考 GitlabのWebhookを使って簡易デプロイ(Webサーバへ)をしてみたGiita違う点
- レンタルサーバーを使用しているため、サブドメインの作成、ベーシック認証設定はMixHostのcPanelから行います。
- リポジトリのURLをhttpsにしているため、Deploy Keysの設定はしていません。
- webhookの設定でkeyの値をSecret Tokenに設定しています。
https://ベーシック認証ID:ベーシック認証PASS@webhook.example.com/サブドメインディレクトリ/release.php
- release.phpでkeyをSecret Tokenでチェックしています。
<?php
$secret_key = "キーを入力してください"; // GitLab以外からのリクエストを受け付けないためのキー
$git_username = "管理者ID"; // gitlabのID
$git_password = "管理者IDのパスワードを入力"; // gitlabのログインパスワード
$log_file = '/path/to/webhook/サブドメイン名_webhook_log.txt'; // ログの出力場所
$date = (new DateTime())->format('Y-m-d H:i:s');
$path_to_repository = '/path/to/サブドメイン名/www'; // レンタルサーバーのレポジトリがある場所
$branch_name = 'master'; // デプロイの対象ブランチ
$git = '/usr/local/bin/git'; // Gitの場所
$git_path = 'gitlab.example.com/リポジトリ(.git)'; // GitlabのリポジトリURL
$headers = getallheaders();
if ( empty( $headers['X-Gitlab-Token'] ) || !($headers['X-Gitlab-Token']==$secret_key) ) {
echo "Invalid Secret token";
$is_logged = error_log("[{$date}] Error: Invalid Secret tokenn",3,$log_file);
}
$json_string = file_get_contents('php://input');
$json = json_decode($json_string,true);
error_log("[{$date}] Pushed to {$json['ref']}n",3,$log_file);
if ($json['ref']=="refs/heads/{$branch_name}") { // releaseブランチのpushイベントの時のみ実行
$git_remote = "http://{$git_username}:{$git_password}@{$git_path}";
$command = "cd {$path_to_repository} && ${git} pull {$git_remote} {$branch_name} 2>&1";
exec($command, $output, $exit_status);
if ($exit_status > 0) {
$error_msg = "[{$date}] Error: n";
foreach ($output as $line) {
$error_msg .= " {$line}n";
}
error_log($error_msg,3,$log_file);
} else {
error_log("[{$date}] Updated successfullyn",3,$log_file);
}
}
?>
PHPのタイムゾーン指定
PHPで、タイムゾーンが指定されていないとのワーニングがでるので、タイムゾーンの指定をします。
MixHostでは、php.iniは使えないため、.htaccessに以下を指定します。
php_value date.timezone 'Asia/Tokyo'
Monappy: MBDQ39VHypMQwfyR8SshuHvfPNUz321F6B

モナゲ(tipmona)ってなに?
そもそもMonacoinってなに?
コメントを残す