*이 페이지의 일부는 기계 번역되었습니다.
이 문서에서는 Autify Nexus를 Jenkins와 통합하는 방법을 설명합니다. 특히 Jenkins 노드에서 Autify Nexus API를 통해 테스트 계획을 실행하는 방법을 이해하는 데 도움이 됩니다.
필수 구성 요소
Autify Nexus에서 다음 정보가 필요합니다.
넥서스 서버 URL
조직 ID
클라이언트 ID
클라이언트 암호
테스트 계획이 속한 작업 영역 ID
테스트 계획 이름
또한 이 페이지의 코드 예제를 실행하려면 Jenkins 노드에 jq 명령을 설치해야 합니다.
필수 구성 요소 정보에 대한 자세한 내용은 아래 표에서 확인할 수 있습니다.
넥서스 서버 URL | 예를 들어 Autify Nexus에 로그인하는 데 사용하는 URL은 다음과 같습니다. |
조직 ID | Nexus 서버 URL의 시작 부분에 있습니다. 예를 들어 URL이 다음과 |
클라이언트 ID | Autify Nexus에서 생성한 API 클라이언트의 클라이언트 ID입니다. 자세한 내용은 API Documentation을 참조하십시오. |
클라이언트 암호 | Autify Nexus에서 생성한 API 클라이언트에 대한 클라이언트 암호입니다. 자세한 내용은 API Documentation을 참조하십시오. |
작업 영역 ID | 이 정보는 Workspaces API를 사용하여 확인할 수 있습니다. 자세한 내용은 API 문서를 참조하세요. |
테스트 계획 이름 | Jenkins에서 실행하려는 테스트 계획의 대/소문자를 구분하는 이름입니다. Autify Nexus에 표시되는 것과 정확히 동일해야 합니다. |
클라이언트 암호를 자격 증명으로 저장
클라이언트 암호는 Jenkins에 자격 증명으로 저장되어야 합니다.
대시보드 페이지에서 Jenkins 관리를 클릭합니다
자격 증명을 클릭합니다.
비밀을 추가하려는 도메인을 설정합니다
+ 자격 증명 추가를 클릭합니다.
"Kind" 섹션에서 Secret text 옵션을 선택합니다.
"Secret" 필드에 클라이언트 암호를 입력합니다.
자격 증명의 이름을 "ID"로 입력합니다(예: "AUTIFY_CLIENT_SECRET").
Create를 클릭합니다.
추가한 자격 증명은 자격 증명 목록에서 볼 수 있습니다.
작업 만들기
새 작업을 정의하려면 대시보드에서 + 새 항목을 클릭합니다.
작업 이름을 항목 이름으로 입력합니다.
항목 유형으로 Freestyle 프로젝트를 선택합니다.
확인을 클릭합니다.
"Environment(환경)" 섹션에서 Use secret text(s) or file(s) 을 선택합니다.
이전 섹션에서 추가한 클라이언트 암호의 이름을 "변수"로 입력합니다.
"Credentials(자격 증명)"의 목록에서 해당 클라이언트 암호에 대한 자격 증명을 선택합니다.
"Build Steps" 섹션에서 빌드 단계로 Execute shell 을 선택합니다.
코드 입력 필드에 코드를 입력합니다.
예를 들어, 다음 코드는 이름으로 찾은 테스트 계획을 실행하는 것입니다. 사용 사례에 따라 정보가 달라질 수 있습니다.
# ENV vars
AUTIFY_CLIENT_ID='<your-client-id>'
SERVER_URL='https://<your-nexus-server>'
ORGANIZATION_ID='<your-org-id>'
WORKSPACE_ID='<your-workspace-id>'
TEST_PLAN_NAME='<your-test-plan-name>'
# Get access token
res=$(
curl \
--silent \
--location "${SERVER_URL}/auth/realms/${ORGANIZATION_ID}/protocol/openid-connect/token" \
--data-urlencode "client_id=${AUTIFY_CLIENT_ID}" \
--data-urlencode "client_secret=${AUTIFY_CLIENT_SECRET}" \
--data-urlencode 'grant_type=client_credentials' \
-k
)
ACCESS_TOKEN=$(echo $res | jq -r '.access_token')
if [ "$ACCESS_TOKEN" = "null" ]; then
echo "Failed to authenticate. Response: ${res}"
exit 1
fi
AUTH_HEADER="Authorization: Bearer ${ACCESS_TOKEN}"
ACCEPT_HEADER='Accept: application/json'
# Get test plan ID
res=$(
curl \
--silent \
--url "${SERVER_URL}/nexus/api/workspaces/${WORKSPACE_ID}/testPlans" \
--header "$AUTH_HEADER" \
--header "$ACCEPT_HEADER"
)
TEST_PLAN_ID=$(echo $res | jq -r --arg NAME "$TEST_PLAN_NAME" '.[] | select(.name == $NAME) | .id')
if [ -z "$TEST_PLAN_ID" ]; then
echo "Test plan '${TEST_PLAN_NAME}' not found. Response: ${res}"
exit 1
fi
echo "Test plan ID for '${TEST_PLAN_NAME}': ${TEST_PLAN_ID}"
# Run the test plan
res=$(
curl \
--silent \
--request POST \
--url "${SERVER_URL}/nexus/api/workspaces/${WORKSPACE_ID}/testPlans/${TEST_PLAN_ID}/run" \
--header "$AUTH_HEADER" \
--header "$ACCEPT_HEADER"
)
RESULT_ID=$(echo $res | jq -r '.resultId')
if [ "$RESULT_ID" = "null" ]; then
echo "Failed to start test plan. Response: ${res}"
exit 1
fi
echo "Test started. Result ID: ${RESULT_ID}"
echo "Waiting for test to complete..."
# Polling for result status
STATUS="QUEUED"
while [ "$STATUS" = "QUEUED" -o "$STATUS" = "RUNNING" ]; do
sleep 5
res=$(
curl \
--silent \
--url "${SERVER_URL}/nexus/api/workspaces/${WORKSPACE_ID}/testResults/${RESULT_ID}/status" \
--header "$AUTH_HEADER" \
--header "$ACCEPT_HEADER"
)
STATUS=$(echo $res | jq -r '.status')
if [ "$STATUS" = "null" ]; then
echo "Failed to fetch result status. Response: ${res}"
exit 1
fi
echo "Current status: $STATUS"
done
echo "Final status: $STATUS"
Save(저장)를 클릭하여 작업을 등록합니다.
동작을 확인하기 위해 작업을 실행합니다
작업을 정의한 후 예상대로 작동하는지 확인합니다.
대시보드에서 작업 이름을 클릭합니다.
지금 빌드를 클릭하여 작업을 시작합니다.
빌드 상태는 페이지 왼쪽에서 볼 수 있습니다.
"Builds" 창에서 맨 위 항목을 클릭합니다.
출력은 "Console Output"을 클릭하여 볼 수 있습니다.
이 예제의 "최종 상태: PASSED" 로그는 Autify Nexus의 테스트 결과를 보여줍니다. "PASSED"는 테스트 결과가 성공적이었음을 의미합니다. 테스트 결과가 실패한 경우 "FAILED"가 표시됩니다.
"Finished: SUCCESS" 로그는 로그의 마지막 줄에 표시되어야 합니다. 이는 Autify Nexus API와 통신할 때 작업이 오류 없이 성공적으로 완료되었음을 나타냅니다. 이 상태는 Autify Nexus의 테스트 결과가 성공했음을 나타내지 않습니다.