pushWordPress

この投稿は3年半前の記事です。 情報が古くなっている可能性があるので、その点ご了承ください。
2014 年 4 月 24 日 1,127日前)
2,514文字 (読了時間6分)

SPONSORED LINK

WP-Dというブログがありまして、そちらで2ヶ月ほど前に「もうFTPを利用することは止めて、Gitを使おう。そのほうがメリットが多いよー」 という記事がはてなブックマークでホッテントリ入りするということがありました。

ブコメの反応をまとめると……

  • DevOpsとかいってんのに世間はまだこのレベルか嫌になるな
  • FTPとGitって違うじゃん、何言ってんの
  • サイトの管理をGitでできるわけないじゃん

という感じでした。

この記事を書いたメガネさんはデザイナー/ディレクター出身で黒い画面を勉強中、言葉足らずな部分はあったと思いますが、それらの心ないブコメを読み、大変傷つきました。そして傷心のあまり失踪、渋谷セルリアンタワーの屋上でカラスについばまれている無惨な腐乱死体として発見されました。まあ、嘘なんですけど。

それはともかく、上記で紹介した方法はGitにpushした後にサーバにログインしなければなりません。僕はコマンドラインが嫌いなので、できればサーバにログインせず、git pushした瞬間にターミナルを終了し、あとは勝手にやっといてよと思うわけです。で、そういうのを作りました。

プラグイン名: Giploy

名前はGiployといいます。Githubリポジトリで管理してます。ライセンスはMIT。できることはこんな感じです。

  1. サーバに存在するテーマとプラグインのうち、gitリポジトリであるものを管理対象として登録できる
  2. 管理対象になったリポジトリからGithubサービスフック用のURLが発行される
  3. URLをサービスフックに登録すると、Githubから通知を受け取り、リポジトリをpull(submoduleがあれば、submodule update)する
  4. pullの結果をメール送信

これだけです。

実際の使い方

このサイトで試してみました。テーマはGithubで管理しているので、そちらを使います。サーバにはすでにリポジトリをクローン済み。wp-content/theme/takahashifumiki というディレクトリがgitリポジトリですね。

まず、PHPがgitを呼び出せるようにGitのバイナリパスを保存します。PHPからだとサーバのユーザ設定によってはwhich使ってもgitの場所がわかんないことがあるので、がんばって入力します。

Gitのバイナリへのパスを保存
Gitのバイナリへのパスを保存

続いて、「登録」というリンクからディレクトリを選択して保存すると、リポジトリ一覧に表示されるようになります。ここでGithubに登録する通知用URLが取得できます。

通知用URLを取得
通知用URLを取得

さて、ここまでできたらGithubに移動してこのURLを保存します。場所はリポジトリのSettings > Webhooks & Services > Add webhook と移動し、Payload URLです。設定サンプルはプラグインの管理画面に書いてありますが、次の通りです。

 

Payload URL
WordPressで発行されたURL。
Payload Version
どっちでもいいです。
Which events……
Just the push eventを選んでください。一応、pushイベントにだけ反応するようにしていますが、そんなに試していないので、何が起きるかわかりません。

 

これで準備完了。では、試しにコミットしてみます。僕のサイトのトップページにはAboutと書いてあるのですが、About meという表記に変えてみましょう。

AboutをAbout meに変更
AboutをAbout meに変更

コミットすると、無事変わっていますね。ファイルをアップロードしたりする必要はありません。

コミットがすぐに適用されました
コミットがすぐに適用されました

メールも届きました。僕のサーバはメールサーバを外部においており、しかもpostfixを変な風にいじったので届きませんでしたが……

届いた通知メール。
届いた通知メール。

というわけで、非常に動いているっぽいですね。お疲れさまでした。

今後の開発

僕が必要だと思った機能は持っているので、公式リポジトリにはアップせず、細々とメンテしていこうかと思っています。いずれにせよ、火曜日に思い立って水曜日に完成という感じなので、人柱を募集しています。

個人的にあってもいいかなという機能は次の通りです。

  • ブランチの切替(ステージング環境と本番環境でブランチ変えたり。Gitflow的な使い方)
  • Githubからのインストール(GithubのリポジトリURL入れるとクローンしてくれる)
  • プライベートリポジトリとの連携

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus) [書籍]

著者大塚 弘記

出版社技術評論社

出版日2014 年 3 月 20 日

商品カテゴリー単行本(ソフトカバー)

ページ数304

ISBN477416366X

Supported by amazon Product Advertising API

補足

使用技術について

Gitとの連携は teqneers/PHP-Stream-Wrapper-for-Git というのを使っています。execコマンドのラッパーですかね。

リポジトリの登録やGithubとの連携はほとんどWordPressの標準APIでまかなっていますが、gitコマンドだけはこれを利用しています。

標準出力で戻ってくるgitからの応答を正規表現でなんとかしたりするのは辛いので、大したことはやっていません。

セキュリティについて

セキュリティはこれぐらいやりました。

  • IPフィルタリング(Githubからのみ受け付け。GithubにはIPフィルタリング以外の方法使えと書いてありましたが、めんどくさかったので)
  • Nullバイト対策
  • ディレクトリトラバーサル対策

Windowsサーバはあまり考慮していません。なんにせよ、穴があってもごめんなさいとしか言いようがありません。

また、.gitフォルダの保護についてはサーバの設定でなんとかしておいてください。Nginxならデフォルトで.gitをdenyしてるかと。

それ以前に自分のリポジトリにFacebook SDKのクレデンシャルが思いっきり書いてあって、びっくりしました。弱いのはgitではなく、人の心

 

フォローしてください

ここで会ったのもなにかの縁。
高橋文樹.comの最新情報を見逃さないためにもフォローをお願いします。
めったに送らないメルマガもあります。

SPONSORED LINK

この記事について

この記事はが2014 年 4 月 24 日にプログラミングの記事として公開しました。

高橋先生の電子書籍

高橋先生の電子書籍

Amazonで電子書籍も買えます。

好きな言葉

変革者というのは、世界の残忍さをそのまま受け入れ、そして一段と激しい残忍さで世界に応酬できる人間のことを言うのだと思う。

— ミシェル・ウエルベック

高橋先生の処女作

『途中下車』高橋文樹

2001年幻冬舎NET学生文学大賞受賞作です。

Web制作やります

Web制作やります

Web制作のご依頼は株式会社破滅派へ

不定期メルマガ

高橋文樹.comでは、不定期でニュースレターを配信しています。滅多に送らないので是非購読してください。

高橋文樹.comではプライバシーポリシーに準じて登録情報を取り扱います。