Я работаю над расширением Azure DevOps, которое включает в себя пользовательскую задачу, которая добавляет вложение. Может использоваться как в конвейере сборки, так и в выпуске.
Используя пакет npm vss-web-extension-sdk
и TypeScript, как я могу получить содержимое этого вложения для определенного Release Pipeline , конкретной среды и конкретной попытки развертывания?
Конечная цель - добавить содержимое вложения (то есть HTML) в iframe внутри вкладки релиза.
Вот где я застрял:
import Controls = require("VSS/Controls");
import TFS_Build_Contracts = require("TFS/Build/Contracts");
import TFS_Build_Extension_Contracts = require("TFS/Build/ExtensionContracts");
import TFS_DistributedTask_Contracts = require("TFS/DistributedTask/Contracts");
import TFS_Release_Extension_Contracts = require("ReleaseManagement/Core/ExtensionContracts");
import TFS_Release_Contracts = require("ReleaseManagement/Core/Contracts");
import DT_Client = require("TFS/DistributedTask/TaskRestClient");
import RM_Client = require("ReleaseManagement/Core/RestClient");
// [...]
private async searchForAttachment(release: TFS_Release_Contracts.Release) {
let vsoContext: WebContext = VSS.getWebContext();
let rmClient = <RM_Client.ReleaseHttpClient5>RM_Client.getClient();
let projectId = vsoContext.project.id;
// For test purpose, target the last environment and last deployment attempt
let env = release.environments[release.environments.length - 1];
let attempt = env.deploySteps[env.deploySteps.length - 1];
// Where I am supposed to retrieve "timelineId" ?
let attachments = rmClient.getTaskAttachments(
projectId, release.id, env.id, attempt.id, timelineId, 'my_attachment_type'
);
// The documentation says that the call above is deprecated, and I should use getReleaseTaskAttachments
// But, where I am supposed to retrieve "planId" ?
// Also, getReleaseTaskAttachments is undefined in the latest version of the npm package...
attachments = rmClient.getReleaseTaskAttachments(
projectId, release.id, env.id, attempt.id, planId, 'my_attachment_type'
);
}
К вашему сведению, я уже могу получить вложение из конвейера сборки, но это не относится к развертыванию релиза. Это проще, и я нашел достаточно документации в Интернете.
Кроме того, я добавляю вложение в пользовательской задаче с помощью команды task.addattachment
:
##vso[task.addattachment type=myattachmenttype;name=myattachmentname;]c:\myattachment.txt