2017-07-05 3 views
1

J'essaye d'installer quelques manuscrits de powershell pour être disponible sur mon agent de libération de TFS. D'après ce que j'ai appris jusqu'ici, la manière de procéder consiste à lier un artefact et à référencer le lien d'artefact dans une tâche PowerShell dans TFS RM. Ce qui me pose problème, c'est que TFS RM Artifacts ne me permettra que de télécharger l'ensemble du projet Team dans le contrôle de version alors que je veux seulement que les scripts powershell dans un sous-dossier spécifique soient téléchargés à l'agent.Artefacts de version TFS - Comment relier des artefacts de contrôle de version?

Je reçois un message d'erreur qui dit:

champ (Source référentiel) Les artefacts doivent avoir des valeurs valides

enter image description here

Alors, comment puis-je associer un sous-dossier TFS comme un artefact téléchargeable? ???

Y at-il une tâche personnalisée que je peux utiliser pour accomplir ceci à la place?

Je n'en ai pas encore trouvé un dans la MarketPLace qui télécharge les fichiers bruts dans la liaison TFS Version Control et l'espace de travail libre de s'exécuter sur le serveur de l'agent Release.

Répondre

0

Vous ne pouvez pas. Publiez un artefact dans le cadre de votre processus de construction. Vous pouvez facilement contrôler les dossiers/fichiers exacts publiés.

+0

Cela ne fonctionnera pas. Je ne veux pas que la solution soit compilée chaque fois que je mets à jour un script de construction. – user5855178

+0

Créez ensuite une construction distincte et liez-la en tant qu'artefact secondaire. –

0

La manière la plus simple est que vous pouvez obtenir le (s) fichier (s) en utilisant Get a file REST API.

  1. Cliquez sur Exécuter l'agent
  2. Cochez la case Autoriser les scripts d'accéder à l'option jeton OAuth (assurez-vous que le compte de service de construction a l'autorisation de télécharger le fichier)
  3. Ajouter une tâche PowerShell pour libérer la définition (Type: inline Script)

Arguments:

-url '$(System.TeamFoundationCollectionUri)/_apis/tfvc/items?path=$/Scrum2015/ClassLibraryA/hello.ps1&api-version=1.0' -token "$(System.AccessToken)" -filePath "$(System.DefaultWorkingDirectory)\hello.ps1" 

Scripts:

Param([string]$url, 
    [string]$token, 
    [string]$filePath 
) 
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$token))) 
Invoke-WebRequest -Method Get -Uri $url -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -OutFile $filePath 

Si vous voulez télécharger plusieurs fichiers dans un dossier, vous pouvez appeler custom build task PowerShell pour créer l'espace de travail et d'obtenir des fichiers en utilisant Microsoft Team Foundation Server Extended Client package.