Docker 建立 Crucible4.6.1 以及與 Crowd3.3.2 實現 SSO 單點登入
目錄
目錄
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年。
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