持续集成框架jenkins介绍01-简易安装

一。Jenkins介绍

    持续集成是一个开发的实践,需要开发人员定期集成代码到共享存储库(git svn) jenkins定义任务从共享仓库定时抓取 或者用户手工触发抓取仓储库 源码 自动构建到可运行环境



二。 安装Jenkins

  1》 安装环境 

   操作系统:centos7  

   jenkins官网 https://jenkins.io/

   jenkins是一个webui程序 下载对应war包即可 下载地址 

https://jenkins.io/download 点击最下方的

   Generic Java package (.war)  

 2》安装运行环境

   安装jdk  省略

   安装tomcat  yum -y install tomcat  安装目录是/usr/share/tomcat

3》安装过程

  将 war包丢入 /usr/share/tomcat/webapps目录

  启动 tomcat  service tomcat start

  使用浏览器访问 http://192.168.58.150:8080/jenkins

出现解锁 jenkins的界面


要求你输入一个密码 并且上面文字告诉你 该密码 

[html]  view plain  copy
  1. /usr/share/tomcat/.jenkins/secrets/initialAdminPassword  
linux下查看该文件 

[html]  view plain  copy
  1. [root@node3 tomcat]# more /usr/share/tomcat/.jenkins/secrets/initialAdminPassword  
  2. 8c98247b3e9044e9b2a531a4ff689ef9  

查询到了32位的密码 输入

接下来 定制 jenkins


选择第一项 安装建议的插件  联网下载插件


等待所有插件 安装完成(需要一定时间)

所有插件安装在 tomcat根目录\.jenkins\plugins目录下

接下来 创建你的用户


输入用户名和两次密码(全名和电子邮件随便输入 不输入会卡住)点击Save and Finish

成功界面   点击 start using jenkins


三 。用户管理

Jenkins下默认的管理员是admin如果界面上添加了你的首个用户 新用户将替代admin 

查找 tomcat根目录\.jenkins\users\目录下 就是用户名的目录 比如我新建了一个账号liaomin789

该目录下就有一个目录 liaomin789我新建一个账户就可以拷贝一个该文件夹

比如 cp -r liaomin789 jiaozi789  就可以使用jiaozi789作为用户名liaomin789的密码登录发现也可以登录

如果需要修改密码 进入jiaozi789目录 下有个config.xml查看该文件 发现这样几行

[html]  view plain  copy
  1. hudson.security.HudsonPrivateSecurityRealm_-Details>  
  2.       <passwordHash>#jbcrypt:$2a$10$PxRfxmGqodLR.5xyPUvNruMdIqniKkHXOGkZnwK08FNgOqEEDxHwK</passwordHash>  
  3. </hudson.security.HudsonPrivateSecurityRealm_-Details>  

passwordHash是加密的  加密使用的是jbcrypt 前缀网上搜索该算法



点击第一条记录进入官网  下载源码


解压 发现只有一个源文件(BCrypt.java) 拷贝到eclipse项目中 添加一个测试类


Test代码拷贝官网 修改测试一下

[html]  view plain  copy
  1. package org.mindrot.jbcrypt;  
  2.   
  3. public class Test {  
  4.     public static void main(String[] args) {  
  5.         //原始密码  
  6.         String password="123456";  
  7.         // 加密  
  8.         String hashed = BCrypt.hashpw(password, BCrypt.gensalt());  
  9.   
  10.         //判断原始字符串和加密后的串匹配则验证通过  
  11.         if (BCrypt.checkpw(password, hashed))  
  12.             System.out.println("验证通过");  
  13.         else  
  14.             System.out.println("验证失败");  
  15.     }  
  16. }  
其实也到这里 应该最终生成的密码也就是这个 hashed加上那个前缀了 不过我还是得分析到底 找半天官网不知道源代码在哪 

解压  jenkinsWar找到web-infs/lib下的jenkins-core-2.73.2.jar(一般加解密都在core中吧) 反编译该jarjdgui)导出所有源代码


Window目录 选项选择搜索文字内容 


搜索关键字 jbcrypt


找到类后 重新到jdgui下查看该类  ctrl+shift+T输入刚刚搜索到的类名


该类上找到以下代码

[html]  view plain  copy
  1. private static final PasswordEncoder JBCRYPT_ENCODER = new PasswordEncoder()  
  2.  {  
  3.    public String encodePassword(String rawPass, Object _)  
  4.      throws DataAccessException  
  5.    {  
  6.      return BCrypt.hashpw(rawPass, BCrypt.gensalt());  
  7.    }  
  8.      
  9.    public boolean isPasswordValid(String encPass, String rawPass, Object _)  
  10.      throws DataAccessException  
  11.    {  
  12.      return BCrypt.checkpw(rawPass, encPass);  
  13.    }  
  14.  };  
  15.  public static final PasswordEncoder PASSWORD_ENCODER = new PasswordEncoder()  
  16.  {  
  17.    private static final String JBCRYPT_HEADER = "#jbcrypt:";  
  18.      
  19.    public String encodePassword(String rawPass, Object salt)  
  20.      throws DataAccessException  
  21.    {  
  22.      return "#jbcrypt:" + HudsonPrivateSecurityRealm.JBCRYPT_ENCODER.encodePassword(rawPass, salt);  
  23.    }  
  24.      
  25.    public boolean isPasswordValid(String encPass, String rawPass, Object salt)  
  26.      throws DataAccessException  
  27.    {  
  28.      if (encPass.startsWith("#jbcrypt:")) {  
  29.        return HudsonPrivateSecurityRealm.JBCRYPT_ENCODER.isPasswordValid(encPass.substring("#jbcrypt:".length()), rawPass, salt);  
  30.      }  
  31.      return HudsonPrivateSecurityRealm.CLASSIC.isPasswordValid(encPass, rawPass, salt);  
  32.    }  
  33.  };  
懂java的都看懂了吧 

发现encodePassword方法加密实际上就是我之前的测试代码 加个前缀

[html]  view plain  copy
  1. "#jbcrypt:" + BCrypt.hashpw(password, BCrypt.gensalt())  

修改我的测试类

[html]  view plain  copy
  1. package org.mindrot.jbcrypt;  
  2.   
  3. public class Test {  
  4.     public static void main(String[] args) {  
  5.         //原始密码  
  6.         String password="123456";  
  7.         // 加密  
  8.         String hashed = BCrypt.hashpw(password, BCrypt.gensalt());  
  9.         //输出正确密码  
  10.         System.out.println("#jbcrypt:" +hashed);  
  11.         //判断原始字符串和加密后的串匹配则验证通过  
  12.         if (BCrypt.checkpw(password, hashed))  
  13.             System.out.println("验证通过");  
  14.         else  
  15.             System.out.println("验证失败");  
  16.     }  
  17. }  

运行 可以获取到123456的密码 比如我生成的是

[html]  view plain  copy
  1. #jbcrypt:$2a$10$5Qy7ZvyfNy5UgMs1rh2aoOgaqdpz83wRepky5qx7V52I16UWRhDyy  

修改 tomcat根目录下/.jenkins/jiaozi789/config.xml

替换passwordHash内容

[html]  view plain  copy
  1. <passwordHash>#jbcrypt:$2a$10$5Qy7ZvyfNy5UgMs1rh2aoOgaqdpz83wRepky5qx7V52I16UWRhDyy</passwordHash>  
[html]  view plain  copy
  1. 重启tomcat  service tomcat restart  
  2. 重新登录网页发现jiaozi789新建用户 使用密码 123456可以正常登录了  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值