Continuous Delivery pipeline integrated with TFS - jenkins

We work on .NET project, using TFS for:
source control
builds: gated check-ins that produce MSI files
deployments to Labs
We want to create a proper Continuous Delivery pipeline, that is a Dashboard with pipelines for each check-in with traffic lights.
Pipeline should show all the stages like TFS build > Deploy to Lab > Smoke test > Integration Tests > Acceptance Tests > Deploy to PreProd > ...
So it has to be tightly integrated with TFS.
We are assessing 2 options:
use TFS-based tool\plugin\dashboard if there are any that can show pipelines?
use CI tool for example Jenkins, TeamCity, Bamboo to build this pipeline - ideally with support to fetch built code from TFS drop folder, not just the source code
What would you recommend?

If you are using TFS why don't you leverage the built in Release Management tooling? You can create a release pipeline that is automted and even include approvals I necessary.
http://nakedalm.com/building-release-pipeline-release-management-visual-studio-2013/
If you want to integrate the lab tools for collecting test results as part of your pipeline this works as well.
http://nakedalm.com/execute-tests-release-management-visual-studio-2013/
This works pretty well and the new features anounced at Connect() will make it even better.

Related

Where does Jenkins fit in the devops pipeline?

I don't know where could I fit the jenkins tool in the following devops pipeline:
code -> integrate -> test -> release -> deploy -> operate
Maybe it can be in every steps ?
Jenkins is a build factory. In other words, its primary use is to run tasks that dedicated to build, integrate and deliver applications. It's a typical DEVOPS tool.
Jenkins can be used to build pipelines (sequences of tasks) or to be called from a pipeline (to execute one of the pipeline's tasks).
The great thing about Jenkins is that it integrates nicely with other devops tools:
SCM: SVN, Github, Gitlab
Build: maven, gradle
Test: Cucumber reports
Quality: SonarQube
Deployment: Octopus Deploy, XL Deploy, Run Deck...
You name it!
However, Jenkins is generally not used to "code" and "operated" applications.
A typical pipeline would be:
Try Pull Request => Build Release Candidate => Deploy RC on Integration => Deploy on Production
This is a over simplified pipeline, just to give an idea of the scope of this tool. A production grade piepline should include security checks, and integrate nicely with human validation when needed.
Jenkins is use for the Build, Test, and Deploy stages of the continuous delivery pipeline.
You can have "n" number of stages in a pipeline that can be configured using Jenkins.
Stages as follows (example) :-
code -> integrate -> test -> release -> deploy -> operate
Currently in the business sector Jenkins is used as follows:
If you are a software developer you need Jenkins for two reasons:
To build your project and check that it completes all the requirements concerning the pmd rules, checkstyles, findbugs, etc.
To deploy a new environment so to evaluate yourself. You need to see that the changes you made are the proper one and as you wanted them to be.
If you are a tester or a test automation engineer you want it two three reasons:
To build your code and check for findbugs, pmds and qaplugs generally
To test the software product, of the client or of your company's product
To create dynamic environments so to test the changes of the developers (mostly as a regression testing and not as an individual)
If you are a business related, project manager or supervisor you can do the next two actions:
Execute the tests so that you can see yourself if the product is working properly
Check the reports that Jenkins can give you every after test execution
Jenkins is an opensource automation server. Earlier it used to be a CI server only but after Jenkins 2.0, Pipeline as Code has made it popular for CI/CD both. It can manage all application lifecycle phases.

Summary page of multiple Jenkins item

My environment: Rally CA Agile Central, Jenkins, Bitbucket
Below is the project page that I have in Jenkins.
Code Coverage report done with Gocvr
Cppcheck
Unit Test with GoogleTest
I have a project that is divided among several Bitbucket repositories. Each of those repositories are a Jenkins Freestyle project. Each Jenkins Freestyle project will then have its own CPPCheck, Unit Test and code coverage report.
My question is if there is a way to summarize all those metrics together so it is easier during our meeting to have 1 place to go where to see all those Jenkins jobs in our project. Even see a general trend for the whole project (code coverage is going up / down, etc) and not just for each Jenkins Freestyle project individually.
I'm quite open to where these metrics can live. But, since we already are using CA-Rally and Jenkins and a lot of plugins/hooks are already developed, there is maybe something that already exists that could fulfill my needs.

What is the purpose of a build agent in continuous integration and continuous deployment?

What is the purpose of a build agent in continuous integration (CI) and continuous deployment? Is this something that impacts all CI servers (e.g. Jenkins, TeamCity, TFS, etc.)
On the TeamCity license types page I noted that the professional server license, which is free, only includes three build agents.
https://www.jetbrains.com/teamcity/buy/#license-type=new-license
The expression build agent basically describes an environment in which builds or jobs of the CI pipeline are run. There are multiple synonyms for this part of the CI infrastructure. TeamCity seems to define a build agent as an environment where one build at a time can run.
Jenkins would define the machine which runs builds as a slave with a (different) master machine that coordinates which builds runs where. Multiple builds can run on the same slave in Jenkins in different executor slots.
Another system using a build agent is a Team Foundation server which should be structured similarly to TeamCity's solution. There has already been a more detailed answer here.

CICD with jenkins and sonarqube

from the last week i am working with jenkins, and its going good but at the end of R&D I have lost of confusion, these are questions which confusingto me.
How to do Continuous Integration with jenkins of Website?
hoe to view Testing analysis reports produced by sonarqube server to my local system?
what happens where all my developers will do commit and push at the same time on repository?
How to deploy my web application on targeted server using jenkins?
How to I use sonarqube to test my website ?
If you are building a .net website, install msbuild plugin in jenkins. Create a jenkins job, add a step checkout your website (git/svn - install required repo plugin). Schedule to run nightly or hourly depending on your needs.
Type in url for your sonarqube server and then you can view the reports.
This is not an issue if your developers are comitting simultaneously. Usually a CI tool such as Jenkins will take care of that.
This is called continuous deployment or continuous delivery. Something like Octopus Deploy can help you if you are deploying .net applications. You can use the tool octo.exe and pass the API key as parameter to deploy to a specific environment.
SonarQube is used as a quality gate for code analysis. It is not a test framework. Try to investigate on how to use selenium framework for automation testing.
I hope that I have answered your questions.

How to setup TFS2010 to use Jenkins build server

We use Jenkins as our CI build server but have moved over to TFS to do all the project management stuff (user stories, dev tasks, test cases, reporting, automation). How do I setup TFS2010 to use our Jenkins build server?
it's actually more like the other way around. You need to configure the TFS plugin for Jenkins, telling it to use TFS as your source control system. below is a link to the jenkins TFS plug-in...
https://wiki.jenkins-ci.org/display/JENKINS/Team+Foundation+Server+Plugin

Resources