Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature][Azure Devops] Support Azure DevOps #2604

Closed
2 of 3 tasks
warren830 opened this issue Jul 26, 2022 · 31 comments · Fixed by #4450
Closed
2 of 3 tasks

[Feature][Azure Devops] Support Azure DevOps #2604

warren830 opened this issue Jul 26, 2022 · 31 comments · Fixed by #4450
Assignees
Labels
type/epic This is an epic issue type/feature-request This issue is a proposal for something new
Milestone

Comments

@warren830
Copy link
Contributor

warren830 commented Jul 26, 2022

Search before asking

  • I had searched in the issues and found no similar feature requirement.

Phase 1 - Integrate Azure Pipelines (DONE)

Description

According to issue #2537 , we need to investigate Azure Pipelines to design DevLake's CICD domain schema.

Use case

As DevLake's engineer, I need to investigate Azure Pipeline's data models. We'll compare these with other CI/CD tools such as Jenkins, GitLab CI and GitHub Action, then we can work on #2537 to design a better CICD domain layer model in DevLake.

See the up-to-date CICD domain layer model

Phase 2 - Integrate Azure Repos (v0.17)

According to the comments under this ticket, many Azure DevOps users want to measure DORA metrics. Most of them use Azure Repos for source code management and code review. To calculate DORA metrics, we have to collect these entities from Azure DevOps, which includes:

This is a video introduction of Azure DevOps

Phase 3 - Add configuration and config-ui for Azure DevOps (v0.17) (Tracked in #3321)

Backend

Apart from the existing configuration of Azuer pipeline entities, the backend should offer at least 1 more configuration: PR and issue association: to parse Axure's own issues or Jira issues from Azure PR bodies and associate them in table.pr_issues, similar to what we did in GitHub.

image

Child PRs/issues:

Frontend

Add Config-UI for Azure DevOps. This will be tracked in #3321

Child PRs/Issues:

Are you willing to submit a PR?

  • Yes I am willing to submit a PR!

Code of Conduct

@warren830 warren830 added the type/feature-request This issue is a proposal for something new label Jul 26, 2022
@warren830 warren830 changed the title [Feature][ArgoCI/CD] Investigate Azure Devops plugin [Feature][Azure Devops] Investigate Azure Devops plugin Jul 26, 2022
@selectbook
Copy link

hello, I would like to tackle this one. Please assign it to me.

@warren830
Copy link
Contributor Author

Great, happy coding, haha

@warren830 warren830 assigned selectbook and christ and unassigned selectbook and christ Aug 10, 2022
@warren830 warren830 added this to the v0.14.0 milestone Aug 25, 2022
@github-actions
Copy link

This issue has been automatically marked as stale because it has not had recent activity for 30 days. It will be closed in next 7 days if no further activity occurs.

@github-actions github-actions bot added the Stale label Sep 25, 2022
@github-actions
Copy link

github-actions bot commented Oct 2, 2022

This issue has been closed because it has not received response for too long time. You could reopen it if you encountered similar problems in the future.

@github-actions github-actions bot closed this as completed Oct 2, 2022
@mxwlf
Copy link

mxwlf commented Dec 1, 2022

I would like my team to adopt Apache Dev Lake but we are using Azure Devops (yeah, I know, sighs), has this been de-scoped?

@hezyin
Copy link
Contributor

hezyin commented Dec 3, 2022

Hi @mxwlf, we have a very basic plugin for Azure DevOps that only collects Repo and Build data right now. It's missing a lot of entities and not ready for end users yet. Do you think you could describe your use cases (e.g. what metrics/dashboards you're looking to set up) so that we can look into what needs to be done for the plugin? We would love to find a way to support your team.

@Sarakanerva
Copy link

Hi! @hezyin I'm the same situation as @mxwlf. Our use cases would be having reporting from all of our ADO repositories on each of the four the dora metrics and having the reports be visible on a dashboard. Would you have some rough time estimate on when the plugin would be ready for end user use? Thanks!

@hezyin
Copy link
Contributor

hezyin commented Dec 9, 2022

Hi @Sarakanerva, to track DORA metrics, DevLake would need three key entities: code changes (usually in the form of pull requests), deployments (from CI/CD systems), and incidents (from issue trackers or dedicated incident management systems). Do you think you could describe what DevOps tools you’re using internally for these entities? With this information, I can evaluate what needs to be done on the DevLake side to help you implement DORA metrics.

And if it makes communication easier, feel free to join our Slack channel and ping me there: https://join.slack.com/t/devlake-io/shared_invite/zt-17b6vuvps-x98pqseoUagM7EAmKC82xQ

@mxwlf
Copy link

mxwlf commented Dec 9, 2022

Hi @hezyin sure I can take a look at that plugin and as well as @Sarakanerva I'm looking to implement DORA metrics in our project. I will take a look and even see if I can contribute with something. On my side we are using Azure DevOps as code repo and Jira for issue management, so we are halfway to be feasible to implement DevLake. Will join your Slack channel as well but I may be more active until next year. Thanks!

@hezyin
Copy link
Contributor

hezyin commented Dec 13, 2022

Appreciate it @mxwlf! Do you also track incidents entity with Jira? With multiple users requesting Azure DevOps plugin, we plan to add this plugin to our v0.16 release (around Feb 2023). It would be very helpful if you could pilot this plugin once its beta version is ready.

Let me know when you join Slack, I'll create a channel for Azure DevOps plugin users.

Have a wonderful holiday season!

@KasperSJensen
Copy link

Hi @hezyin, we are also very interested in this integration. like @mxwlf We use Azure DevOps (Git) as code repository, Azure Pipelines for CI/CD and jira for issue management.

@Startrekzky Startrekzky changed the title [Feature][Azure Devops] Investigate Azure Devops plugin [Feature][Azure Devops] Support Azure DevOps Jan 6, 2023
@keon94 keon94 self-assigned this Jan 20, 2023
@keon94
Copy link
Contributor

keon94 commented Jan 20, 2023

We'll look into developing this plugin using the new Python SDK being developed here: #3701

@KasperSJensen
Copy link

Sounds really good @keon94 - are you still aiming for v0.16?

@keon94
Copy link
Contributor

keon94 commented Feb 1, 2023

@KasperSJensen At the moment yes. Will update this thread if there are changes to timelines.

@keon94
Copy link
Contributor

keon94 commented Feb 14, 2023

Hi @KasperSJensen @mxwlf . I'm currently trying to write the logic that is needed for DORA metric collection, and would appreciate your input as we are not very familiar with Azure Devops. Azure treats Pipeline builds and Release deployments as two separate entities, both UI-wise and on the API side. My question is, for the sake of DORA, should we be targeting only release deployments in our data collections, or can pipeline builds also potentially trigger deployments (perhaps not by Azure standards per se)? cc @hezyin

@AThomsen
Copy link

... My question is, for the sake of DORA, should we be targeting only release deployments in our data collections, or can pipeline builds also potentially trigger deployments (perhaps not by Azure standards per se)? cc @hezyin

I can answer that one, as @KasperSJensen and I are working on the same.

Azure Devops has two ways of deploying. The "classic"/legacy way where release is its own entity. And the newer multi-stage yaml-pipelines. Here's a SO thread discussing the two.

Ideally both should be supported by DevLake, but yaml-pipelines should have priority as that is the way going forward.

Actually, Github Actions is forked from Azure Pipelines (yaml-pipelines) so perhaps the implementation can be based on that.

@hezyin hezyin modified the milestones: v0.16.0, v0.17.0 Feb 23, 2023
@keon94
Copy link
Contributor

keon94 commented Feb 25, 2023

@AThomsen Okay, that's good to know. The yaml-pipelines scheme is what we are working on supporting for now. Another question: Do you run pipelines for "non-Azure repos"? e.g. Github, Bitbucket, etc. cc @KasperSJensen

@AThomsen
Copy link

We personally don't, but it is possible.

@KasperSJensen
Copy link

Thank you all for helping to developer this feature. It means alot for us and we are looking so much forward to the release so we can test it

@ajkamel
Copy link

ajkamel commented Mar 9, 2023

Likewise, would be very interested in seeing this land as we use Azure Devops heavily.

@keon94 keon94 reopened this Mar 29, 2023
@keon94 keon94 added the type/epic This is an epic issue label Mar 29, 2023
@Startrekzky
Copy link
Contributor

Startrekzky commented May 15, 2023

This issue has been finished by #4450 and #4504 , which is released in v0.17 beta versions.

@DimDob
Copy link

DimDob commented Nov 22, 2023

Can i use apache devlake for taking DORA Metrics from release pipelines ? Specifically production. ?

@d4x1
Copy link
Contributor

d4x1 commented Nov 22, 2023

Can i use apache devlake for taking DORA Metrics from release pipelines ? Specifically production. ?

@Startrekzky Please have a look at this.

@Startrekzky
Copy link
Contributor

Hi @DimDob , DevLake allows you to configure the production deployments via regex in the scope config of Azure. Please check this doc for details https://devlake.apache.org/docs/Configuration/AzureDevOps#step-13---add-scope-config-optional .

@mr-ks
Copy link
Contributor

mr-ks commented Dec 26, 2023

Is there a specific reason for using Python for the Azure DevOps plugin? Also, would you consider a rewrite in Go? I'm eager to contribute.

@klesh
Copy link
Contributor

klesh commented Dec 27, 2023

@Startrekzky @hezyin What do you think?

@keon94
Copy link
Contributor

keon94 commented Dec 27, 2023

When we first wrote it we wanted to leverage the Python framework we had developed and have a "proof of concept" that a plugin could be done in Python. That said, there are hardly any advantages to having it in Python, and it all it's doing is complicating the tech stack and logic. Not to mention, it's limited in DB migrations (with ugly workarounds), and the framework lacks support of certain important features we have in Go such as incremental collections. We could implement such things with quite a bit of effort but then the question is exactly why? We'll just end up with duplicated code across two different languages, a lot of extra maintenance; the gain here is both little and unclear to me.

So, IMHO, I personally would support a rewrite in Go. I think if we want to insist on supporting Python it should be reserved for simple plugins, and Azure Devops is NOT one of them.

@klesh
Copy link
Contributor

klesh commented Dec 27, 2023

@keon94 Thanks for the input. I personally agree with you. But I would like to add that one of the reasons to write it in Python is that we believed Python is one of the most popular languages, supporting writing plugin in Python could help Apache DevLake grows.

@mr-ks I have a couple of questions after talking to some of our PPMC:

  1. Why would you want to contribute a Golang version of it?
  2. Do you need the AzDo in your work?
  3. Is it too slow or lack of features to fit your need?
  4. Are you willing to maintain it in the near feature?

@mr-ks
Copy link
Contributor

mr-ks commented Dec 27, 2023

@klesh Thanks for considering my input.

We are using Azure DevOps at work. Currently, the plugin only supports Repos and Pipelines and I am looking to also integrate Boards (Sprints and Work Items). For this, I‘d rather use Go than Python.
Yes, I‘d like to maintain it in the near feature.

@klesh
Copy link
Contributor

klesh commented Dec 29, 2023

Thanks for the quick reply and the offering. LGTM.
@Startrekzky @hezyin @keon94 What do you think?

@klesh
Copy link
Contributor

klesh commented Dec 29, 2023

@mr-ks I think you can go ahead and work on it. I suggest that you create the plugin based on one of the following plugins:

  • jira
  • github
  • jenkins
  • gitlab
    because they are the most popular ones and well maintained.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/epic This is an epic issue type/feature-request This issue is a proposal for something new
Projects
None yet
Development

Successfully merging a pull request may close this issue.