@@ -35,6 +35,7 @@ async def update_repo(repo: Path, delivery: str, name: str):
3535 raise web .HTTPServerError (
3636 reason = f'{ delivery } : Checkout for { name } does not exist' )
3737
38+ log .info ('%s: Running git pull for %s at %s' , delivery , name , repo )
3839 proc = await asyncio .create_subprocess_exec ('git' , 'pull' , cwd = repo )
3940 try :
4041 await asyncio .wait_for (proc .wait (), timeout = 60 )
@@ -117,14 +118,24 @@ async def github_webhook(request: web.Request):
117118 if repository != repo :
118119 raise web .HTTPBadRequest (reason = f'{ delivery } : incorrect repository' )
119120
121+ # Ping event
122+ # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#ping
120123 if event == 'ping' :
121124 log .info ('%s: Ping %s: %s' , delivery , data ['hook_id' ], data ['zen' ])
122125 return web .Response (status = 200 )
123126
127+ # Only allow push events otherwise
128+ # https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#push
124129 if event != 'push' :
125130 log .info ('%s: Ignoring webhook for unused event %s' , delivery , event )
126131 return web .Response (status = 200 )
127132
133+ ref = data .get ('ref' , '' )
134+ if ref != 'refs/heads/gh-pages' :
135+ log .info ('%s: Ignoring push event on branch %s other than gh-pages' ,
136+ delivery , ref )
137+ return web .Response (status = 200 )
138+
128139 checkout = Path (os .environ .get ('SITE_DIR' , 'sites' ), repository )
129140 await update_repo (checkout , delivery , f'{ organization } /{ repository } ' )
130141
0 commit comments