이 문서에서는 Autify Nexus와 Jenkins를 연동하는 방법을 설명합니다. 구체적으로는 Jenkins 노드에서 Autify Nexus API를 사용해 테스트 플랜을 실행하는 방법을 이해하는 데 도움이 됩니다.
필수 구성 요소
Autify Nexus에서 다음 정보가 필요합니다.
Nexus 서버 URL
API 클라이언트 시크릿
테스트 플랜 이름
또한 이 페이지의 코드 예제를 실행하려면 Jenkins 노드에 jq 명령을 설치가 필요합니다.
전제 조건 정보의 자세한 내용은 다음 표를 참고해 주시기 바랍니다.
Nexus 서버 URL | Autify Nexus에 로그인할 때 사용하는 URL입니다. |
API 클라이언트 시크릿 | Autify Nexus에서 생성한 API 클라이언트의 클라이언트 시크릿입니다. 자세한 내용은 Autify Nexus API를 참고해 주세요. |
테스트 플랜 이름 | Jenkins에서 실행할 테스트 플랜의 대/소문자를 구분하는 이름입니다. Autify Nexus에 표시된 것과 완전히 동일해야 합니다. |
클라이언트 시크릿을 자격 증명으로 저장하기
클라이언트 시크릿은 Jenkins에 자격 증명으로 저장합니다.
대시보드 페이지에서 Manage Jenkins를 클릭

Credentials를 클릭

시크릿을 추가할 도메인을 선택

+ Add Credentials를 클릭

Kind 섹션에서 Secret text 옵션을 선택
Secret 필드에 API 클라이언트 시크릿을 입력
자격 증명 이름을 ID로 입력(예: AUTIFY_CLIENT_SECRET).
Create를 클릭

추가한 자격 증명은 자격 증명 목록에서 확인할 수 있습니다.

잡 만들기
새 잡을 정의하려면 대시보드에서 + New Item을 클릭합니다.

아이템 이름에 잡 이름을 입력
아이템 타입으로 Freestyle project를 선택
OK를 클릭

Build Environment 섹션에서 Use secret text(s) or file(s)에 체크
앞 섹션에서 추가한 클라이언트 시크릿의 이름을 Variable로 입력
해당 클라이언트 시크릿 자격 증명을 Credentials 목록에서 선택

Build Steps 섹션에서 빌드 단계로 Execute shell 을 선택

코드 입력 필드에 코드를 입력
예를 들어 다음 코드는 이름으로 찾은 테스트 플랜을 실행합니다. 사용 방식에 따라 필요한 정보가 달라질 수 있으니, 상황에 맞게 조정해 주세요.

# ENV vars
SERVER_URL='https://<your-nexus-server>'
TEST_PLAN_NAME='<your-test-plan-name>'
# WORKSPACE_ID='<your-workspace-id>' # Optional: specify if you have multiple workspaces
# Set authorization header using API client secret directly
AUTH_HEADER="Authorization: Bearer ${AUTIFY_CLIENT_SECRET}"
ACCEPT_HEADER='Accept: application/json'
# Get workspace ID (use first workspace if not specified)
res=$(
curl \
--silent \
--show-error \
--url "${SERVER_URL}/nexus/api/workspaces" \
--header "$AUTH_HEADER" \
--header "$ACCEPT_HEADER"
)
if [ -z "${WORKSPACE_ID:-}" ]; then
WORKSPACE_ID=$(echo "$res" | jq -r '.[0].id')
fi
if [ -z "$WORKSPACE_ID" ] || [ "$WORKSPACE_ID" = "null" ]; then
echo "Workspace not found. Response: ${res}"
exit 1
fi
echo "Workspace ID: ${WORKSPACE_ID}"
# Get test plan ID
res=$(
curl \
--silent \
--show-error \
--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 \
--show-error \
--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" ] || [ "$STATUS" = "RUNNING" ]; do
sleep 5
res=$(
curl \
--silent \
--show-error \
--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를 클릭해서 잡 등록을 완료합니다.
잡을 실행해서 동작을 확인하기
잡을 정의한 후에는 잡이 기대한 대로 동작하는지 확인합니다.
대시보드에서 잡 이름을 클릭

Build Now를 클릭해서 잡을 시작

빌드 상태는 페이지 왼쪽에 표시됩니다
Builds 창에서 맨 위 항목을 클릭.

출력은 Console Output을 클릭하여 볼 수 있습니다.

이 예시의 로그 "Final status: PASSED"는 Autify Nexus의 테스트 결과를 나타냅니다. "PASSED"는 테스트 결과가 성공했음을 의미 합니다. 테스트 결과가 실패하면 "FAILED"로 표시됩니다.
로그 "Finished: SUCCESS"는 로그의 마지막 줄에 표시됩니다. 이는 Autify Nexus API와 통신하는 동안 오류 없이 잡이 종료되었음을 의미합니다. 이 상태는 Autify Nexus에서의 테스트 결과가 성공했음을 의미하는 것은 아닙니다.
