How can I create a new GitLab Project Service? - tfs

I am currently evaluating GitLab for the development process in a new team. For reasons that are beyond my control I need to integrate with TFS build (so that a merge request kicks off a new build and the build reports status to the merge request, etc). It seems, from what I have learned so far, that the only way to achieve this seamlessly would be with a new Project Service.
Is this true and if so how would I go about creating one?
I have searched through the relevant docs and forums and I can't find much information of use so I suspect that Project Services are less of an arbitrary, open plug-in style model but rather more a core part of the product. I am hoping to be proved wrong...

If the integrate of GitLab and TFS build means you want through GitLab to queue the TFS build automatically.
You may have to create your own service to receive the webhooks form Gitlab(How do I create a GitLab webhook?). And then trigger TFS build.

You might have a look at:
(paths taken from docker container)
/opt/gitlab/embedded/service/gitlab-rails/…
…/app/models/project_services/
have a look at the template: app/models/project_services/ci_service.rb
…/app/models/project.rb
…/app/models/service.rb
…/lib/api/v3/services.rb
…/lib/api/services.rb
where the first three are the most relevant, the api to complete the REST services.
But no, I wasn't able to find any documentation either...

Related

Release powerapp solution to new environment with devops

I am interested in any information about or experiences with deploying PowerApps solutions to new environments within the same tenant.
In my solution I have a canvas-app and several flows between the app and sharepoint. I have used connection references to all connections (sharepoint, mail, etc.). On the devops side I have a build pipeline from my development environment, very much in line with Microsoft's recommendations for ALM. In addition, I have a release pipeline to publish the solution in another environment, e.g. a test environment. I can publish the release but when I access the solution in the new environment all flows have been turned off and all connections to sharepoint have been severed. When I inspect the flows it throws an error that it was unable to locate the connection Id. What strikes me as odd here is that the connection references that are visible in the new solution cannot be selected. However, what I can do is to add a new connection (from each flow), whereafter I can turn the flow back on and activate each of them in the canvas app.
What I am asking for here, is any documentation, guide, tutorial, help, etc. to make this release a little more automatic, so I won't have to re-add connections for every single action from each of my flows.
I think you are in luck 😊 and you should check out the latest PA community call. I think the last demo is the thing you are looking for (especially from that moment I suppose🤔) and is now one of the targets in Power Platform.
If you are considering to introduce source control as well (like git), currently there is a cool experiment going on in the community in that direction which I think is quite promising and you may check this article. But please consider this pack/unpack tool as an experiment and don't just remove the original .msapp files yet 😉.
I think I have finally found a working solution. I'll document my steps here for other ALM hopefuls.
When pushing to the target environment for the first time I need to click on each of the connection references, click on solutions layers, ) use the breadcrumb path to go one step back ] and from here I can assign the correct connection. Subsequent deployments now work without any hassle.
Also, first time deployment, I have learned cannot activate workflows. However, future deployments can activate workflows by managing the setting the the Import Solution build tool

Migrating a build definition from TFS to VSTS

I've been tasked with migrating a build from TFS to VSTS, I've used TFS from a developer point of view, however I've never created builds. Can anyone give me any advice where to start, good websites, tutorials, tools that might help, anything that might catch me out etc, basically my knowledge on this is very limited so anything would help. I've no doubt there must be somebody out there who can say we've done this, here is what we did...the new VSTS build will need to be a copy of the TFS build however some analysis needs to be done as the build process is old and certain parts may not be necessary. Thanks in advance!
Migrate New Vnext build definition from TFS to VSTS
If you want to template your builds or move them from TFS to VSTS, you could also use the REST API's to perform this. Details please refer this blog: HOW TO MOVE BUILD DEFINITIONS IN TFS TO OTHER PROJECTS USING THE REST API
Another example shown here. It shows how to get the JSON response of a build definition and again using the same reference to make a new one in the project you desire.
Migrate Old XAML to New Vnext build definition from TFS to VSTS
Unfortunately, there will not be any automated conversion processes. The new builds are based on a different architecture and run on a completely different system. And you can use both the new builds and agents alongside your XAML builds, controllers, and agents.
If you have heavily customized XAML builds and custom activities, you
can continue using those builds until you are ready to port your
business logic into scripts that can run in the new builds.
You should also take a look at these series of articles by jessehouwing devoted specifically to the case like yours.
About how to create a build, you could refer this tutorial from MSDN.

Is it possible to add custom build runners to MS Team Foundation Build Server?

I've recently developed custom build runners (plugins) to TeamCity and Jenkins. The plugins enable the users to start automated load tests as part of the build process.
To give you some idea here's the Jenkins plugin page with a lot of description:
https://wiki.jenkins-ci.org/display/JENKINS/Apica+Loadtest+Plugin
Here are a couple of screenshots of the TeamCity plugin:
The setup GUI: https://i.imgsafe.org/5221a01.png
Build log: https://i.imgsafe.org/c93f7f9.png
Custom tab with load test summary: https://i.imgsafe.org/f5b6937.png
Setup validation example: https://i.imgsafe.org/52cc9a2.png
These Continuous Integration frameworks allow a high level of customisation for plugin development: the UI, the output, client and server code etc. can all be tailored.
I've received a question whether we can develop a similar build runner for MS Team Foundation Build Service. I've completely new to TFS, I've never used it for anything. I've read through a couple of tutorials on how to install and set up TFS but there seems to be very little material available regarding custom build runners. The closest I've got are the following pages:
https://msdn.microsoft.com/en-us/library/bb130146.aspx
http://blogs.msdn.com/b/jimlamb/archive/2010/02/12/how-to-create-a-custom-workflow-activity-for-tfs-build-2010.aspx
However, they don't provide any example on GUI extensions, validation, customisation etc.
Therefore I'd like to get the opinion of experienced TFS users before we get any more serious with the framework:
is it possible to develop plugins for TFS build?
what are the limitations? E.g. can I build a custom GUI with custom client/server actions?
can I include custom pages, show graphs etc?
Any advice is welcome.
Thanks for your help,
Andras
When it comes to TFS Build, you first need to know that there are two build systems: XAML Build and a new, now default, build system.
XAML Builds are based on Windows Workflow Foundation. You can create custom activities and add these to a Build Definition Template. XAML Build only run on Windows and extending them is not very easy.
The new Build system is based on Node, runs cross-platform and is very easily extendable. Microsoft has open sourced all the tasks they have for TFS Build (see GitHub for the repository).
Targeting the new build system means that you support on-premises installations of TFS 2015 and the cloud hosted version of TFS: Visual Studio Team Services (see visualstudio.com for more info).
The easiest way to get started is by creating a new VSTS account (free!), adding some code and running a build. If you have that working, you can start exploring the existing build tasks and learn what's possible. You can then easily create your own task and start experimenting.
One thing that might be of interest to you is that TFS/VSTS already support load testing. You can run a very simple load test with a couple of mouse clicks or configure more complex Web Tests and use these in TFS in combination with Application Insights. I'm not sure if that's what your customers are looking for but it's worth checking out (see Cloud-based Load Testing for more information)

How to integrate Jira with GitLab CE?

We have self hosted GitLab CE and Jira, we want
link git commit with jira issue
link git commit with jira issue status, like we can start/move/close issue by git issues
limit above operations on specific branches, e.g., change issue status only when commits on master branch since we perform merge request for every single feature/bug
but only GitLab EE built-in supports Jira integration, how could I do that for GitLab CE?
I'm on GitLab CE 7.8.2, Jira+Agile 6.4
I think there is now a better way:
https://docs.gitlab.com/ce/user/project/integrations/jira.html
GitLab can be configured to interact with JIRA. Configuration happens via user name and password. Connecting to a JIRA server via CAS is not possible.
Each project can be configured to connect to a different JIRA instance, see the configuration section. If you have one JIRA instance you can pre-fill the settings page with a default template. To configure the template see the Services Templates document.
Once the project is connected to JIRA, you can reference and close the issues in JIRA directly from GitLab.
You can take a look at this project : https://github.com/akraxx/gitlab-jira-integration. It's a Java application, so you will need a server with a JVM to run it.
Follow the README to know how to configure it :)
Note that, with GitLab 13.3 (August 2020), you don't have to setup a third-party integration on each project anymore.
You can do so at your managed Gitlab instance level (free edition).
Instance-level project integration management for external services
Administrators of self-managed GitLab can now integrate third-party services with all projects on the instance from a single interface.
Previously, integrations had to be configured per project, which meant that if an instance had thousands of projects, thousands of individual configurations had to be manually configured. Not only was this time-consuming, but it was also error-prone, hard to update, and made it difficult to enforce integrations as a policy.
By configuring integrations across all projects, administrators save themselves and their project owners incredible amounts of time and effort.
This is the first iteration of this functionality. In upcoming releases, we will expand this feature to the group level, add more configuration and compliance options, and more.
See Documentation and Issue.
Plus, with GitLab 13.4 (September 2020)
GitLab for Jira and DVCS Connector now in Core
For users of Jira GitLab, the GitLab for Jira app and the DVCS Connector
allow you to display information about GitLab
commits and merge requests directly in Jira.
Combined with our native
integration with Jira, you can easily move back and forth between the
two applications as you work.
These features were previously available only in our Premium plan, but
are now available to all users!
See Documentation and Issue.
See GitLab 13.6 (November 2020)
Group-level management of project integrations
In GitLab 13.3, we added the ability to enable an integration across an entire instance.
With GitLab 13.6, that feature is being expanded to allow integrations to be managed at the group level as well!
Group owners can now add an integration to a group, and that integration will be inherited by all projects under that group.
This has the potential for saving massive amounts of time, as many organizations have specific integrations that they want rolled out to every project they create.
A great example of this is using our Jira integration. If you’re using Jira, it’s almost always across the whole company. Some of these companies have thousands of projects and therefore had to configure each and every one of those integrations individually.
With group-level management of project integrations, you can add the integration at each parent group, reducing the amount of configuration required by orders of magnitude!
Read more in our announcement on the GitLab blog.
See Documentation and Epic.
With GitLab 13.10 (March 2021):
View Jira issue details in GitLab
Users of our Jira issue list feature can now view the details of an issue directly inside of GitLab! This MVC enables developers to see the details, labels, and comments on an issue, giving them the ability to stay in GitLab while working on Jira issues.
Our goal is to empower developers to stay inside of GitLab during the majority of their day, and this is now one less trip to Jira you’ll have to make.
In GitLab 13.10, this feature is available if you enable a feature flag. This feature will be enabled by default in GitLab 13.11.
See Documentation and Epic.
At the moment I think the GitLab Listener add-on for JIRA is the only way to integrate GitLab CE and JIRA. You can use commit messages to generate JIRA worklogs, comments and activities, as well as execute workflow transitions. The add-on also tries to map GitLab users to JIRA users in order to link worklogs, comments, etc. to the right user.
It's a simple add-on and maybe it does not cover all your requirements, but it's better than nothing :).

What is the recomended TFS build template for FAKE integration?

FAKE documentation has description for integrating with TeamCity but there is no detailed description on TFS integration.
I think I need a custom build process template but before I create one I wanted to make sure that none exists.
Could you recommend me TFS template that integrates FAKE?
You need to create a custom activity that hosts and runs your FAKE process.
http://www.hanselman.com/blog/ExploringFAKEAnFBuildSystemForAllOfNET.aspx
There is some good documentation online for creating custom activities:
http://blogs.msdn.com/b/jimlamb/archive/2009/11/18/how-to-create-a-custom-workflow-activity-for-tfs-build-2010.aspx
And I recommend that you add it to the Community Build Tool project.

Resources