前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Jenkins集成Github自动部署

Jenkins集成Github自动部署

作者头像
SAnBlog
发布2020-08-18 10:43:13
9630
发布2020-08-18 10:43:13
举报
文章被收录于专栏:SAnBlogSAnBlogSAnBlog

前言

以下教程看不懂你砍我,我就不信了.百度一搜很多文章细节没讲清楚,导致踩了很多坑.

尽量以我踩过的坑写的足够详细,如果不懂的地方可以留言

前期准备工作

因官网下载慢我也分享到网盘了,还有国内加速镜像地址.

JDK

https://www.jianshu.com/p/5f9b4682a6c5

国内镜像

https://mirrors.huaweicloud.com/java/jdk/8u151-b12/

maven

https://www.cnblogs.com/jtnote/p/9982185.html

阿里源

https://www.cnblogs.com/pxblog/p/11617609.html

Jenkins 2.235.4

链接:https://pan.baidu.com/s/1hgLjoo0V5rPIWGWypy2aUA 提取码:3fjz

git

 yum install git -y

 sudo apt-get install git -y

以上尽量手动安装并统一下载到同一个文件夹内方便管理,避免自动安装,自动安装的路径在jenkins配置路径时有权限不能识别问题.

安装jenkins

运行jenkins

 java -Dhudson.util.ProcessTree.disable=true -jar --httpPort=8081 jenkins.war

默认8080,我这里已经有项目占用,于是指定8081端口

启动成功得到一个密码,后续需要.

将刚才密码填入进行下一步,网速不好时稍慢

先取消全部,再手动选择汉化中文包和git安装

publish over ssh:用于ssh访问远程服务器(自动部署) git:拉取github代码 locale:中文汉化包

等待安装完毕,稍慢

全局配置

Tip:提示几个好用技巧

到目录下执行pwd命令显示当前完整路径

whereis命令可以显示安装路径

JDK
Git

同上

Maven

同上

注意,如果Git没有展示配置说明没有安装Git插件

系统配置

我们来配置远程服务器信息,用于github代码拉取部署到指定的服务器.

Publish over SSH

找到Publish over SSH,注意要先安装publish over ssh插件才会显示.

添加一个SSH Servers

配置完成点击test测试是否成功

构建应用

这时候我们如果需要构建maven应用并自动部署还需要安装以下两个插件Maven Integration plugin 用来构建maven的项目,一个是对容器依赖的插件;Deploy to container Plugin 自动发布到相关容器上去

Deploy to container同上,取决网速,稍慢.

勾选安装完成后重启Jenkins(空闲时)

构建maven应用

我这里创建了一个demo springboot项目

https://github.com/SAnBlog/demo

点击添加并填好github帐号密码

自动部署,注意这里只能回调公网地址.

完整地址如下,浏览器手动执行也可以部署.

http://192.168.31.247:8081/job/demo/build?token=demo

配置构建环境

注意事项

本文章版本为Jenkins 2.235.4

网上很多文章都是2.x以下的,导致构建配置项目有点出入,我则遇到最大的一个坑就是在云服务器上安装完毕,正常部署项目,而在树莓派上按照一模一样的版本环境会杀掉进程,也就是kill掉以下的sh demo.sh应用,这个应用也就是我们的应用,导致死活启动不了.(官网文档解决方案都尝试过了,包括)都无法解决.

 1.java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
 
 2.BUILD_ID=dontKillMe

我这里写两种方式,如果遇到杀进程问题则尝试更换另一种.

第一种

在 SSH Publishers的 Exec command中执行部署脚本

脚本

demo.sh脚本监测是否在运行,运行则杀掉再重新部署.

 echo "stop服务开始"
 #重启tomcat服务器
 pid=`lsof -i:9000|awk 'NR==2{print $2}'`
 echo $pid
 kill -9 $pid
 echo "stop服务脚本结束"
 echo "start服务脚本开始"
 nohup java -jar /home/pi/jdk/deploy/demo-1.0.jar  > /home/pi/jdk/deploy/$(date +'%Y%m%d').log &
 echo "start服务脚本结束"

这里remote directory和上面远程服务器配置是会叠加的,如果目录不变这里无需配置(下图为远程服务器配置)

如果再次配置会以ssh servers的remote directory拼接此路径

会导致成"/home/pi/jdk/deploy/home/pi/jdk/deploy"

保存即可,我们点击立即构建,控制台输出查看构建详情日志

(如果maven源不改成阿里源会相当慢)

第二种

唯一的区别就是执行部署的命令换个地方,构建完成后执行我们的命令,其他配置不变.

成功如上,打开浏览器

存在shell脚本被杀问题解决方案

(低版本解决方案,无法解决则尝试本文章第二种配置)

https://blog.xiehaibo.cn/2018/01/29/after-jenkins-build-and-execute-shell-success_the-started-process-is-killed/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAnBlog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 前期准备工作
    • JDK
      • maven
        • Jenkins 2.235.4
          • git
          • 安装jenkins
            • 运行jenkins
              • 全局配置
                • JDK
                • Git
                • Maven
              • 系统配置
                • Publish over SSH
              • 构建应用
                • 构建maven应用
                  • 配置构建环境
                    • 第一种
                    • 脚本
                    • 第二种
                  • 存在shell脚本被杀问题解决方案
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档