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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章