Jenkins 통합 가이드

Prev Next

*이 페이지의 일부는 기계 번역되었습니다.

이 문서에서는 Autify Nexus를 Jenkins와 통합하는 방법을 설명합니다. 특히 Jenkins 노드에서 Autify Nexus API를 통해 테스트 계획을 실행하는 방법을 이해하는 데 도움이 됩니다.

필수 구성 요소

Autify Nexus에서 다음 정보가 필요합니다.

  • 넥서스 서버 URL

  • 조직 ID

  • 클라이언트 ID

  • 클라이언트 암호

  • 테스트 계획이 속한 작업 영역 ID

  • 테스트 계획 이름

또한 이 페이지의 코드 예제를 실행하려면 Jenkins 노드에 jq 명령을 설치해야 합니다.

필수 구성 요소 정보에 대한 자세한 내용은 아래 표에서 확인할 수 있습니다.

넥서스 서버 URL

예를 들어 Autify Nexus에 로그인하는 데 사용하는 URL은 다음과 같습니다. https://1234.cloud.autify.com

조직 ID

Nexus 서버 URL의 시작 부분에 있습니다. 예를 들어 URL이 다음과 https://1234.cloud.autify.com 같은 경우 조직 ID는 다음과 같습니다. 1234

클라이언트 ID

Autify Nexus에서 생성한 API 클라이언트의 클라이언트 ID입니다. 자세한 내용은 API Documentation을 참조하십시오.

클라이언트 암호

Autify Nexus에서 생성한 API 클라이언트에 대한 클라이언트 암호입니다. 자세한 내용은 API Documentation을 참조하십시오.

작업 영역 ID

이 정보는 Workspaces API를 사용하여 확인할 수 있습니다. 자세한 내용은 API 문서를 참조하세요.

테스트 계획 이름

Jenkins에서 실행하려는 테스트 계획의 대/소문자를 구분하는 이름입니다. Autify Nexus에 표시되는 것과 정확히 동일해야 합니다.

클라이언트 암호를 자격 증명으로 저장

클라이언트 암호는 Jenkins에 자격 증명으로 저장되어야 합니다.

  1. 대시보드 페이지에서 Jenkins 관리를 클릭합니다

Screenshot_2025-04-15_at_10_29_05_2.png

  1. 자격 증명을 클릭합니다.

Screenshot_2025-04-15_at_10_29_33.png

  1. 비밀을 추가하려는 도메인을 설정합니다

Screenshot_2025-04-15_at_10_29_54.png

  1. + 자격 증명 추가를 클릭합니다.

Screenshot_2025-04-15_at_10_30_24.png

  1. "Kind" 섹션에서 Secret text 옵션을 선택합니다.

  2. "Secret" 필드에 클라이언트 암호를 입력합니다.

  3. 자격 증명의 이름을 "ID"로 입력합니다(예: "AUTIFY_CLIENT_SECRET").

  4. Create를 클릭합니다.

Screenshot_2025-04-15_at_15_18_25.png

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

Screenshot_2025-04-15_at_16_08_37.png

작업 만들기

  1. 새 작업을 정의하려면 대시보드에서 + 새 항목을 클릭합니다.

Screenshot_2025-04-15_at_10_29_05.png

  1. 작업 이름을 항목 이름으로 입력합니다.

  2. 항목 유형으로 Freestyle 프로젝트를 선택합니다.

  3. 확인을 클릭합니다.

Screenshot_2025-04-15_at_10_22_05.png

  1. "Environment(환경)" 섹션에서 Use secret text(s) or file(s) 을 선택합니다.

  2. 이전 섹션에서 추가한 클라이언트 암호의 이름을 "변수"로 입력합니다.

  3. "Credentials(자격 증명)"의 목록에서 해당 클라이언트 암호에 대한 자격 증명을 선택합니다.

Screenshot_2025-04-15_at_16_13_13.png

  1. "Build Steps" 섹션에서 빌드 단계로 Execute shell 을 선택합니다.

Screenshot_2025-04-15_at_10_22_56.png

  1. 코드 입력 필드에 코드를 입력합니다.

예를 들어, 다음 코드는 이름으로 찾은 테스트 계획을 실행하는 것입니다. 사용 사례에 따라 정보가 달라질 수 있습니다.

image.png

# 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"
  1. Save(저장)를 클릭하여 작업을 등록합니다.

동작을 확인하기 위해 작업을 실행합니다

작업을 정의한 후 예상대로 작동하는지 확인합니다.

  1. 대시보드에서 작업 이름을 클릭합니다.

image.png

  1. 지금 빌드를 클릭하여 작업을 시작합니다.

image.png

빌드 상태는 페이지 왼쪽에서 볼 수 있습니다.

  1. "Builds" 창에서 맨 위 항목을 클릭합니다.

image.png

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

image.png


이 예제의 "최종 상태: PASSED" 로그는 Autify Nexus의 테스트 결과를 보여줍니다. "PASSED"는 테스트 결과가 성공적이었음을 의미합니다. 테스트 결과가 실패한 경우 "FAILED"가 표시됩니다.

"Finished: SUCCESS" 로그는 로그의 마지막 줄에 표시되어야 합니다. 이는 Autify Nexus API와 통신할 때 작업이 오류 없이 성공적으로 완료되었음을 나타냅니다. 이 상태는 Autify Nexus의 테스트 결과가 성공했음을 나타내지 않습니다.

image.png