DevOps Insights CLI
IBM Cloud® DevOps Insights CLI는 빌드를 DevOps Insights 과 통합하는 데 사용할 수 있는 명령 집합을 제공합니다. 두 가지 유형의 명령을 사용합니다: CLI 사용 명령과 DevOps Insights 와 통합하기 위한 CLI 명령.
DevOps Insights 서비스가 종료되어 더 이상 이용할 수 없습니다. 자세히 보기
시작하기 전에
-
IBM Cloud CLI를 설치하십시오. 지시사항은 IBM Cloud CLI 다운로드를 참조하십시오.
-
IBM Cloud CLI 플러그인을 추가하십시오. 다음 명령을 실행하십시오.
ibmcloud plugin install doi
-
해당 툴체인에 대해 구성된 DevOps Insights 도구로 툴체인에 액세스할 수 있는지 확인하세요. 도구 체인에 관한 자세한 정보는 앱에서 도구 체인 작성을 참조하십시오.
-
다음 방법 중 하나를 사용하여 툴체인 ID를 지정합니다:
- 명령의 CLI 매개변수로 툴체인 ID를 지정합니다.
TOOLCHAIN_ID환경 변수를 설정하십시오.- IBM Cloud® Continuous Delivery 파이프라인은
PIPELINE_TOOLCHAIN_ID환경 변수를 자동으로 설정할 수 있습니다.
CLI에는 툴체인 ID 값이 필요합니다. CLI 매개변수에 지정된 툴체인 ID의 값이 환경 변수 값을 재정의합니다.
도구 체인 ID는 브라우저에 표시된 도구 체인 URL에서 찾을 수 있습니다. IBM® Continuous Delivery Pipeline for IBM Cloud® 을 사용하는 경우 빌드 데이터를 다른 툴체인으로 전송하도록 툴체인 ID를 설정할 수 있습니다. 자세한 정보는 여러 소스의 데이터를 하나의 도구 체인으로 집계를 참조하십시오.
로그인
이 명령을 사용하여 IBM Cloud에 로그인하십시오. API_KEY에는 도구 체인에 액세스할 수 있는 권한이 있어야 합니다.
ibmcloud login --apikey API_KEY
비공개 엔드포인트를 사용하여 CLI에 로그인하기
CLI 사용 시 데이터에 대한 제어 및 보안을 강화하기 위해 IBM Cloud 엔드포인트에 대한 비공개 경로를 사용할 수 있습니다. 먼저 계정에서 가상 라우팅 및 전달을 사용으로 설정한 후 IBM Cloud 개인용 서비스 엔드포인트를 사용하도록 설정할 수 있습니다. 사설 연결 옵션을 지원하도록 계정을 설정하는 데 관한 자세한 정보는 VRF 및 서비스 엔드포인트 사용을 참조하십시오.
CLI를 사용하여 비공개 엔드포인트에 로그인하려면 다음 명령어를 사용하십시오. API_KEY에는 도구 체인에 액세스할 수 있는 권한이 있어야 합니다.
ibmcloud login -a private.cloud.ibm.com --apikey API_KEY
CLI 사용 명령
DevOps Insights 도움말
다음 명령에는 DevOps Insights 명령의 목록이 표시됩니다.
ibmcloud doi --help
DevOps Insights 명령 도움말
다음 명령어는 특정 명령어를 실행하는 데 필요한 옵션에 대한 세부 정보를 표시합니다:
ibmcloud doi <command> --help
모든 명령에 --region 매개변수를 전달할 수 있습니다. 이 매개변수의 값을 툴체인의 ibmcloud 리전으로 설정하면 CLI는 툴체인이 어느 리전에 있는지 확인할 필요가 없으므로 더 효율적이고 안정적으로 사용할 수 있습니다. 이 매개변수는 이전 버전과의 호환성을 위해 선택 사항입니다.
DevOps Insights와의 통합을 위한 명령
빌드에 대해 CLI를 사용하는 경우 빌드 레코드를 공개해야 합니다.
CLI에 전달되는 logicalappname 및 buildnumber 매개변수의 값은 모든 명령 호출에서 동일하게 유지되어야 합니다.
빌드 레코드 공개
다음 명령은 DevOps Insights에 빌드 레코드를 공개합니다.
ibmcloud doi buildrecord-publish --branch BRANCH --repositoryurl REPOSITORYURL --commitid COMMITID --status STATUS --logicalappname LOGICALAPPNAME --buildnumber BUILDNUMBER --toolchainid TOOLCHAINID [--joburl JOBURL] [--region REGION]
다음은 빌드 레코드를 공개하기 위한 명령 옵션입니다.
| 명령 옵션 | 필수 또는 선택사항 | 설명 |
|---|---|---|
-B, --branch |
필수 | 빌드가 수행되는 저장소 분기입니다. |
-R, --repositoryurl |
필수 | Git 저장소의 URL입니다. |
-C, --commitid |
필수 | Git 명령 ID입니다. |
-S, --status |
필수 | 빌드 상태입니다. 허용 가능한 값은 pass 및 fail입니다. |
-L, --logicalappname |
필수 | 애플리케이션의 이름입니다. |
-N, --buildnumber |
필수 | 빌드를 식별하는 문자열입니다. |
-I, --toolchainid |
필수 | TOOLCHAIN_ID 환경 변수가 설정되어 있는 경우 이 플래그는 선택 사항입니다. 환경 변수와 플래그가 모두 제공되면 플래그 값이 환경 변수 값보다 우선합니다. |
-J, --joburl |
선택사항 | IBM® Continuous Delivery Pipeline for IBM Cloud®에서 CLI로 자동 설정되는 작업의 빌드 로그에 대한 URL입니다. |
--region |
필수 | 툴체인의 ibmcloud 리전입니다. 이 값은 비공개 엔드포인트를 사용할 때 필요합니다. 선택 사항이지만 공용 엔드포인트의 경우 있으면 좋습니다. |
예
ibmcloud doi buildrecord-publish -B master -R "https://github.com/oic/dlms.git" -C dff7884b9168168d91cb9e5aec78e93db0fa80d9 -S pass -L testapp -N master:199 -I b531487c-9c22-4f3b-9d20-5be408d57891 --region eu-gb
or
ibmcloud doi buildrecord-publish --branch master --repositoryurl "https://github.com/oic/dlms.git" --commitid dff7884b9168168d91cb9e5aec78e93db0fa80d9 --status pass --logicalappname testapp --buildnumber master:199 --toolchainid b531487c-9c22-4f3b-9d20-5be408d57891
테스트 기록 게시
다음 명령은 DevOps Insights에 테스트 레코드를 공개합니다.
ibmcloud doi testrecord-publish --filelocation FILELOCATION --type TYPE --logicalappname LOGICALAPPNAME --buildnumber BUILDNUMBER --toolchainid TOOLCHAINID [--drilldownurl DRILLDOWNURL] [--env ENV] [--sqtoken SONARQUBE_TOKEN] [--tags TAGS] [--region REGION]
다음은 테스트 레코드를 공개하기 위한 명령 옵션입니다.
| 명령 옵션 | 필수 또는 선택사항 | 설명 |
|---|---|---|
-F, --filelocation |
필수 | 업로드할 결과의 위치입니다. 단일 파일, 전체 디렉토리 또는 와일드카드 표현식과 일치하는 여러 개의 파일이 될 수 있습니다. |
-T, --type |
필수 | 업로드할 테스트 결과의 유형입니다. |
-L, --logicalappname |
필수 | 애플리케이션의 이름입니다. |
-N, --buildnumber |
필수 | 빌드를 식별하는 문자열입니다. |
-I, --toolchainid |
필수 | TOOLCHAIN_ID 환경 변수가 설정되어 있는 경우 이 플래그는 선택 사항입니다. 환경 변수와 플래그가 모두 제공되면 플래그 값이 환경 변수 값보다 우선합니다. |
-U, --drilldownurl |
선택사항 | 테스트 결과에 대한 추가 정보를 찾을 수 있는 URL입니다. 이 URL이 올바르지 않으면 옵션은 무시됩니다. |
-E, --env |
선택사항 | 테스트 결과와 연관될 환경 이름입니다. 이 옵션은 단위 테스트, 코드 적용 범위 테스트 및 정적 보안 스캔에 대해 무시됩니다. |
-K, --sqtoken |
선택사항 | 이 명령은 SonarQube 토큰입니다. 지정된 유형이 SonarQube인 경우에만 유효합니다. SonarQube 서버에서 자세한 정보를 가져오는 데 사용됩니다. |
--tags |
선택사항 | 이 테스트 결과와 연결할 태그의 쉼표로 구분된 목록을 지정합니다. |
--region |
필수 | 툴체인의 ibmcloud 리전입니다. 이 값은 비공개 엔드포인트를 사용할 때 필요합니다. 선택 사항이지만 공용 엔드포인트의 경우 있으면 좋습니다. |
예
ibmcloud doi testrecord-publish -F "tests/fvt/*.json" -T fvt -L testapp -N master:199 -I b531487c-9c22-4f3b-9d20-5be408d57891 --tags "CC,app1"
or
ibmcloud doi testrecord-publish --filelocation "tests/fvt/*.json" --type fvt --logicalappname testapp --buildnumber master:199 --toolchainid b531487c-9c22-4f3b-9d20-5be408d57891 --region ca-tor
다음 테스트 유형이 지원됩니다.
| 유형 | 설명 |
|---|---|
unittest |
단위 테스트 결과 |
fvt |
기능 확인 테스트(FVT) 결과입니다. |
code |
코드 적용 범위 결과 |
sonarqube |
SonarQube 스캔 결과 |
vulnerabilityadvisor |
IBM Vulnerability Advisor on Cloud에서의 Vulnerability Advisor 결과 |
cratf |
코드 위험 분석기로 생성된 Terraform 보고서 |
crabom |
코드 리스크 분석기로 생성된 자재 명세서(BOM) 보고서 |
cradeploy |
코드 위험 분석기에서 생성된 배포 보고서 |
cracve |
코드 리스크 분석기로 생성된 취약점 보고서 |
zapscan |
OWASP 제드 공격 프록시(ZAP) 스캔 보고서 |
IBM Application Security on Cloud 1.0.0 는 더 이상 게시되지 않습니다(staticsecurityscan 및 dynamicsecurityscan 테스트 유형). 모든 IBM Application Security on Cloud 1.0.0 지원은 HCL에서 제공합니다. 자세한 내용은 HCL AppScan 문서를 참조하세요.
배치 레코드 공개
다음 명령은 DevOps Insights에 배치 레코드를 공개합니다.
ibmcloud doi deployrecord-publish --env ENV --status STATUS --logicalappname LOGICALAPPNAME --buildnumber BUILDNUMBER --toolchainid TOOLCHAINID [--joburl JOBURL] [--appurl APPURL] [--region REGION]
| 명령 옵션 | 필수 또는 선택사항 | 설명 |
|---|---|---|
-E, --env |
필수 | 파이프라인 작업으로 앱이 배치된 환경입니다. |
-S, --status |
필수 | 배치 상태입니다. 이 값은 pass 또는 fail이어야 합니다. |
-L, --logicalappname |
필수 | 애플리케이션의 이름입니다. |
-N, --buildnumber |
필수 | 빌드를 식별하는 문자열입니다. |
-I, --toolchainid |
필수 | TOOLCHAIN_ID 환경 변수가 설정되어 있는 경우 이 플래그는 선택 사항입니다. 환경 변수와 플래그가 모두 제공되면 플래그 값이 환경 변수 값보다 우선합니다. |
-A, --appurl |
선택사항 | 배치된 앱이 실행되는 URL입니다. |
-J, --joburl |
선택사항 | IBM® Continuous Delivery Pipeline for IBM Cloud®에서 CLI로 자동 설정되는 작업의 빌드 로그에 대한 URL입니다. |
--region |
필수 | 툴체인의 ibmcloud 리전입니다. 이 값은 비공개 엔드포인트를 사용할 때 필요합니다. 선택 사항이지만 공용 엔드포인트의 경우 있으면 좋습니다. |
예
ibmcloud doi deployrecord-publish -E "staging" -S pass -L testapp -N master:199 -I b531487c-9c22-4f3b-9d20-5be408d57891 --region au-syd
or
ibmcloud doi deployrecord-publish --env "staging" --status pass --logicalappname testapp --buildnumber master:199 --toolchainid b531487c-9c22-4f3b-9d20-5be408d57891
게이트 평가
다음 명령은 DevOps Insights 게이트를 평가합니다.
ibmcloud doi gate-evaluate --policy POLICY --logicalappname LOGICALAPPNAME --buildnumber BUILDNUMBER --toolchainid TOOLCHAINID [--forcedecision] [--ruletype RULETYPE] [--region REGION]
다음은 게이트를 평가하기 위한 명령 옵션입니다.
| 명령 옵션 | 필수 또는 선택사항 | 설명 |
|---|---|---|
-P, --policy |
필수 | 게이트가 의사결정을 수행하기 위해 사용하는 정책의 이름입니다. |
-L, --logicalappname |
필수 | 애플리케이션의 이름입니다. |
-N, --buildnumber |
필수 | 빌드를 식별하는 문자열입니다. |
-I, --toolchainid |
필수 | TOOLCHAIN_ID 환경 변수가 설정되어 있는 경우 이 플래그는 선택 사항입니다. 환경 변수와 플래그가 모두 제공되면 플래그 값이 환경 변수 값보다 우선합니다. |
-D, --forcedecision |
선택사항 | 정책 평가가 실패하면 종료 코드로 종료하도록 값을 true로 설정합니다. 이 옵션이 지정되지 않으면 값은 false로 기본 설정됩니다. |
-E, --ruletype |
선택사항 | 고려할 규칙 유형입니다. 이 옵션을 포함하면 이 유형의 규칙만 의사결정 프로세스에 고려됩니다. |
--region |
필수 | 툴체인의 ibmcloud 리전입니다. 이 값은 비공개 엔드포인트를 사용할 때 필요합니다. 선택 사항이지만 공용 엔드포인트의 경우 있으면 좋습니다. |
예
ibmcloud doi gate-evaluate -P "policyname" -D true -L testapp -N master:199 -I b531487c-9c22-4f3b-9d20-5be408d57891 --region br-sao
or
ibmcloud doi gate-evaluate --policy "policyname" --forcedecision true --logicalappname testapp --buildnumber master:199 --toolchainid b531487c-9c22-4f3b-9d20-5be408d57891
사용자 지정 데이터 집합 및 정책 업데이트
다음 명령은 툴체인에 대한 사용자 지정 데이터 세트 및 정책을 만들고 업데이트합니다:
ibmcloud doi policies-update --file FILELOCATION --toolchainid TOOLCHAINID [--dryrun] [--region REGION]
다음은 사용자 지정 데이터 집합 및 정책을 업데이트하기 위한 명령 옵션입니다:
| 명령 옵션 | 필수 또는 선택사항 | 설명 |
|---|---|---|
-F, --file |
필수 | 추가하거나 업데이트할 사용자 지정 데이터 집합 및 정책 목록이 포함된 JSON 파일의 위치입니다. 절대 경로와 상대 경로 모두 허용됩니다. |
-I, --toolchainid |
필수 | TOOLCHAIN_ID 환경 변수가 설정되어 있는 경우 이 플래그는 선택 사항입니다. 환경 변수와 플래그가 모두 제공되면 플래그 값이 환경 변수 값보다 우선합니다. |
-D, --dryrun |
선택사항 | 업데이트 없이 변경 사항만 시뮬레이션하는 옵션입니다. |
--region |
필수 | 툴체인의 ibmcloud 리전입니다. 이 값은 비공개 엔드포인트를 사용할 때 필요합니다. 선택 사항이지만 공용 엔드포인트의 경우 있으면 좋습니다. |
예
ibmcloud doi policies-update -F "policies/policy.json" -I b531487c-9c22-4f3b-9d20-5be408d57891 --region jp-tok
or
ibmcloud doi policies-update --file "policies/policy.json" --toolchainid b531487c-9c22-4f3b-9d20-5be408d57891
updatepolicies 명령의 JSON 파일 구조
유효한 JSON 파일 구조에는 두 개의 필드가 포함됩니다:
{
"custom_datasets": [],
"policies": []
}
- 배열에 대한 정책(및 사용자 지정 데이터 세트)을 원하는 수만큼 지정할 수 있습니다.
- 지정된 정책(및 사용자 지정 데이터 세트)이 툴체인에 대해 존재하는 경우 정책이 업데이트되거나 생성됩니다.
custom_datasets또는policies배열 중 하나만 비워도 되고, 둘 다 비워도 됩니다.type_of_test사용자 지정 데이터 집합에 유효한 값은test과code뿐입니다.- 툴체인에 대한 사용자 지정 데이터 세트가 있는 경우 JSON 파일 내에 정의된 정책 규칙에 사용할 수 있습니다. 항상 JSON 파일 내에 사용자 지정 데이터 집합을 정의해야 하는 것은 아닙니다.
policies-update명령에 제공되는 샘플 JSON 파일에는 정책에서 지정할 수 있는 모든 가능한 규칙 유형이 나열되어 있습니다. 해당 규칙의 모든 필드는 필수 항목입니다.- 데이터 집합당 하나의 규칙만 사용합니다.
- 규칙 내의 이름 필드는 선택 사항입니다.
policies-update 명령에 대한 샘플 JSON 파일
이 샘플 JSON 파일에는 두 개의 사용자 지정 데이터 세트와 두 개의 정책이 포함되어 있습니다. 첫 번째 정책 name: "Orders" 에는 정책 내에서 사용할 수 있는 모든 규칙 유형이 포함되어 있습니다.
{
"custom_datasets": [
. {
"lifecycle_stage": "integrationtest",
"type_of_test": "test",
"label": "Integration Test"
},
{
"lifecycle_stage": "covtest",
"type_of_test": "code",
"label": "Coverage Test"
}
],
"policies": [
{
"name": "Orders",
"description": "Composite Policy.",
"rules": [
{
"name": "rule1",
. "description": "Unit Test Rule with regression",
"stage": "unittest",
"percentPass": 100,
"criticalTests": [
"Get Weather with incomplete zip code"
],
"regressionCheck": true
},
{
"name": "rule2",
"description": "Unit Test Rule without regression",
"stage": "integrationtest",
"percentPass": 98,
"criticalTests": [
"'Get Weather with incomplete zip code'"
],
},
{
"name": "rule3",
"description": "Functional test Rule",
"stage": "fvt",
"percentPass": 98,
"criticalTests": [
"'Get Weather with incomplete zip code'"
],
},
{
"name": "rule4",
"description": "Code Coverage rule",
"stage": "code",
"codeCoverage": 98,
},
{
"name": "rule5",
"description": "Custom dataset rule",
"stage": "covtest",
"codeCoverage": 60,
},
{
"name": "rule6",
"description": "Static Security Scan rule",
"stage": "staticsecurityscan",
"highSeverity": 40,
"mediumSeverity": 5,
"lowSeverity": 9
},
{
"name": "rule7",
"description": "Dynamic Security Scan rule",
"stage": "dynamicsecurityscan",
"highSeverity": 40,
"mediumSeverity": 5,
"lowSeverity": 9
},
{
"name": "rule8",
"description": "Sonarqube rule",
"stage": "sonarqube"
},
{
"name": "rule9",
"description": "Vulnerability rule",
"stage": "vulnerabilityadvisor"
}
]
},
{
"name": "UI",
"description": "Policy to check Unit Test.",
"rules": [
{
"name": "Unit Test Rule",
"description": "Unit Test Rule",
"stage": "integrationtest",
"percentPass": 100,
"criticalTests": []
}
]
}
]
}
FAQ
DevOps Insights CLI 사용과 관련된 자주 묻는 질문에 대한 답변을 확인하세요.
"툴체인에 액세스할 수 없습니다"라는 메시지와 함께 CLI가 실패하는 이유는 무엇인가요?
IBM Cloud 에 로그인하는 데 사용되는 API_KEY 환경 변수는 툴체인에 액세스할 수 있어야 합니다. 또한 도구 체인에 DevOps Insights 도구 통합을 추가했는지 확인하세요.
CLI가 성공적으로 실행되었는데 대시보드에 데이터가 표시되지 않는 이유는 무엇인가요?
CLI에 전달되는 logicalappname 및 buildnumber 매개 변수의 값이 빌드의 모든 단계에서 동일한지 확인합니다. 또한 빌드에 대한 빌드 레코드가 업로드되었는지 확인합니다. 특정 빌드에 대해 업로드된 테스트 레코드에 대한 데이터는 빌드 레코드가 없으면 대시보드에 표시되지 않습니다.
소나퀘이 서버와 통신하는 동안 CLI가 시간 초과되는데, 시간 초과 기간을 늘릴 수 있는 방법이 있나요?
기본 타임아웃 기간은 60초입니다. DevOps Insights CLI를 호출하기 전에 IBMCLOUD_HTTP_TIMEOUT 환경 변수를 설정합니다. 값은 초 수입니다.
export IBMCLOUD_HTTP_TIMEOUT=120
CLI가 실패한 이유를 판별할 수 있는 방법은 무엇입니까?
DevOps Insights CLI를 호출하기 전에, 디버그 로그를 활성화하려면 IBMCLOUD_TRACE 환경 변수를 true로 설정하십시오.
export IBMCLOUD_TRACE=true
실패의 정확한 이유를 판별하기 위해 로그에 표시되는 응답 및 API 호출을 확인하십시오.