1. 程式人生 > >Docker 建立 Crucible4.6.1 以及與 Crowd3.3.2 實現 SSO 單點登入

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