J'essaie de plusieurs jours maintenant pour publier mon application ClickOnce avec Pipeline Azure Devops. Avant d'aller en détail Voici ce que j'aimerais faire de ma vue de libération:
J'ai commencé avec un artefact et 2 étapes de sortie modifiant le config.deploy
Fichier avec des variables de mise en scène au cours de mon étage de mise en scène et de modifier le config.deploy
Fichier avec des variables de production au cours de mon stade de production. Le déploiement fonctionnait bien mais l'installation de l'application ne fonctionnait pas en raison du système de contrôle de hachage.
J'ai donc décidé de créer 2 constructions avec 2 artefacts. J'ai renommé la chute classique par un drop_staging
lors de ma première construction et drop_production
Pour ma deuxième construction. J'espérais que le système de construction (Msbuild) a pu sélectionner le bon app.Debug.config
alors app.Release.config
Fichier pendant le processus de construction et de publication.
Voici ma définition de construction
Voici mes arguments de construction
/target:publish
/p:ApplicationVersion=$(Build.BuildNumber)
/p:PublishURL=http://app-staging.example.com/
/p:UpdateEnabled=true
/p:UpdateMode=Foreground
/p:ProductName="App Staging"
/p:OutputPath="$(build.ArtifactStagingDirectory)\Publish\\"
La configuration est définie sur Stabling pour la première version, puis sur production pour la deuxième construction. Bien sûr, j'ai staging et production Définition de construction dans Visual Studio. J'ai un app.config
avec app.Staging.config
et app.Production.config
Dans mon projet.
Je ne peux pas simplement ajouter une tâche pour transformer mon fichier de configuration après la construction car je ne respecterai pas le hachage. Je devrais trouver un moyen de dire à ma construction pour utiliser le fichier de configuration de la transformation XML correcte. Je ne vois aucune autre solution ni peut-être appliquer cette transformation avant la construction? Est-il possible? Quelles sont vos solutions?
enfin, je pourrais résoudre ceci en ajoutant une transformation de fichier avant ma construction.
Au cas où vous auriez besoin de plus d'aide, voici mes détails YAML pour la transformation
steps:
- task: FileTransform@1
displayName: 'File Transform: '
inputs:
folderPath: App.Example
enableXmlTransform: true
xmlTransformationRules: '-transform **\*.Staging.config -xml **\*.config'
fileType: xml
#Your build pipeline references the ‘BuildPlatform’ variable, which you’ve selected to be settable at queue time. Create or edit the build pipeline for this YAML file, define the variable on the Variables tab, and then select the option to make it settable at queue time. See https://go.Microsoft.com/fwlink/?linkid=865971
steps:
- task: VSBuild@1
displayName: 'Build solution'
inputs:
solution: Example.sln
msbuildArgs: '/target:publish /p:ApplicationVersion=$(Build.BuildNumber) /p:PublishURL=http://staging.example.com/ /p:UpdateEnabled=true /p:UpdateMode=Foreground /p:ProductName="App Staging" /p:OutputPath="$(build.ArtifactStagingDirectory)\Publish\\"'
platform: '$(BuildPlatform)'
configuration: Staging