GiitHub에서 MQTT PUBLISH 메시지를 받고 POST 요청에 따라 전송
GitHub WebHooks 대신 MQTT publish를 사용하고 Git push에서 직접 MQTT as a Service sango 메시지를 보내기
WebHooks와 다른 점은 필요 없는 EC2 인스턴스 LAN에 GiitHub WebHooks HTTP 요청 보내기 - Qita
X-GitHub-Event
등의 웹훅에서는 HTTP 헤드 기반 정보를 얻을 수 없습니다.프로비저닝
GitHub Services
Webhooks & Services
의 서비스 중에서 MQTT
를 선택하여 설정Topic
PUBLISH의 Topic 지정 {sango의usename]/github/{POST 요청 발송 경로}
POST リクエスト送信時のパス
는 Subscriber가 POST 요청을 작성할 때 사용한 것입니다.MQTT Subscriber
SUBSCRIBE 시 Topic에서 미리 Multi-level wildcard로 지정
GiitHub에서 지정한 Topic에서 POST 요청을 목적지로 보내는 경로를 가져와 Drene에 POST를 보냅니다
require 'mqtt'
require 'net/http'
username = ''
password = ''
sango_host = ''
sango_port = 1883
drone_host = ''
drone_port = 80
Topic = [username, 'github', '#'].join('/')
client = MQTT::Client.connect(
:host => sango_host,
:port => sango_port,
:ssl => false,
:username => username,
:password => password
)
client.get(Topic) do |topic, msg|
path = topic.split([username, 'github'].join('/'))[1]
uri = URI.parse("http://#{drone_host}:#{drone_port}#{path}")
request = Net::HTTP::Post.new(
uri,
initheader = {
'Host' => "#{uri.host}:#{uri.port}",
'Accept' => "*/*",
'Content-Type' => 'application/json',
'Content-Length' => "#{msg.length}"})
request.body = msg
Net::HTTP.start(uri.host, uri.port) do |http|
http.request(request)
end
end
Reference
이 문제에 관하여(GiitHub에서 MQTT PUBLISH 메시지를 받고 POST 요청에 따라 전송), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Hexa/items/78b977014726e8c6af7e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)