jenkins持续集成-基础配置-2

jenkins配置

        Jenkins是一个开源的支持自动化构建、部署等任务的平台。基本上可以说是持续集成(CI)、持续发布(CD)不可或缺的工具。 jenkins官网jenkins下载jenkins插件国内源jenkins插件离线下载

        持续集成做为一种软件开发的实践,可以让团队在持续集成的基础上收到反馈并加以改进,不必等到开发的后期才寻找和修复缺陷,而持续集成环境的搭建也不是一劳永逸的,随着软件项目复杂度的增加,持续集成的环境同样要加以维护以确保集成环境的可靠性,而且它还能自动地监测代码质量和测试覆盖率。可视化的代码质量度量方案能够鼓励开发者不断地改进他们的代码。

基础安装

  1. 配置jenkins运行需要的java环境

    ~]# tar xf jdk-8u181-linux-x64.tar.gz -C /usr/java/
    ~]# cd /usr/java/
    java]# ln -sv jdk1.8.0_181/ default
    java]# ln -sv default/ jdk
      
    ]# cat /etc/profile.d/java.sh 
    export JAVA_HOME=/usr/java/jdk
    export CLASSPATH=.:$JAVA_HOME/jre/lib/*:$JAVA_HOME/lib/*
    export PATH=$JAVA_HOME/bin:$PATH
    
  2. 安装配置jenkins

    ~]# wget http://mirrors.jenkins.io/war-stable/2.222.4/jenkins.war
    ~]# mkidr /usr/local/jenkins
    ~]# cd !$
    # 启动jenkins, 限制内存大小为2G
    jenkins]# nohup java -server -Xms2048m -Xmx2048m -jar jenkins.war & 
    # 登陆地址:  http://your_ip:8080, 获取jenkins密码
    jenkins]# cat /root/.jenkins/secrets/initialAdminPassword 
    338194444ab34799ba30e7294fe1f50e
    
  3. 初始化jenkins

    • 登陆jenkins
      在这里插入图片描述

    • 安装默认的包就行

    • 创建管理员

      在这里插入图片描述

    • 实例配置
      在这里插入图片描述

jenkins镜像加速

  1. 方式一: 测试失败
# 默认为jenkins官方的源,会因为速度问题导致下载失败

# 下载清华大学 jenkins源
jenkins]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

# 修改内部的插件下载地址
jenkins]# sed -i 's@http://updates.jenkins-ci.org/download/plugins/@https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/@g' update-center.json

# 配置nginx
server {
    
    
    listen 18888;
    server_name 192.168.9.60;
    charset utf-8;

    location /speed {
    
    
        alias /usr/local/website/fastlink/jenkins;
        default_type 'text/html';
        charset utf-8;
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
    }
}

# jenkins服务器 工作目录可以在 configure system 中查看  主目录: /root/.jenkins,先备份
]# sed -i "s@https://updates.jenkins.io/@http://192.168.9.60:18888/speed@g" hudson.model.UpdateCenter.xml
  1. 方式二
# 参考: https://www.cnblogs.com/hellxz/p/jenkins_install_plugins_faster.html#4585649

修改jenkins下载源, 默认是jenkins官方源

【系统管理】【管理插件】【高级】升级站点项的的地址修改成
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

在这里插入图片描述

wordPress-示例

gitee

官网示例 生成/添加SSH公钥

生成秘钥信息

# 生成key
~]# ssh-keygen -t rsa -C "[email protected]"
# 按照提示完成三次回车,即可生成 ssh key。通过查看 `~/.ssh/id_rsa.pub` 文件内容,获取到你的 public key

# 查看公钥 
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

# 将key 提交到gitee中, 复制生成后的 ssh key,通过仓库主页 **「管理」->「部署公钥管理」->「添加部署公钥」** ,添加生成的 public key 添加到仓库中。

# 添加后,在终端(Terminal)中输入
~]# ssh -T [email protected]
	首次使用需要确认并添加主机到本机SSH可信列表。若返回 `Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access.` 内容,则证明添加成功。
	
# 登陆到gitee中,创建一个仓库

上传wordpress

# 下载wordpress
~]# wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz

~]# git config --global user.name 'xiong'
~]# git config --global user.email '[email protected]'
~]# git clone https://gitee.com/gitxiongzz/the-test-jenkins.git

# 将wordpress解压后放至 the-test-jenkins
~]# git add *
~]# git commit -m 'wordpress'
~]# git push -u origin master

ansibe

说明: 客户端:192.168.2.220\221 服务端: 192.168.9.15 系统: centos 7.6

安装插件

  1. 安装epel
~]# yum -y install epel-release
~]# yum clean all
~]# yum makecache  
  1. 安装ansibel

    ~]# yum list all | grep ansible
    ansible.noarch                            2.9.10-1.el7                 epel     
    ansible-doc.noarch                        2.9.10-1.el7                 epel     
    ansible-inventory-grapher.noarch          2.4.4-1.el7                  epel     
    ansible-lint.noarch                       3.5.1-1.el7                  epel     
    ansible-openstack-modules.noarch          0-20140902git79d751a.el7     epel     
    ansible-python3.noarch                    2.9.10-1.el7                 epel     
    ansible-review.noarch                     0.13.4-1.el7                 epel    
    
    ~]# yum -y install ansible
    
    ~]# tail -4 /etc/ansible/hosts 
    [jenkins]
    192.168.2.220
    192.168.2.221
    
  2. 编写yaml来分发key

 ~]# cat key.yml 
- hosts: jenkins
  remote_user: root
  tasks:
    - name: Create user
      user: name=jenkins
    - name: copy public key
      copy: src=/root/.ssh/id_rsa.pub dest=/root/.ssh/authorized_keys mode=600

 ~]# ansible-playbook key.yml -k
SSH password: 

PLAY [jenkins] ********************************************************************************

TASK [Gathering Facts] ********************************************************************************
ok: [192.168.2.221]
ok: [192.168.2.220]

TASK [Create user] ********************************************************************************
changed: [192.168.2.220]
changed: [192.168.2.221]

TASK [copy public key] ********************************************************************************
ok: [192.168.2.221]
ok: [192.168.2.220]

PLAY RECAP ********************************************************************************
192.168.2.220              : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.2.221              : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

 ~]# ansible jenkins -m shell -a 'echo "${HOSTNAME}"'
192.168.2.221 | CHANGED | rc=0 >>
slave1
192.168.2.220 | CHANGED | rc=0 >>
master

配置前端

配置master做为web前端

# 安装相关组件
~]# yum install mysql mysql-devel httpd httpd-devel php mariadb-server php-mysql

# 查看pHp是否安装成功
~]# cat /var/www/html/index.php
<?php
phpinfo();
?>

~]# systemctl start httpd
~]# systemctl start mariadb

在这里插入图片描述

# 配置slave1作为备份服务器
#]# ansible jenkins -m shell -a "mkdir /data/www/ -pv"

配置jenkins

步骤: manage jenkins --> manage plugins --> 可选插件 --> 搜索框里安装

初始配置

在这里插入图片描述

# 需要安装的插件, 安装前改完plugin国内地址之后,最好重启下jenkins
Environment Injector
Safe Restart
Javadoc
jQuery
Extended Choice Parameter
Pre SCM BuildStep
Robot Framework
Git Parameter

新建item

  1. 创建一个自由风格的软件项目
    20200713142614935.png

  2. 配置
    20200713150509344.png20200713150604844.png
    在这里插入图片描述
    20200713151317276.png

    if [ -n "${Revision}" ];then
        Branch=${Revision}
    else
        Branch=""
    fi
    echo "Branch=${Branch}" > env.prop
    

    在这里插入图片描述
    在这里插入图片描述

    # 构建后的操作
    echo HEAD;
    date_time=`date +%Y%m%d%H%M%S`
    git log --oneline -n 1
    
    for Site in $(echo $the_tests | tr "," "\n");do
        if [ -n "${Site}" ];then
            site_tar="${Site}.tar.gz"
            [ -f ${site_tar} ] && rm -rf ${site_tar}  # 如果文件存在就先删除
            [ ! -d "/data/www" ] && mkdir /data/www   # 如果/data/www不存在就创建 
        	/usr/bin/tar zcf $Site.tar.gz *           # 压缩文件
            site_data_www="/data/www/${site_tar}"     # 删除备份文件
            [ -f "${site_data_www}" ] && rm -rf ${site_data_www}
            /usr/bin/mv -i ${site_tar} /data/www/${site_tar}
            bash /usr/local/scripts/local-dev-jenkins-test-deploy.sh ${Site} ${date_time}
        fi
    done
    
  3. 服务器上配置

# ansible 配置分发脚本
]# cat /usr/local/scripts/local-dev-jenkins-test-deploy.sh
#!/usr/bin/env bash
#
if [ ! -n "$1" ];then
        echo "Please enter your file's name."
        exit 10
fi

name=$1
datetime=$2
destination='jenkins'
##此处的destination是220和221,221作为备份服务器所以也需要推送,220则需要部署上线操作
ansible ${destination} -m copy -a "src=/data/www/source/${name}.tar.gz dest=/data/www/jenkins_packet/" && \    
ansible 192.168.2.220 -m shell -a "sudo nohup bash -x /usr/local/scripts/local-dev-jenkins_test-deploy.sh ${name} ${datetime}"  ##nohup在tomcat需要重启的时候必须使用,否则会出现tomcat被杀掉起不起来的情况

# 最后 chmod +x /usr/local/scripts/local-dev-jenkins-test-deploy.sh


# 客户端 配置启动脚本,  
cat /usr/local/scripts/local-dev-jenkins_test-deploy.sh
#!/usr/bin/env bash
#
name=${1}.tar.gz
site_name=${1}
data_time=${2}

tmp_site=/tmp/${site_name}
previous_version="/var/www/html_bak"

# 当这些备份文件存在,都要删除
[ -d "${tmp_site}" ] && rm -rf ${tmp_site} || mkdir ${tmp_site}
[ -d "${previous_version}" ] && rm -rf ${previous_version}
systemctl stop httpd ; sleep 3   # 当停止httpd时,让它休眠3秒

# 备份上一版本
[ -d "/var/www/html" ] && mv /var/www/html /var/www/html_bak 

tar zxf /data/www/${name} -C ${tmp_site}

mv -f ${tmp_site} /var/www/html
chown -R apache:apache /var/www/html
#systemctl start httpd  ##PHP环境无需重启
systemctl start httpd ; sleep 3   # 当启动httpd时,让它休眠3秒


# 配置完之后 chmod +x /usr/local/scripts/local-dev-jenkins_test-deploy.sh
  1. 最终构建
    在这里插入图片描述

  2. 最终展示

在这里插入图片描述

特殊使用

git parameter使用

20200713172733011.png

分支或标签

当我们在gitee上手动添加分支, 然后在刷新配置,分支就能自动出来了
在这里插入图片描述
在这里插入图片描述

maven编译

        Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建、自动编译和部署,非常方便。在服务器较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器数量的增加,Jenkins的优势就会凸显出来,可以很好的提高效率,减少很多人工操作。现在公司的开发都是使用Git\svn管理代码,Maven管理多模块和项目依赖。Jenkins支持两种工程:FreeStyle工程和Maven工程。如果代码是用Maven构造的,可以直接建立Maven工程,来源

Maven工程配置

新建一个Maven工程后,需要设置以下条目:

  1. 设置git、svn代码的下载路径
  2. 设置自动构造的日期
  3. 设置pom文件的路径
  4. 设置mvn命令的参数
  5. 设置post-build的动作

配置maven

  1. 下载: 下载地址

  2. 配置&添加环境变量

    local]# tar xf apache-maven-3.6.3-bin.tar.gz 
    local]# ln -sv apache-maven-3.6.3 maven
    
    local]# echo "export PATH=$PATH:/usr/local/maven/bin" > /etc/profile.d/maven.sh && source /etc/profile.d/maven.sh
    
    ]# mvn -version
    Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
    Maven home: /usr/local/maven
    Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_181/jre修改默认下载仓库
    
  3. maven配置源

```bash
]# vim /usr/local/maven/conf/settings.xml  # 位置在157行
<mirrors>
    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>
```

配置jenkins

步骤: manage jenkins --> manage plugins --> 可选插件 --> 搜索框里安装

  1. 下载插件
# 需要安装的插件, 安装前改完plugin国内地址之后,最好重启下jenkins
    Maven Integration plugin
    Subversion Plugin
    Checkstyle Plugin
    Findbugs Plugin
    PMD Plugin
    Warnings Plugin
    Maven Info Plugin
    Maven Repository Scheduled Cleanup Plugin
    Unleash Maven Plugin
    Maven Invoker plugin
  1. maven配置文件

manage jenkins --> global tool configuration(全局配置) --> settings.xml 配置过下载源的文件

在这里插入图片描述
3. 配置jdk

就在maven配置下面

在这里插入图片描述
4. 配置maven路径

在这里插入图片描述

示例-war打包

在这里插入图片描述
在这里插入图片描述

clean compile install -Dmaven.test.skip=true
在这里插入图片描述

  • 点击编辑–>控制台输出
# 查看maven编辑的过程
Executing Maven:  -B -f /root/.jenkins/workspace/test-maven/pom.xml -s /usr/local/maven/conf/settings.xml -gs /usr/local/maven/conf/settings.xml clean compile install -Dmaven.test.skip=true

# 首次下载相当慢,需要等待一会

target]# pwd
/root/.jenkins/workspace/test-maven/target

]# ls
classes  generated-sources  porjectName  porjectName.war  maven-archiver

clean compile install -Dmaven.test.skip=true

[外链图片转存中…(img-MJCf0V5D-1594891854723)]

  • 点击编辑–>控制台输出
# 查看maven编辑的过程
Executing Maven:  -B -f /root/.jenkins/workspace/test-maven/pom.xml -s /usr/local/maven/conf/settings.xml -gs /usr/local/maven/conf/settings.xml clean compile install -Dmaven.test.skip=true

# 首次下载相当慢,需要等待一会

target]# pwd
/root/.jenkins/workspace/test-maven/target

]# ls
classes  generated-sources  porjectName  porjectName.war  maven-archiver

猜你喜欢

转载自blog.csdn.net/u010304195/article/details/107388215