文章目录
jenkins配置
Jenkins是一个开源的支持自动化构建、部署等任务的平台。基本上可以说是持续集成(CI)、持续发布(CD)不可或缺的工具。 jenkins官网, jenkins下载,jenkins插件国内源, jenkins插件离线下载
持续集成做为一种软件开发的实践,可以让团队在持续集成的基础上收到反馈并加以改进,不必等到开发的后期才寻找和修复缺陷,而持续集成环境的搭建也不是一劳永逸的,随着软件项目复杂度的增加,持续集成的环境同样要加以维护以确保集成环境的可靠性,而且它还能自动地监测代码质量和测试覆盖率。可视化的代码质量度量方案能够鼓励开发者不断地改进他们的代码。
基础安装
-
配置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
-
安装配置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
-
初始化jenkins
-
登陆jenkins
-
安装默认的包就行
-
创建管理员
扫描二维码关注公众号,回复: 12429663 查看本文章 -
实例配置
-
jenkins镜像加速
- 方式一: 测试失败
# 默认为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
- 方式二
# 参考: 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
安装插件
- 安装epel
~]# yum -y install epel-release
~]# yum clean all
~]# yum makecache
-
安装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
-
编写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
-
创建一个自由风格的软件项目
-
配置
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
-
服务器上配置
# 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
-
最终构建
-
最终展示
特殊使用
git parameter使用
分支或标签
当我们在gitee上手动添加分支, 然后在刷新配置,分支就能自动出来了
maven编译
Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建、自动编译和部署,非常方便。在服务器较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器数量的增加,Jenkins的优势就会凸显出来,可以很好的提高效率,减少很多人工操作。现在公司的开发都是使用Git\svn管理代码,Maven管理多模块和项目依赖。Jenkins支持两种工程:FreeStyle工程和Maven工程。如果代码是用Maven构造的,可以直接建立Maven工程,来源
Maven工程配置
新建一个Maven工程后,需要设置以下条目:
- 设置git、svn代码的下载路径
- 设置自动构造的日期
- 设置pom文件的路径
- 设置mvn命令的参数
- 设置post-build的动作
配置maven
-
下载: 下载地址
-
配置&添加环境变量
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修改默认下载仓库
-
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 --> 可选插件 --> 搜索框里安装
- 下载插件
# 需要安装的插件, 安装前改完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
- 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