We are using a combination of Jira, Subversion and CruiseControl.net in our workflow. With each commit, the corresponding Issue-ID is stored in a bugtraq-property of svn. Jira accesses the repository via plugin (not FishEye at the moment), and a custom svn hook updates the Jira-Issue with the branch name. So each issue is linked to all branches it relates to. Also, release notes for each issue are stored in custom fields, as we need the release notes in multiple languages.
CruiseControl runs builds on schedule, with increasingly complex build scripts to integrate the release notes into our application. As some of the branches are custom userware, only a subset of the release notes are actually used (requirements of one customer should not neccessarily be visible to other customers, whereas the customer information is generated from the branch names). I've spent quite some time on the web looking for plugins to interface Jira and CruiseControl with eachother to better automate this process. Is there anyone out there with similar problems?
Would a migration to Jira/Bamboo/FishEye solve my problem? I've downloaded the test versions and dabbled around with the tool integration, but I'm really looking for constructive advice and experience reports. The ability to start builds from within Jira certainly looks appealing, and FishEye should provide branch information to Bamboo.
I hope, I'm making sense here...
Thanks in advance.
Jira and Bamboo are obviously better integrated. SVN hooks to Jira are better than Fisheye smart commits. The only other CI product with this level of integration with Jira is Jenkins via marvelution plugin: https://marketplace.atlassian.com/plugins/com.marvelution.jira.plugins.jenkins
Our shop is a lot of Java developers, a few MS devs. Java developers mainly use a SVN/Jira/Fisheye/Jenkins combo with release notes generated automatically via Jira and Jenkins. The MS developers use TFS for their projects.
You could always bite the Microsoft bullet and use TFS 2012.
So besides the ITIL-breaking release management snieps in the question comemnts, the answer is Jira/(Jenkins|Bamboo) will solve your problem. Fisheye is just a nice to have.
Related
This is broad in scope, so I hope I can narrow it down to a concise set of questions. I basically need to know the technologies required to setup a Continuous Integration Testing/Deployment per Bamboo in C#.
Our Architecture is currently:
Product: C#.NET/WCF -> Commit -> Build(Bamboo) -> Manually deploy to QA Server(AWS)
Product is a multi-service architecture.
Testing: C#/Selenium/NUnit -> Run tests manually
Testing solution is it's own repo setup with:
Class Library Project (Page Object Model)
Test Project with all of our Integration tests.
Team Communication: Agile with JIRA.
EDIT: this is all cloud based.
I need to adapt this into a Continuous Integration System:
Product: Commit -> Build -> Deploy to Testing Server.
Testing Solution: (If there's new commits then Commit -> Build) Run against Testing Server
If Pass -> Deploy Product to QA server
If fail -> create JIRA issue, notify developer.
Once I am at Bamboo, I have many plugins at my disposal... BUT, there are so many high level tutorials, videos, etc that talk about Jenkins, maven, Cucumber, etc, etc... I have no clue which setup will handle our architecture. And, are compatible with C#.NET, Selenium, etc.
What plugin(tool) can auto-deploy a multi-service architecture in c#.net/wcf?
What plugin works with our testing framework: C#.NET w/Selenium and NUnit?
What plugin(s) can run our testing framework AFTER the product has been deployed to the testing server? We are required to have at least parts of the multi-service architecture running to preform tests.
How do I utilize my Testing Framework in this architecture? Can it even be ran from Bamboo when a developer commits? And how do I tie this into the system to successfully re-deploy to another server if pass, or create an issue and send it back to the developer if fail.
What technology route do I need to take to accomplish this?
So far I have:
Bamboo, Maven, Cucumber to execute testing framework against the Testing server, Jenkins to handle parallel testing(no clue how that works), Maven to redeploy to QA on success, or Cucumber will notify through JIRA if testing fails.
There's just too many bits and pieces to make this work and none of the information on the web is precise enough for me to determine which route I should take!
Please share your wisdom!
Thank you so much in advance!
So, there is a HUGE amount of items that go into creating what I asked about above. There is also a lot of ways to go about accomplishing it. Here is a brief overview to help guide you along the same path.
DropBox of Tutorial
Gist of Tutorial
DISCLAIMER *Of course there are variations, security concerns you need to address for your own projects, and a number of un-noted concepts you will have to look up. This is just a quick guide with references to help
Me and my couple of friends will start working on a C# database project. We will use Microsoft VS 2015 and SQL Server 2014. Is there any way that our Visual Studio (installed on separate laptop) can connect to the same project?
For example, if one of my friends removes a class from the project, that class should also be removed from our project. Also, if he adds something, that change should also be shown on our VS solution.
If you have db project in Visual studio you should connect it to some version control. After that every change done by your friends will be fetch/pull on your local machine and you will execute the db project. Same is for code changes in your main project. Read about svn and git and choose what is better for you.
Git is a free and open source distributed version control system
designed to handle everything from small to very large projects with
speed and efficiency.
Getting your project on GitHub
Subversion is a free/open source version control system (VCS). That
is, Subversion manages files and directories, and the changes made to
them, over time. This allows you to recover older versions of your
data or examine the history of how your data changed. In this regard,
many people think of a version control system as a sort of “time
machine.”
Subversion can operate across networks, which allows it to be used by
people on different computers. At some level, the ability for various
people to modify and manage the same set of data from their respective
locations fosters collaboration. Progress can occur more quickly
without a single conduit through which all modifications must occur.
And because the work is versioned, you need not fear that quality is
the trade-off for losing that conduit—if some incorrect change is made
to the data, just undo that change.
Some version control systems are also software configuration
management (SCM) systems. These systems are specifically tailored to
manage trees of source code and have many features that are specific
to software development—such as natively understanding programming
languages, or supplying tools for building software. Subversion,
however, is not one of these systems. It is a general system that can
be used to manage any collection of files. For you, those files might
be source code—for others, anything from grocery shopping lists to
digital video mixdowns and beyond.
Importing Data Into A Repository SVN
If you are not aware with git/svn I advise you to use SVN it is easy to understand. Git has his advantages when your team is really big and for open source. Currently on this moment git is the "future" in version controls.
Team Foundation
You can use Team Foundation Version Control (TFVC) to scale from small
to large projects, and by using server workspaces, you can scale up to
very large codebases with millions of files per branch and large
binary files. TFVC is a centralized version control system that lets
you apply granular permissions and restrict access down to a file
level. Because your team checks in all their work into your Team
Foundation server, you can easily audit changes and identify which
user checked in a changeset. By using compare and annotate you can
identify the exact changes that they made.
https://www.visualstudio.com/tfs/
GitLab
GitLab Inc. is a company based on the GitLab open-source project.
GitLab is an application to code, test, and deploy code together. It
provides Git repository management with fine grained access controls,
code reviews, issue tracking, activity feeds, wikis, and continuous
integration.
https://about.gitlab.com/
Bitbucket
Bitbucket is a web-based hosting service for projects that use either
the Mercurial (since launch) or Git (since October 2011) revision
control systems. Bitbucket offers both commercial plans and free
accounts. It offers free accounts with an unlimited number of private
repositories (which can have up to five users in the case of free
accounts) as of September 2010, but by inviting three users to join
Bitbucket, three more users can be added, for eight users in total.
Bitbucket is written in Python using the Django web framework.
https://www.atlassian.com/software/bitbucket
How can I run NDepend from SonarQube, or import NDepend results into SonarQube?
The SonarQube C# Ecosystem Plugin supports several other C# tools, but NDepend is not one of them. Commercial and free solutions are both welcome.
If no solution is available yet, can the NDepend API be used to write a custom plugin SonarQube with reasonable effort?
Update 2014-12-11: There was an announcement by the NDepend team today that a SonarQube integration is being developed. It is expected for Q2 2015. They also mention that there is a new third-party SonarQube plugin for importing NDepend results now.
I am representing the NDepend team. Having a NDepend plugin for SonarQube is certainly a good idea and something we'd like to offer out-of-the-box in future features for NDepend vNext. It is also an idea ranked on the NDepend User Voice.
Please come back to us by email at support at ndepend dot com. We'd like to hear the details of your needs concerning import NDepend results into SonarQube.
For now writing your own plugin using NDepend.API is the way to go if you cannot wait. 100% of data collected by NDepend (structure, metrics, diff, trend...) are reachable through the API. The NDepend PowerTools source code is the right place to get started with NDepend API and see how main API usage scenarios can be implemented.
While I was writing the SonarQube .Net ReSharper plugin, I looked at the potential for an NDepend plugin. The biggest obstacle is that SonarQube requires plugins to provide the full list of possible violations (rules) at server start, which must then be manually enabled by administrators via the web UI (ie: not through an API). There is no API for adding or enabling rules via the SonarQube API during plugin execution.
Once the rules are in there, it's just an excersize in associating the NDepend results with the source code lines/files. The .Net ecosystem plugins, as well as my ReSharper plugin, are all open source and can be used for inspiration on this point.
Since a lot of NDepend's power comes from the ability to easily create your own rules, a plugin author would have to create some mechanism for getting those custom rules into SonarQube without having to frequently restart the SonarQube servers. So far, no one has taken the time to do this, although it sounds like the NDepend team is considering it based on Patrick's answer to this same question.
I'm a hobbyist programmer and I've created an application for my office. Every so often I need to improve the code, add features or fix issues that come up under certain circumstances - I've found bugs or ineffective coding even after 3-4 months of heavy usage of the application. The thing is that whenever I modify the code, visual studio saves the changes. This means that if I want to use the program I'll have to be really fast in coding and debugging or it won't build - and I won't be able to use it...
Is there any way to keep the old version of the program without having to save the complete project folder elsewhere? Like creating a new version but keeping the option to go back to the old - working - one...
What you are looking for is called source control.
There are many systems out there, two popular ones are subversion and Git.
Used properly, you will have a full history of each file you have in your project.
There are two other answers here regarding source control at the time I write this, but there is another angle on this as well.
You're executing your production copy from the development directory. Don't do this.
When you have developed the program to a stable version, make a copy of it somewhere else and use that copy. In this way you're free to keep developing on the software without destroying your ability to keep using the existing stable version.
As for source control, you should definitely use that as well if you're not already doing it. It would, among other things, allow you to go back and hotfix the stable version with minor bugfixes while still doing major rewrites of the software, as well as the features others here have mentioned, full history of your project, "unlimited" undo, etc.
I'm not sure what you mean that Visual Studio saves the code when you modify it. It does by default save when you build, but I don't think it saves while you're typing.
Anyway, what you're looking for is called a source control system.
You can try Team Foundation Service from Microsoft.
It works fine and you can share youre project whit colleagues.
http://tfs.visualstudio.com/
EDIT:
This is a free of charge option you can use, until you want to share youre project with more than 4 persons!! than you have to pay for TFS
You need source control.
If your project is open source you can use codeplex, it's an open-source Website where engineers and computer scientists share projects and ideas. Its features include wiki pages, source control based on Mercurial, Team Foundation Server or Subversion (also powered by TFS), Git,discussion forums, issue tracking, project tagging, RSS support, statistics, and releases
If you don't want to share your code you can use Team Foundation Server
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
What tools/plugins do you use for checking in/out code?
how to communicate changes made to the code, how to make request for new functionality?
How has your team solved this?
See this previously asked question:
Multiple Programmers in Software Development. How do we work on the same code and ensure it is always updated?
There are a lot of good answers to this question, and they apply to small and large teams.
For source control, we use Svn with the Tortoise SVN client. We've used other source control systems in the past, and have found this one to be the best for our needs.
I would recommend you use SVN for source code management, if you are using visual studio you can get numerous plugins for IDE integration.
http://subversion.tigris.org/
http://www.visualsvn.com/ = SVN Server & VS Integration
Try to set up Continuous Integration for this you can use Cruise Control .Net or Hudson. Cruise control can be set up to do a build on each check in and the history is shown on a web page.
http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET
http://hudson-ci.org/
For requesting new functionality you could use a ticketsing system, wiki or Google Wave any one of these should enable you to keep track of requirements.
Hope this helps.
You can pretty much use any tools for small development teams you wish. There are lots of options.
Personally, my team uses SVN for code, and Trac for tracking - mostly because it's very cost effective for a small team. However, there's nothing C#/.NET specific about that setup.
If your team has MSDN subscriptions, you might want to consider Team Foundation Server. It has many features for integration with Visual Studio that are (arguably) superior to some of the alternatives.
You should use one of the many available source control repositories. Trust me, you won't know what you did without it :)
There are plugins for Visual Studio for working on a team, but personally I've never used them.
I've done team projects with both Subversion and Mercurial... just make sure to check in the solution and project files, and all related code.
Everyone will also need to be running the same version of Visual Studio.
For requesting new functionality, you might want to consider an external solution like Trac or Bitbucket or some other free system that includes issue tracking.
Well, how small? I work on a team of 5, and we communicate well with IM, or just dropping by and talking. That being said, the team is pretty responsible, so you can trust everyone to carry their weight. I would suggest you use subversion for source control if your company doesn't have anything.
We're a team of 3 C# developers.
For version control, we use AnkhSVN, an open source SVN client that integrates with Visual Studio.
For project management, issue tracking and feature requests, we use Redmine.
What tools/plugins do you use for checking in/out code?
Mercurial -- once you've used a DVCS, it's hard to imagine going back. Everybody uses their own favorite editor; usually, that's Emacs, which comes with support for many VCSs, including Mercurial.
how to communicate changes made to the code, how to make request for new functionality?
Changes are tracked in version control. You can look at the changesets as you pull them, or browse the web interface. Or just ask people at lunch what you're working on -- no developer is an island. New functionality is tracked, along with bugs, in the bug tracker.
How has your team solved this?
We're a small team using C#, but nothing here is specific to C# or small teams. I've used very similar systems with other size teams, and other languages/platforms.
We have a team of three and currently use Source Gear Vault for source control and Fogbugz for bug/feature tracking. Source Gear integrates into Visual Studio nicely and works over http which makes it easy to access from anywhere. Check ins and outs can be done directly in Visual Studio or a standalone client.
Source Gear also integrates with Fogbugz.
Used to use Visual Source safe and would never go back...
I work on a small team of 1-5, depending on the project.
What tools/plugins do you use for checking in/out code?
We use Git with Github for new projects, and TFS for some legacy work.
I see a lot of people recommending a certain provider without telling you why. I have used TFS, SourceGear, SVN (a little), and Git. I prefer Git because it stays out of my way. Git is command-line based. My typical source control workflow is a handful of simple commands, but learning those commands took a few tries.
how to communicate changes made to the code, how to make request for new functionality?
We use Pivotal Tracker for story writing and organizing priority.