-
投稿者投稿
-
2019年2月20日 1:06 PM #10701
いつもお世話になっております。
現在、北島さんが開発された、self-host-github-releases を活用して、GitHubにタグ付けコミットした際にReleasesにパッケージをアップされるのではなく(現状、まだアップはされていますが)、自前のホスティングにパッケージを作成させるテストを行なっています。
現状として、特定のディレクトリにreleasesディレクトリ(という名前で設定しています)の中にタグ付けしたバージョン番号のディレクトリ(0.1.5とか0.1.6とか)が作成され、その中にzipパッケージが作られるという形になっています。
この場合に、wp-github-theme-updater を使いテーマのアップデートを管理画面側で行わせるとすると、別に特段何もする必要はないのでしょうか?
また、GitHub releasesにパッケージを作成させずに自前ホスティングにだけパッケージを生成する流れはどのように作るべきなのでしょうか?(GitHub Releasesにパッケージを作らせる処理を削除するだけ?or Releasesにパッケージは作らせるけど、そのあとに削除?)
アドバイスお願いいたします。
♥ 0いいねをした人: 居ません2019年2月20日 1:15 PM #10702この場合に、wp-github-theme-updater を使いテーマのアップデートを管理画面側で行わせるとすると、別に特段何もする必要はないのでしょうか?
や、フックして、wp-github-theme-updater の挙動を変えないといけません! Snow Monkey の場合は下記のコードを記述しています。
前段が、zip の URL が自前サイトのものになっていない場合は false を返す、後段が、レスポンスの参照先を GitHub から 自前サーバーのものにするコードになります(URL やディレクトリ名はご自身の環境にあわせて適宜変更してください)。
/** * There is a case that comes back to GitHub's zip url. * In that case it returns false because it is illegal. * * @param string $url * @return string|false */ add_filter( 'inc2734_github_theme_updater_zip_url', function( $url ) { if ( 0 !== strpos( $url, 'https://snow-monkey.2inc.org/' ) ) { return false; } return $url; } ); /** * Customize request URL that for updating * * @param string $url * @return string */ add_filter( 'inc2734_github_theme_updater_request_url', function( $url ) { return 'https://snow-monkey.2inc.org/github-api/response.json'; } );
また、GitHub releasesにパッケージを作成させずに自前ホスティングにだけパッケージを生成する流れはどのように作るべきなのでしょうか?(GitHub Releasesにパッケージを作らせる処理を削除するだけ?or Releasesにパッケージは作らせるけど、そのあとに削除?)
self-host-github-releases は GitHub の Release 機能が無いと動かないので、パッケージを作らせる処理は消してはいけません。具体的には、Releases に zip がデプロイされると同時に GitHub Webhook 経由で zip と API のレスポンスを自前サーバーに保存するという流れになるためです。
の一番下にコメントアウトしている部分がありますが、これが自前サーバーへの保存のあとに Releases から zip を消すコードになるので、このコメントアウトを外せば Releases から自動的に zip が消えるようになるはずです。
♥ 0いいねをした人: 居ません2019年2月20日 1:35 PM #10703ありがとうございます。
/** * There is a case that comes back to GitHub's zip url. * In that case it returns false because it is illegal. * * @param string $url * @return string|false */ add_filter( 'inc2734_github_theme_updater_zip_url', function( $url ) { if ( 0 !== strpos( $url, 'https://snow-monkey.2inc.org/' ) ) { return false; } return $url; } );
この部分のURLなんですが、ここではzipファイルが格納される予定(config.phpのINSTALLATION_URLと同じになる)のURLでしょうか?それともドメイン(サブドメインレベル)でもOKでしょうか?
♥ 0いいねをした人: 居ません2019年2月20日 1:55 PM #10705ドメインでやるなら条件式をちょっと変えないとですね。
0 !== strpos
は「先頭一致ではない場合」なので。INSTALLATION_URL
だとライブラリのディレクトリ名が入るので、Snow Monkey サイトの場合だと「INSTALLATION_URL
とは別な値」を条件式に使用していることになるわけですが、ここはあんまり難しく考えずに、単純に zip の URL に github.com って入ってたらおかしいじゃないですか。だからそういう場合は何らか不具合があったということで false にしたいので、自前サーバーの URL で判定させているというだけです。♥ 0いいねをした人: 居ません2019年2月20日 2:17 PM #10709先ほど頂いたソースコードを適宜変更してテストしてみたのですが、デモ環境にアップデートは走っているので大丈夫なのかもしれないのですが、Releasesからパッケージが削除されていないので、それがGitHubを参照しているのか自前サーバーを参照しているのか確認できない…という状況です。
webhook.phpの最下部をコメントアウトしてみてはいるのですが…。
♥ 0いいねをした人: 居ません2019年2月20日 2:49 PM #10712どこかでコケたらつどエラーログにエラー出すようにしているので、自前サーバーのエラーログを確認してみてください!
♥ 0いいねをした人: 居ません2019年2月20日 3:10 PM #10719エラーらしいエラーは出てませんでしたね…
もう少しもがいてみます!ありがとうございました!!
♥ 0いいねをした人: 居ません2019年2月20日 3:21 PM #10721一応、
のような感じで
error_log
となっているところがエラーログを吐いている場所になります。サーバーによってはエラーログにちゃんとでなかったりすることもあるので(僕のレンタルサーバーもダメで、コンパネから見れないところに書き出されてました…)、例えばmail
関数つかってメールで飛ばしてみるとかもありかもしれません。あと、GitHub Webhooks > webhook.php > Recent Deliveries > 最新のやつ > Redeliver とクリックすると何度でも Webhook の動作を試すことができます。で、この画面でリクエストとレスポンスも確認できるので、うまくいかないときのテストに結構便利です。
♥ 0いいねをした人: 居ません2019年2月21日 11:01 AM #10797ありがとうございます!
GitHub Webhooks > webhook.php > Recent Deliveries > 最新のやつ > Redeliver とクリックすると何度でも Webhook の動作を試すことができます。で、この画面でリクエストとレスポンスも確認できるので、うまくいかないときのテストに結構便利です。
こちらの方法とメールを飛ばす方法で確認してみようと思います!
♥ 0いいねをした人: 居ません -
投稿者投稿
- トピック「self-host-github-releases でバージョンごとにディレクトリが別れる場合のwp-github-theme-updaterの使い方」には新しい返信をつけることはできません。