这篇继续来学习文件相关操作的方法,前面学习了JSON格式文件的读和写,这么介绍一个读取properties文件,这个方法特别是适合Java项目,一个Java项目很多配置文件可能是采用properties类型来写入键值对数据。
1.方法readProperties
就是从一个xxx.properties文件去读取内容出来,得到是一个map对象。下面我现在/testdata文件夹下创建一个test.properties文件,里面写入这些内容。
1
2
3
4
5
6 1Name = Anthony
2Aget = 18
3City = Beijing
4Agend = male
5
6
module 里面解析读取properties的方法如下。
1
2
3
4
5
6
7 1def read_properties(properties_file) {
2 def props = readProperties interpolate: true, file: properties_file
3 props.each {
4 println ( it.key + " = " + it.value )
5 }
6}
7
pipeline 读取properties的stage代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 1import hudson.model.*;
2
3println env.JOB_NAME
4println env.BUILD_NUMBER
5
6pipeline{
7
8 agent any
9 stages{
10 stage("init") {
11 steps{
12 script{
13 model_test = load env.WORKSPACE + "/pipeline/module/pipeline-demo-module.groovy"
14 }
15 }
16 }
17 stage("read properties") {
18 steps{
19 script{
20 properties_file = env.WORKSPACE + "/testdata/test.properties"
21 model_test.read_properties(properties_file)
22 println "================================"
23 }
24 }
25 }
26 }
27}
28
29
30
31
我的jenkins 测试job地址:http://65.49.216.200:8080/job/pipeline-project-demo/47/console
你通过日志可以看到具体测试结果,代码可以看replay下脚本,或者github项目。
2.方法touch
这个touch就是linux下的touch的作用,创建一个文件(如果不存在),并产生时间戳。
下面来举例,运行一个stage来测试下。
1
2
3
4
5
6
7
8
9 1stage("touch file") {
2 steps{
3 script{
4 touch_file = env.WORKSPACE + "/testdata/"+ env.BUILD_NUMBER +".log"
5 touch touch_file
6 }
7 }
8 }
9
把这个加到原来的pipeline stage文件,运行,然后去自己jenkins 节点机器下找到刚刚touch的文件
1
2
3
4
5
6
7
8
9 1[root@Anthony ~]# cd /var/lib/jenkins/workspace/pipeline-project-demo/testdata/
2[root@Anthony testdata]# ls
3123.txt abc.log new_json.json test.properties
448.log a.log test_json.json
5[root@Anthony testdata]# cat 48.log
6[root@Anthony testdata]# ls -l 48.log
7-rw-r--r-- 1 jenkins jenkins 0 Nov 8 10:08 48.log
8[root@Anthony testdata]#
9
我的测试jenkins job:http://65.49.216.200:8080/job/pipeline-project-demo/48/
这里需要提醒的哈,touch的文件在jenkins 节点机器不是在代码库,也不是在你eclipse项目里。