鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

Acme::Hakomonos::JPをリリースしたら、自動的にWebサイトも更新したい

GitHubで公開しているAcme::Hakomonos::JP。 このモジュールをリリースしたら箱ものデータベースサイト http://hakomono.dokechin.com/も自動的に更新したい。

GithubのwebhooksのPOSTを本番サーバ(さくらVPS)で受ける。

nginx.confのリバースプロキシの設定

        location / {

            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://webhooks;
        }

MojoliciousアプリでPOSTを受けるように、以下のように書いておく。 githubからのIPアドレスって変わらないのかな??

package Webhooks::Web::Hakomono;
use Mojo::Base 'Mojolicious::Controller';

# This action will render a template
sub deploy {
  my $self = shift;

  my $remote_addr = $self->req->env->{REMOTE_ADDR};
  warn ($remote_addr);
  
  if ($remote_addr eq "192.30.252.47"){

    chdir ("/tmp");
    system("rm -rf Acme-Hakomonos-JP");
    system ("git clone https://github.com/dokechin/Acme-Hakomonos-JP.git");
    chdir ("/tmp/Acme-Hakomonos-JP");
    system ("source ~/.bash_profile;cpanm .");
    system ("supervisorctl restart hakomono");
  }
  # Render template "example/welcome.html.ep" with message
  $self->render(
    message => 'done');
}

1;

こんな感じで、沖縄コンベンションセンターのデータを追加して、 Acme::Hakomonos::JPをminil releaseしたら サイトに自動的に反映された。なんか嬉しい。

IPアドレス部分の稼働確認はまだなので、もう一つ何か、施設を追加しないと・・・ 今のところ坪単価ナンバーワンは静岡グランシップ。 これを超える箱物はないかな?!