TFS rest API, bypass gated on create changeset - tfs

I have a deprecated C# program that edits a file in TFS on premise source control. I am in the process of porting this to the rest api. With the C# API I used the CheckIn method of the Workspace which allows me to bypass the gated check-in. I can't seem to find a responding rest API, but I can use the create changeset call.
The create changeset call works but it kicks of the gated check-in. I have privileges to bypass this and I can bypass it with the C# dotNet API.
How do I bypass the gated check-in with the restAPI?

Bypass gated check-in is not supported in Create Changeset REST API. I submitted a user voice that you can vote: Create changeset Rest API bypass gated check in

Related

tfs 2015 gated check in failed

I created a ci build in tfs 2015.3. On the trigger tab I set gated check in.
Is there a way to let the developer now in vs that the build failed. Currently there is no way, I do not want to use alerts, I would like for a message in vs.
In addition, when the build fails, the files are checked out on the build server, how can I cancel this behavior, this requires a tfs admin to release the files.
In TFS 2013 there used to be a tool called Team Foundation Build Notification that shipped with Visual Studio 2013. However this is no longer the case.
If you don't want to use e-mail notifications there are third party applications that you can run in your tray to receive build notifications. I have used catlight myself recently for the exact same problem. If you are using a chat application like Slack you can also integrate build notifications into your team's slack channel to be notified on build failure.
To answer the second part of your question it is important to understand what a gated check-in does exactly.
When you check-in and a gated check-in is triggerd your files are not checked in but TFS creates a shelveset instead. TFS will then perform a private build using the latest version of the sources in combination with the shelveset it just created. Only when the this private build passes the pending changes in your shelveset will be checked in by the build on behalf of the user who triggerd the gated check-in. This will create a new changeset.
Upon check-in all locks will be released so all files that have a check-in or check-out lock will be released when the build server checks in your changes on behalf of you.
When the build fails no the changes in the shelveset (created when the gated check-in build was triggerd) will not be checked-in by the build server thus the locks will not be released. In the source control explorer the files will still have pending changes (and be checked-out) because the changes in your workspace have not yet been checked-in. This is the intended beheaviour and should not cause any issues for you unless you have disabled multiple check-out and you are, by having these files checked-out, blocking other developers from making changes.
I would not advise you to use a gated check-in when also not allowing multiple check-outs. Furthermore I would not advise disallowing multiple check-outs if it can be avoided in any way.
A gated check-in is meant to safeguard the repository from receiving check-ins that would break the application (it no longer compiles or unit tests fail) or diminish the quality below your standards. However this also means you cannot check-in until all the rules and validations you have in your build process pass and thus means other developers will be locked out until you are able to get past the "gate".

TFS vNext Builds - Gated-Check-in Triggers cease to trigger some time after initial definition

I've defined several Build Definitions using the TFS vNext build system. These include use of the Gated Check-In feature.
Initially, when the builds are defined, check-ins that have files that fall within the path of any of the Include sections of the Gated Check-in filters cause the prompt for the Gated Check-In to appear, followed by (upon acceptance) the triggering of the build.
However, after some time (e.g. 1 day), check-ins from some developers no longer trigger the Gated Check-in (and submissions are committed immediately to source control), while check-ins from other developers continue to cause the Gated Check-In prompt to appear.
I'm unable to reset this by just unchecking;saving;re-checking the Gated Check-in checkbox.
As a work-around, I have been able to enable the gated check-in for the same paths on a different build, then undo it, and re-enable on the original build. This only works for a short time, however.
I've seen this in both the TFS Server 2015 Update 2 and Update 3.
This problem never occurred with the old XAML builds.
The server product/version is:
Microsoft Visual Studio Team Foundation Server Update 3
Version 14.95.25122.0
How can I configure TFS vNext check-ins so that they're always fired?
Keywords:-
Gated check-in failure; Gated check-in doesn't fire; Gated check-in skipped
This is a TFS bug.
After logging a support case with Microsoft, they confirmed that this is a TFS bug that occurs on TFS installations that have multiple TFS Application Tiers (ATs) configured through a load balancer.
In some cases, the TFS vNext Build Gated Check-Ins skip the verification and commit the changes immediately.
There is a hot-fix DLL available (for file Microsoft.TeamFoundation.Build2.Server.dll), but it requires contacting Microsoft to obtain it. Given that this is a bug, it shouldn't be a chargeable Microsoft Support incident. (I used one of my MSDN Microsoft support credits, but it wasn't deducted.)

TFS not honoring /author argument with gated build

We'd like to have a process like the following:
User submits code review with shelveset of changes they want to be in master branch.
If code passes review, select group of users can pull down the shelveset, and merge the changes into master using the original authors name for historical tracking.
I can use the tf checkin /author:{OriginalAuthor} command, but this doesn't work with our gated build. If I bypass the gated build, it will check in on the original authors behalf, but using the gated build it seems to pull the Author from the shelveset which is still marked as coming from my account/workspace and not the /author.
So I'm wondering, is there a way to have the gated build honor the /author argument for the final check-in that it performs?
I just tested in TFS 2015.3, and enable a Gated Check-in in new build system.
If I use tf checkin /author:A, I'll get a shelveset with message below:
Your check-in has been placed into shelveset
Gated_2016-10-27_01.53.28.8457;B and submitted for validation by build
definition \ScrumProject\Visual Studio.
Once user B request a review, user A re-run command tf checkin /author:A, you'll see the message below, and the change has been checked in by user A.

Allow certain users to by-pass the gated check-in on TFS

I want to enable the gated check-in trigger for my TFS Build but also want to have a way to specify users who can commit their code directly without waiting to TFS to verify their code changes.
If you edit the "Security" of the build definition:
There is a permission you can control called "Override check-in validation by build" (or similar, I don't have TFS 2012 to hand, I'm using VSTS for the screen shots).
Grant certain people this permission and they can bypass the validation.
When they check-in code they will get the usual Gated Build prompt, but under "Show Options" there is a checkbox to bypass the validation:
By default Project Administrators and upwards have this permission.
For TFS 2015 Right click on the build definition, select security.Then change Override check-in validation by build to Allow

Tfs 2015 VNext Checkin task

The new "VNext" build system has tasks to perform operations like MSBuild and Deploy things. One common task it has been missing out of box is the task to checkin items to tfs.
The xaml builds had the provision to use tfs api's and write a c# code to perform this tasks, but dosen't seem straight forward with the powershell based "VNext" tasks.
The TFS 2015 API does not have a straight way to do this as well.
Is there a out of box solution to do this or any api call to checkin code during builds?
The TFA API does have a Checkin method in VersionControl client namespace.
Here is an example - http://singhtechies.com/programatically-checkin-file-to-tfs-using-c/
You can use the New-TFSChangeset cmdlet.
NAME
New-TfsChangeset
SYNOPSIS
SYNTAX
New-TfsChangeset [-Author <String>] [-Comment <String>] [[-Item] <QualifiedItemSpec[]>] [-Prompt] [-Notes
<String>] [-Override <String>] [-Recurse] [-Saved] [-Validate] [<CommonParameters>]

Resources