Jenkins folders as a Code¶
Archived (pre-2022)
Preserved for reference only -- likely outdated. View original | Last updated: January 2021
Root folders¶
Root folders can be created by adding(via PR) appropriate entry into Jenkins configuration config file: projects-config.groovy (Bitbucket)
Each Jenkins instance has ints own configuration located at environments.
Example for Jenkins in Fyber Core account (eks-common k8s cluster):
environments {
fybercore {
production {
rootFolders = [
[name: "devops", displayName: "DevOps", desc: "Folder for DevOps"],
[name: "acp-edge", displayName: "ACP EDGE", desc: "Folder for project ACP EDGE"]
]
.......
}
......
}
}
Project placement and project folders¶
Project's jobs and views can be created in specific folder by prefixing project's name with appropriate path. This creates project's seed job inside specified path, thus seed job's artefacts will be located in this path too.
Project's jobs/views can be created inside Root folder or inside Nested folders.
Example of putting a project inside Root folder:
projectsToAutomate = [
[projectName: "devops/bln-k8s-common-helmfile", url: "git@bitbucket.org:inneractive-ondemand/bln-k8s-common-helm.git", scriptPath: "automation/dsl/Jenkinsfile", credentials: "bitbucket_jenkins_deploy_key"],
Here we put all project's stuff(views and jobs) into previously created root folder devops by adding this folder to project's name:
- projectName: "devops/bln-k8s-common-helmfile"
Nested folders can be created by adding folders parameter holding list of project specific folders to create.
Example of a project with Nested folders:
projectsToAutomate = [
[projectName: "devops/infra/bln-k8s-common-helmfile", url: "git@bitbucket.org:inneractive-ondemand/bln-k8s-common-helm.git", scriptPath: "automation/dsl/Jenkinsfile", credentials: "bitbucket_jenkins_deploy_key", folders: ["devops/infra", "devops/config"]],
Here you can see that project creates two nested folders inside devops root folder: folders: ["devops/infra", "devops/config"] and uses devops/infra folder by prefixing projectName with it:
- projectName: "devops/infra/bln-k8s-common-helmfile"
Note
Please bear in mind that making such changes to existing jobs/views will not move them but recreates everything from scratch. Thus job history can be lost.