-
Notifications
You must be signed in to change notification settings - Fork 0
/
第7周 Jenkins应用 命令版.txt
254 lines (196 loc) · 6.48 KB
/
第7周 Jenkins应用 命令版.txt
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
======= 软件准备 ==========
下载mvn-settings.xml文件
拉取maven镜像
docker pull maven:3.9.6-sapmachine-17
拉取sonarqube镜像
docker pull registry.cn-hangzhou.aliyuncs.com/patrick4u/sonarqube:9.9-community
拉取postgres镜像
docker pull registry.cn-hangzhou.aliyuncs.com/patrick4u/postgres:15
虚拟机查看Jenkins容器运行情况
Windows浏览器访问 虚拟机IP:8080
登录Jenkins,用户名:admin,密码:admin
======= 准备Spring Boot程序=======
启动IDEA
欢迎页 选择 Get from VCS
选择 Gitee,在列表项中选择仓库
点击 Clone(下载的目录应该为新目录)
新增流水线stage:代码检查
=========SonarQube 代码检查 ====
stage('SonarCube代码检查') {
steps {
sh 'echo SonarQube 代码检查'
}
}
安装SonarQube
修改环境变量
sysctl -w vm.max_map_count=524288
sysctl -w fs.file-max=131072
ulimit -n 131072
ulimit -u 8192
拉取sonarqube镜像
docker pull registry.cn-hangzhou.aliyuncs.com/patrick4u/sonarqube:9.9-community
拉取postgres镜像
docker pull registry.cn-hangzhou.aliyuncs.com/patrick4u/postgres:15
mkdir -p /home/root/sonarqube
cd /home/root/sonarqube
vi compose.yaml
内容如下:
services:
sonarqube:
image: registry.cn-hangzhou.aliyuncs.com/patrick4u/sonarqube:9.9-community
hostname: sonarqube
container_name: sonarqube
read_only: true
depends_on:
db:
condition: service_healthy
environment:
SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
- sonarqube_temp:/opt/sonarqube/temp
ports:
- "9000:9000"
db:
image: registry.cn-hangzhou.aliyuncs.com/patrick4u/postgres:15
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
hostname: postgresql
container_name: postgresql
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
volumes:
sonarqube_data:
sonarqube_temp:
sonarqube_extensions:
sonarqube_logs:
postgresql:
postgresql_data:
启动SonarCube容器
docker compose up -d
浏览器访问SonarCube:openEulerDocker:9000
用户名:admin
密码:admin
第一次登录后需要修改密码:Root12345678
修改密码后,退出后重新登录
点击右上角账号图标--My Account--Security
输入Token Name:mytoken
点击Generate生成Token
务必保存Token!
squ_7e75b74f0d462b122da21edee9014375185243ab
Jenkins 安装SonarQube Scanner插件
系统管理--系统配置--插件管理
搜索SonarQube Scanner
等待自动安装完成
安装SonarQube scanner工具
系统管理--全局工具配置
SonarQube Scanner
Name: sonar-scanner
自动安装:通过下拉列表选择最新版(6.2.1.4610)
点击 应用 保存
系统管理--安全--凭据管理
类型:Secret text
范围:全局
Secret:squ_1f33441b15a78613f2e9fc6c1b694c725d1d474b
描述:SonarQube auth
系统管理--系统配置--系统配置
SonarQube servers--SonarQube installations
Name: sonarqube
Server URL: http://虚拟机IP地址:9000/
Server authentication token:通过下拉列表选择 SonarQube auth
应用--保存
修改hello01demo项目代码
新建sonar-project.properties文件,内容如下:
# 必需属性
sonar.projectKey=hello01demo
sonar.projectName=hello01demo
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
# 源代码位置
sonar.sources=.
# 编程语言设置,下面的示例是针对 Java 项目
sonar.language=java
sonar.java.source=1.17
sonar.java.target=1.17
sonar.java.binaries=./target/classes
# 扫描的文件包括和排除设置
sonar.inclusions=**/*.java,**/*.xml
sonar.exclusions=**/test/**,**/target/**
修改Jenkinsfile
stage('SonarCube代码检查') {
steps {
script {
scannerHome = tool 'sonar-scanner'
}
withSonarQubeEnv('sonarqube') {
sh 'pwd && ls -alh'
sh "cd hello01demo && pwd && ls -alh && ${scannerHome}/bin/sonar-scanner"
}
}
}
======== Jenkinsfile:Maven编译打包=======
修改Jenkinsfile,然后commit and push
======== Jenkinsfile:定义环境变量=====
在agent any下方增加
//定义全局环境信息
environment {
WS = "${WORKSPACE}"
IMAGE_VERSION = "1.0"
}
======== Jenkinsfile:Maven编译打包======
stage('Maven编译打包') {
agent {
docker {
image 'maven:3.9.6-sapmachine-17'
args '-v /home/root/mavenrepo/:/root/.m2/repository'
}
}
steps {
sh 'pwd && ls -alh'
sh 'mvn -v'
sh "echo 默认的工作目录:${WS}"
//每一行指令都是基于当前环境信息。和上下指令无关
sh 'cd ${WS}/hello01demo && mvn clean package -s "/var/jenkins_home/appconfig/maven/mvn-settings.xml" -Dmaven.test.skip=true'
sh 'cd ${WS}/hello01demo/target && ls -alh'
}
}
在虚拟机jenkinsdata数据卷文件夹_data中创建子目录:
将mvn-settings.xml文件上传到虚拟机jenkinsdata数据卷的子目录appconfig/maven中
======== Jenkinsfile:制作Docker镜像=======
module hello01demo中新建Dockerfile文件
内容如下:
FROM openjdk:17-jdk-slim
LABEL maintainer=448417@qq.com
COPY target/*.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
修改Jenkinsfile,然后commit and push
stage('制作Docker镜像') {
steps {
sh 'echo 制作Docker镜像'
sh 'docker version'
sh 'pwd && ls -alh'
sh 'cd ${WS}/hello01demo && ls -alh'
sh 'cd ${WS}/hello01demo && docker build -t java-devops-demo:${IMAGE_VERSION} .'
}
}
======== Jenkinsfile:部署应用=======
修改Jenkinsfile,然后commit and push
stage('部署应用') {
steps {
sh 'echo 部署。。。'
sh 'docker run -dp 8000:8080 java-devops-demo:${IMAGE_VERSION}'
}
}