1-1 Jenkins-2.65部署
最后更新于:2022-04-02 07:38:07
### Jeninsk部署及使用
#### 基础环境
Centos7.3 x86_64
SVN
JDK1.8
MySQL 5.7.18
Jenkins 2.65 (https://jenkins.io/download/)
ANT 1.9.4 (http://archive.apache.org/dist/ant/binaries/)
#### 下载
https://jenkins.io/download/
#### 安装
**yum部署**
```shell
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
yum install jenkins -y
```
**rpm部署**
```shell
rpm -ivh https://pkg.jenkins.io/redhat/jenkins-2.65-1.1.noarch.rpm
#默认路径:/var/lib/jenkins/
```
**war包部署**
```shell
nohup java -jar jenkins.war --httpPort=8080 &
#默认路径:/root/.jenkins/
```
#### Jenkins基础配置
##### 查看并修改密码
```shell
从/var/lib/jenkins/secrets/initialAdminPassword
```
##### 安装推荐插件
如果你看到了offline报错,是因为jenkins会ping www.google.com,如果ping不通,就会报offline,在jenkins设置一个hosts,把google域名指向jenkins设备就解决了
##### 配置环境变量
- 些变量会在你编译项目时用到
- Global Tool Configuration中进行设置
- 增加JDK环境变量(将jdk等文件上传到服务器指定位置)
- 增加ANT环境变量(同JDK)
#### 增加插件
- 安装svn插件(系统管理-->管理插件-->可用插件-->安装SVN Publisher plugin
- 增加认证(Credentials-->System-->Global credentials-->Add Credentials-->输入SVN的用户名密码
#### 新建项目
- 新建-->构建一个自由软件风格的软件项目
- 输入项目名称
- 选择jdk版本
- 配置源码管理(链接,认证)
>注意Ignore externals,如果项目连接着别的项目代码,请取消选择
- 配置构建,配置ANT,选择之前添加的版本
- 保存后构建
#### build.xml请看附件
### 知识点
- Use‘svn update’ as much as possible
> 第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;
以后更新的时候,不会判断已有文件是否在svn里存在。比如工作目录下的文件123在svn里不存在,那么更新的时候不会删除123。
不会判断工作目录下的文件是否被改动,只会判断svn是否有新版本需要更新。比如工作目录下的文件zzz.txt内容为zzz,svn上的zzz.txt内容为空,如果svn上zzz.txt没有新版本,则在更新的时候不会更新zzz.txt,也就是说如果手动修改了工作目录下的文件,如果此文件在svn上没有出现新版本,就不会更新。一旦svn上的zzz.txt有新版本后就会更新工作目录的zzz.txt,这时工作目录下会生成如下几个文件:zzz.txt、zzz.txt.mine、zzz.txt.r223、zzz.txt.r224,其中zzz.txt.r223为svn上老版本、zzz.txt.r224为svn上新版本、zzz.txt.mine为工作目录上的zzz.txt的副本、zzz.txt记录了文件变化。
svn上删除了文件,更新的时候,工作目录里的此文件也会被删除。但是如上例中的zzz.txt手动修改过,已经和svn上的不一样了,这时将不会被删除。
- Alwayscheck out a fresh copy
> 第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;
每一次更新的时候,都会先清除工作目录下的所有文件,然后重新check-out一份完整的项目到工作目录下。
- Emulateclean checkout by first deleting unversioned/ignored files,then ‘svn update’
> 第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;
以后更新的时候会判断工作目录下的文件是否在svn里存在,如果不存在则删除,如果存在且有新版本则更新。
会判断工作目录下的文件是否被改动,不管有没有新版本,都会还原为svn上的最新版本。
svn上删除了文件,更新的时候,工作目录里的此文件也会被删除。
- Use‘svn update’ as much as possible,with ‘svn revert’ before update
> 第一次发布的时候,会把工作目录下的所有文件清空,然后check-out一份完整的项目到工作目录下;
以后更新的时候不会判断工作目录下的文件是否在svn里存在。
会判断工作目录下的文件是否被改动,不管有没有新版本,都会还原为svn上的最新版本。
svn上删除了文件,更新的时候,工作目录里的此文件也会被删除。
- 该内容引用自http://zhangxingnan.blog.51cto.com/3241217/1427000/
- 感谢《zhangxingnan》
### 遇到的问题
#### svn引用外部项目,导致文件下载不完整
> 在配置项目时,去掉“Ignore externals”的勾选,即可将svn上引用的外部项目也一并checkout。在配置项目时,去掉“Ignore externals”的勾选,即可将svn上引用的外部项目也一并checkout。详见http://blog.csdn.net/wudj810818/article/details/51076353
感谢《5后's Blog》
#### Jenkins构建项目时,JAVA_HOME is not defined correctly
> 在系统配置,Global Tool Configuration中创建JAVA_HOME变量,重新构建。
该变量用于编译项目,和系统中的JDK1.8没有关系。
### 附件
#### 配置Build.xml文件
```xml
```
本文配置来源于http://blog.csdn.net/wangyajin333/article/details/47860577
感谢《[王雅瑾](http://blog.csdn.net/wangyajin333)》
';