Linking external documents to ADO Wiki - azure-devops

I am planning to use Azure DevOps for agile project management. I was trying out Jira / Confluence earlier. I do understand confluence is good for document management etc. In Azure DevOps, I understand there is Wiki for content management. I want to link all of my requirements, technical and other documentation currently existing as MS Word documents into ADO Wiki. I am unable to do that though - ADO Wiki allows a link of an object within ADO, but how do I get my word and other docs into ADO in the first place, and where do I put them - is there a general repository? Thanks
I am trying to find out how to link my external documents to ADO Wiki.

You could use markdown syntax to link external documents to ADO Wiki: https://learn.microsoft.com/en-us/azure/devops/project/wiki/markdown-guidance?view=azure-devops#links

Presumably your documents are not already hosted by another HTTP/Web Server. If they are then RoyWang-MSFT has your answer.
By Azure DevOps Wiki (ADO Wiki) convention each "project Wiki" is backed by a hosting git repository. Within each repository is a .attachments folder where "Insert File" (uploads/attachments) are housed. You may clone your project Wiki's repository and copy your files into this .attachments folder. Then you can use standard git commands to add, commit, and push your files. Then link to them like this [YourDocDisplayname](/.attachments/YourDoc.docx).

Related

Templates & Resources for creating documentation using Azure DevOps Wiki

Working on a relatively new team in a much larger organization, and as a side project I am looking at our current documentation for opportunities to improve/standardize our best practices/standards. The ideal tool we would like to use, if up to the task, is Azure DevOps Wiki (this is AZDO Service, not Server) since it lines up with the rest of our PM functions. I was doing some digging, and I have not found much in the way of resources/templates/guides that can really get you going for Azure DevOps Wiki.
Beyond general documentation best practices, is there any helpful tricks/resources that we can use to make the most out of that particular tool? Or is there just a better tool we should consider? Looking for ideas! Any feedback is appreciated.
What I am looking for is a library of templates/resources that could
be used to help standardize documentation.
Official doesn't provided any template or resources for standard. There has been a feature request here:
Make it possible to create wiki page based on a template
You can upvote this feature request of Azure DevOps and share your ideas.
But since the DevOps wiki is designed based on Azure DevOps repository, you can clone the template you want to your wiki repository.
The repository url of your wiki should be:
https://dev.azure.com/<Organization Name>/<Project Name>/_git/<Project Name>.wiki
Use this command to clone the wiki repository:
git clone https://<Personal Access Token>#dev.azure.com/<Organization Name>/<Project Name>/_git/<Project Name>.wiki
PS:
Every DevOps project has a hidden repository, which named '<Project Name>.wiki', this repository can't be access via the repository UI list, also can't be listed via the List Repositories REST API. This repository also unable to be managed as other common repositories. Only 'Security for Wiki'. The repository will store all of the information in the pages of wiki permanently unless you delete the file in the repo.
And the comments section of the wiki is implemented quite differently, it is not based on a git repo and does not provide an explicit manage method. If you accidentally delete an image in a comment from the wiki, you won't have any way to get it back.

Upload Markdown files to Wiki as part of Azure DevOps Pipeline

As part of an Azure Pipeline to build a Python package and store it in Azure Artifacts I'm generating a lot of .md files from the docstrings as documentation for the package. I'd like to add a step to my pipeline to automatically upload those to the Azure DevOps Wiki. Is this possible? From the official documentation I could only find a way to do it manually from a folder in the repo.
I ended up cloning the wiki repository and subsequently adding and committing the generated files as part of the pipeline step.
You can use Rest Api to update Wiki pages: Pages.
Here you can find a sample with PowerShell: https://github.com/ashamrai/AzureDevOpsExtensions/blob/master/CustomPSTasks/UpdateWikiPage.ps1

'Centralized' wiki and repo in azure devops?

Living years in confluence+centralized git (bitbucket+github), recently coming to a small shop on MS azure devops, where the repo and wikis scattered between hundred of projects which impossible to find. Would it be a way to structure the azuredevops to make it more 'confluence' like?
Thanks
Would it be a way to structure the azuredevops to make it more 'confluence' like?
I am afraid there is no such a way to structure the azuredevops to make it more 'confluence'.
As we know, the Azure devops is a project-oriented product. Both the repo and the Wiki are based on one project. We can include multiple repo and wiki in a project, but cannot create a repo or wiki for multiple projects.
The workaround is that we could clone Wiki to the target project and Publish the code as wiki, you could check following thread for some more details:
Azure DevOps Wiki for multiple projects

TFS 2015 Project Wiki vs Code Wiki

We are using TFS 2015 On Premise, not in the cloud and I am trying to give access to Stakeholders so they can access the wiki. However, as a stakeholder I keep getting this error:
TF400409: You do not have licensing rights to access this feature: Code
After researching the error it seems to be related to the fact that Stakeholders do not have access to view Code Wikis as shown here. That link is for Azure DevOps and I am not sure if it applies to my case but I cannot find anything else so my assumption is it does apply. Even links within our TFS site, takes us to Azure DevOps for help and thus my assumption is it applies to us as well.
Here is a screenshot from the aforementioned link:
Question
What is the difference between Code Wikis and Project Wikis? It seems I need Project Wikis but how do I create a Project Wiki?
Thanks in advance!
Code Wiki are not available on TFS server 2015. You need to use version TFS 2018 or above for this.
Project Wiki
Every team project can have a wiki. Use the wiki to share information
with your team to understand and contribute to your project.
Each team project wiki is powered by a Git repository in the back-end.
When you create a team project, a Wiki Git repo is not created by
default. Provision a Git repository to store your wiki Markdown files,
or publish existing Markdown files from a Git repository to a wiki.
In the project page, you could directly choose to create project wiki.
Code Wiki
Content that you already maintain in a Git repository can be published to a wiki. For example, this could be content written to
support a software development kit (SDK), product documentation, or
README file. You can publish multiple wikis within a single team
project.
More details about the difference of them, kindly refer our official doc here:
Provisioned wikis vs. published code as a wiki
As how to use them in Azure DevOps/TFS, you could also take a look at this step by step tutorial -- Collaborating using Azure DevOps Wiki

How do I move an Azure DevOps project to a different organization?

I have got a project in an old org (from VSTS), that I want to move to my new one.
I can't see any options in Azure DevOps on migrating projects, or any information on the interwebs.
Anyone know how to do it?
If you just need to move repos, you can use the built in clone functions:
Go to the Azure Devops source repo -> Files
Click "Clone"
Choose "Generate Git Credentials"
Create the target repo in the target Azure DevOps
Choose "Import a repository"
Use the URL and credentials from Step 3
Done
This is not supported today. But this feature was planned to develop: make it possible to move a Team Project between Team Project Collections
If your Azure Devops project only tracks code versions using a single Git repo, hence no boards, user stories, tasks, pipelines, etc. then you can do the following:
Clone your project repo.
For example with Visual Studio.
You don't need to clone if you already have a local repo.
Destroy the association with the remote.
For this typically, you need to open a command line prompt in the folder that contains the .git database folder, most likely the solution folder of Visual Studio and type git remote rm origin.
Here is an example using git bash showing the content of the solution folder, including the .git database and the *.sln Visual Studio solution file:
Open the solution with Visual Studio if not already done.
It should now show that you have many commits waiting to be pushed to a remote. For illustration purpose, my toy project only have 8 commits in total.
Click the up arrow and choose your new remote, say a brand new Azure DevOps project, in the organization of your choice, then push.
You are now done cloning the project in another organization. If needed, then destroy the project in the old organization to complete the "move" operation.
There are 3 projects that I know of to achieve this.
A paid for option by Ops Hub -
OpsHub Visual Studio Migration Utility
An open source tool that requires making changes to the work item process template - Azure DevOps Migration tools
An lastly an Unofficial but still written by Microsoft tool to create Azure DevOps project templates - Azure DevOps Demo Generator & extractor tool
With the last one (the Demo Generator) you extract the project as a template, then apply it to the new organisation. As it is a tool for demo's there is no support provided and in my experience it works for simple projects but falls over on anything complex.
Expanding on others' answers, this post regards Pipelines.
Azure DevOps API
Migrating nearly all aspects of a project across organizations is doable, but it is a lot of manual work using the Azure DevOps API. The link below shows you all the end points, variables, etc. From there you'll probably want to write a Power Shell script and do a couple test runs to a dummy Organization.
https://learn.microsoft.com/en-us/rest/api/azure/devops/?view=azure-devops-rest-6.1&viewFallbackFrom=azure-devops-rest-6.0
In App options
If you avoid the API, there is no way to migrate pipelines that preserve build or release history, but you can preserve your configurations and processes by going into your Pipelines and selecting View YAML. From here you can either take this away as notes to recreate the GUI steps in your new org/project location, or actually adopt the YAML standard in your git repository.
I do not believe there is a way to migrate pipeline variables outside of the API. However, you can move the variables to Azure Key Vault and change your pipeline settings (YAML) to reference values from key vault. This is not a large amount of effort and is a nice process improvement.
Lastly, if you have any locally installed pipeline agents for releases, you will need to run the Power Shell script for your new organization on the boxes. Very simple 5m step, but right now the Agent Pools are not sharable across organization.
As #Frederic mentioned in his answer, we can actually easily do it with Visual Studio. I have done this without Visual Studio. The steps involved are below.
Add a User to Both Organization
Configure SSH Key
Update the SSH Key in Source DevOps and Clone the Repository
Check out all the Branches and Tags
Update the SSH Key in the Destination DevOps
Remove Old and Add New Origin
Push all the branches
The commands and detailed explanations can be found here.
BTW, if you need to change the entire Devops Organization tied to your personal Tenant (E.g. VS Enterprise Subscription) and move it to new Tenant, you can change the AAD and point it to the new one e.g. your EA Tenant on Azure commercial cloud.
Before you switch your organization directory, make sure the following statements are true:
You're in the Project Collection Administrator group for the
organization.
You're a member or a guest in the source Azure AD and a
member in the destination Azure AD
You have 100 or fewer users in
your source organization. Otherwise you will have to open a support ticket.
You may have to add the users back in destination org if they do not exist becuase they will loose access the moment you switch the AAD.
you could just download as a zip file and then download it to the destination repo