持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05

 

安装sonar Scanner


 

打开 http://www.sonarqube.org/官网
找到下面扫描器
通过这个扫描器可以分析代码分析
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第1张图片

 

因此你也的安装这个扫描器
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第2张图片

 

上传sonar-scanner-2.6.1.zip
1
2
3
4
5
6
7
8
9
[root@linux-node1 plugins] # cd /usr/local/src/
[root@linux-node1 src] # ls
mysql-5.6.30-linux-glibc2.5-x86_64. tar .gz  sonarqube-5.6.zip
[root@linux-node1 src] # rz -E
rz waiting to receive.
[root@linux-node1 src] # ls
mysql-5.6.30-linux-glibc2.5-x86_64. tar .gz  sonar-scanner-2.6.1.zip
sonarqube-5.6.zip
[root@linux-node1 src] #

  

下载中文插件包失败,可以通过迅雷下载
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第3张图片

 

手动下载中文插件并上传到此目录下
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
[root@linux-node1 plugins] # pwd
/usr/local/sonarqube/extensions/plugins
[root@linux-node1 plugins] # ll
total 29180
-rw-r--r-- 1 root root     128 Apr 11  2016 README.txt
-rw-r--r-- 1 root root 7797781 Apr  7  2016 sonar-csharp-plugin-5.0.jar
-rw-r--r-- 1 root root 3191477 Apr 28  2016 sonar-java-plugin-3.13.1.jar
-rw-r--r-- 1 root root 1678073 Apr  7  2016 sonar-javascript-plugin-2.11.jar
-rw-r--r-- 1 root root 3733262 Apr 29 17:26 sonar-php-plugin-2.10.0.2087.jar
-rw-r--r-- 1 root root 3663678 Apr 29 17:11 sonar-python-plugin-1.7.0.1195.jar
-rw-r--r-- 1 root root 3233128 Apr  7  2016 sonar-scm-git-plugin-1.2.jar
-rw-r--r-- 1 root root 6564535 Apr  7  2016 sonar-scm-svn-plugin-1.3.jar
[root@linux-node1 plugins] # rz -E
rz waiting to receive.
[root@linux-node1 plugins] # ll
total 29216
-rw-r--r-- 1 root root     128 Apr 11  2016 README.txt
-rw-r--r-- 1 root root 7797781 Apr  7  2016 sonar-csharp-plugin-5.0.jar
-rw-r--r-- 1 root root 3191477 Apr 28  2016 sonar-java-plugin-3.13.1.jar
-rw-r--r-- 1 root root 1678073 Apr  7  2016 sonar-javascript-plugin-2.11.jar
-rw-r--r-- 1 root root   36538 Apr 29 17:34 sonar-l10n-zh-plugin-1.11.jar
-rw-r--r-- 1 root root 3733262 Apr 29 17:26 sonar-php-plugin-2.10.0.2087.jar
-rw-r--r-- 1 root root 3663678 Apr 29 17:11 sonar-python-plugin-1.7.0.1195.jar
-rw-r--r-- 1 root root 3233128 Apr  7  2016 sonar-scm-git-plugin-1.2.jar
-rw-r--r-- 1 root root 6564535 Apr  7  2016 sonar-scm-svn-plugin-1.3.jar
[root@linux-node1 plugins] #

  

重启sonar,让插件生效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@linux-node1 plugins] # /usr/local/sonarqube/bin/linux-x86-64/sonar.sh stop
Stopping SonarQube...
Waiting  for  SonarQube to  exit ...
Stopped SonarQube.
[root@linux-node1 plugins] # lsof -i:9000
[root@linux-node1 plugins] # /usr/local/sonarqube/bin/linux-x86-64/sonar.sh start
Starting SonarQube...
Started SonarQube.
[root@linux-node1 plugins] # lsof -i:9000
[root@linux-node1 plugins] # lsof -i:9000
[root@linux-node1 plugins] # lsof -i:9000
[root@linux-node1 plugins] # lsof -i:9000
COMMAND   PID USER   FD   TYPE DEVICE SIZE /OFF  NODE NAME
java    43957 root   77u  IPv4 195191      0t0  TCP *:cslistener (LISTEN)
[root@linux-node1 plugins] #

  

重启后刷新页面,看到变成中文的了
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第4张图片

 

代码规则这里
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第5张图片

 

一些规则,都是些公共的用法,它会告诉你什么叫好,什么叫不好
装了语言插件才会出现对应代码规则
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第6张图片

 

什么情况下算bug
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第7张图片
坏味道,你的代码可能写的没错,但是不规范,风格可能不对。翻译的硬伤

 

sonar-scanner才是真正扫描代码的,它连接sonar之后,扫描代码,然后把扫描结果存入数据库,sonar界面进行展示
1
2
3
4
5
[root@linux-node1 plugins] # cd /usr/local/src/
[root@linux-node1 src] # ls
mysql-5.6.30-linux-glibc2.5-x86_64. tar .gz  sonar-scanner-2.6.1.zip
sonarqube-5.6.zip
[root@linux-node1 src] #

  

解压和安装,并创建软链接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@linux-node1 src] # unzip sonar-scanner-2.6.1.zip
Archive:  sonar-scanner-2.6.1.zip
    creating: sonar-scanner-2.6.1 /bin/
   inflating: sonar-scanner-2.6.1 /bin/sonar-scanner 
   inflating: sonar-scanner-2.6.1 /bin/sonar-runner 
    creating: sonar-scanner-2.6.1 /conf/
   inflating: sonar-scanner-2.6.1 /conf/sonar-scanner .properties 
    creating: sonar-scanner-2.6.1 /lib/
   inflating: sonar-scanner-2.6.1 /lib/sonar-scanner-cli-2 .6.1.jar 
   inflating: sonar-scanner-2.6.1 /bin/sonar-runner .bat 
   inflating: sonar-scanner-2.6.1 /bin/sonar-scanner .bat 
[root@linux-node1 src] # ll
total 422960
-rw-r--r-- 1 root root 314592758 Apr  9 13:38 mysql-5.6.30-linux-glibc2.5-x86_64. tar .gz
-rw-r--r-- 1 root root 118012667 Apr 29 15:57 sonarqube-5.6.zip
drwxr-xr-x 5 root root        37 Apr 29 17:52 sonar-scanner-2.6.1
-rw-r--r-- 1 root root    501750 Apr 29 17:16 sonar-scanner-2.6.1.zip
[root@linux-node1 src] # mv sonar-scanner-2.6.1 /usr/local/
[root@linux-node1 src] # ln -s /usr/local/sonar-scanner-2.6.1/ /usr/local/sonar-scanner
[root@linux-node1 src] #

  

查看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@linux-node1  local ] # cd /usr/local/
[root@linux-node1  local ] # ll
total 4
drwxr-xr-x.  2 root  root     6 Jun 10  2014 bin
drwxr-xr-x.  2 root  root     6 Jun 10  2014 etc
drwxr-xr-x.  2 root  root     6 Jun 10  2014 games
drwxr-xr-x.  2 root  root     6 Jun 10  2014 include
drwxr-xr-x.  2 root  root     6 Jun 10  2014 lib
drwxr-xr-x.  2 root  root     6 Jun 10  2014 lib64
drwxr-xr-x.  2 root  root     6 Jun 10  2014 libexec
lrwxrwxrwx   1 mysql mysql   46 Apr  4 14:15 mysql ->  /usr/local/mysql-5 .6.30-linux-glibc2.5-x86_64/
drwxr-xr-x  13 mysql mysql 4096 Apr 29 16:01 mysql-5.6.30-linux-glibc2.5-x86_64
drwxr-xr-x.  2 root  root     6 Jun 10  2014 sbin
drwxr-xr-x.  5 root  root    46 Feb  6 01:26 share
lrwxrwxrwx   1 root  root    25 Apr 29 16:00 sonarqube ->  /usr/local/sonarqube-5 .6/
drwxr-xr-x  10 root  root   111 Jun  1  2016 sonarqube-5.6
lrwxrwxrwx   1 root  root    31 Apr 29 17:53 sonar-scanner ->  /usr/local/sonar-scanner-2 .6.1/
drwxr-xr-x   5 root  root    37 Apr 29 17:52 sonar-scanner-2.6.1
drwxr-xr-x.  2 root  root   108 Apr 29 17:52 src
[root@linux-node1  local ] #

  

把sonar-scanner和sonarqube关联起来
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@linux-node1  local ] # cd sonar-scanner
[root@linux-node1 sonar-scanner] # ll
total 0
drwxr-xr-x 2 root root 92 May 12  2016 bin
drwxr-xr-x 2 root root 37 May 12  2016 conf
drwxr-xr-x 2 root root 40 May 12  2016 lib
[root@linux-node1 sonar-scanner] # cd conf/
[root@linux-node1 conf] # ll
total 4
-rw-r--r-- 1 root root 775 May 12  2016 sonar-scanner.properties
[root@linux-node1 conf] # pwd
/usr/local/sonar-scanner/conf
[root@linux-node1 conf] #

  

取消下面注释
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第8张图片

 

保存,退出

 

 

 

找一些代码 对它进行分析



sonar官方提供了个样板包,有各种源的代码

打开下面地址
https://github.com/SonarSource

找到下面东西

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第9张图片

 

https://github.com/SonarSource/sonar-scanning-examples
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第10张图片

 

下载
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第11张图片

 

 

上传并解压sonar-scanning-examples-master.zip
里面有很多语言
1
2
3
4
5
6
7
8
9
10
11
[root@linux-node1 ~] # ls
anaconda-ks.cfg  sonar-scanning-examples-master
ks.cfg           sonar-scanning-examples-master.zip
[root@linux-node1 ~] # cd sonar-scanning-examples-master
[root@linux-node1 sonar-scanning-examples-master] # ls
objc-llvm-coverage     sonarqube-scanner-build-wrapper-linux  swift-coverage
sonarqube-scanner      sonarqube-scanner-maven
sonarqube-scanner-ant  sonarqube-scanner-msbuild
[root@linux-node1 sonar-scanning-examples-master] # cd sonarqube-scanner
[root@linux-node1 sonarqube-scanner] # ls
copybooks  coverage-report  sonar-project.properties  src

  

下面可以看到很多源码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@linux-node1 src] # pwd
/root/sonar-scanning-examples-master/sonarqube-scanner/src
[root@linux-node1 src] # ll
total 0
drwxr-xr-x 2 root root 46 Mar 23 18:26 abap
drwxr-xr-x 2 root root 25 Mar 23 18:26 cobol
drwxr-xr-x 2 root root 39 Mar 23 18:26 css
drwxr-xr-x 2 root root 33 Mar 23 18:26 directory
drwxr-xr-x 2 root root 22 Mar 23 18:26 erlang
drwxr-xr-x 2 root root 47 Mar 23 18:26 flex
drwxr-xr-x 2 root root 53 Mar 23 18:26 java
drwxr-xr-x 2 root root 22 Mar 23 18:26 javascript
drwxr-xr-x 2 root root 49 Mar 23 18:26 package
drwxr-xr-x 2 root root 21 Mar 23 18:26 php
drwxr-xr-x 2 root root 73 Mar 23 18:26 pli
drwxr-xr-x 2 root root 44 Mar 23 18:26 python
drwxr-xr-x 2 root root 26 Mar 23 18:26 rpg
drwxr-xr-x 2 root root 75 Mar 23 18:26 samples
drwxr-xr-x 2 root root 40 Mar 23 18:26 sql
drwxr-xr-x 2 root root 26 Mar 23 18:26 swift
drwxr-xr-x 2 root root 59 Mar 23 18:26 vb6
drwxr-xr-x 2 root root 25 Mar 23 18:26 web
drwxr-xr-x 2 root root 29 Mar 23 18:26 xml
[root@linux-node1 src] #

  

查看配置文件
1
2
3
4
5
6
[root@linux-node1 sonarqube-scanner] # ll
total 8
drwxr-xr-x  2 root root   75 Mar 23 18:26 copybooks
drwxr-xr-x  2 root root   39 Mar 23 18:26 coverage-report
-rw-r--r--  1 root root  647 Mar 23 18:26 sonar-project.properties
drwxr-xr-x 21 root root 4096 Mar 23 18:26 src

下面配置文件

项目里必须有上面这个配置文件,没有这个配置文件,无法对其进行扫描
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
[root@linux-node1 sonarqube-scanner] # cat sonar-project.properties
sonar.projectKey=org.sonarqube:sonarqube-scanner
sonar.projectName=Example of SonarQube Scanner Usage
sonar.projectVersion=1.0
 
sonar.sources=src,copybooks
 
sonar.sourceEncoding=UTF-8
 
## Cobol Specific Properties
 
# comma-separated paths to directories with copybooks
sonar.cobol.copy.directories=copybooks
# comma-separated list of suffixes
sonar.cobol. file .suffixes=cbl,cpy
sonar.cobol.copy.suffixes=cpy
 
 
 
## Flex Specific Properties
 
# retrieve code coverage data from the Cobertura report
sonar.flex.cobertura.reportPath=coverage-report /coverage-cobertua-flex .xml
 
 
 
# PL/I Specific Properties
sonar.pli.marginLeft=2
sonar.pli.marginRight=0
[root@linux-node1 sonarqube-scanner] #

  

样例最新的地址
https://github.com/SonarSource/sonar-scanning-examples

 进行扫描

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
[root@linux-node1 sonarqube-scanner] # /usr/local/sonar-scanner/bin/sonar-scanner
INFO: Scanner configuration  file /usr/local/sonar-scanner/conf/sonar-scanner .properties
INFO: Project root configuration  file /root/sonar-scanning-examples-master/sonarqube-scanner/sonar-project .properties
INFO: SonarQube Scanner 2.6.1
INFO: Java 1.8.0_131 Oracle Corporation (64-bit)
INFO: Linux 3.10.0-229.el7.x86_64 amd64
INFO: User cache:  /root/ .sonar /cache
INFO: Load global repositories
INFO: Load global repositories ( done ) |  time =153ms
WARN: Property  'sonar.jdbc.url'  is not supported any  more . It will be ignored. There is no longer any DB connection to the SQ database.
WARN: Property  'sonar.jdbc.username'  is not supported any  more . It will be ignored. There is no longer any DB connection to the SQ database.
WARN: Property  'sonar.jdbc.password'  is not supported any  more . It will be ignored. There is no longer any DB connection to the SQ database.
INFO: User cache:  /root/ .sonar /cache
INFO: Load plugins index
INFO: Load plugins index ( done ) |  time =32ms
INFO: Plugin [l10nzh] defines  'l10nen'  as base plugin. This metadata can be removed from manifest of l10n plugins since version 5.2.
INFO: SonarQube server 5.6
INFO: Default locale:  "en_US" source  code encoding:  "UTF-8"
INFO: Process project properties
INFO: Load project repositories
INFO: Load project repositories ( done ) |  time =33ms
INFO: Load quality profiles
INFO: Load quality profiles ( done ) |  time =49ms
INFO: Load active rules
INFO: Load active rules ( done ) |  time =582ms
WARN: SCM provider autodetection failed. No SCM provider claims to support this project. Please use sonar.scm.provider to define SCM of your project.
INFO: Publish mode
INFO: -------------  Scan Example of SonarQube Scanner Usage
INFO: Load server rules
INFO: Load server rules ( done ) |  time =124ms
INFO: Base  dir /root/sonar-scanning-examples-master/sonarqube-scanner
INFO: Working  dir /root/sonar-scanning-examples-master/sonarqube-scanner/ .sonar
INFO: Source paths: src, copybooks
INFO: Source encoding: UTF-8, default locale: en_US
INFO: Index files
INFO: 13 files indexed
INFO: Quality profile  for  java: Sonar way
INFO: Quality profile  for  js: Sonar way
INFO: Quality profile  for  php: Sonar way
INFO: Quality profile  for  py: Sonar way
INFO: JaCoCoSensor: JaCoCo report not found :  /root/sonar-scanning-examples-master/sonarqube-scanner/target/jacoco . exec
INFO: JaCoCoItSensor: JaCoCo IT report not found:  /root/sonar-scanning-examples-master/sonarqube-scanner/target/jacoco-it . exec
INFO: Sensor JavaSquidSensor
INFO: Configured Java  source  version (sonar.java. source ): none
INFO: JavaClasspath initialization...
WARN: Bytecode of dependencies was not provided  for  analysis of  source  files, you might end up with  less  precise results. Bytecode can be provided using sonar.java.libraries property
INFO: JavaClasspath initialization  done : 1 ms
INFO: JavaTestClasspath initialization...
WARN: Bytecode of dependencies was not provided  for  analysis of  test  files, you might end up with  less  precise results. Bytecode can be provided using sonar.java. test .libraries property
INFO: JavaTestClasspath initialization  done : 1 ms
INFO: Java Main Files AST scan...
INFO: 2  source  files to be analyzed
INFO: Java Main Files AST scan  done : 639 ms
WARN: Java bytecode has not been made available to the analyzer. The org.sonar.java.bytecode.visitor.DependenciesVisitor@26e0d39c, org.sonar.java.checks.unused.UnusedPrivateMethodCheck@56382bc9 are disabled.
INFO: Java Test Files AST scan...
INFO: 2 /2  source  files have been analyzed
INFO: 0  source  files to be analyzed
INFO: Java Test Files AST scan  done : 5 ms
INFO: Sensor JavaSquidSensor ( done ) |  time =1306ms
INFO: Sensor Lines Sensor
INFO: 0 /0  source  files have been analyzed
INFO: Sensor Lines Sensor ( done ) |  time =6ms
INFO: Sensor PythonXUnitSensor
INFO: Sensor PythonXUnitSensor ( done ) |  time =24ms
INFO: Sensor SurefireSensor
INFO: parsing  /root/sonar-scanning-examples-master/sonarqube-scanner/target/surefire-reports
INFO: Sensor SurefireSensor ( done ) |  time =7ms
INFO: Sensor JavaScriptSquidSensor
INFO: 1  source  files to be analyzed
INFO: Sensor JavaScriptSquidSensor ( done ) |  time =486ms
INFO: Sensor SCM Sensor
INFO: No SCM system was detected. You can use the  'sonar.scm.provider'  property to explicitly specify it.
INFO: Sensor SCM Sensor ( done ) |  time =0ms
INFO: Sensor Python Squid Sensor
INFO: 1 /1  source  files have been analyzed
INFO: Python unit  test  coverage
INFO: Python integration  test  coverage
INFO: Python overall  test  coverage
INFO: Sensor Python Squid Sensor ( done ) |  time =384ms
INFO: Sensor PHP sensor
INFO: 1  source  files to be analyzed
INFO: 1 /1  source  files have been analyzed
INFO: No PHPUnit  test  report provided (see  'sonar.php.tests.reportPath'  property)
INFO: No PHPUnit unit  test  coverage report provided (see  'sonar.php.coverage.reportPath'  property)
INFO: No PHPUnit integration  test  coverage report provided (see  'sonar.php.coverage.itReportPath'  property)
INFO: No PHPUnit overall coverage report provided (see  'sonar.php.coverage.overallReportPath'  property)
INFO: Sensor PHP sensor ( done ) |  time =717ms
INFO: Sensor Analyzer  for  "php.ini"  files
INFO: Sensor Analyzer  for  "php.ini"  files ( done ) |  time =3ms
INFO: Sensor org.sonar.plugins.javascript.lcov.UTCoverageSensor
INFO: Sensor org.sonar.plugins.javascript.lcov.UTCoverageSensor ( done ) |  time =0ms
INFO: Sensor org.sonar.plugins.javascript.lcov.ITCoverageSensor
INFO: Sensor org.sonar.plugins.javascript.lcov.ITCoverageSensor ( done ) |  time =0ms
INFO: Sensor Zero Coverage Sensor
INFO: Sensor Zero Coverage Sensor ( done ) |  time =36ms
INFO: Sensor Code Colorizer Sensor
INFO: Sensor Code Colorizer Sensor ( done ) |  time =1ms
INFO: Sensor CPD Block Indexer
INFO: JavaCpdBlockIndexer is used  for  java
INFO: DefaultCpdBlockIndexer is used  for  js
INFO: DefaultCpdBlockIndexer is used  for  php
INFO: DefaultCpdBlockIndexer is used  for  py
INFO: Sensor CPD Block Indexer ( done ) |  time =81ms
INFO: Calculating CPD  for  7 files
INFO: CPD calculation finished
INFO: Analysis report generated  in  108ms,  dir  size=64 KB
INFO: Analysis reports compressed  in  40ms, zip size=38 KB
INFO: Analysis report uploaded  in  298ms
INFO: ANALYSIS SUCCESSFUL, you can browse http: //localhost :9000 /dashboard/index/org .sonarqube:sonarqube-scanner
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http: //localhost :9000 /api/ce/task ? id =AVu6Wsaeyj9VSYmN4Z_C
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total  time : 9.136s
INFO: Final Memory: 51M /252M
INFO: ------------------------------------------------------------------------

  

网页上查看扫描报告
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第12张图片

 

网页上显示的名称和配置文件配置的名称一样
1
2
3
4
[root@linux-node1 sonarqube-scanner] # cat sonar-project.properties
sonar.projectKey=org.sonarqube:sonarqube-scanner
sonar.projectName=Example of SonarQube Scanner Usage
sonar.projectVersion=1.0

  

 

点击进去
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第13张图片

 

右边是自己已经下载的插件,然后才会匹配代码
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第14张图片

 

点开重复的
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第15张图片

 

继续点开可以看到重复的块
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第16张图片

 

它会把重复的部分标识出来
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第17张图片

 

jenkins要集成sonar,要装插件
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第18张图片

 

它会把依赖安装上
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第19张图片

 

 

 
 
Jenkins实战Sonar与Jenkins结合

 持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第20张图片

 

这里可以看到sonar的配置
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第21张图片

 

点击下面

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第22张图片

 

相关配置项
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第23张图片

 

先填这些信息,保存
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第24张图片
系统管理---全局工具配置
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第25张图片

 

找到扫描器的配置
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第26张图片

 

取消自动安装,到这里意识到sonar Scanner要和jenkins装一个机器上
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第27张图片

 

 之前安装在了node1上,需要把它迁移到node2上,和jenkins在一个机器上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@linux-node1  local ] # cd /usr/local/
[root@linux-node1  local ] # ll
total 4
drwxr-xr-x.  2 root  root     6 Jun 10  2014 bin
drwxr-xr-x.  2 root  root     6 Jun 10  2014 etc
drwxr-xr-x.  2 root  root     6 Jun 10  2014 games
drwxr-xr-x.  2 root  root     6 Jun 10  2014 include
drwxr-xr-x.  2 root  root     6 Jun 10  2014 lib
drwxr-xr-x.  2 root  root     6 Jun 10  2014 lib64
drwxr-xr-x.  2 root  root     6 Jun 10  2014 libexec
lrwxrwxrwx   1 mysql mysql   46 Apr  4 14:15 mysql ->  /usr/local/mysql-5 .6.30-linux-glibc2.5-x86_64/
drwxr-xr-x  13 mysql mysql 4096 Apr 30 14:55 mysql-5.6.30-linux-glibc2.5-x86_64
drwxr-xr-x.  2 root  root     6 Jun 10  2014 sbin
drwxr-xr-x.  5 root  root    46 Feb  6 01:26 share
lrwxrwxrwx   1 root  root    25 Apr 29 16:00 sonarqube ->  /usr/local/sonarqube-5 .6/
drwxr-xr-x  10 root  root   111 Jun  1  2016 sonarqube-5.6
lrwxrwxrwx   1 root  root    31 Apr 29 17:53 sonar-scanner ->  /usr/local/sonar-scanner-2 .6.1/
drwxr-xr-x   5 root  root    37 Apr 29 17:52 sonar-scanner-2.6.1
drwxr-xr-x.  2 root  root   108 Apr 29 17:52 src
[root@linux-node1  local ] #

  

把整个目录拷贝过去
1
2
3
[root@linux-node1  local ] # rsync -az sonar-scanner-2.6.1 192.168.58.12:/usr/local/
[email protected]'s password:
[root@linux-node1  local ] #
node2上检查,并创建软链接
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
32
33
34
[root@linux-node2 ~] # cd /usr/local/
[root@linux-node2  local ] # ll
total 4
drwxr-xr-x.  2 root  root     6 Jun 10  2014 bin
drwxr-xr-x.  2 root  root     6 Jun 10  2014 etc
drwxr-xr-x.  2 root  root     6 Jun 10  2014 games
drwxr-xr-x.  2 root  root     6 Jun 10  2014 include
drwxr-xr-x.  2 root  root     6 Jun 10  2014 lib
drwxr-xr-x.  2 root  root     6 Jun 10  2014 lib64
drwxr-xr-x.  2 root  root     6 Jun 10  2014 libexec
lrwxrwxrwx   1 mysql mysql   35 Apr  9 16:50 mysql -> mysql-5.6.30-linux-glibc2.5-x86_64/
drwxr-xr-x  13 mysql mysql 4096 Apr  9 20:56 mysql-5.6.30-linux-glibc2.5-x86_64
drwxr-xr-x.  2 root  root     6 Jun 10  2014 sbin
drwxr-xr-x.  5 root  root    46 Feb  6 01:26 share
drwxr-xr-x   5 root  root    37 Apr 29 17:52 sonar-scanner-2.6.1
drwxr-xr-x.  2 root  root    54 Apr  9 16:50 src
[root@linux-node2  local ] # ln -s sonar-scanner-2.6.1 sonar-scanner
[root@linux-node2  local ] # ll
total 4
drwxr-xr-x.  2 root  root     6 Jun 10  2014 bin
drwxr-xr-x.  2 root  root     6 Jun 10  2014 etc
drwxr-xr-x.  2 root  root     6 Jun 10  2014 games
drwxr-xr-x.  2 root  root     6 Jun 10  2014 include
drwxr-xr-x.  2 root  root     6 Jun 10  2014 lib
drwxr-xr-x.  2 root  root     6 Jun 10  2014 lib64
drwxr-xr-x.  2 root  root     6 Jun 10  2014 libexec
lrwxrwxrwx   1 mysql mysql   35 Apr  9 16:50 mysql -> mysql-5.6.30-linux-glibc2.5-x86_64/
drwxr-xr-x  13 mysql mysql 4096 Apr  9 20:56 mysql-5.6.30-linux-glibc2.5-x86_64
drwxr-xr-x.  2 root  root     6 Jun 10  2014 sbin
drwxr-xr-x.  5 root  root    46 Feb  6 01:26 share
lrwxrwxrwx   1 root  root    19 Apr 30 15:16 sonar-scanner -> sonar-scanner-2.6.1
drwxr-xr-x   5 root  root    37 Apr 29 17:52 sonar-scanner-2.6.1
drwxr-xr-x.  2 root  root    54 Apr  9 16:50 src
[root@linux-node2  local ] #
这2个地方改了
1
2
3
4
5
6
[root@linux-node2 conf] # pwd
/usr/local/sonar-scanner/conf
[root@linux-node2 conf] # ll
total 4
-rw-r--r-- 1 root root 781 Apr 30 15:24 sonar-scanner.properties
[root@linux-node2 conf] # vim sonar-scanner.properties

  

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第28张图片

 

 
保存
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第29张图片

 

 
 
现在只做到源码管理,没构建
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第30张图片

 

 
这里面就有所有你能干的活
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第31张图片

 

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第32张图片

 

 
Analysis properties这里填的是下面配置文件的内容,复制进去
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
32
33
34
35
36
37
38
[root@linux-node1 ~] # cd sonar-scanning-examples-master
[root@linux-node1 sonar-scanning-examples-master] # cd sonarqube-scanner
[root@linux-node1 sonarqube-scanner] # ll
total 8
drwxr-xr-x  2 root root   75 Mar 23 18:26 copybooks
drwxr-xr-x  2 root root   39 Mar 23 18:26 coverage-report
-rw-r--r--  1 root root  647 Mar 23 18:26 sonar-project.properties
drwxr-xr-x 21 root root 4096 Mar 23 18:26 src
[root@linux-node1 sonarqube-scanner] # cat sonar-project.properties
sonar.projectKey=org.sonarqube:sonarqube-scanner
sonar.projectName=Example of SonarQube Scanner Usage
sonar.projectVersion=1.0
 
sonar.sources=src,copybooks
 
sonar.sourceEncoding=UTF-8
 
## Cobol Specific Properties
 
# comma-separated paths to directories with copybooks
sonar.cobol.copy.directories=copybooks
# comma-separated list of suffixes
sonar.cobol. file .suffixes=cbl,cpy
sonar.cobol.copy.suffixes=cpy
 
 
 
## Flex Specific Properties
 
# retrieve code coverage data from the Cobertura report
sonar.flex.cobertura.reportPath=coverage-report /coverage-cobertua-flex .xml
 
 
 
# PL/I Specific Properties
sonar.pli.marginLeft=2
sonar.pli.marginRight=0
[root@linux-node1 sonarqube-scanner] #

  

把下面
1
2
3
4
5
6
7
8
9
10
11
sonar.projectKey=org.sonarqube:sonarqube-scanner
sonar.projectName=Example of SonarQube Scanner Usage
sonar.projectVersion=1.0
sonar.sources=src,copybooks
sonar.sourceEncoding=UTF-8
sonar.cobol.copy.directories=copybooks
sonar.cobol. file .suffixes=cbl,cpy
sonar.cobol.copy.suffixes=cpy
sonar.flex.cobertura.reportPath=coverage-report /coverage-cobertua-flex .xml
sonar.pli.marginLeft=2
sonar.pli.marginRight=0

  

改成
1
2
3
4
5
6
7
8
9
10
11

sonar.login=admin
sonar.password=admin
sonar.projectKey=demo
sonar.projectName=demo
sonar.projectVersion=1.0
sonar.sources=./
sonar.sourceEncoding=UTF-8
sonar.cobol.copy.directories=copybooks
sonar.cobol.file.suffixes=cbl,cpy
sonar.cobol.copy.suffixes=cpy
sonar.flex.cobertura.reportPath=coverage-report/coverage-cobertua-flex.xml
sonar.pli.marginLeft=2
sonar.pli.marginRight=0

  

复制进去
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第33张图片

 

其它区域都不填写,先保存
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第34张图片

 

右边多了个快捷方式
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第35张图片

 

点击立即构建
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第36张图片

 

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第37张图片

 

查看控制台输出
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第38张图片

 

一些输出
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第39张图片

 

这里配置文件就以参数的形式传输给它了
1
2
3
4
5
[auto-deploy] $  /usr/local/sonar-scanner/bin/sonar-scanner  -e -Dsonar.host.url=http: //192 .168.58.11:9000 -Dsonar.sourceEncoding=UTF-8
  -Dsonar.cobol.copy.directories=copybooks -Dsonar.sources=./ -Dsonar.pli.marginRight=0 -Dsonar.projectVersion=1.0
  -Dsonar.projectKey=demo -Dsonar.cobol. file .suffixes=cbl,cpy
  -Dsonar.flex.cobertura.reportPath=coverage-report /coverage-cobertua-flex .xml -Dsonar.cobol.copy.suffixes=cpy -Dsonar.pli.marginLeft=2
  -Dsonar.projectName=demo -Dsonar.projectBaseDir= /var/lib/jenkins/workspace/auto-deploy

  

返回到工程,点击进去
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第40张图片

 

 
 
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第41张图片

 

 
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第42张图片

 

你可以改仪表盘显示
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第43张图片

 

配置控件
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第44张图片

 

 

你可以添加代码覆盖率的控件
选一个项目demo
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第45张图片

 

保存
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第46张图片

 

 
你也可以把欢迎删除了
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第47张图片

 

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第48张图片

 

返回仪表盘
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第49张图片

 

 
jenkins继续编辑配置
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第50张图片

 

还可以设置构建后操作
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第51张图片

 

 
把项目名改成demo-sonar
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第52张图片

 

再次立即构建
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第53张图片

 

 
 
Jenkins实战-Job关联和Pipeline
新建一个项目
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第54张图片

 

 
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第55张图片

 

构建,这里选择执行shell
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第56张图片

 

想先看看jenkins是以什么用户执行的
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第57张图片

 

保存之后,点击立即构建
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第58张图片

 

查看控制台,看到它以jenkins用户执行的
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第59张图片

 

这就有问题了。部署机是192.168.58.11 是node1,使用的是www用户
jenkins在node2上
生产中,jenkins很多情况下和部署机器也不在一台
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@linux-node1 src] # su - www
Last login: Sat Apr 29 14:00:45 CST 2017 on pts /0
[www@linux-node1 ~]$  cd  /scripts/
[www@linux-node1 scripts]$ . /deploy_all .sh
Usage: . /deploy_all .sh { deploy | rollback [ list |version ]}
[www@linux-node1 scripts]$ . /deploy_all .sh deploy
Already up-to- date .
code_build
web-demo_798366_2017-04-30-17-09-00. tar .gz                  100% 9059     8.9KB /s    00:00   
web-demo_798366_2017-04-30-17-09-00. tar .gz                  100% 9059     8.9KB /s    00:00   
test  error
[www@linux-node1 scripts]$ vim deploy_all.sh
[www@linux-node1 scripts]$ . /deploy_all .sh deploy
Already up-to- date .
code_build
web-demo_798366_2017-04-30-17-09-49. tar .gz                  100% 9055     8.8KB /s    00:00   
web-demo_798366_2017-04-30-17-09-49. tar .gz                  100% 9055     8.8KB /s    00:00   
192.168.58.12. crontab .xml                                   100%   21     0.0KB /s    00:00   
HTTP /1 .1 200 OK
add to cluster
[www@linux-node1 scripts]$
通过下面方式可以做到
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第60张图片

 

但是需要配置密钥认证
拷贝公钥过去
1
2
3
4
5
6
7
8
9
10
[root@linux-node2 ~] # cat .ssh/id_rsa.pub
ssh -rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQCz0QBxB9kIv8H6Uxe+clLvM99 /7QOYTCVZzQKb0Q9Song1Yy9oryCcYWHogN30j80Ctbybu +3PAh4VIfz4SjY1tNd /Dv2Il3caz +5chvX0OL
DJCNl2w+Du7HjwdyszlzVc1rP4QTL /yYvrUz1fgBonRKa0/Y5CK7jEzQZ1 +ZMuN /E/ubrDX5FIp0jfPPnbtTryWW8BMloOb +Q8EFKnaI6Wbyx9JzslOIawCkM77LL9RhxMbQ6A3QoU
HozmlFnhfu7AXnhfCdPb02xx4RCOAFoY9pEtOH+eHzT7 /SQVf8VzEYO1vIe4TDP6sNN40/1pjUdBPcGiBMidM6pLk/j6CaxV  [email protected]
[root@linux-node2 ~] #
 
[www@linux-node1 scripts]$  cd
[www@linux-node1 ~]$ vim . ssh /authorized_keys
[www@linux-node1 ~]$

  

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第61张图片

 

测试
1
2
3
[root@linux-node2 ~] # ssh [email protected]
Last login: Sun Apr 30 17:08:50 2017
[www@linux-node1 ~]$
先保存下
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第62张图片

 

点击立即构建,它会失败
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第63张图片
提示权限不足
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第64张图片

 

给它sudo权限
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第65张图片

 

构建这里加上sudo
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第66张图片

 

保存之后执行还是不可以
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第67张图片

 

把这里加上注释,不让它需要tty
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第68张图片

 

再次构建
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第69张图片

 

执行成功
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第70张图片

 

 
ls -lrt 检查
1
2
3
4
drwxrwxr-x 3 www www   69 Apr 30 17:09 web-demo_798366_2017-04-30-17-09-49
-rw-rw-r-- 1 www www 9063 Apr 30 20:06 web-demo_798366_2017-04-30-20-06-29. tar .gz
drwxrwxr-x 3 www www   69 Apr 30 20:06 web-demo_798366_2017-04-30-20-06-29
[root@linux-node2 webroot] #

  

现在我们有2个,一个是代码质量的,一个是自动部署脚本的
显示阴天的是因为之前执行失败过。有提示
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第71张图片

 

 
 
 
开始学钩子脚本
这边一提交(push),这边自动构建一遍
jenkins安装此插件
它是一个触发器插件
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第72张图片

 

直接安装
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第73张图片

 

在demo-sonar项目选择下面插件
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第74张图片

 

  持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第75张图片

 

这里选择下一个任务(项目)的名称
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第76张图片

 

搜索即可,出现demo-deploy
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第77张图片

 

没有参数,勾上
保存
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第78张图片

 

 
现在的话,你要是构建demo-sonar,它就会构建demo-deploy
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第79张图片

 

验证下看看
demo-sonar项目,立即构建
  持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第80张图片

 

看到项目这里也自动执行了。11秒前
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第81张图片

 

 
 
安装学习piplines插件
代码流水线插件,它会执行一系列操作
安装构建插件
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第82张图片

 

使用它,点击选中的加号,新建一个视图
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第83张图片

 

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第84张图片

 

点击OK之后,弹出如下视图
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第85张图片

 

选择初始化的job
显示最近5次的构建
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第86张图片

 

点击保存
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第87张图片

 

点击保存之后显示的
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第88张图片

 

点击run
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第89张图片

 

刷新下也看到右边执行了
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第90张图片

 

 

点下面按钮可以看到控制台输出的快捷方式
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第91张图片

 

 

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第92张图片

 

 

 

Jenkins实战-Jenkins与gitlab集成(Webhook)
现在想实现一个功能,代码提交,push到gitlab上
jenkins自动帮你构建
1
2
3
4
5
6
[www@linux-node1 ~]$  cd  web-demo/
[www@linux-node1 web-demo]$ ll
total 8
-rw-rw-r-- 1 www www 26 Apr 28 22:20 index.html
-rw-rw-r-- 1 www www  9 Apr 28 21:53 README.md
[www@linux-node1 web-demo]$

  

先安装gitlab的钩子脚本
钩子插件已经安装了
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第93张图片

 

配置钩子脚本
 
先在这里配置
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第94张图片

 

勾选这2个
第二个是当gitlab进行发布的时候,对它进行build
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第95张图片

 

它告诉你,你要在gitlab上填上下面这个url
http://192.168.58.12:8080/project/demo-sonar

 

有一个身份认证的东西
需要再装一个插件才能实现认证
先保存了
安装下面插件
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第96张图片

 

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第97张图片

 

只有装了它才能使用身份验证令牌的方式,让双方验证
生成一个token
1
2
3
[root@linux-node2 ~] # openssl rand -hex 10
dc8f07cefb4a25e8c198
[root@linux-node2 ~] #

持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第98张图片

 

保存
在gitlab上添加这个钩子脚本
http://192.168.58.12:8080/project/demo-sonar

 

登录gitlab
在这个项目下找到钩子配置的地方
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第99张图片

 

打开它的wiki
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第100张图片

 

https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第101张图片

 

下面告诉你了使用办法
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第102张图片

 

格式如下
buildByToken/build?job=RevolutionTest&token=TacoTuesday
 

http://192.168.58.12:8080/project/demo-sonar
整合下
http://192.168.58.12:8080/buildByToken/build?job=demo-sonar&token=dc8f07cefb4a25e8c198
job的名称不能错,token也不能错

 
gitlab上此项目添加好url
 
注意如果是源码包安装路径不是这样填写
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第103张图片

 

点击add
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第104张图片
add之后
准备测试,这边先打开日志
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第105张图片

 

页面上test一下

 

成功调用
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第106张图片

 

 日志也刷出来了
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第107张图片

 

 
打开jenkins的pipeline页面,也能看到成功调用
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第108张图片

 

 
 
模拟生产环境,写个代码,git push之后看看他能否执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[www@linux-node1 web-demo]$  pwd
/home/www/web-demo
[www@linux-node1 web-demo]$ ll
total 8
-rw-rw-r-- 1 www www 26 Apr 28 22:20 index.html
-rw-rw-r-- 1 www www  9 Apr 28 21:53 README.md
[www@linux-node1 web-demo]$  cat  index.html
hehehehhehehe
version 2.0
[www@linux-node1 web-demo]$  echo  "test jenkins" >>index.html
[www@linux-node1 web-demo]$  cat  index.html
hehehehhehehe
version 2.0
test  jenkins
[www@linux-node1 web-demo]$

  

提交到gitlab上
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
[www@linux-node1 web-demo]$ git add *
[www@linux-node1 web-demo]$ git commit -m  "jenkins hook test"
[master bd2b985] jenkins hook  test
  file  changed, 1 insertion(+)
[www@linux-node1 web-demo]$ git push
warning: push.default is  unset ; its implicit value is changing  in
Git 2.0 from  'matching'  to  'simple' . To squelch this message
and maintain the current behavior after the default changes, use:
 
   git config --global push.default matching
 
To squelch this message and adopt the new behavior now, use:
 
   git config --global push.default simple
 
See  'git help config'  and search  for  'push.default'  for  further information.
(the  'simple'  mode was introduced  in  Git 1.7.11. Use the similar mode
'current'  instead of  'simple'  if  you sometimes use older versions of Git)
 
Counting objects: 5,  done .
Delta compression using up to 4 threads.
Compressing objects: 100% (2 /2 ),  done .
Writing objects: 100% (3 /3 ), 304 bytes | 0 bytes /s done .
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:web /web-demo .git
    7983661..bd2b985  master -> master
[www@linux-node1 web-demo]$

  

在jenkins页面上看到执行了
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第109张图片

 

打开node2页面,看到页面是最新的了
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第110张图片
最好再配置一个构建后操作,它会在构建失败后执行
比如配置构建后发邮件操作
持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05_第111张图片

 

这里面缺少自动化测试
你可以在部署后面放一个测试的脚本
比如添加一个demo-test

转载于:https://www.cnblogs.com/chenshengqun/p/8118419.html

你可能感兴趣的:(持续集成[代码流水线管理及Jenkins和gitlab集成]-自动化部署05)