I started using folders around seven months ago. The following is based on the 
advantages I experience in using folders, as well as the problems I've 
encountered. It's not a high level overview. Some of this will probably already 
be obsolete, but it should still serve to illustrate the kind of issues you'll 
be facing when trying to introduce Folders into an existing instance with 
expectations that existing features, plugins, and of course jobs will continue 
to work.

---

The good:

- Coupled with commercial RBAC plugin, it's quite nice to set permissions per 
project folder and just delegate configuration of a project folder to the 
project team. Assuming you have really homogeneous roles across all projects, 
but that's an RBAC issue. (it's been a while since I've used Role Strategy 
plugin, and I haven't tried using any of the others with folders)
- We have a few (Subversion SCM) projects using 'release' branches that each 
have a dozen or so jobs building various components. What once took almost a 
day of creating and configuring jobs for a new branch is now about two clicks 
(just copy the previous release's folder) and changing a few environment 
variables on the folder (Folders 3.x or Folders Plus 2.x feature). This feature 
alone is almost worth the problems we had.
- No more juggling dozens of Nested Views just because we have a few hundred 
projects in our Jenkins
- A nice side effect: Tools to visualize disk usage like WinDirStat or tkdu now 
group by project/branch/... automatically, on both master and slaves.

---

That being said, the introduction of folders really wasn't a lot of fun. Some 
of it is my fault for assuming things would just work to a reasonable degree. I 
was wrong. Plugins often cannot handle folders! Some have assumptions that 
break down when using folders, e.g. that all items are immediate children of 
Jenkins, or that no two jobs have the same name.

Copy Artifact, Config Slicing, Extra Columns, Role Strategy plugin, Favorite 
Plugin, Job Config History, all 'Wall Display' type plugins I've tried... all 
are or were plugins that couldn't deal properly with jobs in folders. And 
that's just the plugins I actually use or tried using. Try searching for 
unresolved issues containing 'folders support' in Jira...

Then there's the issue of lacking core support for folder structures. Current 
1.509.x LTS has no support for 'recursive' views, i.e. views containing not 
just the current item group's children, but also grandchildren etc. 
JENKINS-18074 and 
jenkins-ci.org/commit/jenkins/aa7eb7c137ad7649782683dcbbf64703982ad8f8 were 
annoying; JENKINS-19310, JENKINS-20003, and JENKINS-20106 still are, to varying 
degrees. JENKINS-20143 probably will be annoying, once I'm on 1.532.x LTS.

I have _some_ hope that the situation improves now that the plugin is open 
source, but I expect issues like these to keep appearing for some time, 
especially given how stripped-down Folders 4.x is compared to Folders 3.x.

---

Now, if you want to use folders, 3.x or 4.x, with or without Folders Plus 
plugin, here's a few tips:

Don't move existing jobs into folders if they have any kind of relations to 
other jobs, or be prepared to fix their configs afterwards. Job Config History 
is helpful here. There's no internal notification for this event 
(JENKINS-18028), so upstream/download relations, Parameterized Trigger, Copy 
Artifact, Favorite plugin configurations all _will_ break. It won't break your 
Jenkins, but existing downstream triggers won't run, jobs with Copy Artifacts 
steps will fail, etc. Existing links to job URLs will break, there's no 
redirect.

In fact, I'm currently phasing out top-level jobs heavily used as downstream 
(e.g. the 'Upload to public FTP site' one) by creating new jobs in folders, 
replacing the 'Parameterized Trigger' calls one by one, and deleting the 
top-level job only after they haven't been started for a few weeks. Sometimes 
moving jobs just isn't worth the hassle.

Be aware of JENKINS-18678 if you want to take the opportunity to e.g. rename 
'ProjectA-BranchB-Foo' to 'Foo' after moving it into the folder 
'ProjectA/BranchB'. The builds going missing might break Copy Artifact, even if 
you reconfigure it. Schedule a few restarts while moving things around, just to 
be safe. Queued builds will be removed when you move their jobs around anyway.

Folders (4.x at least) also have two minor quirks when you're on Jenkins 
1.509.x LTS that might increase your support effort if you're (planning to) 
delegating some configuration tasks to others:
- Actual 'All' views show the system message twice. Just don't use them, a 
folder's default view is a list view anyway
- The folder's default view's inline description editor is broken

Also, I have no idea how well Jenkins on Windows handles moving jobs around, 
but when we still had a Windows master, renaming jobs failed quite often and 
left behind partial job folders. I assume moving jobs would be similarly 
brittle. Be prepared to merge folders manually in case something goes wrong.

Use the same character set for folder names as you use for job names. Folder 
names become part of the path to the workspace, so e.g. spaces or Unicode in 
folder names will break badly written tools just like spaces or Unicode in job 
names do. You can configure a display name so it looks nice in Jenkins.

---

Then there's the issue of Folders 4 (the open source one) being a really 
stripped down version of Folders 3. The nicest Folders feature clearly is the 
ability to define environment variables on the Folder, like e.g. the SCM branch 
name, that can be used in all jobs in that folder. This, among a few other 
'nice to have' features, now requires an Enterprise license for the Folders 
Plus plugin.

And finally a quirk of the folders plugin to be aware of: Folders doesn't set 
the default view like Jenkins does. A folder's default view is not an 'All' 
view, but a list view with the '.*' regular expression and can be edited, so 
you cannot change the default view to a different view type in the folder's 
configuration.

Regards
Daniel

On 28.10.2013, at 17:25, jos...@milehighcode.com wrote:

> Would like to know how others have implemented the Cloudbees Folders plugin 
> into an existing Jenkins system. Easiest way to migrate builds into the new 
> namespace structure, best practices for using Folders to organize builds, etc.
> 
> Any links to blogs or web info in addition to any mailing list responses 
> would be really appreciated and I am happy to link back any articles 
> suggested from my blog on future writings on this subject.
> 
> -Joshua
> blog.milehighcode.com
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Jenkins Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to jenkinsci-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to