之前一直在纠结该把Jenkins目录介绍放在什么位置,等写了之后才发现放在第一个项目构建之后比较合适。
当Jenkins启动之后,默认会在当前用户家目录中生成一个.jenkins的隐藏目录,这个目录中存放着jenkins的所有重要数据。当然,这个目录的位置可以通过环境变量来修改,这个在Jenkins初始部署的时候就已经阐述过。
先来看看这个目录下都有些什么
[root@localhost .jenkins]# ll
total 192
drwxr-xr-x 3 root root 18 Jul 29 16:59 cache
-rw-r--r-- 1 root root 5141 Aug 1 14:27 config.xml
drwxr-xr-x 165 root root 4096 Jul 30 14:20 fingerprints
-rw-r--r-- 1 root root 214 Jul 29 15:06 github-plugin-configuration.xml
-rw-r--r-- 1 root root 807 Jul 29 15:06 hudson.maven.MavenModuleSet.xml
-rw-r--r-- 1 root root 182 Aug 1 14:27 hudson.model.UpdateCenter.xml
-rw-r--r-- 1 root root 250 Jul 29 15:06 hudson.plugins.build_timeout.operations.BuildStepOperation.xml
-rw-r--r-- 1 root root 1316 Jul 29 15:06 hudson.plugins.emailext.ExtendedEmailPublisher.xml
-rw-r--r-- 1 root root 321 Jul 29 15:06 hudson.plugins.git.GitSCM.xml
-rw-r--r-- 1 root root 370 Jul 29 16:51 hudson.plugins.git.GitTool.xml
-rw-r--r-- 1 root root 173 Jul 29 16:51 hudson.plugins.gradle.Gradle.xml
-rw-r--r-- 1 root root 382 Jul 29 15:06 hudson.plugins.timestamper.TimestamperConfig.xml
-rw-r--r-- 1 root root 391 Jul 29 15:06 hudson.scm.SubversionSCM.xml
-rw-r--r-- 1 root root 145 Jul 29 16:51 hudson.tasks.Ant.xml
-rw-r--r-- 1 root root 188 Jul 29 15:06 hudson.tasks.Mailer.xml
-rw-r--r-- 1 root root 339 Jul 29 16:51 hudson.tasks.Maven.xml
-rw-r--r-- 1 root root 76 Jul 29 15:06 hudson.tasks.Shell.xml
-rw-r--r-- 1 root root 216 Jul 29 15:06 hudson.triggers.SCMTrigger.xml
-rw------- 1 root root 1712 Jul 11 15:04 identity.key.enc
-rw-r--r-- 1 root root 4041 Jul 11 17:02 jenkins.install.InstallUtil.installingPlugins
-rw-r--r-- 1 root root 5 Jul 11 17:46 jenkins.install.InstallUtil.lastExecVersion
-rw-r--r-- 1 root root 5 Jul 11 17:46 jenkins.install.UpgradeWizard.state
-rw-r--r-- 1 root root 159 Jul 29 15:06 jenkins.model.ArtifactManagerConfiguration.xml
-rw-r--r-- 1 root root 138 Jul 30 09:59 jenkins.model.DownloadSettings.xml
-rw-r--r-- 1 root root 270 Jul 29 15:06 jenkins.model.JenkinsLocationConfiguration.xml
-rw-r--r-- 1 root root 247 Jul 29 16:51 jenkins.mvn.GlobalMavenConfig.xml
-rw-r--r-- 1 root root 537 Jul 29 15:06 jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml
-rw-r--r-- 1 root root 357 Jul 30 09:59 jenkins.security.apitoken.ApiTokenPropertyConfiguration.xml
-rw-r--r-- 1 root root 169 Jul 30 09:59 jenkins.security.QueueItemAuthenticatorConfiguration.xml
-rw-r--r-- 1 root root 162 Jul 30 09:59 jenkins.security.UpdateSiteWarningsConfiguration.xml
-rw-r--r-- 1 root root 171 Jul 11 15:04 jenkins.telemetry.Correlator.xml
drwxr-xr-x 3 root root 23 Jul 31 11:10 jobs
drwxr-xr-x 3 root root 19 Jul 11 15:04 logs
drwxr-xr-x 4 root root 44 Jul 15 16:09 monitoring
-rw-r--r-- 1 root root 907 Aug 1 14:27 nodeMonitors.xml
drwxr-xr-x 2 root root 6 Jul 11 15:04 nodes
-rw-r--r-- 1 root root 279 Jul 29 16:51 org.jenkinsci.plugins.ansible.AnsibleInstallation.xml
-rw-r--r-- 1 root root 299 Jul 29 16:51 org.jenkinsci.plugins.docker.commons.tools.DockerTool.xml
-rw-r--r-- 1 root root 255 Jul 29 16:51 org.jenkinsci.plugins.gitclient.JGitApacheTool.xml
-rw-r--r-- 1 root root 243 Jul 29 16:51 org.jenkinsci.plugins.gitclient.JGitTool.xml
-rw-r--r-- 1 root root 291 Jul 29 15:06 org.jenkinsci.plugins.pipeline.modeldefinition.config.GlobalConfig.xml
-rw-r--r-- 1 root root 153 Jul 29 15:06 org.jenkinsci.plugins.workflow.flow.GlobalDefaultFlowDurabilityLevel.xml
-rw-r--r-- 1 root root 219 Jul 29 15:06 org.jenkinsci.plugins.workflow.libs.GlobalLibraries.xml
-rw-r--r-- 1 root root 236 Jul 29 15:06 org.jenkins.plugins.lockableresources.LockableResourcesManager.xml
drwxr-xr-x 89 root root 8192 Jul 15 16:17 plugins
-rw-r--r-- 1 root root 130 Aug 1 15:20 queue.xml
-rw-r--r-- 1 root root 129 Jul 31 11:24 queue.xml.bak
-rw-r--r-- 1 root root 369 Jul 16 15:04 scriptApproval.xml
-rw-r--r-- 1 root root 64 Jul 11 15:03 secret.key
-rw-r--r-- 1 root root 0 Jul 11 15:03 secret.key.not-so-secret
drwx------ 4 root root 4096 Jul 29 16:55 secrets
drwxr-xr-x 2 root root 182 Aug 1 14:27 updates
drwxr-xr-x 2 root root 24 Jul 11 15:04 userContent
drwxr-xr-x 5 root root 130 Jul 30 10:01 users
drwxr-xr-x 2 root root 6 Jul 11 16:52 workflow-libs
drwxr-xr-x 3 root root 23 Jul 31 11:23 workspace
这里选择一些主要的文件或者目录来介绍下
config.xml
这个文件存储了Jenkins的很多核心信息,包含了Jenkins的版本信息、权限认证规则、workspace目录定义、builds目录定义、视图信息等等。
fingerprints
文件指纹(fingerprints)是一个简单的MD5校验和。Jenkins维护了一个md5sum数据库,用于文件指纹校验。对于每个md5sum,Jenkins记录了哪些项目的哪些构建使用了他。在每次构建运行和文件被采集指纹时这个数据库会更新。为了避免过多的磁盘使用,Jenkins不存储实际的文件。相反,它只存储md5sum和它的使用记录。这些文件就存储在$JENKINS_HOME/fingerprints中。
jobs
这个目录是Jenkins管理的所有构建项目的配置细节、构建后的产物和数据。
进入这个目录并随便进入一个项目。
[root@localhost .jenkins]# cd jobs/
[root@localhost jobs]# ls
test_java
[root@localhost jobs]# cd test_java/
[root@localhost test_java]# ll
total 8
drwxr-xr-x 12 root root 242 Aug 1 15:19 builds
-rw-r--r-- 1 root root 3924 Aug 1 15:19 config.xml
lrwxrwxrwx 1 root root 22 Aug 1 15:19 lastStable -> builds/lastStableBuild
lrwxrwxrwx 1 root root 26 Aug 1 15:19 lastSuccessful -> builds/lastSuccessfulBuild
-rw-r--r-- 1 root root 3 Aug 1 15:19 nextBuildNumber
builds这个目录中保存着这个项目的构建历史记录。
[root@localhost test_java]# cd builds/
[root@localhost builds]# ll
total 0
drwxr-xr-x 2 root root 55 Aug 1 15:01 10
drwxr-xr-x 2 root root 55 Aug 1 15:19 11
drwxr-xr-x 2 root root 34 Aug 1 14:30 2
drwxr-xr-x 2 root root 34 Aug 1 14:31 3
drwxr-xr-x 2 root root 55 Aug 1 14:36 4
drwxr-xr-x 2 root root 55 Aug 1 14:43 5
drwxr-xr-x 2 root root 55 Aug 1 14:51 6
drwxr-xr-x 2 root root 55 Aug 1 14:56 7
drwxr-xr-x 2 root root 55 Aug 1 14:58 8
drwxr-xr-x 2 root root 55 Aug 1 15:00 9
lrwxrwxrwx 1 root root 1 Aug 1 14:36 lastFailedBuild -> 4
lrwxrwxrwx 1 root root 2 Aug 1 15:19 lastStableBuild -> 11
lrwxrwxrwx 1 root root 2 Aug 1 15:19 lastSuccessfulBuild -> 11
lrwxrwxrwx 1 root root 2 Jul 31 10:34 lastUnstableBuild -> -1
lrwxrwxrwx 1 root root 1 Aug 1 14:36 lastUnsuccessfulBuild -> 4
-rw-r--r-- 1 root root 0 Jul 31 10:18 legacyIds
可以看到有2-11这10个数字目录,这就是我们这个项目的构建历史记录,和Jenkins页面中的构建历史记录可以对应上。
每个数字都保存着那次构建的详细信息。那为什么是10个历史记录呢?
没错,记性好点的好,应该想起来了。因为之前我们在做该项目的配置时,有勾选"丢弃旧的构建",设置的保留最大构建数为10。当出现第11个时,就会删除第1个,以此类推。
保留的构建的个数,可以根据实际情况来定。虽然保留的是历史构建的日志信息,但毕竟磁盘空间有限啊,建议5-10个足矣。
看完了builds目录,再来看下config.xml文件,这个文件就是这个项目的配置文件,里面保存着你在页面配置中所配置的所有记录。
lastStable文件和lastSuccessful文件分别是最近稳定构建和最近成功的构建的符号链接。
nextBuildNumber记录了这个构建任务在下一次构建时的数字序号。
logs
Jenkins的日志目录。
nodes
Jenkins的节点信息,Jenkins在配置了主从之后会在这里有相应的信息。
plugins
Jenkins的插件目录。Jenkins已经安装的插件都可以在里面找到对应的文件。每一个插件基本是由一个目录和一个与目录同名的文件配对组成。
updates
用来存放可用的插件更新。
users
存放用户账号信息的地方。
workspace
Jenkins存放项目的工作空间。进入这个workspace目录,里面就是你之前创建的项目的目录。在构建过程中,Jenkins会根据项目中配置的远程代码仓库的地址去拉取源码到项目目录中,并在这里完成打包。之前我们在打包的脚本中用到的$WORKSPACE表示的就是workspace下对应项目的目录。
参考文章:
https://www.cnblogs.com/qstudy/p/10284283.html
http://ju.outofmemory.cn/entry/117335