この記事では、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 をクリックします

シークレットを追加するドメインを設定します

+ 資格情報の追加 をクリックします

種類 セクションの下にある シークレットテキスト オプションを選択します
シークレット フィールドにAPIクライアントシークレットを入力します
資格情報の名前を ID として入力します(例: AUTIFY_CLIENT_SECRET)
作成 をクリックします

追加した資格情報は、資格情報リストで確認できます。

ジョブを作成する
新しいジョブを定義するには、ダッシュボードの + 新しいアイテム をクリックします。

アイテム名としてジョブ名を入力します
アイテムタイプとして Freestyle プロジェクト を選択します
OK をクリックします

環境 セクションの 秘密のテキストまたはファイルを使用する にチェックを入れます
前のセクションで追加したクライアントシークレットの名前を 変数 として入力します
そのクライアントシークレットの資格情報を Credentials のリストから選択します

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

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

# 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"
保存 をクリックしてジョブを登録します
ジョブを実行して動作を確認する
ジョブを定義したら、ジョブが期待どおりに動作するかどうかを確認します。
ダッシュボードでジョブ名をクリックします

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

ビルドの状態は、ページの左側に表示されます。
ビルド ペインの一番上の項目をクリックします

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

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