Jenkins 統合ガイド

Prev Next

この記事では、Autify NexusとJenkinsの連携方法について解説します。具体的には、JenkinsノードからAutify Nexus APIを使ってテストプランを実行する方法を理解するのに役立ちます。

前提条件

Autify Nexusから以下の情報が必要になります。

  • NexusサーバーのURL

  • APIクライアントシークレット

  • テストプランの名前

また、このページのコード例を実行するには、Jenkinsノードに jq コマンドをインストールする必要があります。

前提条件情報の詳細については、次の表を参照してください。

NexusサーバーのURL

Autify Nexusにログインする際に使用するURL(例: https://1234.cloud.autify.com)

APIクライアントシークレット

Autify Nexusで作成したAPIクライアントのクライアントシークレットです。詳細については、Autify Nexus APIを参照してください。

テストプラン名

Jenkins で実行するテストプランの大文字と小文字を区別する名前。Autify Nexusでの表示と全く同じである必要があります。

クライアントシークレットを資格情報として保存する

クライアントシークレットは、Jenkinsに資格情報として保存する必要があります。

  1. ダッシュボードページで Manage Jenkins をクリックします

Screenshot_2025-04-15_at_10_29_05_2.png

  1. Credentials をクリックします

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. 種類 セクションの下にある シークレットテキスト オプションを選択します

  2. シークレット フィールドにAPIクライアントシークレットを入力します

  3. 資格情報の名前を ID として入力します(例: AUTIFY_CLIENT_SECRET)

  4. 作成 をクリックします

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. OK をクリックします

Screenshot_2025-04-15_at_10_22_05.png

  1. 環境 セクションの 秘密のテキストまたはファイルを使用する にチェックを入れます

  2. 前のセクションで追加したクライアントシークレットの名前を 変数 として入力します

  3. そのクライアントシークレットの資格情報を Credentials のリストから選択します

Screenshot_2025-04-15_at_16_13_13.png

  1. ビルドステップ セクションのビルドステップとして シェルの実行 を選択します

Screenshot_2025-04-15_at_10_22_56.png

  1. コード入力フィールドにコードを入力します

たとえば、次のコードは、名前で見つかったテストプランを実行するものです。ご利用方法によって情報が異なりますので、予めご了承ください。

image.png

# 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"
  1. 保存 をクリックしてジョブを登録します

ジョブを実行して動作を確認する

ジョブを定義したら、ジョブが期待どおりに動作するかどうかを確認します。

  1. ダッシュボードでジョブ名をクリックします

image.png

  1. Build Now をクリックしてジョブを開始します

image.png

ビルドの状態は、ページの左側に表示されます。

  1. ビルド ペインの一番上の項目をクリックします

image.png

出力は、コンソール出力 をクリックすると表示されます。

image.png


この例のログ「Final status: PASSED」は、Autify Nexusでのテスト結果を示しています。「PASSED」は、テスト結果が成功したことを意味します。テスト結果が失敗した場合は、「FAILED」と表示されます。

ログ「Finished: SUCCESS」は、ログの最後の行に表示されます。これは、Autify Nexus APIとの通信時にエラーなくジョブが終了したことを示しています。なお、このステータスはAutify Nexusでのテスト結果が成功したことを示すものではありません。

image.png