ALM Octane (テクニカルプレビュー) にSCMのデータを追加する

あなたはREST APIを使用してALM OctaneにSCM (ソースコード管理) データを挿入する方法については、このトピックを使用します。次に、ALM Octaneを使用して、コミットや、リポジトリやブランチなどの他の関連データを追跡し、コード分析を実行できます。

フロー

SCMデータをALM Octaneサーバーに手動で挿入するには:  

  1. 認証し、必要な権限を持つユーザーとしてサインインします。

  2. SCMデータをALM Octaneにプッシュします。

  3. プッシュのステータスを確認し、コミットデータとブランチデータを取得します。

トップに戻る

SCMデータをALM Octaneにプッシュします

ペイロードでPUT操作を使用して、リポジトリ、ブランチ、コミットなどの新しいSCMデータエンティティを作成します。

一意のコミット識別子はparentRevIdです。リビジョンIDがコンテキスト内で見つかったが、別のリポジトリ/ブランチのものである場合、コミットは他のリポジトリにリンクされます。

構文をリクエストする

SCM情報を挿入するためのリクエスト構文は次のとおりです。

PUT .../api/shared_spaces/space_id/workspaces/<workspace_id>/scm-commits?instance-id='<instance_id>'&job-ci-id='<path_to_file>'&build-ci-id='<build_id>'

PUTするときは、次のように指定します。 

  • パイプラインの実行を識別するためのクエリ。

  • 以下で説明するJSONペイロードを含むリクエスト本文。

  • application/jsonに設定されたContent-Typeヘッダーフィールド。

  • オプションで、コンテンツをgzip形式で圧縮できます。この場合、Content-Encodingヘッダーフィールドをapplication/gzipに設定する必要があります。

次の表に、リクエストで実行された対応するパイプラインを特定する方法を示します。

項目 フィールド

CIサーバーID

instance-id
Jenkinsなどのジョブ名 job-ci-id

ビルドID

build-ci-id

リクエスト本文のJSONペイロード

リクエスト本文のペイロードは、SCMデータで更新するパイプライン実行を記述します。

ペイロードに複数のコミットを指定できます。

ペイロードは、標準のALM Octane REST API構文を使用します。次に例を示します。

[{
        "repository": {
            "type": "git",
            "url": " https://github.com/repository.git",
            "branch": "master"
        },
        "commits":
        [{
                "user": "user",
                "userEmail": "user@mail.com",
                "time": "1586269223000",
                "parentRevId": "e5358a5f1456aebbf5c436790179fe6b218def89",
                "comment": "some comment",
                "revId": "7583cc0704efd0ef96bbb4689a401d252adea821",
                "changes": [{
                        "type": "edit",
                        "file": "src/…filePath/Example1.java",
                        "renameToFile": null,
                        "commitId": null
                    }
                ]
            }, {
                "user": "user",
                "userEmail": "user@mail.com",
                "time": "1586269223000",
                "parentRevId": "e5358a5f1456aebbf5c436790179fe6b218def81",
                "comment": "some comment",
                "revId": "7583cc0704efd0ef96bbb4689a401d252adea822",
                "changes": [{
                        "type": "edit",
                        "file": "src/…filePath/Example2.java",
                        "renameToFile": null,
                        "commitId": null
                    }
                ]
            }
        ]
}]
フィールド 説明
Repository 1つの要素。
type ツールタイプ: 「svn」、「git」、「starteam」。フリーテキスト文字列。
url SCMリポジトリへのURL。
branch

コミットが行われたブランチ。

Commits 配列。
parentRevId SCMツールから受け取ったparentRevIdをコミットします。
revId SCMツールから受け取ったrevIdをコミットします。
comment SCMツールから受け取ったコメントをコミットします。
time SCMツールから受け取ったコミット時間。
userEmail コミットを担当するワークスペースユーザーの電子メール。ALM Octaneは、このフィールドを使用してユーザーを識別します。オプション。
user ユーザー名。
Changes 変更の配列。オプション。
type “edit”、“add”、“delete”フリーテキスト文字列。
file ファイル名を変更しました。

トップに戻る

結果の確認

成功すると、戻りコード200が返されます。

SCMデータがALM Octaneに正しくプッシュされていることを確認してください。

  1. 発生した可能性のあるエラーがないか応答を確認してください。

  2. コミットがALM Octaneに存在するかどうかを確認します。詳細については、ソースコントロール管理システムにコミットされた変更の追跡を参照してください。

コミットおよびブランチデータを取得する

GET操作を使用して、既存のscm_commitsとそのIDを確認できます。

GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/scm_commits

以下のを参照してください。

GET操作を使用して、既存のSCM branchesとそのIDを確認できます。

GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/scm_repositories

トップに戻る

たとえば、リクエストには次のようなものがあります。

例: GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/scm_commits/1213269?fields=creation_time,client_lock_stamp,stories,version_stamp,commit_time,revision,workspace_id,repositories,name,workspace_user,risk,comment,last_modified,user,email

ワークスペースユーザー、リポジトリ、およびストーリーがない場合、応答は次のようになります。

例: GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/scm_commits/1213269?fields=creation_time,client_lock_stamp ,version_stamp,commit_time,revision,workspace_id,name,risk,comment,last_modified,user,email

{
    "type": "scm_commit",
    "last_modified": "2020-08-22T22:31:25Z",
    "revision": "53e564566a75fcc073a5ed0dd71bad0f0f588855",
    "creation_time": "2020-08-20T08:34:10Z",
    "user": "userName",
    "risk": false,
    "comment": "user story #1053020. user story 11111111",
    "commit_time": "2020-08-20T08:33:06Z",
    "name": "commit name",
    "workspace_id": 33006,
    "id": "1213269",
    "version_stamp": 14,
    "client_lock_stamp": 1
}

SCMデータを使用すると、応答は次のようになります。

例: {
    "type": "scm_commit",
    "last_modified": "2020-08-22T22:31:25Z",
    "revision": "53e564566a75fcc073a5ed0dd71bad0f0f588855",
    "creation_time": "2020-08-20T08:34:10Z",
    "user": "evgene.lock",
    "risk": false,
    "comment": "user story #1053020. user story 11111111",
    "commit_time": "2020-08-20T08:33:06Z",
    "name": "commit name",
    "workspace_id": 33006,
    "id": "1213269",
    "version_stamp": 14,
    "client_lock_stamp": 1,
    "stories": {
            "total_count": 1,
            "data": [{
                           "type": "work_item",
                           "id": "1053020",
                           "name": "US1",
                           "subtype": "story"
                   }
            ]
    },
    "repositories": {
            "total_count": 1,
            "data": [{
                           "type": "scm_repository",
                           "scm_source_view": null,
                           "scm_type": 2,
                           "scm_diff": null,
                           "workspace_id": 33006,
                           "branch": "master",
                           "id": "324004",
                           "name": "repository.git:master",
                           "url": "https://github.com/repository.git"
                   }
            ]
    },
    "workspace_user": {
            "type": "workspace_user",
            "id": "117001",
            "workspace_id": 33006,
            "activity_level": 0,
            "full_name": "User Name",
            "name": "userName@mail.com"
    }
}

トップに戻る

参照情報: