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 的数据库需要创建。


   

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 容器运行的服务;同时将 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

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 .

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

  输入Create passwordConfirm password,点击Next

4.7、完成安装 Start working with Crucible

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

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

  点击左侧的 System Information,可以看到 License 信息,过期日期已经延长到了2337年。

  做完上面的步骤,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进行保存和数据迁移,在弹出层上能够看到运行成功。
  

  

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 目录。

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

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


猜你喜欢

转载自www.cnblogs.com/lion.net/p/docker-crucible-crowd-sso.html