centos7中实现(阿里code)git+jenkins自动化部署

277 阅读2分钟

依赖环境

如何安装JDK

如何安装Maven

下载安装

1. 下载Jenkins

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

2. 导入密钥

rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

3. 安装

yum install jenkins

相关配置

1. 查看安装目录

rpm -ql jenkins

目录说明:
/etc/init.d/jenkins 启动配置文件            
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins  jenkins配置文件
/usr/lib/jenkins   jenkins 的安装目录
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins 
/var/cache/jenkins  git代码及构建项目存储目录
/var/lib/jenkins  默认的Jenkins_home
/var/log/jenkins   日志文件

2. 修改端口号及用户

vim /etc/sysconfig/jenkins

默认是8080,我这里改成了9898

image.png

root拥有所有权限 image.png

3.关闭“防止跨站点请求伪造”

Jenkins2.2版本及以上已无此配置项,不配置的话git推送触发钩子消息http通知,会被拦截报403 配置文件中添加:

-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true

image.png

4.修改jdk配置

查看java路径

which java

image.png

修改启动配置

vim /etc/init.d/jenkins

image.png

5. 设置开机启动jenkins (可选)

chkconfig jenkins on

启动Jenkins

1. 启动

service jenkins start

如果提示下图,追加执行 systemctl daemon-reload

image.png

如果还报错的话,查看启动日志:

journalctl -xe

查看Jenkins启动状态

systemctl status jenkins

image.png

2. 打开Jenkins

image.png

获取密码

cat /var/lib/jenkins/secrets/initialAdminPassword

安装推荐插件---注册管理员账号---一直到最后

image.png

3.相关配置

配置jdk 及 maven

image.png

image.png

安全设置中,此处勾选 ps: git推送代码触发钩子推送通知,虽然关闭了“防止跨站点请求伪造”,但此处不勾选的话,还是会提示401无权限

image.png

4. 安装插件

1. 安装maven插件,在新建任务时会显示maven任务可选,方便配置 (可选)

image.png

2. 通过ssh推送文件,并可以执行shell命令(适用于Jenkins与测试服务器不同主机,同主机可忽略)

image.png

获取ssh密钥 cat /root/.ssh/id_rsa 没有文件的话 则以下命令生成,一直回车即可 ssh-keygen -t rsa

配置jenkins中的ssh服务

image.png

需将生成的公钥 id_rsa.pub 添加到测试服务器的 authorized_keys 中 (/root/.ssh/authorized_keys),有命令可以直接追加,自行百度

重启Jenkins service jenkins restart

5.新建任务

image.png

image.png

image.png

配置钩子,我用的是阿里code

image.png

image.png

image.png

BUILD_ID=123456
echo "stop服务开始"
pidlist=`ps -ef|grep bp.jar | grep -v "grep"|awk '{print $2}'`
#ps -u $USER|grep "Java"|grep -v "grep"
if [ "$pidlist" = "" ]; then
        echo "no bp pid alive"
else
        echo "bp Id list :$pidlist"
        for pid in ${pidlist}
        {
                kill -9 $pid
                echo "KILL $pid:"
                echo "service stop success"
        }
fi
echo "stop服务脚本结束"
echo "start服务脚本开始"
dir=/usr/local/mp/bp
echo "start复制构建项目开始"
cp -rf /var/lib/jenkins/workspace/bp/bp/target/dist/* $dir
echo "stop复制构建项目结束"
JAVA_HOME=/usr/local/java/jdk1.8.0_231
cd $dir
echo dir=$dir
jar=$(find /lib -type f -name *.jar)
classpath=$dir/*:$dir/lib/*:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
echo classpath=$classpath
echo ---------------------------------------------
nohup $JAVA_HOME/bin/java -classpath $classpath -XX:-UseGCOverheadLimit -Xms1024m -Xmx2048m -jar $dir/bp.jar &
echo "start服务脚本结束"