ALM Octane (テクニカルプレビュー) にSCMのデータを追加する
あなたはREST APIを使用してALM OctaneにSCM (ソースコード管理) データを挿入する方法については、このトピックを使用します。次に、ALM Octaneを使用して、コミットや、リポジトリやブランチなどの他の関連データを追跡し、コード分析を実行できます。
フロー
SCMデータをALM Octaneサーバーに手動で挿入するには:
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に正しくプッシュされていることを確認してください。
-
発生した可能性のあるエラーがないか応答を確認してください。
-
コミットが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"
}
}
参照情報: