Docker 创建 Crucible4.6.1 以及与 Crowd3.3.2 实现 SSO 单点登录
目录
[TOC]
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.1 和 MySQL 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,在获取授权码时,回到我们刚才打开的破解文件窗口,输入Name、Email、Organization、Server 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 password、Confirm 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 输入 crucible,Password 输入 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,输入 Name 为 crucible,Description是Crucible Application,再设置密码123456。
分别再在 Crowd 中添加 crucible-users 和 fisheye-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 单点登录
转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!
2 thoughts on “Docker 创建 Crucible4.6.1 以及与 Crowd3.3.2 实现 SSO 单点登录”
大佬,crucible和fisheye我按你写的操作都安装好破解好了,但是服务器一重启就失效要重新破解,我看了服务器重启后docker里面容器ID和名称就变化了,不知道是不是这个原因导致,麻烦你有空帮我看看,谢谢!
一般情况下服务器很少重启,在重启的时候写个脚本,可以把破解文件重新写入
Comments are closed.