转载

jenkins自动化构建、部署项目| 技术进阶

本次总结由以下三个方面:

1、了解什么是jenkins以及jenkins能干什么

2、如何安装、配置jenkins

3、如何使用jenkins进行项目的构建、部署

一、自动化部署的场景

1、项目还在开发阶段(jenkins

•       1.1、经常升级功能,测试人员需要不断的测试

•       1.2、需要经常的演示项目给领导或者客户查看

       迭代是非常的频繁的,如果人工不断的去部署的话就非常的麻烦

2、项目上线阶段,并且后期的升级(jenkins+ansible

•        2.1、如果只引用了配置中心的话,其实也是比原来的模式方便了很多,但是运维人员还是需要手工部署

•        2.2、运维人员还是需要手工搭建好基础环境(比如mysqlrediszookeeper等等)

3、云平台的模式(openstack技术栈)

       在线(页面)安装基础环境和部署项目

       更加智能的自动化(openstack

二、为什么需要自动化构建、部署

一、了解目前传统的开发部署的缺点

前提:微服务模式下(工程非常多),如何管理项目呢?

1、开发阶段:(开发和测试的协同)

开发升级一点功能,每次都得手工去部署非常的麻烦

理想的模式:开发人员只需要提交代码到git,测试人员自己去部署

2、上线阶段:(开发和运维的协同)

每次都得手工打包给运维,运维再去部署

理想的模式:开发人员只需要提交代码到git,运维自己拉取项目打包部署

jenkins的思路(图片说明)

jenkins的思路(文字说明)

jenkins所做的三件事

1、从git服务器拉取最新代码(必须安装git

2、使用maven打包项目

•       2.1、安装jdk

       2.2、安装maven

3、把打包好的项目上传到远程服务器(依赖ssh远程插件)

4、远程执行shell脚本进行项目的部署

扩展:可以自己尝试根据这个思路去实现:使用shell脚本去开发(shellsvn拉取代码,使用maven来构建部署

基础环境的安装

1jdk

    上传、解压、配置环境变量

2maven

   上传、解压、配置环境变量

    配置阿里源:见备注

3git

    安装:yum install git

    查看:git version

    配置:

        git config --global user.name “super_stt

        git config --global user.email “super_stt@qq.com”

jenkins的安装

1、手工安装(演示)

jenkins.war放到tomcat执行

http://localhost:8080/jenkins

2docker安装

docker pull hub.c.163.com/library/jenkins:latest

docker run -d --name jenkins -p 8888:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home hub.c.163.com/library/jenkins

测试了docker安装模式,安装插件失败!!,推荐tomcat部署

jenkins的配置

1、安装推荐的插件

     第一次登陆会提示的(刚才那个安装页面)

2、安装额外的插件

   Maven Integration   (创建maven任务)

     Publish Over SSH      (远程发布)

jenkins关联本地安装的mavenjdkgit

3、配置jdk

4、配置maven

1、安装推荐的插件

     第一次登陆会提示的(刚才那个安装页面)

2、安装额外的插件

   Maven Integration   (创建maven任务)

     Publish Over SSH      (远程发布)

jenkins关联本地安装的mavenjdkgit

3、配置jdk

4、配置maven

创建任务

gitlab、远程代码管理仓库(github、码云)

1maven工程:创建任务选择第二个maven插件

2html工程:创建任务选择第一个自由风格

项目的依赖如何配置

场景:A模块->B模块->C模块     A依赖B , B依赖C

 

 

A先打包

B再打包

C最后打包

配置服务器

mange jenkins->configure system->Publish over SSH配置服务器

三、部署的方式

1jar启动

2tomcat启动

3docker启动

•       Dockerfile

•       docker-compose

•       目前docker启动的话结合hosts是失败的,必须ip

•       原因:docker内部也有一个hosts文件,默认是从docker内部读取而不是宿主机器读取

1、使用ssh插件的模式

2、使用管理节点

部署shell的讲解1

#第一步、jenkins build now之后,不要杀死被启动项目的进程

BUILD_ID=DONTKILLME

#第二步、加载服务器的环境变量

. /etc/profile

#第三步、执行业务shell

cd /usr/local/java/jar

./shell_jar.sh

sh /usr/local/java/jar/shell_jar.sh

部署shell讲解2

#!/bin/bash

#第一步、加载jdk的环境变量

export JAVA_HOME=/usr/local/java/jdk

#第二步、获取项目的进程id

processid=$(ps -ef | grep micro-push-server-web | grep -v grep | awk '{print $2}')

 

#第三步、判断进程是否存在,如果存在则杀死进程

if [[ $processid ]];then

   echo "processid=$processid"

   kill -9 $processid

else

   echo "jar没有启动"

fi

#第四步、启动项目

nohup java -jar /usr/local/java/jar/micro-push-server-web.jar &

docker shell脚本讲解1

#!/bin/bash

#第一步、根据Dockerfile文件构建docker镜像

docker build -f /usr/local/java/jar/Dockerfile -t micro-push-server-web .

#第二步、启动docker容器

docker run -d --name micro-push-server-web -p 8055:8055 micro-push-server-web

docker shell讲解2

#第一步、docker依赖的基础镜像(jdk8

FROM openjdk:8-slim

#第二步、加载我们的业务jar

ADD micro-push-server-web.jar app.jar

#第三步、环境变量

ENV JAVA_OPTS=""

#第四步、启动项目

ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar

注意:

前端工程不能在hosts自定义域名的方式。

原因:主要是因为用户访问前端工程的时候,这个时候,页面已经渲染到各个用户的笔记本的浏览器上面了。

1)不可能没有用户都需要手工配置hosts文件,肯定不能这样

2)前端工程连接nginx的时候,只能是使用注册过的域名或者ip地址

正文到此结束
本文目录