Docker 建立 Bamboo6.7.1 以及與 Crowd3.3.2 實現 SSO 單點登入
目錄
目錄1、介紹
1.1、什麼是 Bamboo?
Bamboo
是一個進行持續整合、部署和交付的工具,以下是官網的功能介紹:
-
構建
像 CI 和構建伺服器一樣專注於Bamboo
上的編碼和計數!建立多階段構建計劃、設定觸發器以在提交時開始構建,並將代理分配給關鍵的構建和部署。 -
測試
測試是持續整合的關鍵部分。在Bamboo
中執行自動化測試,可以在每次更改後完全復原您的產品。並行自動化測試可發揮敏捷開發的強大力量,並使得捕捉缺陷變得更加容易和快速。 -
部署
Bamboo
為持續交付的“交付”方面提供一流的支援。單調乏味的部署專案會自動釋出到每個環境中,同時讓您能夠使用按環境授予的許可權來控制流程。 -
連線
Bamboo
擁有與nbspJira Software、Bitbucket 和 Fisheye 的最佳整合。此外,您還可以通過以下方式來增加 CI 管道:從我們的 Marketplace 中的 150 多個外掛中進行選擇或自己建立!
2、Bamboo 的官網在哪裡?
3、如何下載安裝?
Bamboo 6.7.1
已經封裝到了 Docker
映象中,如何安裝Docker,請參考這篇文章<Centos7的安裝、Docker1.12.3的安裝,以及Docker Swarm叢集的簡單例項> 。
以下例項中安裝 Bamboo 6.7.1
/srv/your_folder/my.ini
的位置為你下載後的檔案位置:
version: '3'
# https://docs.docker.com/compose/compose-file/
# support Docker version 17.05.0-ce
services:
#################################### bamboo ######################################################
##############################
# jira_bamboo_mysql
##############################
jira_bamboo_mysql:
image: "idoall/mysql:5.7"
hostname: jira_bamboo_mysql
ports:
- "6033:3306"
volumes:
- /srv/your_folder/my.ini:/etc/mysql/my.cnf
networks:
- bamboo
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=bamboo
- MYSQL_USER=bamboo
- MYSQL_PASSWORD=bamboo_mshk
- character-set-server=utf8mb4
- collation-server=utf8mb4_bin
deploy:
replicas: 1
update_config:
delay: 1s
restart_policy:
condition: on-failure
##############################
# jira_bamboo
##############################
jira_bamboo:
image: "idoall/ubuntu16.04-jira-bamboo:6.7.1"
hostname: jira_bamboo
ports:
- "80:8085"
networks:
- bamboo
depends_on:
- jira_bamboo_mysql
deploy:
replicas: 1
update_config:
delay: 1s
restart_policy:
condition: on-failure
# 統一網路設定
networks:
bamboo:
driver: overlay
我們執行以下命令,使用 Docker Stack
的編排服務,來建立 Bamboo 6.7.1
以及 MySQL 5.7
服務:
$ docker stack deploy -c docker-compose.yml mshk_bamboo
Creating network mshk_bamboo_bamboo
Creating service mshk_bamboo_jira_bamboo
Creating service mshk_bamboo_jira_bamboo_mysql
啟動成功後,使用下面的命令,可以看到 Bamboo 6.7.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>檔案中,可以看到,我們對 Bamboo
做了80->8085埠的對映,所以開啟:http://localhost ,能夠看到如下頁面,說明執行成功:
這時的等待是因為
Bamboo
的服務需要啟動,MySQL 5.7
的資料庫需要建立。
4、對 Bamboo 進行配置
4.1、獲取授權許可
點選 Atlassian
,先獲取試用許可證。
在彈出的視窗中,會看到如下介面,輸入Organization
,確認 Server ID
,然後點選 Generate License
:
複製 License Key
,填寫到剛才頁面中的License key
文字框中, 然後點選Custom installation
如下圖:
4.2、一般配置
可以在 Name
中設定 Bamboo
的例項名稱,在 Base URL
配置你的伺服器地址。其他的選項,根據你的情況修改,在這裡不做修改。點選 Continue
。
4.3、資料庫配置
在 Choose a database configuration
選項卡中,Select database
選擇 External
,然後在下拉列表中,選擇 MySQL
,點選 Continue
。
資料庫連線資訊我們在<docker-compose.yml>中已經配置好。在 Database URL
輸入 jdbc:mysql://jira_bamboo_mysql/bamboo?autoReconnect=true
, 在 User name
輸入 bamboo
,在 Password
輸入 bamboo_mshk
,點選 Continue
。
在下一步選擇 Create a new Bamboo home
,點選 Continue
。
4.4、設定管理員帳號和密碼
在這一步中,輸入管理員帳號、密碼、全名、郵件,然後點選 Finish
,能夠看到歡迎資訊。
4.5、檢視破解資訊
Bamboo
的破解檔案已經打包到了 Docker
中。
點選右上角的齒輪->Overview
,在最左側找到 License details
,可以看到,持續支援到 2099 年。
5、設定 Bamboo 使用 Crowd 認證
5.1、在 Crowd 中新增 Bamboo 需要用到的使用者組
Crowd
的安裝,請參考文章:Docker 建立 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 單點登入
參考 Crowd
安裝中的 4.10章節
,新增 bamboo-admin
和 bamboo-user
使用者組。
5.2、在 Crowd 中新增 Bamboo 應用程式
參考文章<Docker 建立 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 單點登入>中的 4.12章節
,在 Crowd
中新增 Bamboo
應用程式。點選 Applications
->Add application
,在 Application type
選擇 Bamboo
,輸入 Name
為 bamboo
,Description
是Bamboo Application
,再設定密碼123456
,點選Next
。
在URL
輸入設定的Bamboo URL地址,點選 Resolve IP address
,會自動解析出 Remote IP address
。
選擇建立的apps
目錄,點選Next
。
在Director
中勾選Allow all users to authenticate
點選Next
。
最後點選Add Application
,新應用新增成功。
5.3、在 Bamboo 中設定 Crowd 的使用者目錄
第一步:點選右上角的齒輪->Overview
,在最左側找到 User directories
,然後點選 Add Directory
在彈出的視窗中選擇 Atlassian Crowd
,點選 Next
。
第二步:在 Server URL
處輸入 Crowd
的URL地址,在 Application Name
處輸入剛才設定的 bamboo
應用程式名稱 bamboo
,在應用程式密碼輸入剛才我們設定的密碼123456
,點選 Test Settings
,能夠看到如下圖中有綠色的提示框,提示 Connection test successful.
,最後點 Save and Test
。
第三步:在 使用者目錄,可以看到,我們剛新增的 Crowd Server
目錄。
調整 Crowd Server
目錄的順序到第一行,調整後的順序如下:
5.4、啟用 Bamboo 與 Crowd 的 SSO 整合登入
5.4.1、修改 crowd.properties 檔案
修改 Bamboo
容器中的檔案 /home/work/_data/_jira_bamboo/xml-data/configuration/crowd.properties
,將 crowd.properties
檔案中的內容application.name
修改為bamboo
,application.password
修改為123456
,根據你的 Crowd
部署情況看是否要修改 application.login.url
和 crowd.server.url
,修改後的內容如下:
application.name bamboo
application.password 123456
application.login.url http://localhost:8095/crowd/console/
crowd.server.url http://localhost:8095/crowd/services/
session.isauthenticated session.isauthenticated
session.tokenkey session.tokenkey
session.validationinterval 2
session.lastvalidation session.lastvalidation
bamboo.crowd.cache.minutes 60
cookie.tokenkey crowd.token_key
5.4.2、安裝 Bamboo 需要的 JAR 檔案
將 Crowd
容器目錄中的 /home/work/_app/_jira_crowd/client/crowd-integration-client-3.3.2.jar
檔案,複製到 Bamboo
容器的 /home/work/_app/_jira_bamboo/atlassian-bamboo/WEB-INF/lib/
目錄下面
如果使用的是 <Docker 建立 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 單點登入> 中建立的
Crowd
,crowd-integration-client-3.3.2.jar
檔案已經封裝在了Bamboo
容器中,執行以下命令進行復制
$ CONTAINERNAME=`docker ps --format "{{.Names}}" | grep mshk_bamboo_jira_bamboo.1`
$ docker exec $CONTAINERNAME sh -c 'cp /usr/src/_bamboo/crowd-integration-client-3.3.2.jar /home/work/_app/_jira_bamboo/atlassian-bamboo/WEB-INF/lib/'
5.4.3、配置 Bamboo 使用 Crowd 認證
設定 Bamboo
的驗證授權為 Crowd
,修改 /home/work/_app/_jira_bamboo/atlassian-bamboo/WEB-INF/classes/atlassian-user.xml
檔案,將 <crowd key="crowd" name="Crowd Repository"/>
取消註釋,修改後的內容如下:
<atlassian-user>
<repositories>
<!--LDAP: Uncomment the following block and modify accordingly for LDAP integration-->
<!--<ldap key="adRepository" name="AD Repository" cache="true">-->
<!--<host>host</host>-->
<!--<port>389</port>-->
<!--<securityPrincipal>CN=Administrator,CN=Users,DC=ad,DC=yourorg,DC=com</securityPrincipal>-->
<!--<securityCredential>administrator</securityCredential>-->
<!--<securityProtocol>plain</securityProtocol>-->
<!--<securityAuthentication>simple</securityAuthentication>-->
<!--<baseContext>dc=yourorg,dc=com</baseContext>-->
<!--<baseUserNamespace>CN=Users,DC=ad,DC=yourorg,DC=com</baseUserNamespace>-->
<!--<baseGroupNamespace>CN=Users,DC=ad,DC=yourorg,DC=com</baseGroupNamespace>-->
<!--<usernameAttribute>sAMAccountName</usernameAttribute>-->
<!--<userSearchFilter>(objectClass=person)</userSearchFilter>-->
<!--<firstnameAttribute>givenname</firstnameAttribute>-->
<!--<surnameAttribute>sn</surnameAttribute>-->
<!--<emailAttribute>mail</emailAttribute>-->
<!--<groupnameAttribute>cn</groupnameAttribute>-->
<!--<groupSearchFilter>(objectClass=group)</groupSearchFilter>-->
<!--<membershipAttribute>member</membershipAttribute>-->
<!--</ldap>-->
<hibernate name="Hibernate Repository" key="hibernateRepository" description="Hibernate Repository" cache="true"/>
<!-- CROWD respository -->
<!--
You will need to uncomment the Crowd Repository below to enable Crowd integration. For more information,
please see:
http://confluence.atlassian.com/display/CROWD/Integrating+Crowd+with+Atlassian+Bamboo
You must also comment out the Hibernate Repository above.
-->
<crowd key="crowd" name="Crowd Repository"/>
<!-- END of CROWD repository -->
</repositories>
</atlassian-user>
5.4.4、設定 Bamboo 啟用 SSO 登入
修改 /home/work/_app/_jira_bamboo/atlassian-bamboo/WEB-INF/classes/seraph-config.xml
檔案,將<authenticator class="com.atlassian.bamboo.user.authentication.BambooAuthenticator"/>
註釋掉,將 <!--<authenticator class="com.atlassian.crowd.integration.seraph.v25.BambooAuthenticator"/>-->
的註釋取消,修改後的內容如下:
<!-- ================================================================ -->
<!-- The Seraph security configuration. -->
<!-- ================================================================ -->
<security-config>
<parameters>
<init-param>
<param-name>login.url</param-name>
<param-value>/userlogin!doDefault.action?os_destination=${originalurl}</param-value>
</init-param>
<init-param>
<!--
the URL to redirect to when the user explicitly clicks on a login link (rather than being redirected after
trying to access a protected resource). Most of the time, this will be the same value as 'login.url'.
- same properties as login.url above
-->
<param-name>link.login.url</param-name>
<param-value>/userlogin!doDefault.action?os_destination=${originalurl}</param-value>
<!--<param-value>/secure/Dashboard.jspa?os_destination=${originalurl}</param-value>-->
<!--<param-value>http://sso.mycompany.com/login?redirectTo=${originalurl}</param-value>-->
</init-param>
<init-param>
<!-- called by the logout servlet -->
<param-name>logout.url</param-name>
<param-value>/userLogout.action?os_destination=${originalurl}</param-value>
</init-param>
<!-- The key that the original URL is stored with in the session -->
<init-param>
<param-name>original.url.key</param-name>
<param-value>os_security_originalurl</param-value>
</init-param>
<init-param>
<param-name>login.cookie.key</param-name>
<param-value>seraph.bamboo</param-value>
</init-param>
<!-- Specify 3 characters to make cookie encoding unique for your application, to prevent collisions if more than one Seraph-based app is used.-->
<init-param>
<param-name>cookie.encoding</param-name>
<param-value>BAM</param-value>
</init-param>
<!--only basic authentication available-->
<init-param>
<param-name>authentication.type</param-name>
<param-value>os_authType</param-value>
</init-param>
</parameters>
<!-- Determines what roles (permissions) a user has. -->
<rolemapper class="com.atlassian.bamboo.user.authentication.BambooRoleMapper"/>
<!--
<authenticator class="com.atlassian.bamboo.user.authentication.BambooAuthenticator"/>
-->
<controller class="com.atlassian.bamboo.user.authentication.BambooSecurityController"/>
<elevatedsecurityguard class="com.atlassian.bamboo.user.authentication.BambooElevatedSecurityGuard"/>
<!-- If you're authenticating against a Crowd server you can use this authenticator for single sign-on.
Enable it after configuring your Crowd properties through user management and restart Bamboo. It does not support
Crowd property changes at runtime. If you need to switch back to local users, revert the change and
restart Bamboo again.
-->
<authenticator class="com.atlassian.crowd.integration.seraph.v25.BambooAuthenticator"/>
<services>
<!-- Specifies role requirements for accessing specified URL paths -->
<service class="com.atlassian.seraph.service.PathService">
<init-param>
<param-name>config.file</param-name>
<param-value>/seraph-paths.xml</param-value>
</init-param>
</service>
</services>
<interceptors>
<interceptor class="com.atlassian.bamboo.user.authentication.InvalidateSessionDuringLogin"/>
</interceptors>
</security-config>
通過以下命令,重啟 Bamboo
容器內的服務,使用在 Crowd
中配置的使用者登入,就可以測試效果了。
$ CONTAINERNAME=`docker ps --format "{{.Names}}" | grep mshk_bamboo_jira_bamboo.1`
$ docker exec $CONTAINERNAME sh -c '/home/work/_app/_jira_bamboo/bin/stop-bamboo.sh;/home/work/_app/_jira_bamboo/bin/start-bamboo.sh'
博文作者:迦壹
部落格地址:Docker 建立 Bamboo6.7.1 以及與 Crowd3.3.2 實現 SSO 單點登入
轉載宣告:可以轉載, 但必須以超連結形式標明文章原始出處和作者資訊及版權宣告,謝謝合作!
比特幣地址:1KdgydfKMcFVpicj5w4vyn3T88dwjBst6Y
以太坊地址:0xbB0a92d634D7b9Ac69079ed0e521CC2e0a97c420