jenkins
2021-11-21 本文已影响0人
码男将将
前言
jenkins自动化部署神器,本篇文章主要是介绍下怎么安装管理代码和上线代码.深度一些的原理和底层实现之类的是盲区,请各位大哥审阅。如果有好的jenkins书籍或者我这里有错误的理解感谢指出,codeMan拜上.
一、介绍
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,可视化管理服务器持续构建,可以直接去svn或者git上拉取代码并下发到服务器上 。
二、功能
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
三、部署操作
1.准备包:
**jdk-8u171-linux-x64.tar.gz **
apache-tomcat-9.0.12.tar.gz
jenkins.war
2.服务器部署过程
下载完的jdk二进制包解压
[root@qi ~]# tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
给jdk做个软链接
[root@qi ~]# ln -s /usr/local/jdk1.8.0_171 /usr/local/jdk
配置Java环境变量
[root@qi ~]# sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
让java环境变量立刻生效
[root@qi ~]# source /etc/profile
检查java命令
[root@qi ~]# which java
解压安装tomcat
[root@qi ~]# tar xf apache-tomcat-9.0.5.tar.gz -C /usr/local/
给tomcat做软链接
[root@qi ~]#ln -s /usr/local/apache-tomcat-9.0.12/ /usr/local/tomcat
配置tomcat环境变量
[root@qi ~]# echo 'export TOMCAT_HOME=/usr/local/tomcat' >> /etc/profile
立即生效
[root@qi ~]# source /etc/profile
对jdk及Tomcat安装目录递归授权root
[root@qi local]# chown -R root.root /usr/local/jdk/ /usr/local/tomcat
将jenkins.war移动到tomcat的webapps下
[root@qi ~]# mv jenkins.war /usr/local/tomcat/webapps
启动jenkins
[root@qi ~]# cd /usr/local/tomcat/webapps
[root@qi webapps]# nohup java -jar jenkins.war &> /tmp/jenkins.out
INFO: Jenkins is fully up and running 启动成功
四、jenkins设置
http://ip:8080
服务器端打开文件 cat /root/.jenkins/secrets/initialAdminPassword
1572664046157.png
1572665708138.png
1572665815799.png
1572665844240.png
1572666222236.png
1572666421173.png
1572666496242.png
创建一个新的工作项目
1572666595401.png
1572666662852.png
设置log过期时间
1572668799059.png
按照每1小时拉取代码
1572682387481.png
构建填写shell脚本
1572682457486.png
五、Shell脚本
创建自动化jenkins脚本
cat deploy.sh
#!/bin/sh
#author CodeMan
#该文件需要在使用之前创建/web-code & /web
CODE_DIR="/web-code"
TIME=`date +%F-%H-%M-%S`
uwsgi_dir_pid="/项目目录/uwsgi.ini"
#IP=
GET_CODE(){
cd $CODE_DIR
git clone -b developer git@code.aliyun.com:项目目录/项目.git
}
TAR_CODE(){
cd $CODE_DIR && tar zcf /mnt/web-${TIME}.tar.gz ./* && rm -rf $CODE_DIR/*
}
CP_CODE(){
mkdir /web/web-$TIME
cp /mnt/web-${TIME}.tar.gz /web/web-$TIME
}
XF_CODE(){
cd /web/web-$TIME && tar xf web-${TIME}.tar.gz && rm -rf web-${TIME}.tar.gz
}
main(){
GET_CODE
TAR_CODE
CP_CODE
XF_CODE
}
main
cp -rf /web/web-$TIME/dashop/* 项目目录
sed -i 's#baseUrl="http://127.0.0.1:8000"#//baseUrl="http://127.0.0.1:8000"#' /项目目录/static/js/init.js
sed -i 's#//baseUrl="http://114.116.244.115:7000#baseUrl="http://114.116.244.115:7001#' /项目目录/static/js/init.js
rm -fr /项目目录/django_static
python3 /项目目录/manage.py collectstatic
六、手动构建
1573201760113.png
1573201782516.png