zoukankan      html  css  js  c++  java
  • Docker 创建 Crucible4.6.1 以及与 Crowd3.3.2 实现 SSO 单点登录

    目录

    1、介绍

    1.1、什么是 Crucible?

    Crucible 是一个协作式代码审查,以下是官网的功能介绍:

    • 交付高质量代码
        跨 SVN、Git、Mercurial,、CVS 和 Perforce 审查代码、讨论更改、共享知识和识别缺陷。

    • 审查
        创建基于工作流的正式或快速代码审查,并指派团队成员作为审查者。

    • 讨论
        将所有代码审查转换为线程讨论,并针对具体源代码行、文件或整个变更集合进行评论。

    • 跟踪
        借助提交、审查和评论等代码活动的统一视图,针对重要事项采取行动。

    • 报告
        通过代码库中尚未得到充分审查的部分数据提高代码质量。快速查看审查状态及可能执行审查的人员。

    2、Crucible 的官网在哪里?

    https://www.atlassian.com/

    3、如何下载安装?

    我将 Crucible 4.6.1 直接封装到了 Docker 镜像中,如何安装Docker,请参考这篇文章<Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例>,Crucible 4.6.1版本中,包含了 Fisheye,就不单独讲如何安装 Fisheye
        
      以下实例中安装 Crucible 4.6.1 ,需要用到 MySQL 5.7,如果你已经安装完Docker,可以下载已经做好的 <docker-compose.yml>。文件内容如下,请注意修改/srv/your_folder/my.ini的位置为你下载后的文件位置:

    version: '3'
    # https://docs.docker.com/compose/compose-file/
    # support Docker version 17.05.0-ce
    services:
    
    #################################### crucible ######################################################
    
    ##############################
    # crucible_mysql
    ##############################
      crucible_mysql:
        image: idoall/mysql:5.7
        hostname: crucible_mysql
        ports:
         - "6033:3306"
        volumes:
          - /srv/your_folder/my.ini:/etc/mysql/my.cnf
        networks:
          - mshk-crucible
        environment:
          - MYSQL_ROOT_PASSWORD=123456
          - MYSQL_DATABASE=crucible
          - MYSQL_USER=crucible
          - MYSQL_PASSWORD=crucible_mshk
          - character-set-server=utf8
          - collation-server=utf8_bin
        deploy:
          replicas: 1
          update_config:
            delay: 1s
          restart_policy:
            condition: on-failure
    ##############################
    # crucible
    ##############################
      crucible:
        image: idoall/ubuntu16.04-jira-crucible:4.6.1
        hostname: crucible
        ports:
         - "80:8060"
        networks:
          - mshk-crucible
        depends_on:
         - crucible_mysql
        deploy:
          replicas: 1
          update_config:
            delay: 1s
          restart_policy:
            condition: on-failure
    
    # 统一网络设置
    networks:
      mshk-crucible:
        driver: overlay
    

    我们运行以下命令,使用 Docker Stack 的编排服务,来创建 Crucible 4.6.1 以及 MySQL 5.7 服务:

    $ docker stack deploy -c docker-compose.yml mshk_crucible
    Creating network mshk_crucible_mshk-crucible
    Creating service mshk_crucible_crucible
    Creating service mshk_crucible_crucible_mysql
    

    启动成功后,使用下面的命令,可以看到 Crucible 4.6.1MySQL 5.7 的服务运行状态:

    $ docker service ls
    ID                  NAME                           MODE                REPLICAS            IMAGE                                    PORTS
    jortvvf4593r        mshk_crucible_crucible         replicated          1/1                 idoall/ubuntu16.04-jira-crucible:4.6.1   *:80->8060/tcp
    2kaku3m4yjzd        mshk_crucible_crucible_mysql   replicated          1/1                 idoall/mysql:5.7                         *:6033->3306/tcp
    

    再等几分钟以后,在<docker-compose.yml>文件中,可以看到,我们对 Crucible 做了80->8060端口的映射,所以打开:http://localhost ,能够看到如下页面,说明运行成功:

    这时的等待是因为 Crucible的服务需要启动, MySQL 5.7 的数据库需要创建。

    Crucible-1

    4、对 Crucible 进行配置

    4.1、破解 Crucible 第一步

    Crucible 4.6.1 的破解文件已经打包到了 Docker 中。
      先用 docker ps 命令,查看服务生成的容器名称,本文测试时生成的容器名称是 mshk_crucible_crucible.1.zro8f01t4ts07npflxhsnzwkn

    CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS              PORTS                     NAMES
    e68cb73ae195        idoall/ubuntu16.04-jira-crucible:4.6.1   "/bin/bash -e /init/…"   7 minutes ago       Up 7 minutes        8060/tcp                  mshk_crucible_crucible.1.zro8f01t4ts07npflxhsnzwkn
    32b377530f1a        idoall/mysql:5.7                         "docker-entrypoint.s…"   9 minutes ago       Up 9 minutes        3306/tcp                  mshk_crucible_crucible_mysql.1.y3x8xlkch7tkk4xvley7kcvx9
    

    Docker 编排服务后的容器名称比较长,把容器名称赋值到一个变量CONTAINERNAME ,这样后面使用起来会很方便。
      将要破解的文件、破解工具从容器中复制到本地,并将要破解的文件atlassian-extras-2.5.jar重命名为atlassian-extras-2.3.1-SNAPSHOT.jar

    $ CONTAINERNAME=`docker ps --format "{{.Names}}" | grep mshk_crucible_crucible.1`
    $ docker cp $CONTAINERNAME:/home/work/_app/_jira_crucible/lib/atlassian-extras-2.5.jar ./atlassian-extras-2.3.1-SNAPSHOT.jar
    $ docker cp $CONTAINERNAME:/usr/src/_crucible/crucible_keygen.jar .
    

    在当前目录,运行以下命令,打开破解文件,在弹出的破解文件窗口中,点击.patch!,找到刚才从容器中复制出来的atlassian-extras-2.3.1-SNAPSHOT.jar文件。破解成功后,在破解工具的左下方,会提示jar successfully patched这时不要着急关闭破解文件的窗口,后面还会用到

    $ java -jar crucible_keygen.jar
    

    Crucible-2

    停止 Crucible 容器运行的服务;同时将 Crucible 容器的原文件 atlassian-extras-2.3.1-SNAPSHOT.jar 重命名为atlassian-extras-2.3.1-SNAPSHOT.jar.bak做备份;再将我们破解后的atlassian-extras-2.3.1-SNAPSHOT.jar文件,复制到容器中重命名为atlassian-extras-2.5.jar ;启动容器;下面是本次操作的命令:

    $ docker exec $CONTAINERNAME sh -c '/home/work/_app/_jira_crucible/bin/stop.sh;mv /home/work/_app/_jira_crucible/lib/atlassian-extras-2.5.jar /home/work/_app/_jira_crucible/lib/atlassian-extras-2.5.jar.bak'
    $ docker cp atlassian-extras-2.3.1-SNAPSHOT.jar $CONTAINERNAME:/home/work/_app/_jira_crucible/lib/atlassian-extras-2.5.jar
    $ docker exec $CONTAINERNAME sh -c '/home/work/_app/_jira_crucible/bin/start.sh'
    

    这时在浏览器,输入 http://localhost,打开 Crucible ,能够打开以界面,说明破解的第一步成功。

    4.2、破解 Crucible 第二步,获取授权许可

    点击 Enter existing license,在获取授权码时,回到我们刚才打开的破解文件窗口,输入NameEmailOrganizationServer ID,点击.gen!,生成授权码,并将授权码复制到页面中,点击Next
    Crucible-3

    4.2、连接到JIRA Connect to JIRA

    如果之前搭建过 JIRA (如何搭建JIRA,请参考 <Docker 创建 Jira Core/SoftWare 7.12.3 中文版>),在 JIRA Base URL 输入 JIRA的URL地址,在Admin Username 输入超级管理员的帐号,在 Admin Password 输入超级管理员的密码, Advanced Options...Crucible Base URL 输入当前 Crucible 配置的域名,然后点击 Connect to JIRA .
    Crucible-4

    4.3、设置默认管理员帐号 Set administrator password

    输入Create passwordConfirm password,点击Next
    Crucible-5

    4.7、完成安装 Start working with Crucible

    能够看到安装完成的页面,点击 add repository,输入 超级管理员 的密码,就可以进入到 Crucibile 的配置页面
      Crucible-6

    4.8、查看破解后的授权信息

    点击左侧的 System Information,可以看到 License 信息,过期日期已经延长到了2337年。
    Crucible-7
      做完上面的步骤,Crucible 的安装基本结束。

    4.9、设置电子邮件 Mail Server

    登录以后,在左侧找到Global Settings->Server Settings,拖动页面,可以看到 Mail Server,然后点击 Edit config,去进行邮件配置。

    4.10、设置数据库 Database Configuration

    登录以后,在左侧找到System Settings->DataBase,可以看到 Database Configuration,然后点击 Edit,去进行数据库配置。
      在 Type 选择 MySQL, 在 URL 输入 jdbc:mysql://crucible_mysql:3306/crucible,User Name 输入 cruciblePassword 输入 crucible_mshk ,点击 Test connection,能够看到提示 Connection succeeded ,最后点击 Save & Migrate进行保存和数据迁移,在弹出层上能够看到运行成功。
      Crucible-10

    5、设置 Crucible 使用 Crowd 认证

    5.1、在 Crowd 中添加 Crucible 应用程序

    步骤可以参考 文章<Docker 创建 Crowd 3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 登录>的 4.12章节:添加 JIRA 和 Confluence 应用程序,步骤一样,只是在选择 Application type 时,在下拉框中选择 Crucible,输入 NamecrucibleDescriptionCrucible Application,再设置密码123456
        
      分别再在 Crowd 中添加 crucible-usersfisheye-users 两个用户组

    5.2、设置 Crucible 的用户目录

    第一步:使用管理员帐号登录到 Crucible 后台,左侧点击 User Settings->User Directories,然后点击 Add Directory 在弹出的窗口中选择 Atlassian Crowd ,点击 Next
      第二步:在 Application Name 处输入刚才设置的 crucible 应用程序名称 crucible,在应用程序密码输入刚才我们设置的密码123456,点击 Test Settings,能够看到如下图中有绿色的提示框,提示 Connection test successful. ,最后点 Save and Test
      第三步:在 用户目录,可以看到,我们刚添加的 Crowd Server 目录。
    Crucible-8

    调整 Crowd Server 目录的顺序到第一行,调整后的顺序如下:
    Crucible-9

    5.3、启用 Crucible 与 Crowd 的 SSO 集成登录

    修改 Crucible 容器中的文件 /home/work/_data/_jira_crucible/config.xml ,添加 <crowd sso-enabled="true"/> 注册下面添加的位置,不要错了。

    ...
    <security allow-anon="true" allow-cru-anon="true"> 
    <built-in> 
      <signup enabled="true"/> 
    </built-in>  
    <!-- Crowd 的 SSO 支持 -->
    <crowd sso-enabled="true"/>  
    <admins>
      <system-admins/>
    </admins>
    <avatar>
      <disabled/>
    </avatar>
    </security>
    ...
    

    通过以下命令,重启 Crucible 容器内的服务,使用在Crowd 中配置的用户登录,就可以测试效果了。

    $ CONTAINERNAME=`docker ps --format "{{.Names}}" | grep mshk_crucible_crucible.1`
    $ docker exec $CONTAINERNAME sh -c '/home/work/_app/_jira_crucible/bin/stop.sh;/home/work/_app/_jira_crucible/bin/start.sh'
    

    6、相关文章

    6.1、Crucible Adding an Application

    6.2、backing-up-and-restoring-crucible-data


    博文作者:迦壹
    博客地址:Docker 创建 Crucible4.6.1 以及与 Crowd3.3.2 实现 SSO 单点登录
    转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!

    比特币地址:1KdgydfKMcFVpicj5w4vyn3T88dwjBst6Y
    以太坊地址:0xbB0a92d634D7b9Ac69079ed0e521CC2e0a97c420


  • 相关阅读:
    软件工程——理论、方法与实践 第十章
    软件工程——理论、方法与实践 第九章
    软件工程——理论、方法与实践 第八章
    软件工程——理论、方法与实践 第七章
    idea中运行ssm 或springboot项目时,project Structure的配置
    在springboot项目中引入quartz任务调度器。
    短链接的生成之工具类的编写--三种方式(亲测可用)
    IDEA中进行远程调试springboot项目
    linux服务器上部署springboot项目,并让他持续运行到后台
    使用maven 打包springboot项目步骤以及所遇到的问题
  • 原文地址:https://www.cnblogs.com/colorchild/p/13978727.html
Copyright © 2011-2022 走看看