目錄
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
,需要用到 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 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