GitHubでファイルの生のコンテンツへのリンクを生成することは可能ですが、VSTS/DevOpsで行うことは可能ですか?
確かに、これが必要な残りの呼び出しです:
GET https://feeds.dev.Azure.com/{organization}/_apis/packaging/Feeds/{feedId}/packages/{packageId}?includeAllVersions={includeAllVersions}&includeUrls={includeUrls}&isListed={isListed}&isRelease={isRelease}&includeDeleted={includeDeleted}&includeDescription={includeDescription}&api-version=5.0-preview.1
既存の回答を読んだ後でも、まだ少し苦労していたので、もう少し綿密な回答を残したかった。
他の人が言ったように、 パターン は(クエリを読みやすくするために別々の行に分割されています):
https://dev.Azure.com/{{organization}}/{{project}}/_apis/sourceProviders/{{providerName}}/filecontents
?repository={{repository}}
&path={{path}}
&commitOrBranch={{commitOrBranch}}
&api-version=5.0-preview.1
しかし、これらの変数の値をどのようにして見つけますか? Azure DevOpsに移動し、左側のナビゲーションから[リポジトリ]> [ファイル]を選択して特定のファイルを選択すると、現在のURLは次のようになります。
https://dev.Azure.com/{{organization}}/{{project}}/_git/{{repository}}?path=%2Fpackage.json
これらの値は、組織、プロジェクト、およびリポジトリに使用する必要があります。パスについては、UNIXファイルパスのHTTPエンコードバージョンが表示されます。 %2F
は/
のHTTPエンコードであるため、パスは実際には/package.json
だけです( Postman のようなツールがそのエンコードを実行します)。
コミットまたはブランチは自明です。この値に必要なものを知っているか、master
を使用する必要があります。 documentation が現在指しているので、上記のURLにAPIバージョンを「ハードコード」しました。
最後の変数には、providerName
が必要です。つまり、TfsGit
を使用する必要があります。 ソースプロバイダーのリスト を調べ、supportedCapabilities.queryFileContents
の値がtrue
の値を探して、この値を取得しました。
ただし、このURLをリクエストしただけの場合は、自分自身を認証する必要があるため、「203 Non-Authoritative Information」という応答が返されます。同じ documentation を再度参照すると、ユーザー名に任意の値を使用し、パスワードに個人用アクセストークンを使用して、基本認証を使用するように指示されています。個人用アクセストークンはhttps://dev.Azure.com/{{organization}}/_usersSettings/tokens
で作成できます。この種のことをよく知らない場合でも、Postmanは、コードに入る前にこれらの要求を機能させるのに非常に役立ちます。
したがって、ルートにsrc
ディレクトリのあるリポジトリがあり、src/package.json
のファイルコンテンツを取得しようとしている場合、URLは次のようになります。
https://dev.Azure.com/{{organization}}/{{project}}/_apis/sourceProviders/TfsGit/filecontents?repository={{repository}}&commitOrBranch=master&api-version={{api-version}}&path=src%2Fpackage.json
そして、基本的な認証を忘れないでください!
このURLを使用してファイルの生のコンテンツを取得することができました。
GET https://dev.Azure.com/ {organization}/{project}/_apis/sourceProviders/{providerName}/filecontents?serviceEndpointId = {serviceEndpointId}&repository = {repository}&commitOrBranch = {commitOrBranch }&path = {path}&api-version = 5.0-preview.1
私はここからこれを手に入れました。
添付ファイルウィンドウからファイル名をドラッグし、他のMSアプリケーションにドロップして、生のURLまたはリンクされたファイル名を取得します。