Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

栏目: 编程工具 · 发布时间: 5年前

内容简介:[TOC]https://www.atlassian.com/

目录

[TOC]

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的安装、 Docker 1.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.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 >文件中,可以看到,我们对 Bamboo 做了80->8085端口的映射,所以打开:http://localhost ,能够看到如下页面,说明运行成功:

这时的等待是因为 Bamboo 的服务需要启动, MySQL 5.7 的数据库需要创建。

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

4、对 Bamboo 进行配置

4.1、获取授权许可

点击 Atlassian ,先获取试用许可证。

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

在弹出的窗口中,会看到如下界面,输入 Organization ,确认 Server ID ,然后点击 Generate License

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

复制 License Key ,填写到刚才页面中的 License key 文本框中, 然后点击 Custom installation 如下图:

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

4.2、一般配置

可以在 Name 中设置 Bamboo 的实例名称,在 Base URL 配置你的服务器地址。其他的选项,根据你的情况修改,在这里不做修改。点击 Continue

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

4.3、数据库配置

Choose a database configuration 选项卡中, Select database 选择 External ,然后在下拉列表中,选择 MySQL ,点击 Continue

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

数据库连接信息我们在< 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

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

4.4、设置管理员帐号和密码

在这一步中,输入管理员帐号、密码、全名、邮件,然后点击 Finish ,能够看到欢迎信息。

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

4.5、查看破解信息

Bamboo 的破解文件已经打包到了 Docker 中。

点击右上角的齿轮-> Overview ,在最左侧找到 License details ,可以看到,持续支持到 2099 年。

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

5、设置 Bamboo 使用 Crowd 认证

5.1、在 Crowd 中添加 Bamboo 需要用到的用户组

Crowd 的安装,请参考文章: Docker 创建 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 单点登录

参考 Crowd 安装中的 4.10章节 ,添加 bamboo-adminbamboo-user 用户组。

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

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 ,输入 NamebambooDescriptionBamboo Application ,再设置密码 123456 ,点击 Next

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

URL 输入设置的Bamboo URL地址,点击 Resolve IP address ,会自动解析出 Remote IP address

选择创建的 apps 目录,点击 Next

Director 中勾选 Allow all users to authenticate 点击 Next

最后点击 Add Application ,新应用添加成功。

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

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 目录。

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

调整 Crowd Server 目录的顺序到第一行,调整后的顺序如下:

Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录

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 修改为 bambooapplication.password 修改为 123456 ,根据你的 Crowd 部署情况看是否要修改 application.login.urlcrowd.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 单点登录 > 中创建的 Crowdcrowd-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'


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

UML参考手册

UML参考手册

兰博 / UML China / 机械工业出版社 / 2005-8 / 75.00元

《UML参考手册》在第1版的基础上进行了重大更新和扩展。UML的创建者James Rumbaugh、Ivar Jacobson和Grady Booch,清晰完整地讲述了UML的所有概念,包括对序列图、活动模型、状态机、组件、类和组件的内部结构以及特性描述的主要修订。手册式结构不仅有助于读者对UML的概念进行规范化的学习与理解,更为广大程序开发人员、系统用户和工程技术人员提供了方便快捷的查询方式。无......一起来看看 《UML参考手册》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具