目錄
1、介紹
1.1、什麼是 Crucible?
Crucible
是一個協作式代碼審查,以下是官網的功能介紹:
交付高質量代碼
跨 SVN、Git、Mercurial,、CVS 和 Perforce 審查代碼、討論更改、共享知識和識別缺陷。審查
創建基於工作流的正式或快速代碼審查,並指派團隊成員作爲審查者。討論
將所有代碼審查轉換爲線程討論,並針對具體源代碼行、文件或整個變更集合進行評論。跟蹤
藉助提交、審查和評論等代碼活動的統一視圖,針對重要事項採取行動。報告
通過代碼庫中尚未得到充分審查的部分數據提高代碼質量。快速查看審查狀態及可能執行審查的人員。
2、Crucible 的官網在哪裏?
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 單點登錄
轉載聲明:可以轉載, 但必須以超鏈接形式標明文章原始出處和作者信息及版權聲明,謝謝合作!
比特幣地址:1KdgydfKMcFVpicj5w4vyn3T88dwjBst6Y
以太坊地址:0xbB0a92d634D7b9Ac69079ed0e521CC2e0a97c420