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和名称就变化了,不知道是不是这个原因导致,麻烦你有空帮我看看,谢谢!
一般情况下服务器很少重启,在重启的时候写个脚本,可以把破解文件重新写入