What is a good tool for Build Pipelines? - deployment

I need a tool that will graphically represent our build pipeline. The below screenshots of ThoughtWorks Go and the Jenkins Pipeline plugin illustrate almost exactly what I want it to look like.
The problem is that we already use Jenkins for our builds and deployments, along with a few other custom tools for orchestration type duties. We don't want a pipeline tool to do the builds or deployments itself, it just needs to invoke Jenkins! I tried out Go, and the first thing it asked for is where my source code is and how to build it. I couldn't get Go to work in a way where Jenkins does the builds but Go creates the pipeline.
I've also experimented with the Jenkins Pipeline plugin, but it's very limiting. For one, it doesn't work with the Join plugin (so we can't have jobs run in parallel, which is a requirement). It also assumes that all of our tasks happen in Jenkins (Jenkins can't see outside of our test lab and into our production environment). I don't know if this is a viable option either.
So, does anyone have any recommendation for some pipeline tools that will do what I'm looking for?

Edit (03/2018)
Since writing this question in 2012 and answering it in 2014, numerous tools have come online to support what I originally wanted. Jenkins now supports scripted pipelines natively and has an excellent UI (Blue Ocean) for rendering them. Those stumbling on this question should consider using these for their pipeline needs.
https://jenkins.io/doc/book/pipeline/
https://jenkins.io/projects/blueocean/
End edit
(Old answer)
It didn't exist when I asked the question, but Jenkins' Build Flow Plugin does exactly what I needed, and creates pipeline views very well.
https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin

Jenkins/Hudson can certainly be used to achieve a real pipeline.

You could use Go if you used a dummy material (an empty git repo, for example), and then used the API to trigger a pipeline and upload artifacts.
But, that's quite some effort, and you should probably only do that if you have a very good reason otherwise to use Go.

You can try with GoCD pipeline. It has very nice features for continuous delivery and has nice dashboard also which shows real time flow and status. Give a try.

Related

what is the use of CICD and how it saves my time while I can simply push and pull my code from github and make my code into production too easily?

I'm trying to learn CICD concepts on my own, I don't understand how it helps me while I can easily push and pull my code from github and make my code into production
Continuous Integration is mainly a culture than being a tool. So, you need to understand why it's necessary that every developer on a team should integrate their code with the repository are least once a day.
Continuous Delivery also indicates challenges and best practices of delivering high-quality software as soon as possible. So, teams that want to decrease the risk and problems of integrating features and increase the speed of delivering new features should adopt the CI/CD culture.
To ensure that every code added to the repository will work and integrate with other parts, you need to check. For instance, you need to make sure that the project will be built successfully, the tests will be passed, and the new changes will not break any other parts, your code will pass some required code quality checks, and so on.
After that, you have to deploy somehow/publish the version of your software. This process usually has some steps and can be done manually in small teams/projects.
Based on the first rule of Continuous Integration, every team member should integrate the code with the repository multiple times a day. Since the frequency of this integration is high, it's not a good idea to do this process manually. There are always chances that somebody forgets to run the operation. That's the main reason why it's necessary to have an automatic CI/CD pipeline.

Why we need Odoo Runbot?

My question is related to Runbot.
Why we need runbot of Odoo?
Once I'm choosing Stack as a Gitlab CI/CD with Kubernetes Integration then still I need to add runbot for testing purposes or tracking purposes or are there any alternatives of it?
I've used 2 or 3 other CI environments including TravisCI as a replacement for Runbot. Runbot has some Odoo focused features to it, but in terms of CI workflows you can use something else pretty easily.
My reason for using runbot is like if we are doing certain customization and something else stops working. Sometime this situation comes. Then i do the same process in runbot to check the core functionality as Runbot is vanilla odoo, hence I can Identify if that's the expected behavior or something is wrong.

How can I mock a CI agent/server?

I've been working with CircleCI, TravisCI and Azure DevOps for quite some time now.
While it's great to have a managed server that integrates beautifully with all of the external services you can think of (VCS, CD pipeline, app stores etc.), one of my greatest pains is testing for CI. When setting up such systems, I spend the majority of my days tweaking and configuring YAML files, Bash scripts and other parts of the CI process to work faster and smarter. However, this process is slow: it takes 1-5 minutes to even get the first error message that something is wrong, not to mention sometimes 1+ hours for final builds.
You can only do so much locally - mock environment variables, use exactly the right container and add credentials for the relevant services. But it's not quite there, just yet. I envision a full-service solution for this, one that takes care of setting up the environment exactly the same as in Azure or Travis, including getting data from Git based on the specific push and the like.
I would be able to pay good money for that - this will save me hours every week of waiting for the CI agents to spin and finish small ls, pwd and echo statements just to figure out where the heck I am.
Is there something like that out there?
Edit: This is a good example of a "duck-tape" solution that could be of great use, but is not full-fledged. I'm looking for something like this, but more robust.
Edit 2: This is a bad example of a solution that requires me to do the most crucial part - dependencies - manually.
Edit 3: This has a lot of interesting options, specifically using Chef and travis-cookbooks or vagrant. This is the most promising direction so far, albeit it's for Travis alone, seemingly. Maybe set up vagrant boxes for each type of agent you have?

How to update work item state after a release

We have multiple release pipelines (Dev, QA, etc.). After a given release, we want to update the State for each work item associated with the release. I understand that can cause problems if we manually re-release, or re-build. I see third party marketplace extensions that could do it, but is there a way to do it from something built into DevOps pipelines?
I've tried every out-of-the-box feature I can find to accomplish this and found my way blocked.
It seems the options are: use the extensions others have written, write your own, or dive into the REST API.
We are currently using the WorkItem Updater extension for production stages.

How to divide up a complex workflow into a template of Sub Tasks?

Our company is moving over to Jira for all project management and issue resolution
We have a few major uses that i am trying to build templates for. One being a typical issue found and fixed and can easily be handled with a single issue with basically the included jira workflow.
A more complex one is following a Waterfall workflow where Requirements are gathered including an estimate. Then Development kicks off, and in parallel test scripts are made. After Development is done the project is tested and handed off to the client. And finally once all is tested we release the change and re-test. In total I have 30 different steps built across 5 Sub-Tasks (However this is all just mapped out in Visio and not actually in jira yet).
The splitting across Sub-Tasks I hope can accomplish 2 things. First is that we want to track open-close times and efforts (hours works and days needed). And we should have the workflow split to multiple people so the Developer can work while a Tester can build their testing plan. That is able to save a few days, however is not a deal breaker.
So a few questions that I hope can help make this possible, although I am quite new to the various add-ons for Jira, I have no idea if we will get everything we want.
1, Is there an add-on that builds templates of Sub-Tasks, since each Sub-Task needs its own workflow. Currently the rules for Jira is to assign a workflow based on Project+Issue Type. So I believe I can have the proper piece of the workflow assigned to each Sub-Task by creating many Issue Types, like "Custom-Dev-Analsys" for the Sub-Task called Analysis
2, Is it possible to have only 1 or a few of all Sub-Tasks being the "current" one? When the issue starts the first Sub-Task should be the only one worked on, with only 1 of the steps being assigned to someone. After sign-off there should be 2 Sub-Tasks, the Development one and building Test Scripts. But all 5 sub-tasks should not be started since the very beginning, but it seems thats what Jira will do. I have looked at the add-on "Structure" and while that has unlimited hierarchy, I do not think it will let the sub-tasks open up in order. There might be a simple way to make the workflow open the next task (I am very new to workflows and trying to learn as much as possible before messing with our site)
3, If anyone can think of some way to do what I need differently, I am all ears.
Thanks!
I don't know any plugin that does all what asked for, but I had to deal with similar issues, and managed to sort most of them out with the Jira Scripting Suite, but it did require some development (using python).
It's easy to add to your workflow transitions that will create or close a new issue or a new subtask. I use it to create subtasks just by filling some required fields in one of the issue's screens. After the sub-tasks are created, only the automated scripts can close the issue, and that can be done by closing all of the subtasks.
If this kind of solution suits you I will be happy to help with any further inquires.
JIRA doesn't support nested workflows but one useful thing to remember is that if you change the issue type of a JIRA issue, it can have a different workflow. So an issue could start as TEST-123 which is a Requirement. Then after it reaches the end of its workflow it could be Moved to be a Task issue type.
Subtasks should stay as before.