Notify user who run the build (if its broke) Teamcity - teamcity

I have a TeamCity Enterprise 2019.2 (build 71499). Is it possible to notify user who run the build if it was broken via email? Cant find such option in Notification rules:
Builds with my changes only does not work for me, because the author of the changes often does not coincide with the author of the build. I need to notify ONLY author of build/release (person who run build/release) Is it possible to do this using standard TeamCity Notification rules? or maybe there is any other way to do what I need?

I don't think it is possible out of the box. (might be worth creating a feature request)
There is a workaround that has worked for me:
Enable the "Add builds triggered by me to favorites" in the profile General settings.
Set notification on "My favorite builds only"
This way I get notifications for the builds I directly hit 'run' on.

Related

Drone - build based on branch

I am using Drone as my CI/CD tool and now I'm facing an issue with this. My team consists of developers and testers (who also are developers), and the Test Team wants to put a specific branch in the staging environment, to test everything before merge it. The issue is: how to do that?
Drone has many configurations that can be found in the documentation. I am searching for something that allows my team to enter a Job and specify the branch in some sort of Dropdown component, then run the Job using that branch. This can be done so easily with Jenkins. Is there any way of doing that in Drone?
Thanks for any help.
Drone is very git-commit driven, which took some getting used to when we transitioned away from Jenkins.
You can probably do what you described with promotions. Promotions let you re-run a previous build with specific parameters. This lets you run different pipeline steps, or even completely different pipelines, depending on the promotion target specified.
I think a combination of promotions and triggers will get you where you need to go. Here is documentation on triggers .
So I would create a promotion that is triggered by the 'staging' branch. You can also ask more questions in the community slack for drone

Is it possible to schedule a release for a specific day and time?

I am using Azure-DevOps Release pipelines to automate deployments.
I would like to schedule release creation to occur at a specific date and time.
But according to the screenshot below, only days of the week can be selected. And you can't specify the trigger as one time only.
This is a problem because the trigger will causes a release to occur every week on the specified days, and we will have to remember to turn the trigger off after every release, until we are ready to release again.
Is it possible with the current functionality in VSTS to set a specific date, and only release once?
Possible work-workaround?
Edit your release and click on the "Schedule set" icon under the Artifacts. You can enable and "Add a new time" for repeated execution.
Otherwise, consider running a pre-deployment condition that triggers once on every build.
Azure Devops Releases screenshot
Azure Devops pre-deployment
I’ve found a really simple way to achieve one-off scheduled releases.
Just use the VSTS CLI tool, in the marketplace...
https://marketplace.visualstudio.com/items?itemName=ms-vsts.cli
It’s published by MS and it’s super easy to kick off builds and releases from the command line.
Just use task scheduler.
You could add a Delay task to the Agentless Phase. Sadly you have to specify a number of minutes rather than a specific time, so there's a bit of mental arithmetic involved to work this out.
I nearly always "push the button" before I finish work, I just want it to wait a few hours until the remaining users have logged off the system, so having it fixed to 180 minutes is not an issue. You could use a variable if needed.
I think the best solution is to have Pre-deployment approvement where you can later defer Release and specifiy exact date for the deployment.
We accomplished this by using Microsoft Flow. Zapier doesn't have support for triggering releases.
We set the trigger for the flow to be the Start of a Google Calendar (could used O365, etc) event with the words "Prod Release" Or "Test Release". Depending on the name of the event, we have our flow determine with release to initiate. We also have the flow send a message to our Slack channel notifying us that the release has started/completed. It works really well.
One added bonus is that devs have to send an invite to the team lead, and he has to accept it, as the Flow only triggers on accepted events. So it has a nice side benefit of everyone on team being aware of the release.
I was dissappointed that DevOps didn't have this feature built in, but honestly this workflow is likely better than what they would have built.
It is too bad that Zapier doesn't support this, as this is the only reason we use Microsoft Flow.

Is there a tool to keep track of manual steps in a CI or CD process?

I'm looking for a tool of some kind that i can integrate into our CI process to keep track of the manual steps we have.
As an example, we want to run through some manual test scripts on the integration server before pushing the version to the test server. Currently QA gets a notification when the build is done, executes the manual testing and then tells someone to push the version to test if it's okay.
What i would love to find is something that will keep track of when the manual tests have been successfully completed and automatically push the version to test.
It should will be possible to notify/trigger the tool from Visual Studio Online and have it trigger the next step in VSO as well.
I've been googling various different things, but can't seem to find anything close to what i'm looking for. Todo list tools like Asana doesn't seem to have the integration point we need, but maybe i'm just missing something?
You can use the new Release Management tools in conjunction with test cases to get what you want.
In VSTS you can create test cases to reflect the steps of the tests that you want and then create a Test Plan or Suit to reflect the list of tests that you need to run manually.
Then as part of your release process you could create a custom task that waits for a Test Run to be completed against you list. If that test run has all pass then move to the next step, if any tests fail then fail the release.
This should be fairly easy to setup and you need to call the API to check the Test Run. If your Testers use Microsoft Test Manager you can also have the results associated with the Build that you are deploying and get full traceability.
You can try with the Release Management tool in VSTS. It can achieve partial features you want.
I assume you have three steps in your build definition:
Build solution
Publish to integration server
Publish to test server
You can keep the first two steps in build definition. And then create a release definition in Release Management and add the third steps in it. Configure the definition to "Continuous deployment" and link it to your build definition. Assign your QA to be the approver for this release task. Now, a release task will be created as soon as a build task completes. But it will be pending for the approver (Your QA) to approve. Approve the release task after the test is passed, the build will be published to the test server. Otherwise, reject it.

How can I create a link to a deployed website in my TeamCity build server?

My staging build configuration runs through all the build steps and finally deploys the application at, say http://build90.qa.testsite.com/, which has been very useful for showing to stakeholders.
Right now I have a script that e-mails users the link to the deployed site, which is nice but it would be better to have a link somewhere in the TeamCity user interface so that people can go to the newly deployed website. There seems to be no built-in way to do this. If the "description" field supported parameters, I could do it there for the latest build, but nothing historic.
Honestly, the best solution I can think of right now is some sort of browser extension, but that doesn't help on mobile devices.
Your best bet might be to set up a server, on, say, http://latest.qa.example.com/, and have TeamCity set that server to redirect to the latest http://buildNN.qa.example.com/ . That way, users don't even have to go to TeamCity to get to the latest site.
Of course, that doesn't make it easy to go to historical runs.

What should I use for continuous integration given my circumstances?

I'm developing a project in C# using VS2010. I'm using svn 1.7 for my version control. What I want is a (FREE) tool that runs on the build server and checks for fresh commits. If the commit breaks the trunk then I want email notifications sent (I have a sendmail openbsd server on the network I can use). I also want this tool (or another tool) to run all my MSTest tests periodically and send emails if there is a failed test.
Any suggestions? I already built my own crude windows service to check for failed builds. But this was before I heard that tools for this sort of thing already exist. I could easily have this thing run all my tests with mstest.exe and then parse the xml results files, but I'm wondering if my time would be better spent just installing and configuring a proper tool for all of this.
There will be at most 4 developers.
Thanks in advance for the help!
I have some experience with TeamCity and Hudson/Jenkins.
I found TeamCity fairly easy to setup and it seems to meet your needs of:
MSTest integration out of the box
Email notifications
TeamCity is free for up to 20 build configurations and has an easy to use Web/GUI interface.
Have a look at CruiseControl.Net
built in support for Subversion
no limits on number of build configurations
email notifications using the 'Email Publisher'
web interface and desktop build notifications via CCTray

Resources