英文版文档:
http://confluence.atlassian.com/display/DOC/Integrating+JIRA+and+Confluence
主要有2个方面:
1 共用使用同一个用户数据库。
2 confluence与jira互相调用数据。
先说第一点: jira与confluence共用同一个用户数据库。
如果要做单点登录的话,Crowd 是最好的选择。 如果只是想让jira和confluence共用同一个用户数据库,就不必用到Crowd了。只要你的jira用的是外部数据库(比如mysql)即可。
在改造之前,先提个醒:
1 以下的例子是Tomcat 和mysql. 如果你用其它的web/db服务器的话,不要照抄啊。
2 如果jira使用了LDAP认证,那么是不行的。 请看文档
http://confluence.atlassian.com/display/DOC/Add+LDAP+Integration
2 一定要把Confluence安装在单独的数据库里面,不要和jira混在同一个库。
3 如果你的confluence里面已经有一些用户了,改造之后,这些用户都将无法使用。 Confluence里面的内容页,也不会和任何的正常用户相关联了。所以,刚安装好confluence的时候,我们什么内容也不要添加进去。
再简单描述一下这种技术:
Confluence 会使用jira的用户数据库,所以confluence会连接二个库:
1 自己的数据库,就是在安装过程中设置的那个数据库。这个库保存了spaces, pages,comments,etc.
2 只读地连接到jira的用户数据库。
为什么这种技术可行呢? 因为confluence 和 jira 的OSUser表是相同结构的。
第一步,修改confluence的配置文件 安装目录里面的 application/conf/server.xml
在 <Context path=”/confluence” 里面添加一个Resource
<Resource auth=”Container”
username=”jirauser”
password=”jirapwd227″
driverClassName=”com.mysql.jdbc.Driver”
url=”jdbc:mysql://localhost/jiradb?autoReconnect=true&useUnicode=true&characterEncoding=UTF8″/>
这种写法是 Tomcat 5.5.x的。 如果你的tomcat版本比较低,请自行修改。
第二步 修改confluence安装目录里面的 application\confluence\WEB-INF\classes\osuser.xml
把<authenticator 里面的第二段 <provider 注释掉, 把第一段<provider 取消注释。
结果如下:
<opensymphony-user>
<!–
Authenticators can take properties just like providers.
This smart authenticator should work for ‘most’ cases – it dynamically looks up
the most appropriate authenticator for the current server.
–>
<authenticator class=”com.opensymphony.user.authenticator.SmartAuthenticator”/>
<!– JIRA User management (with caching) –>
<!– Note: Do not add any line breaks or spaces when specifying the chain.classname, otherwise a ClassNotFoundException will be thrown –>
<provider class=”bucket.user.providers.CachingCredentialsProvider”>
<property name=”chain.classname”>com.atlassian.confluence.user.providers.jira.JiraJdbcCredentialsProvider</property>
<property>java:comp/env/jdbc/JiraDS</property>
</provider>
<provider class=”bucket.user.providers.CachingAccessProvider”>
<property name=”chain.classname”>com.atlassian.confluence.user.providers.jira.JiraJdbcAccessProvider</property>
<property>java:comp/env/jdbc/JiraDS</property>
</provider>
<provider class=”bucket.user.providers.CachingProfileProvider”>
<property name=”chain.classname”>com.atlassian.confluence.user.providers.jira.JiraJdbcProfileProvider</property>
<property name=”chain.datasource”>java:comp/env/jdbc/JiraDS</property>
<property name=”chain.configuration.provider.class”>bucket.user.BucketHibernateConfigProvider</property>
</provider>
<!–
<provider class=”bucket.user.providers.CachingCredentialsProvider”>
<property name=”chain.classname”>com.opensymphony.user.provider.hibernate.HibernateCredentialsProvider</property>
<property name=”chain.configuration.provider.class”>bucket.user.BucketHibernateConfigProvider</property>
</provider>
<provider class=”bucket.user.providers.CachingAccessProvider”>
<property name=”chain.classname”>com.opensymphony.user.provider.hibernate.HibernateAccessProvider</property>
<property name=”chain.configuration.provider.class”>bucket.user.BucketHibernateConfigProvider</property>
</provider>
<provider class=”bucket.user.providers.CachingProfileProvider”>
<property name=”chain.classname”>com.opensymphony.user.provider.hibernate.HibernateProfileProvider</property>
<property name=”chain.configuration.provider.class”>bucket.user.BucketHibernateConfigProvider</property>
</provider>
–>
<!–<provider class=”com.opensymphony.user.provider.memory.MemoryCredentialsProvider” />
<provider class=”com.opensymphony.user.provider.memory.MemoryAccessProvider” />
<provider class=”com.opensymphony.user.provider.memory.MemoryProfileProvider” />–>
</opensymphony-user>
这里的jdbc/JiraDS 就是前面我们在confluence的conf/server.xml里面设置过的。
第三步 修改confluence安装目录里面的
application\confluence\WEB-INF\classes\atlassian-user.xml
注释掉
<hibernate key=”hibernateRepository” description=”Hibernate Repository” cache=”true”/>
添加一行
<osuser key=”osuserRepository”/>
第四步 用管理员身份登录jira
添加二个用户组: confluence-users组和confluence-administators 组
把必要的用户添加到这二个组里面
第五步 在confluence中激活外部用户管理(External User Management)
管理->总体配置->安全和隐私->外部用户管理 设置为“打开”
Administration->General Configuration ->Options And Setting->External User Management
结束。
接下来说一说 confluence与jira互相调用数据。
如果是Confluence 3.1 and JIRA 4.0及以后的版本,可以使用Gadgets. 文档如下:
http://confluence.atlassian.com/display/DOC/Adding+a+Confluence+Gadget+to+a+JIRA+Dashboard
http://confluence.atlassian.com/display/DOC/Gadget+Macro
如果是 Confluence 3.1 and JIRA 4.0 之前的版本,就要使用{jiraissues} and {jiraportlet} 这二个宏来把jira的数据嵌入到confluence中。
The JIRA Issues and the JIRA Portlet macros allow you to embed a list of JIRA issues into a Confluence page. Prior to Confluence 2.7, if you wanted to display JIRA issues that had restricted viewing, then you needed to store the JIRA user’s credentials (username and password) in the macro code directly on the Confluence page. This was not very secure.
所以我们要设置一下 Trusted Communication between JIRA and Confluence
适用版本:
JIRA 3.12.0 or later.
Confluence 2.7.0 or later.
第一步,使jira信任confluence.
用管理员身份登录jira,在系统设置->信任的应用管理 里面,添加confluence的baseurl: http://192.168.0.163:20000/confluence
第二步,在confluence中设置宏
用管理员身份登录confluence, 配置->插件管理-> JIRA Macros
里面共有四个组件:
jiraportlet
jiraissues
JIRA application trust support
JIRA application trust warnings
默认是全部设置为“允许”的。
JIRA application trust warnings 可以设置为”禁止”.
第三步,把宏添加到confluence页面中
编辑某个confluence页面, 切换到 Wiki标记符, 输入
{jiraissues:url=CONTENT}
CONTENT就是jira中某个filter 的url.
下面讲一下这个url如何获取。
登录到jira里面,
打开 ‘问题’ 页面,创建一个新的查询。
设置好查询的参数,点击“查看>>”。
如果问题列表可以显示出来的话,点击页面右上角的 “Views”,复制下拉菜单中的XML的网址即可。
