• 持续集成框架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的界面


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

    /usr/share/tomcat/.jenkins/secrets/initialAdminPassword
    linux下查看该文件 

    [root@node3 tomcat]# more /usr/share/tomcat/.jenkins/secrets/initialAdminPassword
    8c98247b3e9044e9b2a531a4ff689ef9

    查询到了32位的密码 输入

    接下来 定制 jenkins


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


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

    所有插件安装在 tomcat根目录.jenkinsplugins目录下

    接下来 创建你的用户


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

    成功界面   点击 start using jenkins


    三 。用户管理

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

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

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

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

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

    hudson.security.HudsonPrivateSecurityRealm_-Details>
          <passwordHash>#jbcrypt:$2a$10$PxRfxmGqodLR.5xyPUvNruMdIqniKkHXOGkZnwK08FNgOqEEDxHwK</passwordHash>
    </hudson.security.HudsonPrivateSecurityRealm_-Details>

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



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


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


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

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

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


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


    搜索关键字 jbcrypt


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


    该类上找到以下代码

     private static final PasswordEncoder JBCRYPT_ENCODER = new PasswordEncoder()
      {
        public String encodePassword(String rawPass, Object _)
          throws DataAccessException
        {
          return BCrypt.hashpw(rawPass, BCrypt.gensalt());
        }
        
        public boolean isPasswordValid(String encPass, String rawPass, Object _)
          throws DataAccessException
        {
          return BCrypt.checkpw(rawPass, encPass);
        }
      };
      public static final PasswordEncoder PASSWORD_ENCODER = new PasswordEncoder()
      {
        private static final String JBCRYPT_HEADER = "#jbcrypt:";
        
        public String encodePassword(String rawPass, Object salt)
          throws DataAccessException
        {
          return "#jbcrypt:" + HudsonPrivateSecurityRealm.JBCRYPT_ENCODER.encodePassword(rawPass, salt);
        }
        
        public boolean isPasswordValid(String encPass, String rawPass, Object salt)
          throws DataAccessException
        {
          if (encPass.startsWith("#jbcrypt:")) {
            return HudsonPrivateSecurityRealm.JBCRYPT_ENCODER.isPasswordValid(encPass.substring("#jbcrypt:".length()), rawPass, salt);
          }
          return HudsonPrivateSecurityRealm.CLASSIC.isPasswordValid(encPass, rawPass, salt);
        }
      };
    懂java的都看懂了吧 

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

    "#jbcrypt:" + BCrypt.hashpw(password, BCrypt.gensalt())

    修改我的测试类

    package org.mindrot.jbcrypt;
    
    public class Test {
    	public static void main(String[] args) {
    		//原始密码
    		String password="123456";
    		// 加密
    		String hashed = BCrypt.hashpw(password, BCrypt.gensalt());
    		//输出正确密码
    		System.out.println("#jbcrypt:" +hashed);
    		//判断原始字符串和加密后的串匹配则验证通过
    		if (BCrypt.checkpw(password, hashed))
    			System.out.println("验证通过");
    		else
    			System.out.println("验证失败");
    	}
    }

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

    #jbcrypt:$2a$10$5Qy7ZvyfNy5UgMs1rh2aoOgaqdpz83wRepky5qx7V52I16UWRhDyy

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

    替换passwordHash内容

    <passwordHash>#jbcrypt:$2a$10$5Qy7ZvyfNy5UgMs1rh2aoOgaqdpz83wRepky5qx7V52I16UWRhDyy</passwordHash>
    重启tomcat  service tomcat restart
    重新登录网页发现jiaozi789新建用户 使用密码 123456可以正常登录了
  • 相关阅读:
    我的大学学习之路
    拉勾上的一道题目
    python中文处理之encode/decode函数
    几个容易出错的css盒子模型细节
    洗牌算法shuffle
    判断正整数是否对称
    一种快速求fibonacci第n个数的算法
    利用正则表达式作为string.split seprator
    docker部分命令
    idea上传项目到GitHub
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331173.html
Copyright © 2020-2023  润新知