目錄
目錄- 目錄
- 1、介紹
- 1.1、什么是 Bamboo?
- 2、Bamboo 的官網在哪里?
- 3、如何下載安裝?
- 4、對 Bamboo 進行配置
- 4.1、獲取授權許可
- 4.2、一般配置
- 4.3、資料庫配置
- 4.4、設定管理員帳號和密碼
- 4.5、查看破解資訊
- 5、設定 Bamboo 使用 Crowd 認證
- 5.1、在 Crowd 中添加 Bamboo 需要用到的用戶組
- 5.2、在 Crowd 中添加 Bamboo 應用程式
- 5.3、在 Bamboo 中設定 Crowd 的用戶目錄
- 5.4、啟用 Bamboo 與 Crowd 的 SSO 集成登錄
- 5.4.1、修改 crowd.properties 檔案
- 5.4.2、安裝 Bamboo 需要的 JAR 檔案
- 5.4.3、配置 Bamboo 使用 Crowd 認證
- 5.4.4、設定 Bamboo 啟用 SSO 登錄
1、介紹
1.1、什么是 Bamboo?
Bamboo 是一個進行持續集成、部署和交付的工具,以下是官網的功能介紹:
-
構建
??像 CI 和構建服務器一樣專注于Bamboo上的編碼和計數!創建多階段構建計劃、設定觸發器以在提交時開始構建,并將代理分配給關鍵的構建和部署, -
測驗
??測驗是持續集成的關鍵部分,在Bamboo中運行自動化測驗,可以在每次更改后完全復原您的產品,并行自動化測驗可發揮敏捷開發的強大力量,并使得捕捉缺陷變得更加容易和快速, -
部署
??Bamboo為持續交付的“交付”方面提供一流的支持,單調乏味的部署專案會自動發布到每個環境中,同時讓您能夠使用按環境授予的權限來控制流程, -
連接
??Bamboo擁有與nbspJira Software、Bitbucket 和 Fisheye 的最佳集成,此外,您還可以通過以下方式來增加 CI 管道:從我們的 Marketplace 中的 150 多個插件中進行選擇或自己創建!
2、Bamboo 的官網在哪里?
https://www.atlassian.com/
3、如何下載安裝?
Bamboo 6.7.1 已經封裝到了 Docker 鏡像中,如何安裝Docker,請參考這篇文章<Centos7的安裝、Docker1.12.3的安裝,以及Docker Swarm集群的簡單實體> ,
????
??以下實體中安裝 Bamboo 6.7.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:
#################################### 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 />注釋掉,將 <!--<authenticator />-->的注釋取消,修改后的內容如下:
<!-- ================================================================ -->
<!-- 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 />
<!--
<authenticator />
-->
<controller />
<elevatedsecurityguard />
<!-- 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 />
<services>
<!-- Specifies role requirements for accessing specified URL paths -->
<service >
<init-param>
<param-name>config.file</param-name>
<param-value>/seraph-paths.xml</param-value>
</init-param>
</service>
</services>
<interceptors>
<interceptor />
</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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/218430.html
標籤:其他
上一篇:GitLab11.3.9 使用 Crowd3.3.2 的帳號實作 SSO 單點登錄,以及GitLab配置騰訊企業郵箱
下一篇:MARKY一下。
