Centos7配置Jenkins

Centos7配置Jenkins

jdk-11.0.16 rpm 百度云:https://pan.baidu.com/s/173k9q9MqpQrxGRs6Mig1MQ 提取码: tgrq
jdk-11.0.16 tar.gz 百度云:https://pan.baidu.com/s/1chatfsgQ6AFSqg710ZT3qw 提取码: lrea

jenkins 官方下载地址:https://mirrors.jenkins-ci.org/redhat/
jenkins 3.362 百度云:链接:https://pan.baidu.com/s/1lPO3wSmoryM1v9sMJXEGwg 提取码:jjo3

maven 官方下载地址:https://archive.apache.org/dist/maven/maven-3/
maven 3.6.3 百度云:链接:https://pan.baidu.com/s/1t4jyLMKoA4WqYR9l35IXZQ 提取码:fov9

tomcat 官方下载地址:https://tomcat.apache.org/download-90.cgi
tomcat 9.0.50 百度云:链接:https://pan.baidu.com/s/1T9WJIRS0T5FU1SO6d5cWyA 提取码:2rjm

1、配置jdk

下载后将文件上传到云服务器上
Centos7配置Jenkins_第1张图片

我们这里选择rpm安装方式(主要是比较方便

rpm -ivh jdk-11.0.16_linux-x64_bin.rpm
which java

Centos7配置Jenkins_第2张图片

这样就成功了

2、安装jenkins

安装jenkins

rpm -ivh jenkins-2.346-1.1.noarch.rpm

Centos7配置Jenkins_第3张图片

卸载jenkins

rpm -e jenkins
find / -iname jenkins | xargs -n 1000 rm -rf
which jenkins

3、jenkins配置、启动

修改配置文件1

vim /usr/lib/systemd/system/jenkins.service

设置信息1

Environment="JENKINS_PORT=8999"

修改配置文件2

vim /etc/sysconfig/jenkins

设置信息2

JENKINS_USER="root"
JENKINS_PORT="8999"

配置文件生效

systemctl daemon-reload

启动jenkins(你可能会遇到启动超时的错误,不要担心多试几遍,虽然我也不知道为什么

systemctl start jenkins

访问:http://81.68.73.248:8080
Centos7配置Jenkins_第4张图片

获取密码,解锁jenkins

cat /var/lib/jenkins/secrets/initialAdminPassword

跳过插件安装
Centos7配置Jenkins_第5张图片
Centos7配置Jenkins_第6张图片

创建管理员
Centos7配置Jenkins_第7张图片

实例配置
Centos7配置Jenkins_第8张图片

进入jenkins
Centos7配置Jenkins_第9张图片
Centos7配置Jenkins_第10张图片

4、jenkins插件

Jenkins->Manage Jenkins->Manage Plugins

Localization: Chinese (Simplified)
Role-based Authorization Strategy
Credentials Binding Plugin
Git
Deploy to container
pipeline
Generic Webhook Trigger
Email Extension Template
SonarQube Scanner

Centos7配置Jenkins_第11张图片

等待所有插件下载完毕,在插件页面重启或者通过systemctl restart jenkins重启后即安装成功

5、jenkins权限

修改授权策略

jenkins->系统管理->全局安全配置

修改授权策略为Role-based Strategy(做的所有操作,一定记得保存
Centos7配置Jenkins_第12张图片

创建角色

Jenkins->系统管理->Manage and Assign Roles
Centos7配置Jenkins_第13张图片
Centos7配置Jenkins_第14张图片
添加用户

Jenkins->系统管理->管理用户
Centos7配置Jenkins_第15张图片
Centos7配置Jenkins_第16张图片
授予角色
Centos7配置Jenkins_第17张图片

6、配置git

yum install git -y

创建项目
Centos7配置Jenkins_第18张图片

7、jenkins凭证

比如连接gitlab需要的一些凭证

用户密码凭证

添加凭证
Centos7配置Jenkins_第19张图片
Centos7配置Jenkins_第20张图片
保存,立即构建
Centos7配置Jenkins_第21张图片
Centos7配置Jenkins_第22张图片
进入目录/var/lib/jenkins/workspace/poem-test-username
Centos7配置Jenkins_第23张图片
SSH凭证

SSH不知道为什么一直配置不成功,,,,,这里就暂时跳过

8、配置maven

tar -zxvf apache-maven-3.6.3-bin.tar.gz
vim /opt/apache-maven-3.6.3/conf/setting.xml
<localRepository>/opt/apache-maven-3.6.3/repo/localRepository>
<mirror>
    <id>nexus-aliyunid>  
    <mirrorOf>*,!jeecg,!jeecg-snapshotsmirrorOf>  
    <name>Nexus aliyunname>  
    <url>http://maven.aliyun.com/nexus/content/groups/publicurl> 
mirror>
vi /etc/profile
export MAVEN_HOME=/opt/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile
mvn -v
# 记得加权限
chmod 777 /opt/apache-maven-3.6.3/repo/

在这里插入图片描述

9、自动构建

jenkins->系统管理->全局工具配置
Centos7配置Jenkins_第24张图片
Centos7配置Jenkins_第25张图片
Centos7配置Jenkins_第26张图片
jenkins->系统配置
Centos7配置Jenkins_第27张图片
添加构建步骤
Centos7配置Jenkins_第28张图片
测试
Centos7配置Jenkins_第29张图片

10、配置tomcat

注意服务器需要有jdk

tar -zxvf apache-tomcat-9.0.50.tar.gz
/opt/apache-tomcat-9.0.50/bin/startup.sh

Centos7配置Jenkins_第30张图片

为tomcat配置用户角色权限

vim /opt/apache-tomcat-9.0.50/conf/tomcat-users.xml




<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-jmx" />
<role rolename="manager-status" />

<role rolename="admin-gui" />


<user username="jenkins" password="xumeng" roles="manager-script,manager-gui,manager-jmx,manager-status,admin-gui" />
vim /opt/apache-tomcat-9.0.50/webapps/manager/META-INF/context.xml


<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
          allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
Context>

重启输入账户密码即可进入tomcat管理界面
Centos7配置Jenkins_第31张图片

配置好登陆进去后回到jenkins配置构建后的步骤(Credentials中填写的是tomcat中填写的账号密码
Centos7配置Jenkins_第32张图片

立即构建
Centos7配置Jenkins_第33张图片

构建成功后去tomcat查看
Centos7配置Jenkins_第34张图片
Centos7配置Jenkins_第35张图片

在编译器中改变代码,提交到gitlab,重新构建
Centos7配置Jenkins_第36张图片

11、Pipeline

就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点 的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。

语法主要分为两种

  • Declarative
  • Scripted

Declarative

新建流水线项目
Centos7配置Jenkins_第37张图片

语法形式
Centos7配置Jenkins_第38张图片

语法生成

  • 从git拉取代码
    Centos7配置Jenkins_第39张图片
    Centos7配置Jenkins_第40张图片
    Centos7配置Jenkins_第41张图片
  • 构建
    Centos7配置Jenkins_第42张图片
    Centos7配置Jenkins_第43张图片
    Centos7配置Jenkins_第44张图片
  • 部署
    Centos7配置Jenkins_第45张图片
    Centos7配置Jenkins_第46张图片
    Centos7配置Jenkins_第47张图片
    Scripted

因为2.x建议使用Declarative语法,这里不再记录

12、内置构建触发器

  • 触发远程构建
  • 其他工程构建后触发(Build after other projects are build)
  • 定时构建(Build periodically)
  • 轮询SCM(Poll SCM)

触发远程构建(远程触发构建)
Centos7配置Jenkins_第48张图片
触发构建
Centos7配置Jenkins_第49张图片

查看效果(这里乱码了,不过问题不大,看出来更新了,,,,,,,
Centos7配置Jenkins_第50张图片

其他工程构建后触发(Build after other projects are build)

填写项目名称选择触发类型即可
Centos7配置Jenkins_第51张图片

定时构建(Build periodically)

使用的是一种类似cron表达式的方式

依次为:分 时 日 月 周

每30分钟构建一次
Centos7配置Jenkins_第52张图片

轮询SCM(Poll SCM)

指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建
Centos7配置Jenkins_第53张图片

13、webhook自动触发构建

在项目中开启:Build when a change is pushed to GitLab. GitLab webhook URL: xxx
Centos7配置Jenkins_第54张图片

在GitLab webhook构建触发器中设置令牌
Centos7配置Jenkins_第55张图片

gitlab设置webhook地址

gitlab->setting->integrations
Centos7配置Jenkins_第56张图片

测试webhook
Centos7配置Jenkins_第57张图片

200成功
Centos7配置Jenkins_第58张图片

查看jenkins构建结果
Centos7配置Jenkins_第59张图片
Centos7配置Jenkins_第60张图片
Centos7配置Jenkins_第61张图片

14、参数化构建

git分支命名规则

分支 命名 说明
主分支 master 主分支,所有提供给用户使用的正式版本,都在这个主分支上发布
开发分支 dev 开发分支,永远是功能最新最全的分支
功能分支 feature-* 新功能分支,某个功能点正在开发阶段
发布版本 release-* 发布定期要上线的功能
修复分支 bug-* 修复线上代码的 bug

设置参数
Centos7配置Jenkins_第62张图片

修改流水线脚本
Centos7配置Jenkins_第63张图片

选择参数
Centos7配置Jenkins_第64张图片
构建
Centos7配置Jenkins_第65张图片
结果
Centos7配置Jenkins_第66张图片

15、邮件

开启邮箱POP3/SMTP服务
Centos7配置Jenkins_第67张图片

配置email凭证
Centos7配置Jenkins_第68张图片

jenkins->系统管理->系统配置

系统管理员邮件地址
Centos7配置Jenkins_第69张图片
Extended E-mail Notification

配置邮件服务器、邮件内容格式
Centos7配置Jenkins_第70张图片

配置默认收件人、邮件内容
Centos7配置Jenkins_第71张图片

邮件测试
Centos7配置Jenkins_第72张图片

配置构建后发送邮件1
Centos7配置Jenkins_第73张图片
Centos7配置Jenkins_第74张图片
Centos7配置Jenkins_第75张图片
Centos7配置Jenkins_第76张图片

配置构建后发送邮件2

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>
        <td>THIS EMAIL IS SENT BY JENKINS AUTOMATICALLY, PLEASE DON'T REPLY!td>
    tr>
    <tr>
        <td>
            <h2>
                <font color="#0000FF">BUILD RESULT - ${BUILD_STATUS}font>
            h2>
        td>
    tr>
    <tr>
        <td><br />
            <b>
                <font color="#0B610B">DETAILS:font>
            b>
            <ht size="2" width="100%" byte="center" />
        td>
    tr>
    <tr>
        <td>

            <ul>
                <li>PROJECT NAME : ${PROJECT_NAME}li>
                <li>PROJECT URL : <a href="${PROJECT_URL}">${PROJECT_URL}a>li>
                <li>BUILD NUMBER : ${BUILD_NUMBER}li>
                <li>STARTED BY : ${CAUSE}li>
                <li>BUILD URL : <a href="${BUILD_URL}">${BUILD_URL}a>li>
                <li>BUILD LOG : <a href="${BUILD_URL}console">${BUILD_URL}consolea>li>
                <li>BUILD WORKFLOW : <a
                        href="${PROJECT_URL}workflow-stage">${PROJECT_URL}workflow-stagea>li>
            ul>
        td>
    tr>
    <tr>
        <td>
            <font color="#0B610B">BUILD LOG (LAST 200 ROWS):font>b>
            <hr size="2" width="100%" byte="center" />
        td>
    tr>
    <tr>
        <td><textarea cols="80" rows="30" readonly="readonly"
                      style="font-family: Courier New">${BUILD_LOG,maxLines=200,escapeHtml=true}textarea>
        td>
    tr>
table>
body>

html>

Centos7配置Jenkins_第77张图片
Centos7配置Jenkins_第78张图片
Centos7配置Jenkins_第79张图片

16、代码审查

默认已经配置过mysql数据库并且拥有一个名为sonar的数据库
Centos7配置Jenkins_第80张图片

下载sonar并上传到服务器

https://www.sonarqube.org/downloads/

安装unzip

yum install unzip

解压

unzip sonarqube-9.6.0.59041.zip

创建sonar用户

useradd sonar

更改sonar目录权限

chmod -R 777 /opt/sonarqube-9.6.0.59041/

更改sonar配置文件

vim /opt/sonarqube-9.6.0.59041/conf/sonar.properties
sonar.jdbc.username=root
sonar.jdbc.password=xumeng2233.
onar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

启动sonar

su sonar /opt/sonarqube-9.6.0.59041/bin/linux-x86-64/sonar.sh start

http://81.68.73.248:9000/

默认账号密码是admin-admin

Centos7配置Jenkins_第81张图片

生成token
Centos7配置Jenkins_第82张图片

设置凭证
Centos7配置Jenkins_第83张图片

下载SonarQube Scanner,并上传到服务器(自动安装会使用非预期的jdk,所以我们自己安装

SonarQube Scanner 官网:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

unzip sonar-scanner-cli-4.7.0.2747-linux.zip

配置SonarQube Scanner
Centos7配置Jenkins_第84张图片

配置sonar服务

jenkins->系统管理->系统配置
Centos7配置Jenkins_第85张图片

配置项目扫描1

# must be unique in a given SonarQube instance
sonar.projectKey=auto_build
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=auto_build
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

Centos7配置Jenkins_第86张图片
Centos7配置Jenkins_第87张图片
Centos7配置Jenkins_第88张图片

配置项目扫描2

在项目下创建sonar-project.properties(src同级

# must be unique in a given SonarQube instance
sonar.projectKey=pipline_build
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=pipline_build
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
pipeline {
    agent any

    stages {
        stage('pull') {
            steps {
                echo 'pull'
                checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: '3f422d18-4cab-4500-8350-59247a4bb63c', url: 'http://150.158.169.42/devops/poem.git']]])
            }
        }
        stage('check') {
            steps{
              script {
                scannerHome = tool 'SonarQube-Scanner'
              }
              withSonarQubeEnv('sonar') {
                sh "${scannerHome}/bin/sonar-scanner"
              }
            }
        }
        stage('build') {
            steps {
                echo 'build'
                sh 'mvn clean package'
            }
        }
        stage('publish') {
            steps {
                echo 'publish'
                deploy adapters: [tomcat9(credentialsId: '492c2512-8479-4182-991a-232d055112f8', path: '', url: 'http://150.158.187.211:8080')], contextPath: '/poem_war_exploded', war: '**/*.war'
            }
        }
    }
    post {
      always {
        emailext(
            subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} -${BUILD_STATUS}!',
            body: '${FILE,path="email.html"}',
            to: '[email protected]'
        )
      }
    }
}

Centos7配置Jenkins_第89张图片
Centos7配置Jenkins_第90张图片
Centos7配置Jenkins_第91张图片

你可能感兴趣的:(jenkins)