环境要求
工具 | ip |
git jenkins maven | 192.168.253.156 |
tomcat8 jdk1.8 | 192.168.253.51 |
1.git安装
1.1 linux安装
(1)安装yum依赖及软件
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y
yum install -y git
(2)创建用户及组
groupadd git
useradd git -g git
(3)初始化git仓库
[root@localhost ~]# cd /home/
[root@localhost home]# mkdir gitrepo
[root@localhost home]# chown -R git:git gitrepo/
[root@localhost home]# cd gitrepo/
[root@localhost gitrepo]# git init --bare runoob.git
[root@localhost gitrepo]# chown -R git:git runoob.git/
(4).ssh的配置
[root@localhost gitrepo]# cd /etc/ssh/ [root@localhost ssh]# vim sshd_config
(5)重启sshd服务
[root@localhost ssh]# systemctl restart sshd
[root@localhost ssh]# cd /home/git #git家目录
[root@localhost git]# mkdir .ssh
[root@localhost git]# chown -R git:git .ssh/
(6)git初始化
查看版本
[root@localhost local]# git --version
git version 1.8.3.1
针对于git用户配置
[git@localhost ~]$ git config --global user.name "lanist"
[git@localhost ~]$ git config --global user.email "258xxx9221@qq.com"
针对与全局设置别名 [root@localhost ~]# git config --system alias.st status [root@localhost ~]# git config --system alias.ci commit [root@localhost ~]# git config --system alias.co checkout [root@localhost ~]# git config --system alias.br branch [root@localhost ~]# cat /etc/gitconfig [alias] st = status ci = commit co = checkout br = branch 在git命令中高亮显示(有颜色区别) [root@localhost ~]# git config --global color.ui true local、global、system三种级别 local:当前项目有效(工作目录下/.git/config) global:当前用户有效(用户目录下/.gitconfig) system:所有用户有效(GIT目录/etc/gitconfig)4
版本库创建 创建一个新的工作目录,进入该目录中,执行git init创建版本库 [git@localhost ~]$ mkdir workspace [git@localhost ~]$ ls workspace [git@localhost ~]$ cd workspace/ [git@localhost workspace]$ ls #创建工作区 [git@localhost workspace]$ mkdir my [git@localhost workspace]$ cd my/ [git@localhost my]$ ls [git@localhost my]$ git init Initialized empty Git repository in /home/git/workspace/my/.git/ [git@localhost dome]$ ls [git@localhost dome]$ ls -a . .. .git
(7) 创建远程仓库
注册账户以及创建仓库
https://github.com/
本地git仓库和github仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:
[root@localhost local]# su git [git@localhost local]$ cd ~
[git@localhost local]$ ssh-keygen -t rsa -C "258xxx9221@qq.com" #邮箱为github上注册的邮箱
[git@localhost ~]$ cd .ssh/
[git@localhost .ssh]$ ls
authorized_keys id_rsa id_rsa.pub known_hosts
1.2 windows安装
1.2.1下载地址
Git客户端官网下载链接:https://git-scm.com/downloads
1.2.2 安装
双击“Git-2.17.0-64-bit.exe”,进入安装导向界面,点击Next>
点击Next>
选择组建安装,默认配置即可,点击Next>
开始菜单快捷方式目录,默认配置即可,点击Next>
选择默认的编辑器:Vim,点击Next>
选择命令行工具,一般选择:User Git from Git Bash only,点击Next>
默认选择,点击Next>
选择换行格式,默认选择,点击Next>
默认选择,点击Next>
默认选择,点击Install
客户端安装完成,点击Finish
1.2.3 设置用户名和邮箱
git config --global user.name "fionazhong" git config --global user.email "youremail@xx.com"
注:git config --global 参数:有了这个参数,表示你这台机器上的所有的Git仓库都会使用这个配置。当然也可以针对某个仓库单独指定不同的邮箱和用户名
1.2.4 使用本地仓库
1)创建版本库:
版本库(repository):简单理解就是一个目录,一个可以被git管理的目录,目录中所有的文件的增删改都可以被git跟踪管理,以便将来追溯或还原版本
通过git init 把目录变成git可管理仓库
这时候,我的flask_api目录下面就多了一个.git文件夹目录,这个目录是Git用来跟踪管理版本的
2)把目标项目添加到版本库中
要把这个文件添加到版本库中,有两步:
1)使用git add test.txt,将文件添加到暂存区里
2)使用git commit -m "提交说明",将文件提交到仓库
3)工作区和暂存区
上面已经说过,通过git add 将文件添加到了暂存区,通过git commit实质就是讲暂存区的所有内容提交到当前分支上。
比如,我现在修改我的文件test.txt,在里面添加 11111111 然后使用git add test.txt,然后在修改文件添加22222222,接下来使用git reset -- test.txt,再查看文件,发现后来添加的2222222没有了。
4)使用远程仓库
1)创建一个GitHub账号
https://github.com
2)由于本地仓库和GitHub仓库之间是通过SSH加密传输的,因此需要设置ssh key
先打开自己电脑的主目录,看是否有id_rsa和id_rsa.pub两个文件,如果没有的话,在git客户端命令行中输入如下命令:
ssh-keygen -t rsa -C "youremail@xx.com"
--------》会生成如下两个文件,id_rsa是私钥,id_rsa.pub是公钥
1.3设置公钥
1)复制id_rsa.pub里面的公钥到github上(如果为linux上的git客户端,请在git用户下生成公钥,拷贝过来)
2)验证是否成功
[git@localhost .ssh]$ ssh -T git@github.com Hi lanistLINUX! You've successfully authenticated, but GitHub does not provide shell access.
3)在github上创建一个远程仓库
4)本地仓库和远程仓库同步:
1)git init:将本地仓库变成可git管理
2)在本地仓库运行如下命令:
git remote add origin 你的远程仓库地址
3)再运行git push -u origin master,将本地仓库中当前分支的内容同步到远程仓库去
由于远程仓库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地master分支的内容推送到远程新的master分支,还会把本地master分支和远程master分支关联起来。
以后再推送或者拉取的时候,可以简化命令,推送成功过后,我们再去GitHub上面查看我们的分支,可以看到和我们本地一样的内容了。
报错:
! [rejected] master -> master (fetch first) error: failed to push some refs to ' 。。。'
出现这个问题是原因是:远程仓库中存在本地不存在的文件,可以通过如下命令进行代码合并
解决方案:按照提示中的使用git pull... 将远程的文件拉到本地仓库中:
git pull --rebase origin master
5)从远程分支上克隆代码到本地
git clone github地址
6)Git常用命令:
1)mkdir XX:创建一个名为XX的目录 2)pwd:显示当前目录的路径 3)git init:把当前目录变成可以管理的git仓库,生成隐藏的.git文件 4)git add xx:把xx文件添加到暂存区 5)git commit -m "提交说明":将暂存区的内容推送到git仓库中 6)git status:查看仓库状态 7)git diff xx:查看xx文件修改了哪些内容 8)git log:查看历史记录(Q退出) 9)git reset --hard HEAD^ 或者git reset --hard HEAD~回退到上个版本 10)cat XX:查看XX文件的内容 11)git reflog:查看历史记录的版本号id 12)git checkout -- xx:把xx文件在工作区的修改内容全部撤销 13)git rm xx:删除xx文件 14)git remote add origin git仓库地址:关联一个git远程仓库 15)git push -u origin master:把当前master分支推送到远程库(第一次使用的时候,需要加上-u,后面不再需要-u) 16)git clone git仓库地址:从远程仓库中克隆 17)git checkout -b dev:创建dev分支并切换到dev分支 18)git checkout master:切换分支到master 19)git branch:查看当前所有分支 20)git branch name:创建名为name的分支 21)git merge dev:在当前分支上合并dev 22)git stash:把当前工作隐藏起来,等以后恢复现场后再继续使用 23)git stash list:查看隐藏的所有文件列表 24)git stash apply:恢复隐藏的文件,但是隐藏的内容不删除 25)git stash drop:删除隐藏文件 26)git stash pop:恢复隐藏文件并删除 27)git remote:查看远程库的信息 28)git remote -v:查看远程库的详细信息 29)git push origin master:git会把master分支推送到远程仓库对应的分支上
2.maven安装
3.jenkins安装和部署
3.1jdk安装
3.2jenkins安装
3.3访问:ip:8080
进行安装
安装插件,之后集成部署代码可能会安装更多插件
3.4 全局工具配置
jdk配置----jdk安装路径
git配置----(which git 获取)
maven配置-----maven安装路径
3.5配置系统环境
4.实战java项目自动发布,自动部署
4.1插件安装
系统管理--管理插件
使用maven相关插件打包部署代码----(我把有关的都安装了)
4.2ssh配置
在jenkins服务器上生成公钥和私钥
将私钥复制到jenkins中ssh中,公钥拷贝到代码发布的目标服务器上,此项目发布到192.168.253.51的服务区上
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.253.51
name:目标服务器的名称可自定义
Hostname:目标服务器IP
Username:此处填写进行秘钥互信的用户,此处为root用户
Remote Directory:此处为发布到目标服务器的相对根路径,例子为tomcat的安装路径,不清楚是可写“/”
注:如果目标服务器为多台,可继续添加,如果目标服务器存在代理,也可设置proxy
4.3构建项目
新建任务
源码管理选择git
Repository URL 填写具体git上的仓库url,如果为私有,需要继续添加Credentials,如果为公有直接填写url即可。
将github上的该包部署到我们目标服务器,一下都可以
https://github.com/lanistLINUX/windowns_test https://github.com/lanistLINUX/windowns_test.git
设置打包时先清除之前的--(默认路径在打包文件夹中根目录下)
pom.xml文件
[root@localhost test2]# pwd
/var/lib/jenkins/workspace/test2
[root@localhost test2]# cat pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> #必须标签,表示是一个固定的版本,指定了当前pom的版本,必需元素 <groupId>com.mycompany.app</groupId>#表示项目的标识,用于标识当前项目属于哪一个实际的项目,和项目创建的包是一样的 <artifactId>my-app</artifactId>#表示模块标识,会使用实际的项目名+模块名,一般是该项目的项目名 <packaging>war</packaging> #表示指定项目的打包方式,不指定,默认为jar ,可以指定为war,zip,pom等 <version>1.0-SNAPSHOT</version>#表示当前项目的版本号 <name>my-app</name> #表示项目的描述名 在产生文档的时候会使用 <url>http://maven.apache.org</url> <dependencies>#表示里面有多个依赖项 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <!-- Build an executable WAR --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration>
<!--webxml的相对路径--!> <webXml>Bridal_VeilWEB-INFweb.xml</webXml>
<!--jsp,css,js等文件的路径--!> <warSourceDirectory>Bridal_Veil</warSourceDirectory> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>com.mycompany.app.App</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>
点击立即构建
构建过程,先从github把代码拉取到jenkins的工作空间,再 从工作空间打包部署到目标服务器上
过程中可查看控制台输出,查找错误
当出现success时则表示成功!
现在来在目标服务器查看一下
.war包
在网页上访问试试
这样就完成啦!!!