2016-10-25 7 views
0

내가 이미 알고있는 것 : Jenkins Rest API (Curl 명령 행 방식, Groovy, Python 등)를 사용하여 Im은 내 지역에서 Jenkins 빌드를 성공적으로 시작할 수 있습니다. 컴퓨터 또는 다른 호스트를 로컬로. 저기에 대한 좋은 정보를 제공하는 게시물/블로그 온라인이 많이 있습니다. 익명 사용자는 Jenkins 보안에서 전체 읽기 액세스 권한을 가지며 API 키 사용자 ID와 토큰 키를 사용하여 성공적으로 실행합니다.트리거 Jenkins가 REST 호출을 빌드합니다. - webhook - RFC 1918 - AWS Ec2

내 문제 케이스 : 내 경우

  1. 는, 젠킨스 마스터/인스턴스가 AWS EC2 인스턴스에서 실행 중입니다.

  2. 내 회사의 webapp는 웹 응용 프로그램에서 자동으로 발생시켜 사용자가 경고를 표시하고 경고 원인을 찾을 수 있도록 설계되었습니다. 이러한 알림의 경우 이메일 알림과 슬랙 메시지도 받게됩니다.

  3. 웹 응용 프로그램에서 사용자는 트리거 할 경보에 대한 쿼리/조건을 생성하여 "메모리 또는 900M 미만의 여유 디스크"와 같은 다양한 경고를 만들 수 있습니다. 이 알림 부분이 작동합니다.

  4. 이 웹 애플리케이션을 사용하면 웹 연결을 만들 수 있습니다. 웹 연결은 사용자가 정의한 슬랙 # 채널에 의미있는 정보가 포함 된 슬랙 알림 또는 Pagerduty 알림 또는 전자 메일 알림 만들기 또는 REST API 호출 끝점 호출과 같은 다양한 트리거 메서드로 구성 할 수 있습니다.

  5. 경고 (글 머리 기호 3)는 주어진 웹 연결 (글 머리 기호 4)에 연결되거나 구성 될 수 있습니다.

Webapp이 Jenkins 인스턴스가 실행중인 VPC와 다른 Amazon VPC에서 실행되고 있다는 것을 이해해야합니다.

내가하려는 일은 : webapp에서 간단한 경고를 작성한 다음 Jenkins 작업을 RESTful 방식으로 호출하고 빌드/실행을 시작하기위한 매개 변수를 전달하는 웹 연결을 만듭니다 (일부 작업은 필요한 조치).

VPC가 다른 이유로 (webapp이 RFC1918 지원 Webhooks를 지원하지 않을 수 있음) 다른 이유로 인해 RFC 1918 메커니즘으로 인해 Jenkins 빌드를 초기화 할 수 없습니다. Jenkins Rest API endpoint를 트리거하고 다음 오류 메시지가 나타나는 웹 응용 프로그램의 Webhook.

임 웹 연결 로그를 통해 다음 오류 메시지가 나타납니다.

Whoops
알림 수신자를 저장할 수 없습니다. 다시 시도하십시오. (400) 잘못된 요청 URL 유효성 검사에 실패했습니다. URI 호스트가 공용 IP로 확인되지 않습니다. : https://jenkins.server.company.com/job/Ops/job/recycleOrCleanupDiskMemoryResources/build?token=xxshenzi

이 문제를 해결할 수있는 방법이 있습니까? Jenkins를 앞당기 기 위해 Amazon API 게이트웨이를 만들거나 생성해야합니까? 즉, webhookup이 Amazon API gayeway와 대화하여 Restall 통화를 통해 Jenkins 인스턴스에 요청을 보냅니 까? 복잡한 구현을 원하지 않기 때문에 쉽게 구현할 수 있습니다.

답변

2

"URI 호스트가 공용 IP로 확인되지 않습니다"라는 메시지가 표시되므로 Jenkins 호스트의 DNS 이름이 Jenkins가 실행중인 VPC 내의 라우팅 할 수없는 IP 주소로 확인되는 것처럼 들립니다. API 게이트웨이는 현재 고객의 VPC 내에서 끝점을 호출하는 기능을 지원하지 않으므로이 경우 도움이되지 않습니다.(자주 요청되는 기능이며 앞으로는 API 게이트웨이에 추가 할 예정입니다.)

오늘이 기능을 사용하려면 인터넷을 통해 젠킨스 호스트에 액세스 할 수있게해야합니다. 이를 공용 IP에 할당하거나 VPC에 Jenkins 호스트에 인터넷 트래픽을 라우팅 할 수있는로드 밸런서 또는 프록시를 추가합니다.

+0

동의합니다, 마이크. API 게이트웨이 (AWS)를 만드는 방법을 살펴볼 예정입니다. 그렇지 않으면, 이런 식으로 할 수 있습니다 ---> As 웹 앱은 공개적으로 액세스 할 수 있습니다. 따라서 업스트림에서 5 개의 빌드 만 유지하는 업스트림/다운 스트림 작업을 만들 수 있으며 각 실행에서 경고에 대해 웹 응용 프로그램의 REST API를 호출하고 다운 스트림 작업에 전달할 수있는 필수 데이터/매개 변수를 가져옵니다. (clean/issue 부분을 해결하는 데 필요한 스크립트 호출을 수행합니다). 저는 아이디어가 경보의 Webhook 설정을 통해 Jenkins 작업의 REST 종료 지점을 연결하는 것이기 때문에 규모가 커지지 않을 것임을 알고 있습니다. –