self-host-github-releases でバージョンごとにディレクトリが別れる場合のwp-github-theme-updaterの使い方

0
いいねをした人: 居ません
  • このトピックには8件の返信、2人の参加者があり、最後にOlein_jpにより5年、 2ヶ月前に更新されました。
9件の投稿を表示中 - 1 - 9件目 (全9件中)
  • 投稿者
    投稿
  • #10701
    Olein_jp
    参加者
    545

    いつもお世話になっております。

    現在、北島さんが開発された、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
    いいねをした人: 居ません
    #10702
    キタジマ タカシ
    参加者
    2253

    この場合に、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
    いいねをした人: 居ません
    #10703
    Olein_jp
    参加者
    545

    ありがとうございます。

    /**
     * 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
    いいねをした人: 居ません
    #10705
    キタジマ タカシ
    参加者
    2253

    ドメインでやるなら条件式をちょっと変えないとですね。 0 !== strpos は「先頭一致ではない場合」なので。

    INSTALLATION_URL だとライブラリのディレクトリ名が入るので、Snow Monkey サイトの場合だと「 INSTALLATION_URL とは別な値」を条件式に使用していることになるわけですが、ここはあんまり難しく考えずに、単純に zip の URL に github.com って入ってたらおかしいじゃないですか。だからそういう場合は何らか不具合があったということで false にしたいので、自前サーバーの URL で判定させているというだけです。

    0
    いいねをした人: 居ません
    #10709
    Olein_jp
    参加者
    545

    先ほど頂いたソースコードを適宜変更してテストしてみたのですが、デモ環境にアップデートは走っているので大丈夫なのかもしれないのですが、Releasesからパッケージが削除されていないので、それがGitHubを参照しているのか自前サーバーを参照しているのか確認できない…という状況です。

    webhook.phpの最下部をコメントアウトしてみてはいるのですが…。

    0
    いいねをした人: 居ません
    #10712
    キタジマ タカシ
    参加者
    2253

    どこかでコケたらつどエラーログにエラー出すようにしているので、自前サーバーのエラーログを確認してみてください!

    0
    いいねをした人: 居ません
    #10719
    Olein_jp
    参加者
    545

    エラーらしいエラーは出てませんでしたね…

    もう少しもがいてみます!ありがとうございました!!

    0
    いいねをした人: 居ません
    #10721
    キタジマ タカシ
    参加者
    2253

    一応、

    のような感じで error_log となっているところがエラーログを吐いている場所になります。サーバーによってはエラーログにちゃんとでなかったりすることもあるので(僕のレンタルサーバーもダメで、コンパネから見れないところに書き出されてました…)、例えば mail 関数つかってメールで飛ばしてみるとかもありかもしれません。

    あと、GitHub Webhooks > webhook.php > Recent Deliveries > 最新のやつ > Redeliver とクリックすると何度でも Webhook の動作を試すことができます。で、この画面でリクエストとレスポンスも確認できるので、うまくいかないときのテストに結構便利です。

    0
    いいねをした人: 居ません
    #10797
    Olein_jp
    参加者
    545

    ありがとうございます!

    GitHub Webhooks > webhook.php > Recent Deliveries > 最新のやつ > Redeliver とクリックすると何度でも Webhook の動作を試すことができます。で、この画面でリクエストとレスポンスも確認できるので、うまくいかないときのテストに結構便利です。

    こちらの方法とメールを飛ばす方法で確認してみようと思います!

    0
    いいねをした人: 居ません
9件の投稿を表示中 - 1 - 9件目 (全9件中)
  • トピック「self-host-github-releases でバージョンごとにディレクトリが別れる場合のwp-github-theme-updaterの使い方」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。