「Jenkins探索系列」一、Docker环境下搭建Jenkins

0、序言/准备

目前大部分的大厂/中厂, 或者说一些金融机构、非银金融机构, 其实已经大部分在使用Docker作为开发、测试环境的基础. 所以后续我们的所有涉及到系统搭建相关的工作, 尽量会优先使用Docker环境.
因为我自己本身是有长期购买腾讯云的云服务器与云存储. 所以列一些我自己的基础信息:
OS: CentOS 8 64位
虚拟环境: Docker version 20.10.21
Jenkins: 目前我是拿的最新的镜像: 2.397
JDK: 1.8 、1.11
GIT: 使用的是Jenkins镜像中自带的. 并没有在CentOS中另外再去安装GIT
Maven: 3.9.1
接下来, 我们就直接进入正题

1、安装Jenkins

1.1 下载镜像文件

[root@VM-0-3-centos ~]# docker pull jenkins/jenkins
Using default tag: latest
latest: Pulling from jenkins/jenkins
3e440a704568: Pull complete
e76dc321ee75: Pull complete
fc43e7961de2: Pull complete
5af64ce6074b: Pull complete
21fbf967e8f9: Pull complete
1a16fd81654c: Pull complete
cdd69c2f2d33: Pull complete
4a5e8d05df05: Pull complete
569e4b20e77e: Pull complete
137f6b37061b: Pull complete
88590f3663ac: Pull complete
71291196dab8: Pull complete
a385b99a35e9: Pull complete
Digest: sha256:0383a9f33411296e13fb22542290cd2bdaeb9a1163a7ea6f854b7cf2a84851e1
Status: Downloaded newer image for jenkins/jenkins:latest
docker.io/jenkins/jenkins:latest
[root@VM-0-3-centos ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED      SIZE
jenkins/jenkins   latest    2fef055370ae   3 days ago   471MB
[root@VM-0-3-centos ~]# pwd
/root
[root@VM-0-3-centos datakw]# mkdir jenkins
[root@VM-0-3-centos jenkins]# mkdir data
[root@VM-0-3-centos jenkins]# pwd
/data/datakw/jenkins
[root@VM-0-3-centos jenkins]# chown -R 1000:1000 /data/datakw/jenkins/data/

1.2 创建并启动容器

docker run -itd --name jenkins -v /usr/local/jenkins/data:/var/jenkins_home/ -p 8001:8080 -p 50001:50000 jenkins/jenkins

docker ps -a |grep jenk
ba0c2cb8ba8a   jenkins/jenkins   "/usr/bin/tini -- /u…"   13 seconds ago   Up 8 seconds   0.0.0.0:8001->8080/tcp, :::8001->8080/tcp, 0.0.0.0:50001->50000/tcp, :::50001->50000/tcp   jenkins

[root@VM-0-3-centos jenkins]# docker logs -f ba0c2cb8ba8a

1.3 修改jenkins源

重新启动Jenkins容器后,由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,需要重新设置下载地址为国内镜像站

在本地映射的目录中找到文件:hudson.model.UpdateCenter.xml;修改地址为:http://mirror.esuni.jp/jenkins/updates/update-center.json

root@VM-0-3-centos jenkins]# ll
total 4
drwxrwxrwx 12 root root 4096 Apr  1 11:40 data
[root@VM-0-3-centos jenkins]# cd data/
[root@VM-0-3-centos data]# ll
total 60
-rw-r--r--  1 www www 1659 Apr  1 11:39 config.xml
-rw-r--r--  1 www www   50 Apr  1 11:39 copy_reference_file.log
-rw-r--r--  1 www www   29 Apr  1 11:39 failed-boot-attempts.txt
-rw-r--r--  1 www www  156 Apr  1 11:39 hudson.model.UpdateCenter.xml
-rw-r--r--  1 www www  171 Apr  1 11:39 jenkins.telemetry.Correlator.xml
drwxr-xr-x  2 www www 4096 Apr  1 11:39 jobs
-rw-r--r--  1 www www  907 Apr  1 11:39 nodeMonitors.xml
drwxr-xr-x  2 www www 4096 Apr  1 11:39 nodes
drwxr-xr-x  2 www www 4096 Apr  1 11:39 plugins
-rw-r--r--  1 www www   64 Apr  1 11:39 secret.key
-rw-r--r--  1 www www    0 Apr  1 11:39 secret.key.not-so-secret
drwx------  2 www www 4096 Apr  1 11:39 secrets
drwxr-xr-x  2 www www 4096 Apr  1 11:40 updates
drwxr-xr-x  2 www www 4096 Apr  1 11:39 userContent
drwxr-xr-x  3 www www 4096 Apr  1 11:39 users
drwxr-xr-x 11 www www 4096 Apr  1 11:39 war
[root@VM-0-3-centos data]# vim hudson.model.UpdateCenter.xml

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
  </site>
</sites>

1.4 重启容器

[root@VM-0-3-centos data]# docker restart ba0c2cb8ba8a
ba0c2cb8ba8a

1.5 Jenkins页面配置

准备页面:

拷贝初始密码:

[root@VM-0-3-centos ~]# cd /data/datakw/jenkins/data/
[root@VM-0-3-centos data]# ll
total 60
-rw-r--r--  1 www www 1661 Apr  1 11:51 config.xml
-rw-r--r--  1 www www  100 Apr  1 11:45 copy_reference_file.log
-rw-r--r--  1 www www  168 Apr  1 11:46 hudson.model.UpdateCenter.xml
-rw-r--r--  1 www www  171 Apr  1 11:39 jenkins.telemetry.Correlator.xml
drwxr-xr-x  2 www www 4096 Apr  1 11:39 jobs
-rw-r--r--  1 www www  907 Apr  1 11:46 nodeMonitors.xml
drwxr-xr-x  2 www www 4096 Apr  1 11:39 nodes
drwxr-xr-x  2 www www 4096 Apr  1 11:39 plugins
-rw-r--r--  1 www www  129 Apr  1 11:45 queue.xml.bak
-rw-r--r--  1 www www   64 Apr  1 11:39 secret.key
-rw-r--r--  1 www www    0 Apr  1 11:39 secret.key.not-so-secret
drwx------  2 www www 4096 Apr  1 11:39 secrets
drwxr-xr-x  2 www www 4096 Apr  1 11:51 updates
drwxr-xr-x  2 www www 4096 Apr  1 11:39 userContent
drwxr-xr-x  3 www www 4096 Apr  1 11:39 users
drwxr-xr-x 11 www www 4096 Apr  1 11:39 war
[root@VM-0-3-centos data]# cd secret
-bash: cd: secret: No such file or directory
[root@VM-0-3-centos data]# cd secrets/
[root@VM-0-3-centos secrets]# ll
total 12
-rw-r----- 1 www www  33 Apr  1 11:39 initialAdminPassword
-rw-r--r-- 1 www www  32 Apr  1 11:39 jenkins.model.Jenkins.crumbSalt
-rw-r--r-- 1 www www 256 Apr  1 11:39 master.key
[root@VM-0-3-centos secrets]# cat initialAdminPassword
9982f4d829ed4849aeebc24d085e2f95

选择插件来安装:

安装GIT插件:

创建管理员:

实例配置:

2、配置GIT、JDK、Maven

1、maven

下载地址:
https://maven.apache.org/download.cgi

[root@VM-0-3-centos data]# tar -xzf apache-maven-3.9.1-bin.tar.gz

2、JDK

下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

[root@VM-0-3-centos data]# tar -xzf jdk-8u361-linux-x64.tar.gz

3、Jenkins配置

配置JDK:

配置MAVEN:

[root@k8s-node1 conf]# cd /usr/local/jenkins/data/apache-maven-3.8.6/conf
#配置Maven的settings.xml,1. 镜像源修改为:阿里云镜像地址;2. 增加JDK1.8编译插件
[root@k8s-node1 conf]# vim settings.xml
<!-- 阿里云镜像地址 -->
<mirror>  
    <id>alimaven</id>  
    <name>aliyun maven</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>          
</mirror>
<!-- JDK1.8编译插件 -->
<profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>        
</profile>

配置GIT:

3、配置邮箱

增加一个凭据:

设置Jenkins邮箱全局配置:

这里的HTMl内容先暂时网上随便找了一个贴上去:

<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>    
</head>    
    
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    
    offset="0">    
    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">    
        <tr>    
            本邮件由系统自动发出,无需回复!<br/>            
            以下为${PROJECT_NAME }项目构建信息</br>
            <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   
        </tr>    
        <tr>    
            <td><br />    
            <b><font color="#0B610B">构建信息</font></b>    
            <hr size="2" width="100%" align="center" /></td>    
        </tr>    
        <tr>    
            <td>    
                <ul>    
                    <li>项目名称 : ${PROJECT_NAME}</li>    
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    
                    <li>触发原因: ${CAUSE}</li>    
                    <li>构建状态: ${BUILD_STATUS}</li>    
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    
                </ul>    


<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>


<h4><font color="#0B610B">最近提交(#$GIT_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>


            </td>    
        </tr>    
    </table>    
</body>    
</html>  

posted @ 2023-04-02 23:24  kenwu_code4fs  阅读(90)  评论(0)    收藏  举报