Comments仙台ファクトリーのkish(@31_kish)です。ローカル環境で書いたブログの記事をPushすると、自動的にサーバーが更新される機能を実装しました。RubyでCGIを作って、GithubWebhooksを受け取るようにしています。fuga.sh")CGIのほうは、実行されたらシェルスクリプトを叩くだけです。何をやっているのか公開してしまうのが不安だったので、シェルスクリプトを経由するようにしています。権限で実行するというものです。(実際のスクリプトとは少し違います。)CGIを有効にするApacheの設定で有効にします。visudovisudoで制限します。command_path/gitsudoを実行するためにはtty(SSHクライアントやコンソール上での実行)が必須です。そのままではwebから実行することができないので、1行目でapacheユーザーのみ必須ではなくしています。2行目では、apacheユーザーは外部からのアクセスを許可し、user権限でのみsudoを実行できるようにしています。その後ろはパスワードなしで実行できるコマンドを制限しています。Githubの設定を行う前に、スクリプトのテストは十分に行うようにしましょう。