데브옵스 API
DevOps API는 외부 DevOps 도구와의 상호작용을 가능하게 하는 엔드포인트를 제공합니다.
이 REST API를 통해 통합자는 다음을 수행할 수 있습니다.
- 인스턴스와 연결된 사용 가능한 DevOps 도구를 검색합니다.
- 코드 자원, 계획 또는 오케스트레이션 자원에 대한 스키마 객체를 검색합니다.
- 오케스트레이션 작업에 변경 제어가 적용되는지 확인하고 변경 제어 상태를 확인합니다.
- 변경 통제에서 작업 실행과 연결할 콜백을 생성합니다.
- 표준화된 객체로 변환되고 코드, 오케스트레이션 및 계획 객체로 저장되는 다양한 이벤트 페이로드를 전송합니다.
- 인코딩된 쿼리와 특정 검색/정렬 기준을 사용하여 커밋, 분기 또는 리포지토리를 검색합니다.
- 아티팩트 버전 및 패키지를 연결된 파이프라인 실행 및 커밋과 함께 등록합니다.
- 온보딩 애플리케이션 및 도구 이벤트를 생성하고 관리합니다.
자세한 내용은 DevOps를 참조하십시오.
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오.
DevOps - /devops/code/schema 가져오기
지정된 코드 자원(커밋, 리포지토리 또는 분기)에 대한 스키마 객체를 반환합니다.
필요한 스키마 객체가 있으면 이를 사용하여 해당 POST 호출에 대한 요청 본문을 만듭니다. POST /code/commit, POST /code/repository 또는 POST /code/branch.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/code/schema
기본 URL: / api/sn_devops/devops/code/schema
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| resource | 필수 반환할 자원 스키마의 유형입니다. 유효한 값(대/소문자 구분 안 함):
데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 요청이 성공적으로 완료되었습니다. |
| 401 | 인증이 잘못되었거나 누락되었습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 분기 | 코드 커밋이 수행된 분기에 대한 설명입니다. 데이터 유형: 객체 |
| branch.name | 코드 커밋이 수행된 분기의 이름입니다. 데이터 유형: 문자열 |
| 분기.경로 | 분기의 상대 경로입니다. 데이터 유형: 문자열 |
| 커밋 | 커밋에 대한 설명입니다. 데이터 유형: 배열 |
| commits.committedDate | 소스 DevOps 도구에서 코드가 커밋된 날짜/시간입니다. 데이터 유형: 문자열 형식: ISO 8601(시간대 오프셋 포함) 예: 1970-01-01T08:15:30-05:00 |
| commits.committer | 커밋을 요청한 사람/엔터티에 대한 설명입니다. 데이터 유형: 객체 |
| commits.committer.email | 커밋을 요청한 사람의 이메일 주소입니다. 데이터 유형: 문자열 |
| 커밋.세부 정보 | 커밋의 상세 정보입니다. 주: 커밋에 세부 정보를 포함해야 하는 것은 아닙니다. 이 엔드포인트는 세부 정보가 커밋에 포함되지 않은 경우 빈 배열을 반환합니다. 데이터 유형: 배열 |
| commits.details.action | 파일에서 수행된 작업입니다. 데이터 유형: 문자열 |
| commits.details.additions | 파일에 추가된 총 수입니다. 데이터 유형: 숫자 |
| 커밋.세부 정보.변경 | 변경된 총 수입니다. 데이터 유형: 숫자 |
| commits.details.deletions | 파일에서 삭제된 총 수입니다. 데이터 유형: 숫자 |
| commits.details.file | 분기를 기준으로 수정된 파일의 경로입니다. 데이터 유형: 문자열 |
| commits.details.totalChanges | 총 추가 및 삭제 수입니다. 데이터 유형: 숫자 |
| commits.id | 소스 플랫폼 식별자 또는 커밋 SHA입니다. 데이터 유형: 문자열 |
| 커밋.url | 커밋의 URL(예: "https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6")입니다. 데이터 유형: 문자열 |
| 이름 | 분기 또는 리포지토리의 이름입니다(예: "마스터" 또는 "플랫폼-모바일"). 데이터 유형: 문자열 |
| path | 분기의 상대 경로입니다. 데이터 유형: 문자열 |
| 리포지토리 | 커밋이 수행된 리포지토리에 대한 설명입니다. 데이터 유형: 객체 |
| repository.name | 리포지토리의 이름입니다. 데이터 유형: 문자열 |
| 저장소.url | 소스 DevOps 도구의 리포지토리 URL입니다. 데이터 유형: 문자열 |
| URL | 리포지토리의 URL(예: "https://github.com/mycompany/mobileplatform")입니다. 데이터 유형: 문자열 |
resource=branch에 대한 샘플 cURL 요청
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/code/schema?resource=branch" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"name": "Master",
"path": "refs/heads/master",
"repository": {
"name": "Platform-Mobile",
"url": "https://github.com/mycompany/mobileplatform"
}
}
}
resource=commit에 대한 샘플 cURL 요청
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/code/schema?resource=commit" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"repository": {
"name": "Platform-Mobile",
"url": "https://github.com/mycompany/mobileplatform"
},
"branch": {
"name": "refs/heads/master"
},
"commits": [
{
"committer": {
"email": "name@email.com"
},
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"url": "https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6",
"committedDate": "2022-01-01T08:15:30-05:00",
"details": [
{
"action": "edit",
"changes": "",
"file": "/azure-pipelines.yml",
"additions": 1,
"deletions": 0,
"totalChanges": 1
}
]
}
]
}
}
resource=repository에 대한 샘플 cURL 요청
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/code/schema?resource=repository" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"name": "Platform-Mobile",
"url": "https://github.com/mycompany/mobileplatform"
}
}
DevOps - /devops/onboarding/status 가져오기
서비스에서 비동기적으로 처리되거나 처리되고 있는 지정된 온보딩 이벤트의 DevOps 현재 상태를 반환합니다.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/onboarding/status
기본 URL: / api/sn_devops/devops/onboarding/status
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| ID | 상태가 반환될 온보딩 이벤트의 고유 식별자입니다. 이 값은 /devops/onboarding/app 또는 /devops/onboarding/tool과 같은 이벤트 요청을 호출한 엔드포인트의 반환 결과에 제공됩니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 202 | 보류 중 - 온보딩 요청이 생성되었으며 DevOps 서비스에서 요청을 처리하고 있습니다. |
| 207 | 부분 성공 - 온보딩 요청이 생성되었으며 DevOps 서비스에서 요청을 처리합니다. |
| 400 | 실패 - 온보딩 이벤트가 실패했습니다. |
| 404 | 실패 - 엔드포인트에서 지정된 이벤트 ID와 일치하는 요청을 찾지 못했습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 결과 | 온보딩 요청의 결과입니다. 데이터 유형: 객체 |
| 결과.코드 | HTTP 상태 코드입니다. 데이터 유형: 문자열 |
| result.importRequestsSysIds | 온보딩 요청의 일부로 생성된 임포트 요청의 목록입니다. 데이터 유형: 문자열 배열 |
| result.messageDetails | 온보딩 이벤트 진행률에 대한 상세 정보입니다. 데이터 유형: 객체 |
| 결과.messageDetails.앱 | 연결된 ServiceNow 인스턴스 내에서 생성할 앱을 정의하는 객체의 배열입니다. 데이터 유형: 배열 |
| result.messageDetails.apps.appId | 애플리케이션이 온보딩될 때 생성된 애플리케이션 Sys_id입니다. 앱 [sn_devops_app] 테이블에 있습니다. 데이터 유형: 문자열 |
| 결과.messageDetails.apps.message | 애플리케이션 온보딩의 상태를 설명하는 메시지입니다. 데이터 유형: 문자열 |
| result.messageDetails.apps.name | 온보딩 중인 애플리케이션의 이름입니다. 데이터 유형: 문자열 |
| 결과.messageDetails.apps.status | 애플리케이션 온보딩의 현재 상태입니다. 가능한 값:
데이터 유형: 문자열 |
| result.messageDetails.pipelines | 온보딩 이벤트와 연결된 파이프라인 목록과 해당 상세 정보입니다. 데이터 유형: 배열 |
| result.messageDetails.pipelines.changeStepAssociation | 온보딩과 관련된 변경 단계를 설명하는 객체의 배열입니다. 데이터 유형: 배열 |
| result.messageDetails.pipelines.changeStepAssociation.changeStepName | 변경 단계의 이름입니다. 데이터 유형: 문자열 |
| result.messageDetails.pipelines.changeStepAssociation.status | 파이프라인에 대한 변경 단계 연결 상태입니다. 가능한 값:
데이터 유형: 문자열 |
| result.messageDetails.pipelines.changeStepAssociation.summary | 변경 단계 연결 상태에 대한 요약입니다. 데이터 유형: 문자열 |
| 결과.messageDetails.pipelines.errors | 파이프라인을 연결할 때 탐지된 오류 목록입니다. 데이터 유형: 배열 |
| result.messageDetails.pipelines.message | 파이프라인 연결 상태를 설명하는 메시지입니다. 데이터 유형: 문자열 |
| result.messageDetails.pipelines.name | 파이프라인의 이름입니다. 데이터 유형: 문자열 |
| result.messageDetails.pipelines.status | 파이프라인 연결의 상태입니다. 데이터 유형: 문자열 |
| 결과.메시지Details.계획 | 온보딩 이벤트와 연결된 계획의 목록과 해당 상세 정보입니다. 데이터 유형: 배열 |
| 결과.메시지Details.계획.오류 | 계획을 연결할 때 탐지된 오류 목록입니다. 데이터 유형: 배열 |
| result.messageDetails.plans.message | 파이프라인 연결 상태를 설명하는 메시지입니다. 데이터 유형: 문자열 |
| result.messageDetails.plans.name | 계획 이름. 데이터 유형: 문자열 |
| result.messageDetails.plans.status | 계획 연결의 상태입니다. 데이터 유형: 문자열 |
| result.messageDetails.repositories | 온보딩 이벤트와 연결된 리포지토리 목록 및 해당 상세 정보입니다. 데이터 유형: 배열 |
| result.messageDetails.repositories.configureStatus | 리포지토리의 웹후크 구성 상태에 대한 상세 정보입니다. 데이터 유형: 객체 |
| result.messageDetails.repositories.configureStatus.message | 현재 웹후크 구성 상태를 설명하는 메시지입니다. 데이터 유형: 문자열 |
| result.messageDetails.repositories.configureStatus.status | 웹후크 구성의 상태입니다. 데이터 유형: 문자열 |
| 결과.messageDetails.repositories.message | 현재 리포지토리 연결 상태를 설명하는 메시지입니다. 데이터 유형: 문자열 |
| result.messageDetails.repositories.name | 리포지토리의 이름입니다. 데이터 유형: 문자열 |
| 결과.messageDetails.repositories.status | 리포지토리 연결의 상태입니다. 데이터 유형: 문자열 |
| 결과.messageDetails.상태 | 온보딩 요청의 상태입니다. 가능한 값:
데이터 유형: 문자열 |
| result.messageDetails.toolResponse | 연관된 ServiceNow 인스턴스 내에서 온보딩할 도구를 정의하는 객체의 배열입니다. 데이터 유형: 배열 |
| result.messageDetails.toolResponse.configureStatus | 도구의 구성 상태에 대해 설명합니다. 성공 status 하면 및 message. 오류가 status 발생하면 및 error. 데이터 유형: 객체 |
| result.messageDetails.toolResponse.configureStatus.error | 도구 구성 중에 오류가 감지되었습니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.configureStatus.message | 도구 구성의 성공 상태를 설명하는 메시지입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.configureStatus.status | 도구 구성의 상태입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.connectStatus | 도구의 연결 상태에 대해 설명합니다. 성공 status 하면 및 message. 오류가 status 발생하면 및 error. 데이터 유형: 객체 |
| 결과.messageDetails.toolResponse.connectStatus.error | 공구 연결 중에 오류가 감지되었습니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.connectStatus.message | 도구 연결의 성공 상태를 설명하는 메시지입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.connectStatus.status | 공구 연결 상태입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.createStatus | 도구의 생성 상태를 설명합니다. 성공 status 하면 및 message. 오류가 status 발생하면 및 error. 데이터 유형: 객체 |
| result.messageDetails.toolResponse.createStatus.error | 도구를 만드는 동안 오류가 감지되었습니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.createStatus.message | 도구 만들기의 성공 상태를 설명하는 메시지입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.createStatus.status | 도구 생성의 상태입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.discoveryStatus | 도구의 검색 상태를 설명합니다. 성공 status 하면 및 message. 오류가 status 발생하면 및 error. 데이터 유형: 객체 |
| result.messageDetails.toolResponse.discoveryStatus.error | 도구 검색 중 오류가 감지되었습니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.discoveryStatus.imports | 검색된 각 엔터티를 설명하는 객체의 배열입니다. 데이터 유형: 배열 |
| result.messageDetails.toolResponse.discoveryStatus.imports.details | 수행된 임포트를 설명하는 상세 정보입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.discoveryStatus.imports.id | 임포트 요청의 Sys_id입니다. sn_devops_m2m_inbound_event_import_request 테이블에 있습니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.discoveryStatus.imports.status | 임포트의 상태입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.discoveryStatus.message | 도구 검색의 상태를 설명하는 메시지입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.discoveryStatus.status | 도구 검색의 상태입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.name | 온보딩 중인 도구의 이름입니다. 데이터 유형: 문자열 |
| result.messageDetails.toolResponse.status | 도구 온보딩의 상태입니다. 데이터 유형: 문자열 |
| 결과.messageDetails.toolResponse.type | Jira 또는 Jenkins와 같은 도구 유형입니다. 데이터 유형: 문자열 |
| result.onboardingRequestID | 온보딩 요청의 고유 식별자입니다. / devops/onboarding/status 엔드포인트를 호출할 때 이 값을 사용하여 연결된 도구 온보딩 프로세스의 상태를 확인합니다. 데이터 유형: 문자열 |
| result.status | 온보딩 요청의 상태입니다. 가능한 값:
데이터 유형: 문자열 |
cURL 요청
다음 예에서는 도구 온보딩의 상태 요청을 보여줍니다.
curl -X GET "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/status?id=IBE0001603" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "username":"password" \
{
"result": {
"code": "207",
"onboardingRequestID": "IBE0001603",
"status": "partial-success",
"messageDetails": {
"status": "Partial Success",
"toolResponse": [
{
"name": "Primary Azure",
"type": "Azure DevOps",
"status": "Partial Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Failed",
"error": "Method failed: (/testFirst/_apis/work/boards) with code: 401 - Invalid username/password combo"
}
},
{
"name": "Primary Jenkins",
"type": "Jenkins",
"status": "Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Success",
"message": "Connected successfully"
},
"discoveryStatus": {
"status": "Success",
"message": "Discovered successfully",
"imports": [
{
"status": "completed",
"id": "2a4d216bdb2d2450fe4fd6a75e9619c3",
"details": "Discovered 1 new job(s) and 3 new pipeline(s)\n"
}
]
}
},
{
"name": "Primary GitHub",
"type": "GitHub",
"status": "Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Success",
"message": "Connected successfully"
},
"discoveryStatus": {
"status": "Success",
"message": "Discovered successfully",
"imports": [
{
"status": "completed",
"id": "7f4d616bdb2d2450fe4fd6a75e9619c2",
"details": "Discovered 5 new repositories. "
}
]
}
},
{
"name": "Primary Bitbucket",
"type": "BitBucket",
"status": "Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Success",
"message": "Connected successfully"
},
"discoveryStatus": {
"status": "Success",
"message": "Discovered successfully",
"imports": [
{
"status": "completed",
"id": "815da16bdb2d2450fe4fd6a75e9619d0",
"details": "Discovered 11 new repositories. "
}
]
}
},
{
"name": "Primary Gitlab",
"type": "GitLab",
"status": "Partial Success",
"createStatus": {
"status": "Success",
"message": "Created successfully"
},
"connectStatus": {
"status": "Failed",
"error": "The current operation ended in state: ERROR"
}
}
],
"importRequestsSysIds": [
"2a4d216bdb2d2450fe4fd6a75e9619c3",
"7f4d616bdb2d2450fe4fd6a75e9619c2",
"815da16bdb2d2450fe4fd6a75e9619d0"
]
}
}
}
cURL 요청
다음 예에서는 애플리케이션 온보딩의 상태 요청을 보여줍니다.
curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/status?onboardingRequestID=IBE0001604" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "username":"password" \
{
"result": {
"code": "207",
"onboardingRequestID": "IBE0001604",
"status": "partial-success",
"messageDetails": {
"status": "Partial Success",
"apps": [
{
"name": "Bike Rentals Service",
"status": "Success",
"appId": "c7fd696bdb2d2450fe4fd6a75e961993",
"message": "App by name 'Bike Rentals Service' has been successfully created"
}
],
"pipelines": [
{
"name": "Bike Rentals",
"status": "Success",
"message": "Successfully associated with app 'Bike Rentals Service'",
"changeStepAssociation": [
{
"status": "Success",
"changeStepName": "Prod",
"summary": "Change step with name 'Prod' has been created"
}
]
}
],
"repositories": [
{
"name": "nowdevops01/BikeRentals",
"status": "Partial Success",
"message": "Successfully associated with app 'Bike Rentals Service'",
"configureStatus": {
"status": "Failed",
"message": "Webhook configuration failed due to empty credentials for repository by name nowdevops01/BikeRentals in tool Primary GitHub"
}
}
],
"plans": [
{
"status": "Failed",
"name": "testFirst",
"errors": [
"Plan by name 'testFirst' does not exist in tool Primary Azure"
]
}
]
}
}
}
DevOps - /devops/orchestration/changeControl을 가져옵니다.
오케스트레이션 작업에 변경 제어가 적용되는지 확인합니다.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/orchestration/changeControl
기본 URL: / api/sn_devops/devops/orchestration/changeControl
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 오케스트레이션 작업 이름 | 확인할 오케스트레이션 작업의 이름입니다. 데이터 유형: 문자열 |
| 테스트커넥션 | 인스턴스와 도구 간의 엔드 투 엔드 연결을 테스트할지 여부를 나타내는 플래그입니다 DevOps . 유효한 값은 다음과 같습니다.
데이터 유형: 부울 기본값: false |
| toolId | 필수 오케스트레이션 도구의 Sys_id입니다. Orchestration Tool [sn_devops_orchestration_tool] 테이블에 있습니다. 데이터 유형: 문자열 |
| 도구 유형 | 도구의 유형입니다. 유효한 값은 다음과 같습니다. 젠킨스 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 401 | 인증이 잘못되었거나 누락되었습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수(JSON 또는 XML)
| 이름 | 설명 |
|---|---|
| 변경 제어 | 오케스트레이션 작업에 변경 제어가 적용되는지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
변경 제어 중 및 API v2 사용 중
curl -X GET "https://instance.servicenow.com/api/sn_devops/v2/devops/orchestration/changeControl?toolId=1c219f7e8708f1508ca933383cbb3543&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins"
-H "accept: application/json"\
-H "Authorization: sn_devops.DevOpsToken 1c219f7e8708f1508ca933383cbb3543:FtN13dfDuahYEtdfDvhHorh0QPp9na3u"
응답 본문입니다.
{
"result": {
"changeControl": true,
"status": "Success"
}
}
변경 제어가 적용되지 않으며 API v1을 사용 중
curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeControl?toolId=f0ca45679323008b52f3b457415ae6&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins"
-H "accept: application/json"\
-u "username":"password"
응답 본문입니다.
{
"result": {
"changeControl": false
}
}
DevOps - /devops/orchestration/changeInfo를 가져옵니다.
지정된 오케스트레이션 파이프라인 실행에 대한 변경 요청 상세 정보를 검색합니다.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/orchestration/changeInfo
기본 URL: / api/sn_devops/devops/orchestration/changeInfo
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 브랜치 이름 | 오케스트레이션 작업과 연결된 분기의 이름입니다. 주:
다중 분기 파이프라인을 참조할 때 이 매개변수를 제공해야 하며, 그렇지 않으면 응답에 잘못된 변경 상세 정보가 포함될 수 있습니다. 데이터 유형: 문자열 |
| buildNumber | 필수 오케스트레이션 도구 내의 파이프라인 빌드 번호입니다. 데이터 유형: 문자열 |
| pipelineName | Jenkins Freestyle 또는 Maven 프로젝트의 경우 선택 사항이며 다른 모든 프로젝트에는 필수입니다. 오케스트레이션 파이프라인 이름입니다. 데이터 유형: 문자열 |
| projectName | Jenkins Freestyle 또는 Maven 프로젝트에는 필수이며 다른 모든 프로젝트에는 선택 사항입니다. 오케스트레이션 도구 프로젝트 이름입니다. 데이터 유형: 문자열 |
| 스테이지 이름 | Jenkins Freestyle 또는 Maven 프로젝트의 경우 선택 사항이며 다른 모든 프로젝트에는 필수입니다. 오케스트레이션 스테이지 이름입니다. 데이터 유형: 문자열 최대 길이: 160 |
| toolId | 필수 오케스트레이션 도구의 Sys_id입니다. Orchestration Tool [sn_devops_orchestration_tool] 테이블에 있습니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 400 | 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다. |
| 404 | 찾을 수 없습니다. 요청한 항목을 찾을 수 없습니다. |
응답 본문 매개변수(JSON 또는 XML)
| 이름 | 설명 |
|---|---|
| 변경찾음 | 변경 요청을 찾았는지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
| 번호 | 변경 요청 번호. 데이터 유형: 문자열 |
| 단계 | 현재 단계입니다. 데이터 유형: 문자열 |
| phase_state | 현재 단계의 상태입니다. 데이터 유형: 문자열 |
| 우선순위 | 변경 요청의 우선순위입니다. 우선순위는 요청의 영향과 긴급도를 기준으로 합니다. 서비스 데스크에서 요청을 얼마나 빨리 처리해야 하는지를 식별합니다. 가능한 값:
데이터 유형: 문자열 |
| risk | 변경에 대한 위험 수준입니다. 가능한 값:
데이터 유형: 문자열 |
| 상태 | 변경 요청의 상태입니다. 가능한 값:
데이터 유형: 문자열 기본값: 신규 |
| sys_id | 변경 요청의 Sys_id입니다. 데이터 유형: 문자열 |
| 유형 | 변경 요청의 유형입니다. 가능한 값:
데이터 유형: 문자열 |
| URL | 연결된 ServiceNow 인스턴스 내 변경 요청의 URL입니다. 데이터 유형: 문자열 |
| 변경 할당 그룹 | 변경 요청의 할당 그룹입니다. 데이터 유형: 문자열 |
| changeApprovers | 변경 승인이 보류 중인 승인자 목록입니다. 데이터 유형: 문자열 |
| plannedStart날짜 | 변경의 계획된 시작 날짜 및 시간입니다. 데이터 유형: 문자열 |
| plannedEndDate | 변경의 계획된 종료 날짜 및 시간입니다. 데이터 유형: 문자열 |
cURL 요청
curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeInfo?toolId=1487f457db642810765555535e9619d3&pipelineName=Automation/apps HR/family release&stageName=deployfamilyrelease&buildNumber=1639"
-H "accept: application/json"\
-u "username":"password"
{
"result": {
"changeFound": true,
"sys_id": "ee89341bdb642810765555535e96196e",
"number": "CHG0030001",
"type": "normal",
"state": "0",
"phase": "requested",
"phase_state": "open",
"priority": "4",
"risk": "4",
"url": "https://instance.servicenow.com/change_request.do?sys_id=ee89341bdb642810765555535e96196e",
"changeAssignmentGroup": "Change Management",
"changeApprovers": "Ron Kettering, Christen Mitchell, Howard Johnson, Luke Wilson",
"plannedStartDate": "2023-02-05 08:00:00",
"plannedEndDate": "2024-02-05 08:00:00"
}
}
DevOps - /devops/orchestration/schema 가져오기
지정된 오케스트레이션 자원에 대한 스키마 객체를 반환합니다.
필요한 스키마 객체가 있으면 이를 사용하여 해당 POST 호출에 대한 요청 본문을 만듭니다. / orchestration/orchestrationTask 또는 / orchestration/taskExecution.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/orchestration/schema
기본 URL: / api/sn_devops/devops/orchestration/schema
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| resource | 반환할 자원 스키마의 유형입니다. 유효한 값(대/소문자 구분 안 함):
데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 요청이 성공적으로 완료되었습니다. |
| 401 | 인증이 잘못되었거나 누락되었습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 콜백 URL | 콜백의 URL입니다. 데이터 유형: 문자열 |
| endDateTime | 작업 실행이 종료된 날짜/시간입니다. 데이터 유형: 문자열 |
| 이름 | 오케스트레이션 작업의 이름입니다. 데이터 유형: 문자열 |
| 번호 | 작업 실행 번호입니다. 인시던트 번호와 같습니다. 데이터 유형: 문자열 |
| 오케스트레이션 작업 상세 정보 | 오케스트레이션 작업에 대한 설명입니다. 데이터 유형: 객체 |
| orchestrationTaskDetails.message | 자유 형식의 문자 메시지입니다. 데이터 유형: 문자열 |
| orchestrationTaskDetails.name | 오케스트레이션 작업의 이름입니다. 데이터 유형: 문자열 |
| orchestrationTaskDetails.triggerType | 오케스트레이션 작업이 시작된 방식입니다. 데이터 유형: 문자열 |
| orchestrationTaskDetails.url | 연결된 오케스트레이션 도구의 오케스트레이션 작업 URL입니다. 데이터 유형: 문자열 |
| 오케스트레이션 태스크URL | 오케스트레이션 작업의 URL입니다. 데이터 유형: 문자열 |
| 결과 | 작업 실행의 실행 결과입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 문자열 |
| startDateTime | 작업 실행이 시작된 날짜/시간입니다. 데이터 유형: 문자열 |
| 작업실행URL | 실행할 작업의 URL입니다. 데이터 유형: 문자열 |
| triggerType(트리거 유형) | 오케스트레이션 작업이 시작된 방식입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 문자열 |
| URL | 연결된 오케스트레이션 도구의 오케스트레이션 작업 URL입니다. 데이터 유형: 문자열 |
resource=task_execution를 사용한 샘플 cURL 요청
curl -X GET \
'https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/schema?resource=task_execution' \
-H 'Accept: application/json'\
-u 'username':'password'
{
"result": {
"number": 40,
"url": "https://jenkins.mycompany.com:8080/job/Mobile-Platform-CI/40/",
"startDateTime": "1970-01-01T08:15:30-05:00",
"endDateTime": "1970-01-01T08:25:30-05:00",
"triggerType": "upstream",
"result": "Success",
"orchestrationTaskDetails": {
"name": "Mobile-Platform-CI",
"url": "https://jenkins.mycompany.com:8080/job/Mobile-Platform-CI/"
}
}
}
resource=orchestration_task를 사용한 샘플 cURL 요청
curl -X GET \
'https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/schema?resource=orchestration_task' \
-H 'Accept: application/json'\
-u 'username':'password'
{
"result": {
"name": "Mobile-Platform-CI",
"url": "https://jenkins.mycompnay.com:8080/job/Mobile-Platform-CI/"
}
}
resource=callback을 사용하는 샘플 cURL 요청
curl -X GET \
'https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/schema?resource=task_execution' \
-H 'Accept: application/json' \
-u 'username':'password'
{
"result": {
"callbackURL": "http://127.0.0.1:8090/jenkins/sn-devops/9b0feb79-f0b9-4661-83ef-2861b8924784",
"orchestrationTaskURL": "http://127.0.0.1:8090/jenkins/job/felipe-downstream/",
"orchestrationTaskDetails": {
"message": "Started by upstream project \"felipe-upstream\" build number 27",
"triggerType": "upstream"
}
}
}
DevOps - /devops/orchestration/stepMapping 가져오기
전달되는 정보가 오케스트레이션 작업을 만드는 데 유효하고 이전에 만든 단계에 연결하는 데 유효한지 확인합니다.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/orchestration/stepMapping
기본 URL: / api/sn_devops/devops/orchestration/stepMapping
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 브랜치 이름 | 오케스트레이션 작업과 연결된 분기의 이름입니다. 데이터 유형: 문자열 |
| isMulti분기 | 오케스트레이션 도구가 Jenkins인 경우 프로젝트가 다중 분기 유형인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 부울 기본값: false |
| parentStageName | 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 항목인 경우 상위 오케스트레이션 작업의 이름입니다. 데이터 유형: 문자열 |
| 부모 스테이지URL | 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 항목인 경우 상위 오케스트레이션 작업의 URL입니다. 데이터 유형: 문자열 |
| 오케스트레이션 작업 이름 | 필수 오케스트레이션 작업의 이름입니다. 데이터 유형: 문자열 |
| 오케스트레이션 태스크URL | 필수 오케스트레이션 작업의 URL입니다. 주: 데이터 유형: 문자열백분율(%)로 인코딩되어야 합니다(예: https%3A%2F%2Fjenkins.mycompany.com%3A8080%2Fjob%2FMobile-Platform-deploy%2F). |
| 테스트커넥션 | 인스턴스와 도구 간의 엔드 투 엔드 연결을 테스트할지 여부를 나타내는 플래그입니다 DevOps . 유효한 값은 다음과 같습니다.
데이터 유형: 부울 기본값: false |
| toolId | 필수 오케스트레이션 도구의 Sys_id입니다. Orchestration Tool [sn_devops_orchestration_tool] 테이블에 있습니다. 데이터 유형: 문자열 |
| 도구 유형 | 필수 도구의 유형입니다. 유효한 값은 다음과 같습니다. jenkins 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 401 | 승인되지 않았습니다. 사용자 자격 증명이 잘못되었거나 전달되지 않았습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수
| 요소 | 설명 |
|---|---|
| 상태 | 검증이 성공했는지 여부를 나타내는 플래그입니다. 데이터 유형: 부울 |
| step유효 | 전송된 정보가 유효한지 여부를 나타내는 플래그입니다. 데이터 유형: 부울 |
샘플 cURL 요청
curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/stepMapping?toolId=f0ca45679323008b52f3b457415ae6&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins "
-H "Accept: application/json" \
-u "username":"password"
정보가 유효한 경우의 결과입니다.
{
"result": {
"stepValid": true,
"status": "Success"
}
}
샘플 cURL 요청
curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/stepMapping?toolId=f0ca45679323008b52f3b457415ae6&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins "
-H "Accept: application/json" \
-u "username":"password"
정보가 잘못된 경우의 결과입니다.
{
"result": {
"stepValid": false,
"status": "Success"
}
DevOps - /devops/plan/schema 가져오기
특정 계획(앱, 버전 또는 작업 항목)에 대한 스키마 객체를 반환합니다.
필요한 스키마 객체가 있으면 이를 사용하여 해당 POST 호출에 대한 요청 본문을 만듭니다. POST /plan/app, POST /plan/version 또는 POST /plan/workitem.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/plan/schema
기본 URL: / api/sn_devops/devops/plan/schema
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| resource | 반환할 자원 스키마의 유형입니다. 유효한 값(대/소문자 구분 안 함):
데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 401 | 인증이 잘못되었거나 누락되었습니다. |
| 404 | 찾을 수 없습니다. 지정된 기록을 찾을 수 없습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 앱 | 버전과 연결할 애플리케이션에 대한 설명입니다. 데이터 유형: 객체 |
| app.createdDateTime | 소스 DevOps 도구에서 애플리케이션을 만든 날짜/시간입니다. 데이터 유형: 문자열 |
| app.id | 애플리케이션의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다. 데이터 유형: 문자열 |
| app.shortDescription | 연결된 애플리케이션에 대한 간략한 설명입니다. 데이터 유형: 문자열 |
| 앱.팀 | 애플리케이션과 연결된 팀에 대한 설명입니다. 데이터 유형: 객체 |
| app.team.id | 애플리케이션과 연결된 팀의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다. 데이터 유형: 문자열 |
| app.team.name | 애플리케이션과 연결된 팀의 이름입니다. 데이터 유형: 문자열 |
| 앱.url | 소스 계획 도구 사이트의 애플리케이션 URL입니다. 데이터 유형: 문자열 |
| assignedTo | 작업 항목이 할당된 사람에 대한 설명입니다. 데이터 유형: 객체 |
| assignedTo.email | 작업 항목에 할당된 사람의 이메일 주소입니다. 데이터 유형: 문자열 |
| assignedTo.id | 작업 항목에 할당된 사람의 고유 식별자입니다. 데이터 유형: 문자열 |
| assignedTo.name | 작업 항목에 할당된 사람의 이름입니다. 데이터 유형: 문자열 |
| assignedTo.사용자 이름 | 작업 항목에 할당된 사용자의 사용자 이름입니다. 데이터 유형: 문자열 |
| createDateTime | 애플리케이션, 버전 또는 작업 항목 레코드가 만들어진 날짜 및 시간입니다. 데이터 유형: 문자열 |
| ID | 애플리케이션, 버전 또는 작업 항목의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다. 데이터 유형: 문자열 |
| 이름 | 애플리케이션의 이름입니다. 데이터 유형: 문자열 |
| path | 애플리케이션의 상대 경로입니다. 데이터 유형: 문자열 |
| shortDescription | 애플리케이션, 버전 또는 작업 항목에 대한 간략한 설명입니다. 데이터 유형: 문자열 |
| 상태 | 작업 항목의 상태입니다. 소스 계획 수립 도구에 의해 생성됩니다. 데이터 유형: 문자열 |
| 팀 | 애플리케이션과 연결된 팀에 대한 설명입니다. 데이터 유형: 객체 |
| team.id | 애플리케이션과 연결된 팀의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다. 데이터 유형: 문자열 |
| team.name | 애플리케이션과 연결된 팀의 이름입니다. 데이터 유형: 문자열 |
| 유형 | 작업 항목의 유형입니다. 계획 수립 도구에 의해 생성됩니다. 데이터 유형: 문자열 |
| URL | 애플리케이션, 버전 또는 작업 항목에 액세스하는 데 사용할 URL입니다. 데이터 유형: 문자열 |
| 버전 | 버전을 설명하는 배열입니다. 데이터 유형: 객체 |
| version.app | 버전과 연결할 애플리케이션에 대한 설명입니다. 데이터 유형: 객체 |
| version.app.createdDateTime | 소스 DevOps 도구에서 버전을 만든 날짜/시간입니다. 데이터 유형: 문자열 |
| version.app.id | 애플리케이션의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다. 데이터 유형: 문자열 |
| version.app.간단한 설명 | 연결된 애플리케이션에 대한 간략한 설명입니다. 데이터 유형: 문자열 |
| version.app.팀 | 애플리케이션과 연결된 팀에 대한 설명입니다. 데이터 유형: 객체 |
| version.app.team.id | 애플리케이션과 연결된 팀의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다. 데이터 유형: 문자열 |
| version.app.team.name | 애플리케이션과 연결된 팀의 이름입니다. 데이터 유형: 문자열 |
| version.app.url | 소스 계획 도구 사이트의 애플리케이션 URL입니다. 데이터 유형: 문자열 |
| version.createdDateTime | 소스 DevOps 도구에서 버전을 만든 날짜/시간입니다. 데이터 유형: 문자열 |
| version.id | 버전의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다. 데이터 유형: 문자열 |
| version.shortDescription | 연결된 버전에 대한 간략한 설명입니다. 데이터 유형: 문자열 |
| 버전.url | 소스 계획 도구 사이트의 버전 URL입니다. 데이터 유형: 문자열 |
resource=app에 대한 샘플 cURL 요청
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=app" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"id": "PRODUCT1234",
"shortDescription": "Mobile UI",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"team": {
"name": "Mobile UI",
"id": "f0ca45679323008b52f3b457415ae6"
},
"url": "https://jira.com/mycompany/browse/PRODUCT-125"
}
}
resource=version에 대한 샘플 cURL 요청
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=version" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"id": "REL1234",
"shortDescription": "APIs Release",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"app": {
"id": "PRODUCT1234",
"shortDescription": "Mobile UI",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"team": {
"name": "Mobile UI",
"id": "f0ca45679323008b52f3b457415ae6"
},
"url": "https://jira.com/mycompany/browse/PRODUCT-125"
},
"url": "https://jira.com/mycompany/browse/REL-125"
}
}
resource=work_item에 대한 샘플 cURL 요청
curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=work_item" \
--request GET \
--header "Accept:application/json" \
--user "username":"password"
{
"result": {
"id": "STR1234",
"type": "Story",
"shortDescription": "Planning API Spec",
"state": "In-progress",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"assignedTo": {
"name": "Leo Neo",
"userName": "lenn",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"email": "lenn@smithworksinc.com"
},
"version": {
"id": "REL1234",
"shortDescription": "APIs Release",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"app": {
"id": "PRODUCT1234",
"shortDescription": "Mobile UI",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"team": {
"name": "Mobile UI",
"id": "f0ca45679323008b52f3b457415ae6"
},
"url": "https://jira.com/mycompany/browse/PRODUCT-125"
},
"url": "https://jira.com/mycompany/browse/REL-125"
},
"app": {
"id": "PRODUCT1234",
"shortDescription": "Mobile UI",
"createdDateTime": "1970-01-01T08:15:30-05:00",
"team": {
"name": "Mobile UI",
"id": "f0ca45679323008b52f3b457415ae6"
},
"url": "https://jira.com/mycompany/browse/PRODUCT-125"
},
"url": "https://jira.com/mycompany/browse/HALOKEY-25"
}
}
DevOps - /devops/artifact/registration 게시
오케스트레이션 도구가 아티팩트를 인스턴스에 등록할 수 있도록 ServiceNow 합니다.
- 요청이 toolId 전달되면 엔드포인트는 도구가 인스턴스 내에 존재하는지 확인합니다. 또한 에 artifacts.repositoryName 지정된 아티팩트 리포지토리가 존재하는지 확인하고, 존재하지 않는 경우 연결된 아티팩트 도구 아래에 생성합니다.
- toolId 요청이 전달되지 않으면 리포지토리가 생성되지만 아티팩트 도구에 연결되지 않습니다.
- 그런 다음 에 artifacts.name 지정된 아티팩트가 이미 있는지 확인하고, 없는 경우 연결된 리포지토리 아래에 생성합니다.
- 가 artifact.version 요청에 전달되는 경우:
- 아직 아티팩트 버전 기록이 없는 경우 연결된 아티팩트 버전 [sn_devops_artifact_version] 테이블에 새 아티팩트 버전 기록이 생성됩니다.
- 그런 다음 엔드포인트는 제공된 빌드 세부 정보(pipelineName또는 projectName, taskExecutionNumberbranchName및 stageName)와 orchestrationToolId 매개변수를 기반으로 연결된 작업 실행을 찾습니다.
- 작업 실행이 발견되고 사후 처리가 완료되면 아티팩트 버전이 작업 실행에 연결되고 Artifact to TaskExecution [sn_devops_m2m_artifact_execution] 테이블에 저장됩니다. 이러한 작업 실행에 연결된 커밋도 아티팩트 버전에 연결되고 커밋할 아티팩트 버전 [sn_devops_m2m_artifact_version_commit] 테이블에 저장됩니다. 아티팩트를 생성하지 않은 이전 작업 실행에 연결된 커밋도 아티팩트 버전과 연결됩니다.
- 작업 실행이 발견되었으나 후처리가 완료되지 않은 경우 요청은 아티팩트 준비 요청 [sn_devops_artifact_staging] 테이블에 유지됩니다. 준비된 요청에는 작업 실행에 대한 참조가 포함됩니다.
- 작업 실행을 찾을 수 없는 경우 요청은 스테이징 테이블에 유지됩니다. 준비된 요청에는 빌드 세부 정보가 포함되어 있습니다.
- artifact.version 가 전달되지 않으면 도구 구성에 따라 아티팩트 도구가 웹후크를 지원하는 경우 /devops/tool/artifact 엔드포인트를 호출하거나 아티팩트 도구에서 아티팩트 버전을 검색하는 사용자 지정 하위 플로우를 통해 아티팩트 버전을 검색합니다.
아티팩트에 대한 자세한 내용은 릴리스에 DevOps 변경 가속화 사용을 참조하세요.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/artifact/registration
기본 URL: / api/sn_devops/devops/artifact/registration
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| orchestrationToolId | 필수 아티팩트와 연결된 오케스트레이션 도구의 Sys_id입니다. Orchestration Tool [sn_devops_orchestration_tool] 테이블에 있습니다. 엔드포인트는 이 정보를 사용하여 작업 실행 정보를 찾습니다. 데이터 유형: 문자열 |
| toolId | 아티팩트와 연결된 아티팩트 도구의 Sys_id입니다. 아티팩트 도구 [sn_devops_artifact_tool] 테이블에 있습니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 아티팩트 | 최소 한 개의 항목이 필요합니다. 각 객체가 등록할 아티팩트 버전을 고유하게 식별하는 객체의 배열입니다. 데이터 유형: 배열 |
| artifacts.name | 필수 아티팩트 파일 이름입니다. 데이터 유형: 문자열 최대 길이: 160자 |
| artifacts.repositoryName | 필수 아티팩트 리포지토리 이름입니다. 지정된 리포지토리 기록이 없는 경우 새로 작성됩니다. 데이터 유형: 문자열 최대 길이: 160자 |
| 아티팩트.semanticVersion | 아티팩트의 시맨틱 버전입니다. 데이터 유형: 문자열 형식: MAJOR. 사소한. 패치 가능한 값의 예는 다음과 같습니다.
최대 길이: 160자 기본값: Null |
| 아티팩트.버전 | 전달되지 않은 경우 toolId 필수입니다. 아티팩트 버전입니다. 데이터 유형: 문자열 형식: MAJOR. 사소한 최대 길이: 160자 기본값: Null |
| 브랜치 이름 | 다중 분기 프로젝트인 경우 필요합니다. 아티팩트가 저장되는 리포지토리의 분기 이름입니다. 데이터 유형: 문자열 최대 길이: 160 기본값: Null |
| pipelineName | 전달되지 않은 경우 projectName 필수입니다. 파이프라인 이름입니다. 데이터 유형: 문자열 최대 길이: 160 기본값: Null |
| projectName | 전달되지 않은 경우 pipelineName 필수입니다. 자유 형식 프로젝트 이름입니다. 데이터 유형: 문자열 최대 길이: 160 기본값: Null |
| 스테이지 이름 | 전달되면 pipelineName 필수입니다. 스테이지 이름입니다. 데이터 유형: 문자열 최대 길이: 160 기본값: Null |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 컨텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공. 응답 본문 성공. |
| 201 | 만든. 응답 본문 성공. |
| 400 | 잘못된 요청입니다. 요청 URI가 시스템의 API와 일치하지 않거나 알 수 없는 이유로 작업이 실패했습니다. 잘못된 헤더로 인해 이 오류가 발생할 수도 있습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| response | 아티팩트 등록 요청의 결과입니다. 데이터 유형: 객체 |
| response.artifact | 처리된 각 아티팩트에 대한 결과입니다. 데이터 유형: 객체 |
| 응답.아티팩트.생성 | 요청에서 아티팩트 기록을 생성한 경우 아티팩트 [sn_devops_artifact] 테이블에 생성된 기록의 sys_ids 목록입니다. 데이터 유형: 배열 |
| response.artifact.create.id | 요청에 의해 생성된 아티팩트 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| 응답.아티팩트.찾음 | 아티팩트 테이블에 아티팩트가 이미 있는 경우 기존 아티팩트 기록의 sys_ids 목록입니다. 주:
기존 패키지는 수정되지 않습니다. 데이터 유형: 배열 |
| response.artifact.found.id | 기존 아티팩트 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| 응답.아티팩트.업데이트 | 현재 사용되지 않음 |
| response.artifact.update.id | 현재 사용되지 않음 |
| response.artifact_register_requests | 처리가 완료되지 않아 아티팩트 준비 요청 테이블에 저장된 아티팩트 등록 요청에 대한 결과입니다. 데이터 유형: 객체 |
| response.artifact_register_requests.만들기 | 요청에서 아티팩트 준비 기록을 생성한 경우 생성된 기록의 sys_ids 목록입니다. 데이터 유형: 배열 |
| response.artifact_register_requests.create.id | 요청에 의해 생성된 아티팩트 준비 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.artifact_register_requests.찾음 | 아티팩트에 이미 연결된 아티팩트 준비 기록이 있는 경우 기존 아티팩트 준비 기록의 sys_ids 목록입니다. 주:
기존 패키지는 수정되지 않습니다. 데이터 유형: 배열 |
| response.artifact_register_requests.found.id | 기존 아티팩트 준비 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.artifact_register_requests.업데이트 | 현재 사용되지 않음 |
| response.artifact_register_requests.update.id | 현재 사용되지 않음 |
| response.artifact_repository | 요청 처리 중에 조작된 아티팩트 리포지토리 기록에 대한 결과입니다. 데이터 유형: 객체 |
| response.artifact_repository.만들기 | 요청에 의해 아티팩트 리포지토리가 생성된 경우 생성된 기록의 sys_ids 목록입니다. 데이터 유형: 배열 |
| response.artifact_repository.create.id | 요청에 의해 생성된 아티팩트 리포지토리 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.artifact_repository.찾음 | 등록 요청에 사용된 아티팩트 리포지토리 기록이 이미 있는 경우 기존 기록의 sys_ids 목록입니다. 주:
기존 패키지는 수정되지 않습니다. 데이터 유형: 배열 |
| response.artifact_repository.found.id | 요청에서 사용하는 기존 아티팩트 리포지토리 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.artifact_repository.업데이트 | 엔드포인트가 리포지토리의 추적 플래그를 true(false에서)로 업데이트하면 수정된 리포지토리 기록의 sys_ids 목록입니다. 데이터 유형: 배열 |
| response.artifact_repository.update.id | 추적 플래그가 수정된 리포지토리 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.artifact_version | 요청 처리 중에 조작된 아티팩트 버전 기록에 대한 결과입니다. 데이터 유형: 객체 |
| response.artifact_version.만들기 | 요청을 처리하는 동안 생성된 아티팩트 버전 기록에 대한 결과입니다. 데이터 유형: 배열 |
| response.artifact_version.create.id | 요청에 의해 생성된 아티팩트 버전 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.artifact_version.찾음 | 등록 요청에 사용된 아티팩트 버전 기록이 이미 있는 경우 기존 기록의 sys_ids 목록입니다. 데이터 유형: 배열 |
| response.artifact_version.found.id | 요청에서 사용하는 기존 아티팩트 버전 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.artifact_version.업데이트 | 현재 사용되지 않음 |
| response.artifact_version.update.id | 현재 사용되지 않음 |
| 상태 | 등록 요청의 상태입니다. 가능한 값:
데이터 유형: 문자열 |
샘플 cURL 요청
curl -X POST \
'https://instance.servicenow.com/api/sn_devops/devops/artifact/registration?toolId=391b4ff6dba24010bc8cdd384b96198f&orchestrationToolId=99d70b36dba24010bc8cdd384b961985' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-u 'username':'password' \
-d ' {"artifacts": [\
{\
"name": "sa-web.jar",\
"version": "3.1",\
"semanticVersion": "3.1.0",\
"repositoryName": "services-1031"\
},\
{\
"name": "sa-frontend.jar",\
"version": "3.2",\
"semanticVersion": "3.2.0",\
"repositoryName": "services-1031"\
}\
],\
"pipelineName": "spring-boot-app",\
"taskExecutionNumber": "160",\
"stageName": "Build",\
"branchName": "primary"\
}]'
{
"result": {
"status": "Success",
"response": {
"artifact_repository": {
"create": [
{
"id": "2e50ba8bdbaa4010bc8cdd384b961988"
}
],
"update": [],
"found": [
{
"id": "2e50ba8bdbaa4010bc8cdd384b961988"
}
]
},
"artifact": {
"create": [
{
"id": "6a50f603dbea4010bc8cdd384b96193d"
},
{
"id": "2e50f603dbea4010bc8cdd384b96193f"
}
],
"update": [],
"found": []
},
"artifact_version": {
"create": [
{
"id": "a650f603dbea4010bc8cdd384b96193e"
},
{
"id": "6250f603dbea4010bc8cdd384b961940"
}
],
"update": [],
"found": []
},
"artifact_register_requests": {
"create": [
{
"id": "6250f603dbea4010bc8cdd384b96193f"
},
{
"id": "6650f603dbea4010bc8cdd384b961940"
}
],
"update": [],
"found": []
}
}
}
}
DevOps - POST /devops/onboarding/app
서비스에서 비동기적으로 처리 DevOps 되는 온보딩 앱 이벤트를 생성합니다.
- 애플리케이션을 생성합니다.
- 계획, 리포지토리, 파이프라인과 같은 객체를 애플리케이션에 연결합니다 DevOps .
- 변경 단계 기록을 만들고 변경 승인 프로세스를 파이프라인에 연결합니다.
이러한 모든 작업은 도구 및 기능에 따라 다릅니다. 다음 표에서는 지원되는 각 도구에 사용할 수 있는 작업을 간략하게 설명합니다.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/onboarding/app
기본 URL: / api/sn_devops/devops/onboarding/app
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
| 이름 | 설명 |
|---|---|
| 애플 리 케이 션 | 연결된 ServiceNow 인스턴스 내에서 생성할 앱을 정의하는 객체의 배열입니다. 데이터 유형: 배열 |
| apps.bussiness앱 | 애플리케이션을 매핑할 cmdb_ci_business_app의 이름입니다. 이렇게 하면 애플리케이션이 DevOps 지정된 CMDB 애플리케이션에 연결됩니다. 데이터 유형: 문자열 |
| apps.name | 필수 작성하기 위해 작성할 애플리케이션의 사용자에게 친숙한 이름입니다. 앱은 계획, 리포지토리 및 파이프라인을 DevOps 함께 연결하는 제품 컨테이너 개체입니다. 데이터 유형: 문자열 |
| credentials | 필수 웹후크 생성에 사용할 자격 증명입니다. 생성된 웹후크는 도구에서 알림을 보내는 데 사용됩니다. 데이터 유형: 객체 |
| credentials.name | 필수. ServiceNow 엔드포인트를 요청하는 사용자의 사용자 ID입니다. 사용자 [sys_user] 테이블에 있습니다. 이 사용자에게는 devops.integration.user 역할이 있어야 합니다. 버전 1.34.1부터 이 사용자는 sn_devops.admin 역할이 있어야 합니다. 데이터 유형: 문자열 |
| credentials.password | 필수 매개변수에 지정된 사용자의 암호입니다 credenitals.name . 데이터 유형: 문자열 |
| 파이프라인 | 애플리케이션과 연결할 파이프라인을 정의하는 객체의 배열입니다. 데이터 유형: 배열 |
| pipelines.app | 개체가 지정된 경우 pipelines 필요합니다. 매개변수에 pipelines.name 지정된 계획과 연결할 애플리케이션의 이름입니다. 응용 프로그램이 이미 작성되었거나 이 요청의 개체에 지정되어 apps 있어야 합니다. 데이터 유형: 문자열 |
| 파이프라인.changeSteps | 필드에 지정된 파이프라인에 대해 생성할 변경 단계를 정의하는 객체의 배열입니다 pipelines.name . 데이터 유형: 배열
데이터 유형: 문자열 |
| pipelines.changeSteps.changeApprovalGroup | 개체가 지정된 경우 changeSteps 필요합니다. 파이프라인과 연결할 변경 승인 그룹의 이름입니다. 그룹 [sys_user_group] 테이블에 있습니다. 이 그룹은 인스턴스에 이미 존재 ServiceNow 해야 합니다. 데이터 유형: 문자열 |
| pipelines.changeSteps.changeControlledBranches | 변경 제어 아래에 있는 코드 분기를 쉼표로 구분한 목록입니다. 이는 다중 분기 지원에만 적용됩니다. 데이터 유형: 문자열 기본값: *(모든 분기) |
| pipelines.changeSteps.changeType | 개체가 지정된 경우 changeSteps 필요합니다. 생성할 변경 요청의 유형입니다. 사용 가능한 유형은 변경 요청 [change_request] 테이블의 유형 필드에 정의되어 있습니다. 데이터 유형: 문자열 |
| pipelines.changeSteps.name | 개체가 지정된 경우 changeSteps 필요합니다. 생성할 단계의 이름입니다. 단계 이름은 오케스트레이션 도구의 파이프라인에 있는 해당 단계의 이름과 일치해야 합니다. 데이터 유형: 문자열 |
| pipelines.changeSteps.type | 개체가 지정된 경우 changeSteps 필요합니다. 작성할 단계의 유형입니다. 사용 가능한 단계 유형은 단계 [sn_devops_step] 테이블의 유형 필드에 정의되어 있습니다. 데이터 유형: 문자열 |
| pipelines.name | 개체가 지정된 경우 pipelines 필요합니다. 매개변수에 지정된 애플리케이션과 연결할 파이프라인의 pipelines.app 이름입니다. 이 파이프라인은 인스턴스에서 이미 검색 ServiceNow 되어 있어야 합니다. 데이터 유형: 문자열 |
| 파이프라인.프로젝트 | pipelines 개체가 지정되고 pipelines.tool이 프로젝트 엔터티(예: ADO 도구)를 지원하는 경우에 필요합니다. 고유한 파이프라인/도구 식별자를 만들기 위해 파이프라인과 연결할 프로젝트입니다. 매개변수 값은 프로젝트 [sn_devops_project] 테이블의 프로젝트에서 파생되어야 합니다.데이터 유형: 문자열 |
| pipelines.tool | 개체가 지정된 경우 pipelines 필요합니다. 고유한 파이프라인/도구 식별자를 만들기 위해 파이프라인과 연결하는 도구입니다. 데이터 유형: 문자열 |
| 계획 | 애플리케이션과 연결할 계획을 정의하는 객체의 배열입니다. 데이터 유형: 배열 |
| plans.apps | 개체가 지정된 경우 plans 필요합니다. 매개변수에 plans.name 지정된 계획과 연결할 애플리케이션의 이름입니다. 이러한 애플리케이션은 이미 작성되었거나 이 요청의 객체에 apps 지정되어 있어야 합니다. 데이터 유형: 문자열 배열 |
| plans.name | 개체가 지정된 경우 plans 필요합니다. 매개변수에 지정된 애플리케이션과 연결할 계획의 plans.app 이름입니다. 이 계획은 인스턴스에서 이미 검색 ServiceNow 되어 있어야 합니다. 데이터 유형: 문자열 |
| plans.project | plans 개체가 지정되고 plans.tool 이 프로젝트 엔터티(예: ADO 도구)를 지원하는 경우에 필요합니다. 고유한 계획/도구 식별자를 생성하기 위해 파이프라인과 연결하는 도구입니다. 매개변수 값은 프로젝트 [sn_devops_project] 테이블의 프로젝트에서 파생되어야 합니다.데이터 유형: 문자열 |
| plans.tool | 개체가 지정된 경우 plans 필요합니다. 고유 계획/도구 식별자를 작성하기 위해 계획과 연결할 도구입니다. 데이터 유형: 문자열 |
| 리포지토리 | 애플리케이션과 연결된 리포지토리를 정의하는 객체의 배열입니다. repositories 객체에 app 매개변수가 포함되어 있으면 리포지토리를 애플리케이션에 매핑합니다. 데이터 유형: 배열 |
| repositories.app | 개체가 지정된 경우 repositories 필요합니다. 이 리포지토리와 연결할 애플리케이션의 이름입니다. 응용 프로그램이 이미 작성되었거나 이 요청의 개체에 지정되어 apps 있어야 합니다. 데이터 유형: 문자열 |
| repositories.name | 개체가 지정된 경우 repositories 필요합니다. 매개변수에 지정된 애플리케이션과 연결할 리포지토리의 repositories.app 이름입니다. 인스턴스에서 이 리포지토리가 ServiceNow 이미 검색되어 있어야 합니다. 데이터 유형: 문자열 |
| 리포지토리.프로젝트 | 리포지토리 개체가 지정되고 repositories.tool 프로젝트 엔터티(예: ADO 도구)를 지원하는 경우에 필요합니다. 고유한 리포지토리/도구 식별자를 만들기 위해 리포지토리와 연결하는 도구입니다. 매개변수 값은 프로젝트 [sn_devops_project] 테이블의 프로젝트에서 파생되어야 합니다.데이터 유형: 문자열 |
| 저장소.도구 | 개체가 지정된 경우 repositories 필요합니다. 고유한 리포지토리/도구 식별자를 만들기 위해 리포지토리와 연결할 수 있는 사용자 친화적인 도구 이름입니다. 도구는 인스턴스에 이미 생성 ServiceNow 되어 있어야 합니다. 데이터 유형: 문자열 |
| artifactRepositories.app | artifactRepositories 객체가 지정된 경우 필요합니다. 이 artifactRepositories와 연결할 애플리케이션의 이름입니다. 애플리케이션이 이미 작성되었거나 이 요청의 apps 객체에 지정되어 있어야 합니다.데이터 유형: 문자열 |
| artifactRepositories.name | artifactRepositories 객체가 지정된 경우 필요합니다. .app 매개변수에 지정된 애플리케이션과 artifactRepositories연결할 artifactRepositories의 이름입니다. 이 artifactRepositories는 ServiceNow 인스턴스에서 이미 검색되어야 합니다.데이터 유형: 문자열 |
| 아티팩트리포지토리.도구 | artifactRepositories 객체가 지정된 경우 필요합니다. 고유한 artifactRepositories /tool 식별자를 만들기 위해 artifactRepositories와 연결하는 사용자 친화적인 도구 이름입니다. ServiceNow 인스턴스에 도구가 이미 생성되어 있어야 합니다.데이터 유형: 문자열 |
| 아티팩트리포지토리.프로젝트 | artifactRepositories 개체가 지정되고 지원 프로젝트 엔터티(예: ADO 도구)에 repositories.tool 필요합니다. 고유한 파이프라인/도구 식별자를 artifactRepositories 만들기 위해 연결할 도구입니다. 데이터 유형: 문자열 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 컨텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 202 | 온보딩 요청이 성공적으로 생성되었습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 결과 | 온보딩 요청의 결과입니다. 데이터 유형: 객체 |
| 결과.코드 | HTTP 상태 코드입니다. 데이터 유형: 문자열 |
| 결과.상세 정보 | 온보딩 요청에 대한 상세 정보입니다. 데이터 유형: 문자열 |
| 결과.오류 | 발생한 오류에 대한 설명입니다. 데이터 유형: 객체 |
| 결과.오류.메시지 | 오류 메시지. 데이터 유형: 문자열 |
| result.onboardingRequestID | 온보딩 요청의 고유 식별자입니다. / devops/onboarding/status 엔드포인트를 호출하여 연결된 온보딩 프로세스의 상태를 가져올 때 이 값을 사용합니다. 데이터 유형: 문자열 |
| result.status | 온보딩 요청의 상태(성공 또는 실패)입니다. 데이터 유형: 문자열 |
cURL 요청
이 예제에서는 Bike Rental Service 애플리케이션을 만들고 Jenkins 파이프라인 Bike Rentals, GitHub 리포지토리 nowDevops01/CorpSite 및 Azure 플랜 testPlan_Bike_Rental에 연결합니다.
curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/app" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "username":"password" \
-d "{
"apps": [
{
"name": "Bike Rental Service"
}
]
"pipelines": [
{
"tool": "Primary Jenkins",
"name": "Bike Rentals",
"app": "Bike Rental Service",
"changeSteps": [
{
"name": "Prod",
"type": "deploy",
"changeApprovalGroup": "Change Management",
"changeType": "normal"
}
]
}
],
"repositories": [
{
"tool": "Primary GitHub",
"name": "nowDevops01/CorpSite",
"app": "Bike Rental Service"
}
]
"plans": [
{
"tool": "Primary Azure",
"name": "testPlan_Bike_Rental",
"project": "DemoProjecttt",
"apps": [
"Bike Rental Service"
]
}
]
"artifactRepositories": [
{
"tool": "AdoTool",
"name": "empb5-sonar",
"apps": [
"appXXXXtz"
]
}
]
"credentials" : {
"name": "devops_user",
"password": "devops_password"
}
}
출력:
{
"result":{
"status": "Success",
"details": "Onboarding request has been created. Please use the /status api and the onboarding request number to get the status of the request",
"onboardingRequestID": "IBE0001045",
"code": "202"
}
}
DevOps - POST /devops/onboarding/tool
서비스에서 비동기적으로 처리 DevOps 되는 온보딩 도구 이벤트를 만듭니다.
- 연결된 ServiceNow 인스턴스 내에 도구를 만듭니다.
- 도구에 연결
- 도구 구성 시도(연결에 성공한 경우에만)
- 도구를 검색합니다(연결에 성공한 경우에만)
이 엔드포인트에 대한 반환 결과는 요청이 게시되었는지 여부만 나타내며 연결된 도구가 만들어졌는지 여부는 나타내지 않습니다. 실제 도구 생성은 비동기식으로 처리됩니다. 도구 생성 및 기타 모든 작업의 상태를 가져오려면 / devops/onboarding/status 엔드포인트를 호출하고 이 엔드포인트에서 반환되는 파라미터를 onboardingRequestID 전달해야 합니다.
이 엔드포인트에 액세스하려면 관리자가 연결 및 자격 증명 별칭(CreateDevOpsTool)을 구성 DevOps 하여 인스턴스에서 도구를 설정해야 합니다. 자세한 내용은 DevOps 변경 속도 설치를 참조하십시오. 또한 호출 엔터티에는 devops.integration.user 역할이 있어야 합니다.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/onboarding/tool
기본 URL: / api/sn_devops/devops/onboarding/tool
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
| 이름 | 설명 |
|---|---|
| credentials | 필수 웹후크 생성에 사용할 자격 증명입니다. 도구는 생성된 웹후크를 사용하여 알림을 보냅니다. 데이터 유형: 객체 |
| credentials.name | 필수. ServiceNow 엔드포인트 요청을 하는 사용자의 식별자입니다. 사용자 [sys_user] 테이블에 있습니다. 이 사용자에게는 devops.integration.user 역할이 있어야 합니다. 버전 1.34.1부터 이 사용자는 sn_devops.admin 역할이 있어야 합니다. 데이터 유형: 문자열 |
| credentials.password | 필수 매개변수에 지정된 사용자의 암호입니다 credenitals.name . 데이터 유형: 문자열 |
| 도구 | 필수 연관된 ServiceNow 인스턴스 내에 생성할 도구를 정의하는 객체의 배열입니다. 단일 요청에서 하나 이상의 도구를 만들 수 있습니다. 데이터 유형: 배열 |
| tools.name | 필수 생성할 도구의 사용자 식별 이름 또는 레이블입니다. 이 이름은 서비스에서 도구를 DevOps 식별하는 데 사용됩니다. 데이터 유형: 문자열 |
| tools.password | Agile 도구를 제외하고 필수입니다. 도구에 액세스하는 데 사용할 암호입니다. 지원되는 인증은 기본 및 토큰입니다. OAuth는 지원되지 않습니다. 데이터 유형: 문자열 |
| tools.type | 필수 생성할 도구 유형(예: GitHub 또는 BitBucket)입니다. 지정된 값은 도구 통합 [sn_devops_tool_integration] 테이블의 도구 레이블 중 하나여야 합니다. 데이터 유형: 문자열 |
| tools.useMidServer | 도구가 를 통해 연결되는지 여부를 나타내는 플래그입니다 MID 서버. 유효한 값은 다음과 같습니다.
데이터 유형: 부울 |
| tools.username | Agile 도구를 제외하고 필수입니다. 이 끝점을 통해 도구에 액세스하는 데 사용할 사용자 이름입니다. 데이터 유형: 문자열 |
| 도구.url | Agile 도구를 제외하고 필수입니다. 생성할 도구의 URL입니다. 서비스는 DevOps 이 URL을 사용하여 도구와 통합합니다. 'Azure DevOps' 도구를 tools.url 사용하는 경우 ADO 조직 URL 또는 ADO 프로젝트 URL을 포함할 수 있습니다. ADO 조직 URL을 제공할 때 API는 지정된 조직 아래의 모든 프로젝트를 검색하고 프로젝트를 구성하지 않습니다. ADO 프로젝트 URL을 제공할 때 API는 프로젝트와 관련된 엔터티(예: 파이프라인, 리포지토리 및 계획)를 검색하고 개체가 있는 경우 credentials 프로젝트도 구성합니다. 프로젝트 구성을 건너뛰도록 API에 명시적으로 지시하려면 플래그 configureTool (type: boolean)를 데이터 유형: 문자열 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 컨텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 202 | 온보딩 요청이 성공적으로 생성되었습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 결과 | 온보딩 요청의 결과입니다. 데이터 유형: 객체 |
| 결과.코드 | HTTP 상태 코드입니다. 데이터 유형: 문자열 |
| 결과.상세 정보 | 온보딩 요청에 대한 자세한 메시지입니다. 데이터 유형: 문자열 |
| 결과.오류 | 발생한 오류에 대한 설명입니다. 데이터 유형: 객체 |
| 결과.오류.메시지 | 오류 메시지. 데이터 유형: 문자열 |
| result.onboardingRequestID | 온보딩 요청의 고유 식별자입니다. / devops/onboarding/status 엔드포인트를 호출할 때 이 값을 사용하여 연결된 도구 온보딩 프로세스의 상태를 확인합니다. 데이터 유형: 문자열 |
| result.status | 온보딩 요청의 상태(성공 또는 실패)입니다. 데이터 유형: 문자열 |
cURL 요청
다음 예제에서는 GitHub를 온보딩하는 방법을 보여 줍니다.
curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/tool" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-u "username":"password" \
-d {
"tool":[{
"name": "Primary GitHub",
"type": "GitHub",
"url": "https"//api.github.com",
"username": "username",
"password": "password",
"useMidServer": false
}]
"credentials" : {
"name": "devops_user",
"password": "devops_password"
}
}
{
"result":{
"status": "Success",
"details": "Onboarding request has been created. Please use the /status api and the onboarding request number to get the status of the request",
"onboardingRequestID": "IBE0001041",
"code": "202"
}
}
DevOps - POST /devops/orchestration/changeControl
콜백을 변경 제어 하에 있는 오케스트레이션 작업의 인스턴스에 등록합니다. 이 콜백 ServiceNow 은 변경 요청에 대한 결정이 내려지면 호출할 수 있습니다.
이 엔드포인트를 호출하기 전에 인스턴스에 오케스트레이션 작업이 생성되어 있어야 합니다 ServiceNow . Discovery를 통해 또는 엔드포인트를 호출하여 이 작업을 만들 수 있습니다 DevOps - POST /devops/orchestration/step매핑 . 또한 오케스트레이션 작업이 이전에 정의된 파이프라인 단계에 연결되어 있고 변경 제어가 활성화되어 있는지 확인해야 합니다(앱 스테이지 양식에서 변경 제어 옵션을 선택하여). 자세한 내용은 DevOps 변경 가속화를 참조하세요.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/orchestration/changeControl
기본 URL: / api/sn_devops/devops/orchestration/changeControl
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| toolId | 필수 DevOps 지정된 작업을 변경 제어에서 배치할 도구의 Sys_id입니다. 오케스트레이션 도구 sn_devops_orchestration_tool 테이블에 있습니다. 데이터 유형: 문자열 |
| 도구 유형 | 도구의 유형입니다. 유효한 값: "jenkins"와 같이 도구를 식별하는 모든 값입니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 콜백 URL | 필수 연결된 변경 요청 승인 프로세스가 완료되면 인스턴스가 콜백할 수 있는 ServiceNow URL입니다. 이 콜백은 승인 결과에 따라 파이프라인 실행을 계속하거나 계속하지 않도록 해야 합니다. 데이터 유형: 문자열 |
| changeRequestDetails | 변경 요청을 종결할 때 설정할 필드의 이름-값 쌍입니다. 이 객체는 다음을 제외한 변경 요청 기록의 모든 필드를 포함할 수 있습니다.
이러한 필드가 요청에 포함되어 있으면 엔드포인트에서 400 오류를 반환하고 변경 요청이 업데이트되지 않습니다. 또한 다른 필수 필드를 설정해야 하는 필드를 포함하고 해당 필드가 전송되지 않으면 나중에 파이프라인을 처리하는 동안 요청이 실패합니다. 이 실패는 다음과 같은 특정 변경 요청에 대한 오류 메시지와 함께 변경 요청의 작업 메모에 기록됩니다. <플랫폼에서 보낸 오류 메시지>. 변경 요청 및 관련 단계 실행을 취소하는 중입니다. 이 객체에 부울 매개변수를 setCloseCode 전달하여 연결된 변경 요청 기록에 종결 정보를 설정할지 여부를 지정할 수도 있습니다.
데이터 유형: 객체 |
| isMulti분기 | 오케스트레이션 도구가 Jenkins인 경우 프로젝트가 다중 분기 유형인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 부울 기본값: false |
| 오케스트레이션 작업 상세 정보 | 필수 오케스트레이션 작업에 대한 설명입니다. 데이터 유형: 객체 |
| orchestrationTaskDetails.message | 자유 형식의 문자 메시지입니다. 데이터 유형: 문자열 |
| orchestrationTaskDetails.triggerType | 필수 오케스트레이션 작업이 시작된 방식입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 문자열 |
| orchestrationTaskDetails.upstreamTaskExecutionURL | 업스트림으로 설정된 경우 triggerType 필요합니다. 업스트림 작업 실행 URL입니다. 예: https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/ 데이터 유형: 문자열 |
| 오케스트레이션 태스크URL | 필수 콜백을 작성할 오케스트레이션 작업의 URL입니다. 예: https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/ 데이터 유형: 문자열 |
| 부모 노드 | 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 항목인 경우 이 값에는 상위 노드 세부 정보가 포함됩니다. 데이터 유형: 객체 |
| parentNode.id | 상위 노드의 고유 ID입니다. Jenkins에서 이 값은 파이프라인 단계 ID에 해당합니다. 데이터 유형: 문자열 |
| parentNode.name | 상위 노드의 이름입니다. Jenkins에서 이 값은 파이프라인 단계 이름에 해당합니다. 데이터 유형: 문자열 |
| parentNode.upstreamStageName | 상위 노드의 업스트림 오케스트레이션 작업의 이름입니다. Jenkins에서 이 값은 파이프라인 단계 이름에 해당합니다. 데이터 유형: 문자열 |
| parentNode.upstreamTaskExecutionURL | 상위 노드의 업스트림 작업 실행 URL입니다. Jenkins에서 이 값은 파이프라인 단계 실행 URL에 해당합니다. 데이터 유형: 문자열 |
| parentStageName | 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 항목인 경우 상위 오케스트레이션 작업의 이름입니다. 데이터 유형: 문자열 |
| 부모 스테이지URL | 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 항목인 경우 상위 오케스트레이션 작업의 URL입니다. 데이터 유형: 문자열 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. 지원되는 유형은 application/json 또는 application/xml입니다. 기본값: application/json |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 컨텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 201 | 요청이 성공적으로 완료되었습니다. |
| 400 | 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다. |
| 401 | 인증이 잘못되었거나 누락되었습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 변경 제어 | 오케스트레이션 작업에 변경 제어가 적용되는지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
cURL 요청
curl -X POST "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeControl?toolId=f0ca45679323008b52f3b457415ae6&toolType=jenkins"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
\"orchestrationTaskURL\":\"https://jenkins.mycompany.com:8080/orchestration task/Mobile-Platform-deploy/\",
\"callbackURL\":\"https://jenkins.mycompany.com:8080/sn-devops/964aca59-0cae-4d9b-a36d-5929f426cf31\",
\"orchestrationTaskDetails\":{
\"message\":\"Started by upstream project \\\"Mobile-Platform-test\\\" build number 40\",
\"triggerType\":\"upstream\",
\"upstreamTaskExecutionURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/\"}
}"
응답 본문입니다.
{
"result": {
"changeControl": true,
"status": "Success"
}
}
cURL 요청
이 예제에서는 변경 요청을 닫을 때 객체의 changeRequestDetails 필드를 전달하는 방법을 보여 줍니다.
curl -X POST "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeControl?toolId=f0ca45679323008b52f3b457415ae6&toolType=jenkins"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
"callbackURL":"http://192.168.0.4:3000/jenkins/sn-devops/pipeline_839b7605-b98d-4831-bc87-96829de7da37",
"orchestrationTaskURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests#deploy/",
"isMultiBranch":"false",
"orchestrationTaskName":"java_sample_tests#deploy",
"orchestrationTaskDetails":{
"triggerType":"upstream",
"upstreamTaskExecutionURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests/129/execution/node/35/wfapi/describe",
"taskExecutionURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests/129/execution/node/50/wfapi/describe"
},
"changeRequestDetails":{
"setCloseCode":false,
"attributes":{
"sys_created_by":"1832fbe1d701120035ae23c7ce610369",
"sys_updated_by":"56826bf03710200044e0bfc8bcbe5dca",
"requested_by":{
"name":"test user1"
},
"watch_list":[
{
"name":"test user1"
},
{
"name":"test user2"
},
{
"name":"Alejandra Prenatt"
},
"56826bf03710200044e0bfc8bcbe5dca"
],
"work_notes_list":[
"56826bf03710200044e0bfc8bcbe5dca",
"46c6f9efa9fe198101ddf5eed9adf6e7",
"d8f57f140b20220050192f15d6673a98"
],
"assigned_to":"1832fbe1d701120035ae23c7ce610369",
"category":"Service",
"sys_created_on":"2021-02-09 18:58:41",
"priority":"2",
}
}
}"
응답 본문입니다.
{
"result": {
"changeControl": true,
"status": "Success"
}
}
DevOps - POST /devops/orchestration/step매핑
전달되는 정보가 오케스트레이션 작업을 만드는 데 유효하고 이전에 만든 단계에 연결하는 데 유효한지 확인합니다. 둘 다 유효하면 오케스트레이션 작업을 만들고 연결합니다.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/orchestration/stepMapping
기본 URL: / api/sn_devops/devops/orchestration/stepMapping
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| toolId | 필수 오케스트레이션 도구의 Sys_id입니다. Orchestration Tool [sn_devops_orchestration_tool] 테이블에 있습니다. 데이터 유형: 문자열 |
| 도구 유형 | 필수 도구의 유형입니다. 유효한 값은 다음과 같습니다. jenkins 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 브랜치 이름 | 오케스트레이션 작업과 연결된 분기의 이름입니다. 데이터 유형: 문자열 |
| isMulti분기 | 오케스트레이션 도구가 Jenkins인 경우 프로젝트가 다중 분기 유형인지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 부울 기본값: false |
| 부모 노드 | 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 항목인 경우 이 값에는 상위 노드 세부 정보가 포함됩니다. 데이터 유형: 객체 |
| parentNode.id | 상위 노드의 고유 ID입니다. Jenkins에서 이 값은 파이프라인 단계 ID에 해당합니다. 데이터 유형: 문자열 |
| parentNode.name | 상위 노드의 이름입니다. Jenkins에서 이 값은 파이프라인 단계 이름에 해당합니다. 데이터 유형: 문자열 |
| parentNode.upstreamStageName | 상위 노드의 업스트림 오케스트레이션 작업의 이름입니다. Jenkins에서 이 값은 파이프라인 단계 이름에 해당합니다. 데이터 유형: 문자열 |
| parentNode.upstreamTaskExecutionURL | 상위 노드의 업스트림 작업 실행 URL입니다. Jenkins에서 이 값은 파이프라인 단계 실행 URL에 해당합니다. 데이터 유형: 문자열 |
| parentStageName | 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 항목인 경우 상위 오케스트레이션 작업의 이름입니다. 데이터 유형: 문자열 |
| 부모 스테이지URL | 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 항목인 경우 상위 오케스트레이션 작업의 URL입니다. 데이터 유형: 문자열 |
| 오케스트레이션 작업 이름 | 필수 오케스트레이션 작업의 이름입니다. 에서 참조하는 것과 동일한 작업입니다 orchestrationTaskURL. 데이터 유형: 문자열 |
| 오케스트레이션 태스크URL | 필수 오케스트레이션 작업의 URL입니다. 예: https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/ 데이터 유형: 문자열 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 컨텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 201 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 400 | 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다. |
| 401 | 승인되지 않았습니다. 사용자 자격 증명이 잘못되었거나 전달되지 않았습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수
| 요소 | 설명 |
|---|---|
| 상태 | 검증이 성공했는지 여부를 나타내는 플래그입니다. 데이터 유형: 부울 |
| step유효 | 전송된 정보가 유효한지 여부를 나타내는 플래그입니다. 데이터 유형: 부울 |
샘플 cURL 요청
curl -X POST "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/stepMapping?toolId=f0ca45679323008b52f3b457415ae6&toolType=jenkins"
-H "Accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
\"orchestrationTaskURL\":\" http://127.0.0.1:8090/jenkins/job/CorpSite/job/primary#deploy PROD/\",
\"orchestrationTaskName\":\" primary#deploy PROD\"
}"
정보가 유효한 경우의 결과입니다.
{
"result": {
"stepValid": true,
"status": "Success"
}
}
정보가 잘못된 경우의 결과입니다.
{
"result": {
"stepValid": false,
"status": "Success"
}
}
DevOps - /devops/package/registration 게시
오케스트레이션 도구를 사용하여 지정된 아티팩트 버전을 포함하는 새 아티팩트 패키지를 만들 수 있습니다.
아티팩트 패키지는 변경 승인자가 변경 요청을 볼 때 변경 승인자에 대한 커밋을 표시하는 데 사용됩니다. 커밋이 변경 요청에 표시되려면 변경 승인이 포함된 단계 앞의 단계에서 패키지를 만들어야 합니다.
패키지 등록 요청에 포함된 모든 아티팩트 버전은 DevOps에 이미 등록되어 있어야 합니다. 아티팩트 버전 등록에 대한 자세한 내용은 을 참조하십시오 DevOps - /devops/artifact/registration 게시.
- artifacts.pipelineName 또는 artifacts.projectName
- artifacts.taskExecutionNumber
- artifacts.stageName
- artifacts.branchName
아티팩트 패키지에 대한 자세한 내용은 릴리스에 DevOps 변경 가속화 사용을 참조하세요.
URL 형식
버전이 지정된 URL: / api/sn_devops/{api_version}/devops/package/registration
기본 URL: / api/sn_devops/devops/package/registration
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| orchestrationToolId | 필수 아티팩트 패키지와 연결된 오케스트레이션 도구의 Sys_id입니다. Orchestration Tool [sn_devops_orchestration_tool] 테이블에 있습니다. 엔드포인트는 이 정보를 사용하여 작업 실행 정보를 찾습니다. 데이터 유형: 문자열 |
| toolId | 아티팩트 패키지와 연결된 아티팩트 도구의 Sys_id입니다. 아티팩트 도구 [sn_devops_artifact_tool] 테이블에 있습니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 아티팩트 | 최소 한 개의 항목이 필요합니다. 각 객체가 패키지에 포함할 아티팩트 버전을 고유하게 식별하는 객체의 배열입니다. 데이터 유형: 배열 |
| artifacts.branchName | 이 전달되지 않고 다중 분기 설정인 경우 artifact.version 필수입니다. 아티팩트 버전이 저장되는 분기의 이름입니다. 데이터 유형: 문자열 최대 길이: 160 기본값: Null |
| artifacts.name | 필수 아티팩트 파일 이름입니다. 데이터 유형: 문자열 최대 길이: 160자 |
| artifacts.pipelineName | 및 전달되지 않은 경우 artifact.versionartifacts.projectName 필요합니다. 파이프라인 이름입니다. 데이터 유형: 문자열 최대 길이: 160 기본값: Null |
| artifacts.projectName | 및 전달되지 않은 경우 artifact.versionartifact.pipelineName 필요합니다. 자유 형식 프로젝트 이름입니다. 데이터 유형: 문자열 최대 길이: 160 기본값: Null |
| artifacts.repositoryName | 필수 아티팩트 리포지토리 이름입니다. 데이터 유형: 문자열 최대 길이: 160자 |
| artifacts.stageName | 전달되지 않은 경우 artifact.version 필수입니다. 스테이지 이름입니다. 데이터 유형: 문자열 최대 길이: 160 기본값: Null |
| artifacts.taskExecutionNumber | 전달되지 않은 경우 artifact.version 필수입니다. 파이프라인 실행 번호입니다. 데이터 유형: 문자열 기본값: Null |
| 아티팩트.버전 | 빌드 상세 정보가 제공되지 않은 경우 필요합니다. 아티팩트의 버전입니다. 데이터 유형: 문자열 형식: <메이저>.<마이너> 기본값: Null |
| 브랜치 이름 | 다중 분기 프로젝트인 경우 필요합니다. 아티팩트가 저장되는 리포지토리의 분기 이름입니다. 데이터 유형: 문자열 최대 길이: 200자 기본값: Null |
| 이름 | 필수 패키지의 이름입니다. 데이터 유형: 문자열 최대 길이: 160자 |
| pipelineName | 전달되지 않은 경우 projectName 필수입니다. 파이프라인 이름입니다. 데이터 유형: 문자열 최대 길이: 160자 기본값: Null |
| projectName | 전달되지 않은 경우 pipelineName 필수입니다. 자유 형식 프로젝트 이름입니다. 데이터 유형: 문자열 최대 길이: 160 기본값: Null |
| 스테이지 이름 | 전달되면 pipelineName 필수입니다. 스테이지 이름입니다. 데이터 유형: 문자열 최대 길이: 160자 기본값: Null |
| taskExecutionNumber | 필수 파이프라인 실행 번호입니다. 데이터 유형: 문자열 최대 길이: 128자 기본값: Null |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 컨텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공. 응답 본문 성공. |
| 201 | 만든. 응답 본문 성공. |
| 400 | 잘못된 요청입니다. 요청 URI가 시스템의 API와 일치하지 않거나 알 수 없는 이유로 작업이 실패했습니다. 잘못된 헤더로 인해 이 오류가 발생할 수도 있습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| response | 패키지 등록 요청의 결과입니다. 데이터 유형: 객체 |
| response.artifact_register_requests | 처리를 완료하지 않고 아티팩트 준비 요청 [sn_devops_artifact_staging] 테이블에 저장된 등록 요청에 대한 결과입니다. 데이터 유형: 객체 |
| response.artifact_register_requests.만들기 | 요청에서 패키지 준비 기록을 생성한 경우 생성된 준비 기록의 sys_ids 목록입니다. 데이터 유형: 배열 |
| response.artifact_register_requests.create.id | 요청에 의해 생성된 패키지 준비 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.artifact_register_requests.찾음 | 연결된 패키지 준비 기록이 이미 있는 경우 기존 기록의 sys_ids 목록입니다. 주:
기존 패키지는 수정되지 않습니다. 데이터 유형: 배열 |
| response.artifact_register_requests.found.id | 기존 패키지 준비 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.artifact_register_requests.업데이트 | 현재 사용되지 않습니다. |
| response.artifact_register_requests.update.id | 현재 사용되지 않습니다. |
| response.sn_devops_m2m_artifact_version_package | 패키지와 연결된 각 아티팩트 버전에 대한 결과입니다. 데이터 유형: 객체 |
| response.sn_devops_m2m_artifact_version_package.만들기 | 요청에서 아티팩트 버전을 패키지에 연결하는 기록을 생성한 경우 아티팩트 버전 패키지 [sn_devops_m2m_artifact_version_package] 테이블에 생성된 기록의 sys_ids 목록입니다. 데이터 유형: 배열 |
| response.sn_devops_m2m_artifact_version_package.create.id | 요청에 의해 생성된 패키지에 대한 아티팩트 버전 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.sn_devops_m2m_artifact_version_package.찾음 | 링크 기록이 패키지에 대한 아티팩트 버전 테이블에 이미 있는 경우 기존 링크 기록의 sys_ids 목록입니다. 주:
기존 기록은 수정되지 않습니다. 데이터 유형: 배열 |
| response.sn_devops_m2m_artifact_version_package.found.id | 패키지에 대한 기존 아티팩트 버전 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.sn_devops_m2m_artifact_version_package.업데이트 | 현재 사용되지 않습니다. |
| response.sn_devops_m2m_artifact_version_package.update.id | 현재 사용되지 않습니다. |
| response.sn_devops_package | 요청 처리 중에 조작된 패키지 [sn_devops_package] 테이블의 패키지 기록에 대한 결과입니다. 데이터 유형: 객체 |
| response.sn_devops_package.만들기 | 요청에 의해 패키지 기록이 생성된 경우 생성된 기록의 sys_ids 목록입니다. 데이터 유형: 배열 |
| response.sn_devops_package.create.id | 요청에 의해 생성된 패키지 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.sn_devops_package.찾음 | 등록 요청에 사용된 패키지 기록이 이미 있는 경우 기존 기록의 sys_ids 목록입니다. 주:
기존 기록은 수정되지 않습니다. 데이터 유형: 배열 |
| response.sn_devops_package.found.id | 요청에서 참조하는 기존 패키지 기록의 Sys_id입니다. 데이터 유형: 문자열 |
| response.sn_devops_package.업데이트 | 현재 사용되지 않습니다. |
| response.sn_devops_package.update.id | 현재 사용되지 않습니다. |
| 상태 | 등록 요청의 상태입니다. 가능한 값:
데이터 유형: 문자열 |
샘플 cURL 요청
# Example passing the artifact version
curl -X POST "https://instance.servicenow.com/api/sn_devops/devops/package/registration?toolId=f0ca45679323008b52f3b457415ae6"\
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{\
"name": "sentimentpackage",\
"artifacts": [\
{\
"name": "sa-web.jar",\
"repositoryName": "services-1031",\
"version": "3.1"\
},\
{\
"name": "sa-frontend.jar",\
"repositoryName": "services-1031",\
"version": "9.2"\
}\
],\
"pipelineName": "spring-boot-app",\
"taskExecutionNumber": "160",\
"stageName": "Build",\
"branchName": "primary"\
}"
응답 - 패키지가 작성됨:
"result": {
"status": "Success",
"response": {
"sn_devops_package": {
"create": [
{
"id": "0d57367a532e00107109ddeeff7b122a"
}
],
"update": [],
"found": []
},
"sn_devops_m2m_artifact_version_package": {
"create": [
{
"id": "c957367a532e00107109ddeeff7b122b"
},
{
"id": "8157367a532e00107109ddeeff7b122c"
}
],
"update": [],
"found": []
}
},
"responseCode": 201
}
}
샘플 cURL 요청
# Example passing the build details
curl -X POST "https://instance.servicenow.com/api/sn_devops/devops/package/registration?toolId=f0ca45679323008b52f3b457415ae6"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{\
"name": "sentimentpackage",\
"artifacts": [\
{\
"name": "sa-web.jar",\
"repositoryName": "services-1031",\
"pipelineName": "spring-boot-app",\
"taskExecutionNumber": "160",\
"stageName": "Build",\
"branchName": "primary"\
},\
{\
"name": "sa-frontend.jar",\
"repositoryName": "services-1031",\
"pipelineName": "spring-boot-fe",\
"taskExecutionNumber": "991",\
"stageName": "Build",\
"branchName": "primary"\
}\
],\
"pipelineName": "spring-boot-app",\
"taskExecutionNumber": "160",\
"stageName": "Build",\
"branchName": "primary"\
}"
응답 - 요청이 스테이징된 패키지를 만들었습니다.
{
"result": {
"status": "Success",
"response": {
"artifact_register_requests": {
"create": [
{
"id": "4628f276532e00107109ddeeff7b1245"
},
{
"id": "4e28f276532e00107109ddeeff7b1245"
},
{
"id": "ce28f276532e00107109ddeeff7b1245"
}
],
"update": [],
"found": []
}
},
"responseCode": 201
}
}
DevOps - POST /devops/tool/{capability}
전달된 페이로드를 인바운드 이벤트[sn_devops_inbound] 테이블에 게시하여 사용자 지정 DevOps 하위 플로우에서 처리하도록 합니다.
전달 capability 된 매개 변수로 지정된 도구의 연결된 웹후크에서 이 엔드포인트를 호출합니다. 전달된 페이로드를 처리하기 위한 사용자 지정 하위 플로우가 ServiceNow 인스턴스에 이미 정의되어 있어야 합니다. 미리 정의된 일정에 따라 마스터 플로우는 DevOps 인바운드 이벤트 테이블에서 웹후크 이벤트 정보를 선택하고 사용자 지정 하위 플로우로 전달한 다음 페이로드를 처리합니다. 사용자 지정 하위 플로우 생성에 대한 자세한 내용은 DevOps 하위 플로우 생성 섹션을 참조하세요.
테스트 도구 통합에 대한 자세한 내용은 DevOps 테스트 도구 통합을 참조하세요.
사용자 지정 DevOps 도구에 대해 이 엔드포인트를 호출하기 전에 sn_devops에서 handleTool () 및 getNativeIdForOrchestrationTask() 메서드를 구현해야 합니다 . DevOpsOrchestrationToolIntegrationHandler입니다. 자세한 내용은 DevOpsOrchestrationToolIntegrationHandler - 범위 지정됨DevOpsOrchestrationToolIntegrationHandler - 범위 지정을 참조하십시오.
URL 형식
버전이 지정된 URL: /api/sn_devops/{api_version}/ devops/tool/{capability}
기본 URL: / api/sn_devops/devops/tool/{capability}
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 역량 | 인바운드 이벤트 테이블에 저장할 페이로드에 전달하는 도구의 유형입니다. 유효한 값(대/소문자 구분 안 함):
데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| orchestrationToolId | 옵션입니다. 관련 파이프라인이 속한 오케스트레이션 도구의 sys_id입니다. orchestrationToolId 요청 매개변수가 test 또는 softwarequality로 설정된 경우 capability 필요합니다.toolId 는 orchestrationToolId가 없는 경우 기본 오케스트레이션 도구입니다. |
| 테스트 유형 | 테스트가 설정된 경우 capability 필수입니다. 실행 중인 테스트의 유형입니다. 이 매개변수의 유효한 값은 테스트 종류 [sn_devops_test_type] 테이블의 테스트 유형 열에 있는 값입니다. |
| toolId | 필수 끝점이 호출되는 도구의 Sys_id입니다. |
| 이름 | 설명 |
|---|---|
| 도구에 따라 다름 | 이 도구는 페이로드의 내용을 결정합니다. |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 컨텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 201 | 요청이 성공적으로 완료되었습니다. |
| 400 | 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다. |
| 401 | 인증이 잘못되었거나 누락되었습니다. |
| 500 | 내부 서버 오류입니다. 서버 쪽 코드에서 논리 오류가 발생했습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 상세 정보 | 모든 오류 조건에 대한 항목입니다. 데이터 유형: 객체 |
| details.errors | 단일 오류에 대한 설명입니다. 데이터 유형: 배열 |
| details.errors.message | 자세한 오류 메시지입니다.
데이터 유형: 문자열 |
| 상태 | "성공" 또는 "데이터 오류"와 같은 응답 상태입니다. 데이터 유형: 문자열 |
| sys_id | 인바운드 이벤트 테이블에서 생성된 기록의 Sys_id입니다. 데이터 유형: 문자열 |
아티팩트에 대한 샘플 cURL 요청
curl -X POST "https://instance.service-now.com/api/sn_devops/v1/tool/artifact?toolId=3b59043ee4ea556e6850d61bc1a77e8a"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
"artifacts": [
{
"name": "sp-boot-app",
"version": "1.320",
"semanticVersion": "1.320.0",
"repositoryName": "sp-boot-app-repo"
}
],
"pipelineName": "spring-boot-app-gitea",
"taskExecutionNumber": "320",
"stageName": "Build"
}"
성공 응답:
{
"result": {
"status": "Success",
"sysId": "33c57245dbf68410bc8cdd384b961966"
}
}
아티팩트에 대한 샘플 cURL 요청
curl -X POST "https://instance.service-now.com/api/sn_devops/v1/tool/artifact?toolId=3b59043ee4ea556e6850d61bc1a77e8a"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{\
"timestamp": "2020-01-11T00:52:01.541+0000",\
"nodeId": "137BEECF-E1BF7BC1-90212D1C-0749A6D4-BC670F6B",\
"initiator": "admin/172.17.0.1",\
"repositoryName": "maven-releases29",\
"action": "CREATED",\
"component": {\
"id": "2a59043ed2ea556e6850d61bc1a77c7b",\
"componentId": "c3AtYm9vdC1hcHAtcmVwbzoyYTU5MDQzZWQyZWE1NTZlNjg1MGQ2MWJjMWE3N2M3Yg",\
"format": "maven2",\
"name": "sentiment-analysis-web",\
"group": "com.spboot",\
"version": "1.1"\
}\
}"
오류 응답:
{
"result": {
"status": "Data Error",
"details": {
"errors": [
{
"message": "Unsupported capability type"
}
]
}
}
}
코드에 대한 샘플 cURL 요청
curl "https://instance.service-now.com/api/sn_devops/devops/tool/code?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"commits": [
{
"totalFiles": 1,
"nativeIdList": [
"49",
"50"
],
"id": "f14732d0cc854ce3ec374b97ecd4ec3c383386cd",
"url": "https://dev.azure.com/xyzabcd/adoTests/_git/DeployableRepo/commit/f14732d0cc854ce3ec374b97ecd4ec3c383386cd",
"apiURL": "https://dev.azure.com/xyzabcd/9fe32a65-60a5-46fe-bc8d-11a92bf059f9/_apis/git/repositories/8d7ba019-1739-431c-beb4-6025dd41f1ac/commits/f14732d0cc854ce3ec374b97ecd4ec3c383386cd",
"message": "Fixes #49 and #50",
"committedDate": "2022-03-23T11:59:46Z",
"committer": {
"email": "xyz.abcd@email.com"
},
"details": [
{
"action": "edit",
"changes": "",
"file": "/LICENSE",
"additions": 0,
"deletions": 0,
"totalChanges": 0
}
]
}
],
"repository": {
"id": "8d7ba019-1739-431c-beb4-6025dd41f1ac",
"name": "DeployableRepo",
"url": "https://dev.azure.com/xyzabcd/adoTests/_git/DeployableRepo"
},
"branch": {
"name": "refs/heads/master",
"url": "https://dev.azure.com/xyzabcd/adoTests/_git/DeployableRepo?version=GBmaster"
}
}" \
--user 'username':'passsword'
성공 응답:
{
"result": {
"status": "Success",
"sysId: "1f8e586b879e85100f71cbfc0ebb3526"
}
}
오케스트레이션에 대한 샘플 cURL 요청
curl "https://instance.service-now.com/api/sn_devops/devops/tool/orchestration?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"toolId": "d450f5c887e609100f71cbfc0ebb35e5",
"buildNumber": 5676,
"nativeId": "adoTests/DeployableRepo#deploy#5676",
"pipelineId": "2",
"name": "adoTests/DeployableRepo#deploy",
"id": "adoTests/DeployableRepo#deploy#5676",
"url": "https://dev.azure.com/xyzabcd/_build/results?buildId=5676#deploy/",
"previousAttemptUrl": "",
"attemptNumber": 1,
"pipelineExecutionUrl": "https://dev.azure.com/xyzabcd/_build/results?buildId=5676",
"orchestrationTaskUrl": "https://dev.azure.com/xyzabcd/adoTests/_build?name=DeployableRepo#deploy",
"orchestrationTaskName": "adoTests/DeployableRepo #deploy",
"orchestrationTask": {
"orchestrationTaskName": "adoTests/DeployableRepo#deploy",
"toolId": "d450f5c887e609100f71cbfc0ebb35e5",
"orchestrationTaskURL": "https://dev.azure.com/xyzabcd/adoTests/_build?name=DeployableRepo#deploy",
"stageName": "deploy"
},
"upstreamTaskUrl": [],
"result": "building",
"startDateTime": "2022-03-23 12:01:31",
"log": "https://dev.azure.com/xyzabcd/adoTests/_build/results?buildId=5676&view=logs&j=5264e576-3c6f-51f6-f055-fab409685f20",
"logUrl": "https://dev.azure.com/xyzabcd/adoTests/_build/results?buildId=5676&view=logs&j=5264e576-3c6f-51f6-f055-fab409685f20"
}" \
--user 'username':'password'
성공 응답:
{
"result": {
"status": "Success",
"sysId: "37dfd8a7879e85100f71cbfc0ebb35c0"
}
}
계획에 대한 샘플 cURL 요청
curl "https://instance.service-now.com/api/sn_devops/devops/tool/plan?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"id": "1053",
"type": "bug",
"state": "planned",
"shortDescription": "Title - Work Item test in 1.33.3",
"createdDateTime": "2022-03-23T10:45:53.02Z",
"parentId": "",
"url": "https://dev.azure.com/xyzabcd/9fe32a65-60a5-46fe-bc8d-11a92bf059f9/_workitems/edit/1053",
"version": {
"id": "adoTests",
"shortDescription": "adoTests",
"createdDateTime": "2022-03-23T10:46:12.355Z",
"url": "https://dev.azure.com/xyzabcd/adoTests",
"app": {
"id": "adoTests",
"shortDescription": "adoTests",
"createdDateTime": "2022-03-23T10:46:12.355Z",
"url": "https://dev.azure.com/xyzabcd/9fe32a65-60a5-46fe-bc8d-11a92bf059f9/_workitems/edit/1053"
}
},
"app": {
"id": "adoTests",
"shortDescription": "adoTests",
"createdDateTime": "2022-03-23T10:46:12.355Z",
"url": "https://dev.azure.com/xyzabcd/adoTests"
},
"native_type": "Issue",
"native_state": "To Do",
"assignedTo": {
"name": "Xyz Abcd",
"userName": "xyz.abcd@email.com",
"id": "84c92fcd-e08b-6a5f-a8a6-ccda27055560",
"email": "xyz.abcd@email.com"
},
"createdBy": {
"name": "Xyz Abcd",
"userName": "xyz.abcd@email.com",
"id": "84c92fcd-e08b-6a5f-a8a6-ccda27055560",
"email": "xyz.abcd@email.com"
}
}" \
--user 'username':'password'
성공 응답:
{
"result": {
"status": "Success",
"sysId: "533020eb879e85100f71cbfc0ebb3591"
}
}
테스트에 대한 샘플 cURL 요청
curl "https://instance.service-now.com/api/sn_devops/devops/tool/test?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"attemptNumber": 1,
"blockedTests": 0,
"buildNumber": 675,
"duration": 0.079,
"failedTests": 0,
"finishTime": "2022-03-23T12:02:25.957Z",
"name": "adoTests/DeployableRepo/Test #675-2982",
"passedTests": 20,
"pipelineName": "adoTests/DeployableRepo",
"skippedTests": 0,
"stageName": "Test",
"startTime": "2022-03-23T12:02:24.36Z",
"taskExecutionUrl": "https://dev.azure.com/xyzabcd/adoTests/_build/results?buildId=675#Test/",
"totalTests": 20,
"url": "https://dev.azure.com/xyzabcd/adoTests/_TestManagement/Runs?runId=2982&_a=runCharts"
}" \
--user 'username':'password'
성공 응답:
{
"result": {
"status": "Success",
"sysId: "fd3fdc6b879e85100f71cbfc0ebb356a"
}
}
DevOps - /devops/tool/event/{sn_tool_id} 게시
전달된 페이로드 GitHub를 , Jira, 또는 Bitbucket 이벤트[sn_devops_event] 테이블에 게시하여 미리 구축된 하위 플로우로 처리하도록 합니다.
- DevOps와 GitHub 통합
- DevOps와 Jira 통합
- DevOps와 Bitbucket 통합
, Jira, 또는 Bitbucket를 제외한 GitHub다른 도구의 이벤트를 처리하려면 끝점을 DevOps - POST /devops/tool/{capability} 대신 사용합니다.
URL 형식
버전이 지정된 URL: /api/sn_devops/{api_version}/ devops/tool/event/{sn_tool_id}
기본 URL: / api/sn_devops/devops/tool/event/{sn_tool_id}
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| sn_tool_id | 요청에 사용할 도구의 Sys_id입니다. Devops 도구 [sn_devops_tool] 테이블에 있습니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 없음 |
| 이름 | 설명 |
|---|---|
| 도구에 따라 다름 | 이 도구는 페이로드의 내용을 결정합니다. 페이로드는 도구에서 웹후크 정보 아래에 있습니다. |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 컨텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 201 | 요청이 성공적으로 완료되었습니다. |
| 400 | 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다. |
| 401 | 인증이 잘못되었거나 누락되었습니다. |
| 500 | 내부 서버 오류입니다. 서버 쪽 코드에서 논리 오류가 발생했습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 결과 | 응답 상태입니다. 가능한 값:
데이터 유형: 문자열 |
cURL 요청
GitHub
curl "https://instance.service-now.com/api/sn_devops/devops/tool/event/46a07b2f471e011028c23a34846d43b2" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"ref": "refs/heads/master",
"before": "59078a17cad1f4129754971c808d6c399b6141a5",
"after": "b7957bab20835449c4d597fee24075a9a5a2c099",
"repository": {
"id": 252146476,
"node_id": "MDEwOlJlcG9zaXRvcnkyNTIxNDY0NzY=",
"name": "test",
"full_name": "Xyz002/test",
"private": false,
"owner": {
"name": "Xyz002",
"email": "62993516+Xyz002@users.noreply.github.com",
"login": "Xyz002",
"id": 62993516,
"node_id": "MDQ6VXNlcjYyOTkzNTE2",
"avatar_url": "https://avatars.githubusercontent.com/u/62993516?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Xyz002",
"html_url": "https://github.com/Xyz002",
"followers_url": "https://api.github.com/users/Xyz002/followers",
"following_url": "https://api.github.com/users/Xyz002/following{/other_user}",
"gists_url": "https://api.github.com/users/Xyz002/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Xyz002/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Xyz002/subscriptions",
"organizations_url": "https://api.github.com/users/Xyz002/orgs",
"repos_url": "https://api.github.com/users/Xyz002/repos",
"events_url": "https://api.github.com/users/Xyz002/events{/privacy}",
"received_events_url": "https://api.github.com/users/Xyz002/received_events",
"type": "User",
"site_admin": false
},
"html_url": "https://github.com/Xyz002/test",
"description": null,
"fork": false,
"url": "https://github.com/Xyz002/test",
"forks_url": "https://api.github.com/repos/Xyz002/test/forks",
"keys_url": "https://api.github.com/repos/Xyz002/test/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/Xyz002/test/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/Xyz002/test/teams",
"hooks_url": "https://api.github.com/repos/Xyz002/test/hooks",
"issue_events_url": "https://api.github.com/repos/Xyz002/test/issues/events{/number}",
"events_url": "https://api.github.com/repos/Xyz002/test/events",
"assignees_url": "https://api.github.com/repos/Xyz002/test/assignees{/user}",
"branches_url": "https://api.github.com/repos/Xyz002/test/branches{/branch}",
"tags_url": "https://api.github.com/repos/Xyz002/test/tags",
"blobs_url": "https://api.github.com/repos/Xyz002/test/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/Xyz002/test/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/Xyz002/test/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/Xyz002/test/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/Xyz002/test/statuses/{sha}",
"languages_url": "https://api.github.com/repos/Xyz002/test/languages",
"stargazers_url": "https://api.github.com/repos/Xyz002/test/stargazers",
"contributors_url": "https://api.github.com/repos/Xyz002/test/contributors",
"subscribers_url": "https://api.github.com/repos/Xyz002/test/subscribers",
"subscription_url": "https://api.github.com/repos/Xyz002/test/subscription",
"commits_url": "https://api.github.com/repos/Xyz002/test/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/Xyz002/test/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/Xyz002/test/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/Xyz002/test/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/Xyz002/test/contents/{+path}",
"compare_url": "https://api.github.com/repos/Xyz002/test/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/Xyz002/test/merges",
"archive_url": "https://api.github.com/repos/Xyz002/test/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/Xyz002/test/downloads",
"issues_url": "https://api.github.com/repos/Xyz002/test/issues{/number}",
"pulls_url": "https://api.github.com/repos/Xyz002/test/pulls{/number}",
"milestones_url": "https://api.github.com/repos/Xyz002/test/milestones{/number}",
"notifications_url": "https://api.github.com/repos/Xyz002/test/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/Xyz002/test/labels{/name}",
"releases_url": "https://api.github.com/repos/Xyz002/test/releases{/id}",
"deployments_url": "https://api.github.com/repos/Xyz002/test/deployments",
"created_at": 1585737871,
"updated_at": "2022-01-04T14:37:36Z",
"pushed_at": 1648103939,
"git_url": "git://github.com/Xyz002/test.git",
"ssh_url": "git@github.com:Xyz002/test.git",
"clone_url": "https://github.com/Xyz002/test.git",
"svn_url": "https://github.com/Xyz002/test",
"homepage": null,
"size": 1378,
"stargazers_count": 0,
"watchers_count": 0,
"language": "Java",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 2,
"license": null,
"allow_forking": true,
"is_template": false,
"topics": [],
"visibility": "public",
"forks": 0,
"open_issues": 2,
"watchers": 0,
"default_branch": "master",
"stargazers": 0,
"master_branch": "master"
},
"pusher": {
"name": "Xyz002",
"email": "62993516+Xyz002@users.noreply.github.com"
},
"sender": {
"login": "Xyz002",
"id": 62993516,
"node_id": "MDQ6VXNlcjYyOTkzNTE2",
"avatar_url": "https://avatars.githubusercontent.com/u/62993516?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/Xyz002",
"html_url": "https://github.com/Xyz002",
"followers_url": "https://api.github.com/users/Xyz002/followers",
"following_url": "https://api.github.com/users/Xyz002/following{/other_user}",
"gists_url": "https://api.github.com/users/Xyz002/gists{/gist_id}",
"starred_url": "https://api.github.com/users/Xyz002/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/Xyz002/subscriptions",
"organizations_url": "https://api.github.com/users/Xyz002/orgs",
"repos_url": "https://api.github.com/users/Xyz002/repos",
"events_url": "https://api.github.com/users/Xyz002/events{/privacy}",
"received_events_url": "https://api.github.com/users/Xyz002/received_events",
"type": "User",
"site_admin": false
},
"created": false,
"deleted": false,
"forced": false,
"base_ref": null,
"compare": "https://github.com/Xyz002/test/compare/59078a17cad1...b7957bab2083",
"commits": [
{
"id": "b7957bab20835449c4d597fee24075a9a5a2c099",
"tree_id": "fa8d699762ec0a25868fa1ab4d299da392f0a974",
"distinct": true,
"message": "updated this file",
"timestamp": "2022-03-24T12:08:59+05:30",
"url": "https://github.com/Xyz002/test/commit/b7957bab20835449c4d597fee24075a9a5a2c099",
"author": {
"name": "Xyz002",
"email": "62993516+Xyz002@users.noreply.github.com",
"username": "Xyz002"
},
"committer": {
"name": "GitHub",
"email": "noreply@github.com",
"username": "web-flow"
},
"added": [],
"removed": [],
"modified": [
"README.me"
]
}
],
"head_commit": {
"id": "b7957bab20835449c4d597fee24075a9a5a2c099",
"tree_id": "fa8d699762ec0a25868fa1ab4d299da392f0a974",
"distinct": true,
"message": "updated this file",
"timestamp": "2022-03-24T12:08:59+05:30",
"url": "https://github.com/Xyz002/test/commit/b7957bab20835449c4d597fee24075a9a5a2c099",
"author": {
"name": "Xyz002",
"email": "62993516+Xyz002@users.noreply.github.com",
"username": "Xyz002"
},
"committer": {
"name": "GitHub",
"email": "noreply@github.com",
"username": "web-flow"
},
"added": [],
"removed": [],
"modified": [
"README.me"
]
},
"sn_tool_id": "46a07b2f471e011028c23a34846d43b2"
}" \
--user 'username':'password'
성공 응답:
{
"result": "success"
}
cURL 요청
Jira
curl "https://instance.service-now.com/api/sn_devops/devops/tool/event/9ed237af471e011028c23a34846d4327" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"timestamp": 1648104684180,
"webhookEvent": "jira:issue_created",
"issue_event_type_name": "issue_created",
"user": {
"self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "username@email.com",
"avatarUrls": {
"48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
"24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
"16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
"32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
},
"displayName": "Administrator",
"active": true,
"timeZone": "America/Los_Angeles"
},
"issue": {
"id": "84800",
"self": "http://jira1.sndevops.xyz/rest/api/2/issue/84800",
"key": "BAL-2",
"fields": {
"issuetype": {
"self": "http://jira1.sndevops.xyz/rest/api/2/issuetype/10002",
"id": "10002",
"description": "A task that needs to be done.",
"iconUrl": "http://jira1.sndevops.xyz/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype",
"name": "Task",
"subtask": false,
"avatarId": 10318
},
"timespent": null,
"project": {
"self": "http://jira1.sndevops.xyz/rest/api/2/project/10507",
"id": "10507",
"key": "BAL",
"name": "balu_devops",
"projectTypeKey": "software",
"avatarUrls": {
"48x48": "http://jira1.sndevops.xyz/secure/projectavatar?avatarId=10324",
"24x24": "http://jira1.sndevops.xyz/secure/projectavatar?size=small&avatarId=10324",
"16x16": "http://jira1.sndevops.xyz/secure/projectavatar?size=xsmall&avatarId=10324",
"32x32": "http://jira1.sndevops.xyz/secure/projectavatar?size=medium&avatarId=10324"
}
},
"fixVersions": [],
"aggregatetimespent": null,
"resolution": null,
"customfield_10302": null,
"customfield_10105": null,
"resolutiondate": null,
"workratio": 0,
"lastViewed": null,
"watches": {
"self": "http://jira1.sndevops.xyz/rest/api/2/issue/BAL-2/watchers",
"watchCount": 0,
"isWatching": false
},
"created": "2022-03-24T06:51:22.896+0000",
"priority": {
"self": "http://jira1.sndevops.xyz/rest/api/2/priority/3",
"iconUrl": "http://jira1.sndevops.xyz/images/icons/priorities/medium.svg",
"name": "Medium",
"id": "3"
},
"customfield_10100": "0|i0cprw:",
"customfield_10101": "SCRUMBOARD-14",
"customfield_10300": null,
"labels": [],
"timeestimate": 240,
"aggregatetimeoriginalestimate": 300,
"versions": [],
"issuelinks": [
{
"id": "10701",
"self": "http://jira1.sndevops.xyz/rest/api/2/issueLink/10701",
"type": {
"id": "10000",
"name": "Blocks",
"inward": "is blocked by",
"outward": "blocks",
"self": "http://jira1.sndevops.xyz/rest/api/2/issueLinkType/10000"
},
"outwardIssue": {
"id": "84741",
"key": "BAL-1",
"self": "http://jira1.sndevops.xyz/rest/api/2/issue/84741",
"fields": {
"summary": "log4jtesting",
"status": {
"self": "http://jira1.sndevops.xyz/rest/api/2/status/3",
"description": "This issue is being actively worked on at the moment by the assignee.",
"iconUrl": "http://jira1.sndevops.xyz/images/icons/statuses/inprogress.png",
"name": "In Progress",
"id": "3",
"statusCategory": {
"self": "http://jira1.sndevops.xyz/rest/api/2/statuscategory/4",
"id": 4,
"key": "indeterminate",
"colorName": "yellow",
"name": "In Progress"
}
},
"priority": {
"self": "http://jira1.sndevops.xyz/rest/api/2/priority/3",
"iconUrl": "http://jira1.sndevops.xyz/images/icons/priorities/medium.svg",
"name": "Medium",
"id": "3"
},
"issuetype": {
"self": "http://jira1.sndevops.xyz/rest/api/2/issuetype/10004",
"id": "10004",
"description": "A problem which impairs or prevents the functions of the product.",
"iconUrl": "http://jira1.sndevops.xyz/secure/viewavatar?size=xsmall&avatarId=10303&avatarType=issuetype",
"name": "Bug",
"subtask": false,
"avatarId": 10303
}
}
}
}
],
"assignee": {
"self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "username@email.com",
"avatarUrls": {
"48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
"24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
"16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
"32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
},
"displayName": "Administrator",
"active": true,
"timeZone": "America/Los_Angeles"
},
"updated": "2022-03-24T06:51:22.896+0000",
"status": {
"self": "http://jira1.sndevops.xyz/rest/api/2/status/10000",
"description": "",
"iconUrl": "http://jira1.sndevops.xyz/",
"name": "To Do",
"id": "10000",
"statusCategory": {
"self": "http://jira1.sndevops.xyz/rest/api/2/statuscategory/2",
"id": 2,
"key": "new",
"colorName": "blue-gray",
"name": "To Do"
}
},
"components": [],
"timeoriginalestimate": 300,
"description": "Task description",
"timetracking": {
"originalEstimate": "5m",
"remainingEstimate": "4m",
"originalEstimateSeconds": 300,
"remainingEstimateSeconds": 240
},
"customfield_10203": null,
"customfield_10204": null,
"customfield_10205": null,
"attachment": [],
"aggregatetimeestimate": 240,
"summary": "Task Summary",
"creator": {
"self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "username@email.com",
"avatarUrls": {
"48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
"24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
"16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
"32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
},
"displayName": "Administrator",
"active": true,
"timeZone": "America/Los_Angeles"
},
"subtasks": [],
"reporter": {
"self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "username@email.com",
"avatarUrls": {
"48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
"24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
"16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
"32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
},
"displayName": "Administrator",
"active": true,
"timeZone": "America/Los_Angeles"
},
"customfield_10000": "{summaryBean=com.atlassian.jira.plugin.devstatus.rest.SummaryBean@2ccf8c6[summary={pullrequest=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@fbc42d4[overall=PullRequestOverallBean{stateCount=0, state='OPEN', details=PullRequestOverallDetails{openCount=0, mergedCount=0, declinedCount=0}},byInstanceType={}], build=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@71e33347[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BuildOverallBean@1c24654d[failedBuildCount=0,successfulBuildCount=0,unknownBuildCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], review=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@1ea8fb17[overall=com.atlassian.jira.plugin.devstatus.summary.beans.ReviewsOverallBean@6dc95939[stateCount=0,state=<null>,dueDate=<null>,overDue=false,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], deployment-environment=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@55826cc[overall=com.atlassian.jira.plugin.devstatus.summary.beans.DeploymentOverallBean@3ae93527[topEnvironments=[],showProjects=false,successfulCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], repository=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@6340012e[overall=com.atlassian.jira.plugin.devstatus.summary.beans.CommitOverallBean@44678cee[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], branch=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@4dbce8[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BranchOverallBean@737ee1cb[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}]},errors=[],configErrors=[]], devSummaryJson={\"cachedValue\":{\"errors\":[],\"configErrors\":[],\"summary\":{\"pullrequest\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":\"OPEN\",\"details\":{\"openCount\":0,\"mergedCount\":0,\"declinedCount\":0,\"total\":0},\"open\":true},\"byInstanceType\":{}},\"build\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"failedBuildCount\":0,\"successfulBuildCount\":0,\"unknownBuildCount\":0},\"byInstanceType\":{}},\"review\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":null,\"dueDate\":null,\"overDue\":false,\"completed\":false},\"byInstanceType\":{}},\"deployment-environment\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"topEnvironments\":[],\"showProjects\":false,\"successfulCount\":0},\"byInstanceType\":{}},\"repository\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}},\"branch\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}}}},\"isStale\":false}}",
"aggregateprogress": {
"progress": 0,
"total": 240,
"percent": 0
},
"customfield_10200": null,
"customfield_10201": null,
"customfield_10202": null,
"environment": null,
"duedate": "2022-03-24",
"progress": {
"progress": 0,
"total": 240,
"percent": 0
},
"comment": {
"comments": [],
"maxResults": 0,
"total": 0,
"startAt": 0
},
"votes": {
"self": "http://jira1.sndevops.xyz/rest/api/2/issue/BAL-2/votes",
"votes": 0,
"hasVoted": false
},
"worklog": {
"startAt": 0,
"maxResults": 20,
"total": 0,
"worklogs": []
}
}
},
"changelog": {
"id": "14401",
"items": [
{
"field": "Link",
"fieldtype": "jira",
"from": null,
"fromString": null,
"to": "BAL-1",
"toString": "This issue blocks BAL-1"
}
]
},
"sn_tool_id": "9ed237af471e011028c23a34846d4327"
}" \
--user 'username':'password'
성공 응답:
{
"result": "success"
}
cURL 요청
Bitbucket
curl "https://instance.service-now.com/api/sn_devops/devops/tool/event/6975ecaf879e85100f71cbfc0ebb3575" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{
"eventKey": "repo:refs_changed",
"date": "2022-03-23T15:57:05+0000",
"actor": {
"name": "admin",
"emailAddress": "username@email.com",
"id": 1,
"displayName": "Admin",
"active": true,
"slug": "admin",
"type": "NORMAL",
"links": {
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/users/admin"
}
]
}
},
"repository": {
"slug": "testautomationrepo1",
"id": 12,
"name": "TestAutomationRepo1",
"scmId": "git",
"state": "AVAILABLE",
"statusMessage": "Available",
"forkable": true,
"origin": {
"slug": "testautomationrepo1",
"id": 1,
"name": "TestAutomationRepo1",
"scmId": "git",
"state": "AVAILABLE",
"statusMessage": "Available",
"forkable": true,
"project": {
"key": "TES",
"id": 1,
"name": "TestAutomation",
"public": false,
"type": "NORMAL",
"links": {
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/projects/TES"
}
]
}
},
"public": false,
"links": {
"clone": [
{
"href": "ssh://git@bitbucket2.sndevops.xyz:7999/tes/testautomationrepo1.git",
"name": "ssh"
},
{
"href": "http://bitbucket2.sndevops.xyz/scm/tes/testautomationrepo1.git",
"name": "http"
}
],
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/projects/TES/repos/testautomationrepo1/browse"
}
]
}
},
"project": {
"key": "~ADMIN",
"id": 3,
"name": "Admin",
"type": "PERSONAL",
"owner": {
"name": "admin",
"emailAddress": "username@email.com",
"id": 1,
"displayName": "Admin",
"active": true,
"slug": "admin",
"type": "NORMAL",
"links": {
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/users/admin"
}
]
}
},
"links": {
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/users/admin"
}
]
}
},
"public": false,
"links": {
"clone": [
{
"href": "http://bitbucket2.sndevops.xyz/scm/~admin/testautomationrepo1.git",
"name": "http"
},
{
"href": "ssh://git@bitbucket2.sndevops.xyz:7999/~admin/testautomationrepo1.git",
"name": "ssh"
}
],
"self": [
{
"href": "http://bitbucket2.sndevops.xyz/users/admin/repos/testautomationrepo1/browse"
}
]
}
},
"changes": [
{
"ref": {
"id": "refs/heads/master",
"displayId": "master",
"type": "BRANCH"
},
"refId": "refs/heads/master",
"fromHash": "b482b2e232f5fbdee73feed8ca1cfb774de6976e",
"toHash": "d783254fe6f77bc7cc079358158aeef52a457587",
"type": "UPDATE"
}
],
"sn_tool_id": "6975ecaf879e85100f71cbfc0ebb3575"
}" \
--user 'username':'password'
성공 응답:
{
"result": "success"
}
DevOps - PUT /devops/orchestration/changeControl/{changeControlId}
지정된 오케스트레이션 작업에 대한 변경 제어 정보를 업데이트합니다.
URL 형식
버전이 지정된 URL: /api/sn_devops/{api_version}/ devops/orchestration/changeControl/{changeControlId}
기본 URL: / api/sn_devops/devops/orchestration/changeControl/{changeControlId}
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 변경ControlId | 변경 제어 작업의 Sys_id입니다. 콜백 [sn_devops_callback] 테이블에 있습니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| toolId | 필수 DevOps 변경 제어 작업과 연결된 도구의 Sys_id입니다. Orchestration Tool [sn_devops_orchestration_tool] 테이블에 있습니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 콜백 URL | 필수 연결된 변경 요청 승인 프로세스가 완료되면 인스턴스가 콜백할 수 있는 ServiceNow URL입니다. 이 콜백은 승인 결과에 따라 파이프라인 실행을 계속하거나 계속하지 않도록 해야 합니다. 데이터 유형: 문자열 |
| 오케스트레이션 작업 상세 정보 | 필수 오케스트레이션 작업에 대한 설명입니다. 데이터 유형: 객체 |
| orchestrationTaskDetails.message | 자유 형식의 문자 메시지입니다. 데이터 유형: 문자열 |
| orchestrationTaskDetails.triggerType | 필수 오케스트레이션 작업이 시작된 방식입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 문자열 |
| orchestrationTaskDetails.upstreamTaskExecutionURL | 업스트림으로 설정된 경우 triggerType 필요합니다. 업스트림 작업 실행 URL입니다. 예: https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/ 데이터 유형: 문자열 |
| 오케스트레이션 태스크URL | 필수 오케스트레이션 작업의 URL입니다. 예: https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/ 데이터 유형: 문자열 |
| 도구 유형 | 도구의 유형입니다 DevOps . 유효한 값: jenkins 데이터 유형: 문자열 |
| 작업실행URL | 실행할 작업의 URL입니다. 데이터 유형: 문자열 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 콘텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 요청이 성공적으로 완료되었습니다. |
| 400 | 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다. |
| 401 | 인증이 잘못되었거나 누락되었습니다. |
| 404 | 찾을 수 없습니다. 지정된 기록을 찾을 수 없습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| change_control | 오케스트레이션 작업에 변경 제어가 적용되는지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
| 상세 정보 | 모든 오류 조건에 대한 항목입니다. 데이터 유형: 객체 |
| details.errors | 단일 오류에 대한 설명입니다. 데이터 유형: 배열 |
| details.errors.message | 자세한 오류 메시지입니다. 데이터 유형: 문자열 |
샘플 cURL 요청
curl -X PUT "https://instance.service-now.com/api/sn_devops/v1/devops/orchestration/change/f0ca45679323008b52f3b457415ae6?toolId=f0ca45679323008b52f3b457415ae6"
-H "accept: application/json"\
-H "Content-Type: application/json"\
-u "username":"password"\
-d "{
\"orchestrationTaskURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-deploy/\",
\"toolType\":\"jenkins\",
\"callbackURL\":\"https://jenkins.mycompany.com:8080/sn-devops/964aca59-0cae-4d9b-a36d-5929f426cf31\",
\"orchestrationTaskDetails\":{
\"message\":\"Started by upstream project \\\"Mobile-Platform-test\\\" build number 40\",
\"triggerType\":\"upstream\",
\"upstreamTaskExecutionURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/\"}
}"
응답:
{
"result": {
"change_control": true
}
}
DevOps - PUT /devops/orchestration/changeInfo/{changeInfo}
지정된 변경 요청의 필드를 업데이트합니다.
URL 형식
버전이 지정된 URL: /api/sn_devops/{ api_version}/devops/orchestration/changeInfo/{changeInfo}
기본 URL: / api/sn_devops/devops/orchestration/changeInfo/{changeInfo}
지원되는 요청 매개변수
| 이름 | 설명 |
|---|---|
| api_version | 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들면 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| changeRequestNumber | 필수 업데이트할 오케스트레이션 작업과 연결된 변경 요청 번호입니다. 변경 요청 [change_request] 테이블에 있습니다. 데이터 유형: 문자열 |
| 이름 | 설명 |
|---|---|
| 데이터 | 필수 연결된 변경 요청에서 업데이트할 필드에 대한 이름-값 쌍입니다. 예를 들어, 간단한 설명 파일을 업데이트하려면 다음과 유사한 이름-값 쌍을 입력합니다. 매개변수의 state 경우 다음 전환만 지원됩니다.
데이터 유형: 문자열 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.
| 헤더 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 권한 부여 |
v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 얻을 수 있습니다. 그런 다음 토큰을 권한 부여 헤더에서 Authorization: sn_devops 형식으로 사용할 수
있습니다. DevOpsToken <tool_sys_id>:<tool_token>입니다.주: 토큰이 있는 권한 부여 헤더와 함께 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다. devops.system 인스턴스에서 사용자를 사용할 수 없는 경우 토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할이 있는 모든 사용자를 설정할 수 있습니다. 자세한 내용은 문서를 참조하십시오. |
| 컨텐츠-형식 | 요청 본문의 데이터 형식입니다. application/json만 지원합니다. |
| 헤더 | 설명 |
|---|---|
| 없음 |
상태 코드
다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 400 | 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다. |
| 404 | 찾을 수 없습니다. 요청한 항목을 찾을 수 없습니다. |
응답 본문 매개변수
| 이름 | 설명 |
|---|---|
| 메시지 | 업데이트 결과에 대한 설명입니다. 데이터 유형: 문자열 |
| 상태 | 요청의 상태입니다. 가능한 값:
데이터 유형: 문자열 |
| updateStatus | 업데이트의 상태입니다. 가능한 값:
데이터 유형: 문자열 |
cURL 요청
다음 코드 예제에서는 CHG0030023 변경 요청의 다양한 필드를 업데이트하는 방법을 보여 줍니다.
curl -X PUT"
https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeInfo?changeRequestNumber=CHG0030023
-H "accept: application/json"\
-u "username":"password"
- D
{
"short_description": "Test description",
"priority": "1",
"start_date": "2021-02-05 08:00:00",
"end_date": "2022-04-05 08:00:00",
"justification": "test justification",
"description": "test description",
"cab_required": true,
"comments": "This update for work notes is from jenkins file",
"work_notes": "test work notes",
"assignment_group": "a715cd759f2002002920bde8132e7018"
}
응답:
{
"result": {
"updateStatus": "Done",
"status": "Success",
"message": "change request update successful"
}
}