Skip to content

Commit 997534c

Browse files
committed
doc: update jenkins document.
1 parent 10c3d91 commit 997534c

File tree

3 files changed

+183
-5
lines changed

3 files changed

+183
-5
lines changed

docs/jenkins/README.md

+157-5
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ docker save -o node22.tar node:22
162162
scp -P 2222 node22.tar [email protected]:/home/docker-images
163163
```
164164

165-
Pipeline 脚本中使用 Docker nodejs 20 运行
165+
Pipeline 脚本中使用 Docker nodejs 20 运行示例
166166

167167
```groovy
168168
pipeline {
@@ -185,7 +185,7 @@ pipeline {
185185
186186
// 本地需要上传的目录 以及远程服务器的目录
187187
def localDir = "${WORKSPACE}/h5_vip/test_dir/"
188-
def vip_host = '106.53.119.240'
188+
def vip_host = '152.22.3.186'
189189
def vip_remote_dir = "/mnt/mall/h5"
190190
}
191191
stages {
@@ -232,11 +232,11 @@ pipeline {
232232
rm -rf test_dir
233233
mv dist test_dir
234234
'''
235-
withCredentials([sshUserPrivateKey(credentialsId: 'bd6f00e6-9dfd-4fd5-b94b-7559ca212e9a', keyFileVariable: 'SSH_KEY')]) {
235+
withCredentials([sshUserPrivateKey(credentialsId: '9dfd-4fd5-b94b-7559ca212e9a', keyFileVariable: 'SSH_KEY')]) {
236236
// 连接到远程服务器并删除 test_dir 目录 重新上传
237237
sh '''
238-
ssh -i ${SSH_KEY} -o StrictHostKeyChecking=no root@106.53.119.240 "rm -rf /mnt/mall/h5/test_dir"
239-
scp -i ${SSH_KEY} -o StrictHostKeyChecking=no -P 22 -r "${localDir}" root@106.53.119.240:${vip_remote_dir}
238+
ssh -i ${SSH_KEY} -o StrictHostKeyChecking=no root@152.22.3.186 "rm -rf /mnt/mall/h5/test_dir"
239+
scp -i ${SSH_KEY} -o StrictHostKeyChecking=no -P 22 -r "${localDir}" root@152.22.3.186:${vip_remote_dir}
240240
'''
241241
}
242242
break
@@ -263,4 +263,156 @@ pipeline {
263263
}
264264
}
265265
}
266+
```
267+
268+
## Java 环境
269+
270+
基于 `openjdk:11` 创建一个包含 `Maven` 的自定义 Docker 镜像
271+
272+
```dockerfile
273+
FROM --platform=linux/amd64 openjdk:11
274+
275+
# 安装 Maven 3.8.7
276+
ENV MAVEN_VERSION=3.8.7
277+
RUN apt-get update && apt-get install -y wget tar \
278+
&& wget https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
279+
&& tar xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz -C /opt \
280+
&& ln -s /opt/apache-maven-${MAVEN_VERSION} /opt/maven \
281+
&& rm apache-maven-${MAVEN_VERSION}-bin.tar.gz
282+
283+
# 设置 Maven 环境变量
284+
ENV MAVEN_HOME=/opt/maven
285+
ENV PATH="${MAVEN_HOME}/bin:${PATH}"
286+
287+
# 创建非 root 用户并设置权限
288+
RUN useradd -u 1000 -ms /bin/bash jenkins \
289+
&& mkdir -p /home/jenkins/.m2/repository \
290+
&& chown -R jenkins:jenkins /home/jenkins/.m2
291+
292+
# 切换到非 root 用户
293+
USER jenkins
294+
295+
# 验证 Maven 版本
296+
RUN mvn -version
297+
```
298+
299+
构建 `openjdk` 新的镜像,命名为 `my-openjdk-maven`
300+
301+
```sh
302+
docker build -t my-openjdk-maven:3.8.7 .
303+
# 保存 Docker 镜像到本地文件
304+
docker save -o my-openjdk-maven.3.8.7.tar my-openjdk-maven:3.8.7
305+
docker save -o my-openjdk-maven.3.8.8.tar my-openjdk-maven:3.8.8
306+
# 上传到服务器
307+
scp -P 2222 my-openjdk-maven.3.8.7.tar [email protected]:/home/docker-images
308+
```
309+
310+
加载 docker 自定义镜像
311+
312+
```sh
313+
docker load -i ./my-openjdk-maven.3.8.7.tar
314+
```
315+
316+
这事缓存下载的 maven 的包
317+
318+
```sh
319+
docker run -it --rm my-openjdk-maven:3.8.7 /bin/bash
320+
# 在【容器】内运行
321+
id jenkins
322+
# uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins)
323+
# 在【宿主机】上使用这些 ID 来更改目录的拥有者
324+
sudo chown -R 1000:1000 /root/.m2/
325+
# 将目录权限设置为可读写
326+
sudo chmod -R 777 /root/.m2/
327+
```
328+
329+
Pipeline 脚本中使用 Docker java `openjdk:11` & `maven.3.8.7` 运行示例
330+
331+
```groovy
332+
pipeline {
333+
agent {
334+
docker {
335+
image 'my-openjdk-maven:3.8.7'
336+
// 将 Maven 的本地仓库挂载到容器的 /root/.m2 路径,
337+
// 确保你每次构建时都能重用之前下载的依赖
338+
args '-v /root/.m2:/home/jenkins/.m2:rw'
339+
}
340+
}
341+
environment {
342+
def git_url="http://106.55.8.163:8081/mall/springboot-mall.git"
343+
def git_auth = "211ca2-55c4f199-4b15-b087-238db80b102d"
344+
def git_branch = "${branch}"
345+
def project_env = "${project_env}"
346+
def vip_host = '152.22.3.186'
347+
def vip_remote_dir = "/mnt/mall/admin"
348+
}
349+
stages {
350+
stage('Git Checkout') {
351+
steps {
352+
echo 'check git'
353+
checkout([
354+
$class: 'GitSCM',
355+
branches: [[name: "${git_branch}" ]],
356+
doGenerateSubmoduleConfigurations: false,
357+
extensions: [
358+
// 只拉取最新的提交
359+
[$class: 'CloneOption', depth: 1, shallow: true, noTags: true]
360+
],
361+
submoduleCfg: [],
362+
userRemoteConfigs: [[
363+
credentialsId: "${git_auth}",
364+
url: "${git_url}"
365+
]]
366+
])
367+
}
368+
}
369+
stage('Manven Build') {
370+
steps {
371+
/**
372+
* 执行maven打包
373+
* -B --batch-mode 在非交互(批处理)模式下运行(该模式下,当Mven需要输入时,它不会停下来接受用户的输入,而是使用合理的默认值)
374+
* 打包时跳过JUnit测试用例
375+
* -DskipTests 不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下
376+
* -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类
377+
**/
378+
sh "cd ${WORKSPACE} ; mvn clean package -Dmaven.test.skip=true -Dmaven.repo.local=/home/jenkins/.m2/repository -U"
379+
}
380+
}
381+
stage('Send Files') {
382+
when {
383+
expression {
384+
currentBuild.result == null || currentBuild.result == 'SUCCESS'
385+
}
386+
}
387+
steps {
388+
script {
389+
switch (project_env) {
390+
case "pro":
391+
// 部署服务器 SSH 凭据,验证登录用,才可以 ssh 和 scp 上传等功能
392+
withCredentials([sshUserPrivateKey(credentialsId: 'bd6f00e69dfd-4fd5-b94b-7559ca212e9a', keyFileVariable: 'SSH_KEY')]) {
393+
// 连接到远程服务器并删除 admin 目录 重新上传
394+
sh '''
395+
scp -i ${SSH_KEY} -o StrictHostKeyChecking=no -r -P 22 '${WORKSPACE}/admin/target/lib' 'root@${vip_host}:${vip_remote_dir}'
396+
scp -i ${SSH_KEY} -o StrictHostKeyChecking=no -r -P 22 '${WORKSPACE}/admin/target/admin-2.3.jar' 'root@${vip_host}:${vip_remote_dir}'
397+
ssh -i ${SSH_KEY} -o StrictHostKeyChecking=no root@${vip_host} '/mnt/sh/admin-8000.sh restart;'
398+
'''
399+
}
400+
break
401+
case "dev":
402+
403+
break
404+
}
405+
}
406+
}
407+
}
408+
}
409+
post {
410+
success {
411+
sh "echo 'Success success'"
412+
}
413+
failure {
414+
sh "echo 'Faild faild'"
415+
}
416+
}
417+
}
266418
```

docs/jenkins/openjdk/Dockerfile

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
FROM --platform=linux/amd64 openjdk:11
2+
3+
# 安装 Maven 3.8.7
4+
ENV MAVEN_VERSION=3.8.7
5+
RUN apt-get update && apt-get install -y wget tar \
6+
&& wget https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
7+
&& tar xzf apache-maven-${MAVEN_VERSION}-bin.tar.gz -C /opt \
8+
&& ln -s /opt/apache-maven-${MAVEN_VERSION} /opt/maven \
9+
&& rm apache-maven-${MAVEN_VERSION}-bin.tar.gz
10+
11+
# 设置 Maven 环境变量
12+
ENV MAVEN_HOME=/opt/maven
13+
ENV PATH="${MAVEN_HOME}/bin:${PATH}"
14+
15+
# 创建非 root 用户并设置权限
16+
RUN useradd -u 1000 -ms /bin/bash jenkins \
17+
&& mkdir -p /home/jenkins/.m2/repository \
18+
&& chown -R jenkins:jenkins /home/jenkins/.m2
19+
20+
# 切换到非 root 用户
21+
USER jenkins
22+
23+
# 验证 Maven 版本
24+
RUN mvn -version

docs/jenkins/openjdk/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
[Java 环境镜像](../README.md#java-环境)

0 commit comments

Comments
 (0)