[原]jenkins 集成 redmine 账户验证的方案

标签: | 发表时间:2013-09-04 02:11 | 作者:lanphaday
出处:http://blog.csdn.net/lanphaday

jenkins 集成 redmine 账户验证的方案

赖勇浩( http://laiyonghao.com

动机

Jenkins 是最著名的持续集成工具,又因为它开源免费、插件众多,成为了许多团队做持续集成的首选。

Jenkins 本身支持多种账户验证方案,但最棒的是它支持验证插件,可以把账户验证的工作完全托管给插件,这就为它支持更多的账户验证方案提供了无限可能。

script-realm-plugin 无疑是一个天才的验证插件,它的天才之处在于可以运行一个命令,并通过环境变量的方式把账号密码传递给这个命令,然后检验它的 exit code 获得验证结果。这个命令可以是任意语言编写的程序,它可以是一段 shell 脚本,也可以是 C 语言编写的一个程序。在今天它是我们使用 python 编写的一个小程序:redmine-auth

redmine-auth

redmine-auth 是一个读取 redmine 账户信息的脚本,实现账户验证。

得益于 redmine-auth 使用了 SQLAlchemy 的 database orm,只要 SQLAlchemy 支持的数据库,redmine-auth 都可以读取。所以无论 redmine 使用的是 MySQL 还是 postgresql,甚至是 oracle/mssql/sqlite,都可以无缝地使用 redmine-auth 进行账户验证。

安装

首先,确保安装了 jenkins 和它的 script-realm-plugin 插件。

然后,确保安装了 python 和 pip,接下来的工作就很简单,运行使用:

pip install -U redmine-auth

它会自动安装依赖的 SQLAlchemy,但是数据库驱动需要你手动安装,比如 MySQLdb 需要你自行安装好。

配置

首先,进入 jenkins 的 Configure Global Security 页面,确保选择了“启用安全”,然后在“访问控制”-> “安全域” 那里选择“Authenticat via custom script”(需要安装插件以后才有),最后,在 login command 输入框中填入以下内容:

redmine-auth-jenkins --conn-str=连接字符串

其中“连接字符串”是一个符合 SQLAlchemy 连接字符串定义的字符串,如:

mysql://user:pswd@localhost/redmine

怎么构造你自己的连接字符串,请参考 SQLAlchemy 的文档(http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#sqlalchemy.create_engine)。简单摘抄最关键的一句放在下面:

The string form of the URL is dialect+driver://user:password@host/dbname[?key=value..], where dialect is a database name such as mysql, oracle, postgresql, etc., and driver the name of a DBAPI, such as psycopg2, pyodbc, cx_oracle, etc. Alternatively, the URL can be an instance of URL.

其它

redmine-auth 是一个 MIT 授权的开源项目,主页: https://github.com/laiyonghao/redmine-auth

作者:lanphaday 发表于2013-9-3 18:11:32 原文链接
阅读:109 评论:0 查看评论

相关 [jenkins redmine 验证] 推荐:

[原]jenkins 集成 redmine 账户验证的方案

- - 赖勇浩的编程私伙局
jenkins 集成 redmine 账户验证的方案. 赖勇浩( http://laiyonghao.com). Jenkins 是最著名的持续集成工具,又因为它开源免费、插件众多,成为了许多团队做持续集成的首选. Jenkins 本身支持多种账户验证方案,但最棒的是它支持验证插件,可以把账户验证的工作完全托管给插件,这就为它支持更多的账户验证方案提供了无限可能.

[原]svn 集成 redmine 账户验证的终极解决方案

- - 赖勇浩的编程私伙局
svn 集成 redmine 账户验证的终极解决方案. 赖勇浩( http://laiyonghao.com). 对于大部分开发团队来说,一般都需要一套 SCM 系统,通常是 svn + redmine,有些还会有 reviewboard 之类的. 大家当然希望上三套系统就有三套账号密码,那样记忆起来太麻烦了,所以大家都希望有统一的验证方案,当然,LDAP 是一种选择,考虑到它部署起来比较难,成本比较高,一般会选择统一使用其中某一个系统的账户验证.

redmine 插件管理

- - 研发管理 - ITeye博客
work Time_工数管理. Knowledgebase_知识库. Timesheet_时间管理. Screenshot Paste_截屏. 参考: http://wmcxy.blog.51cto.com/2509483/842296. 已有 0 人发表留言,猛击->> 这里<<-参与讨论.

Jenkins的plugin开发

- - CSDN博客研发管理推荐文章
       Jenkins强大的功能主要靠其丰富的plugin体现,之前的一篇博客《 Jenkins安装plugin》中介绍了如何找到并安装需要的plugin. 虽然目前已经有大量非常优秀的plugin可供使用,但是有时候仍需要自己开发一些满足项目特殊要求的plugin. 下面通过一个简单实例,介绍Jenkins的plugin的整个开发过程.

windows 安装redmine 详解

- - CSDN博客研发管理推荐文章
         最近公司有需要,要找一个项目管理工具,网上看了redmine还不错,最终项目经理选择了它,让我把平台给搭建起来并熟悉其中的功能. 搭建的过程中超过了我的预计还破费了点功夫,他是ruby语言. 我也不懂,根据网上的一个安装教程来运行不是报这个错就是报那个错,关键也看不懂撒,郁闷. 没一次成功的,最后终于在一篇博客上给我试成功了,特此给有需要的童鞋们一个参考,免得走弯路,费时又费力.

Redmine Backlog tracker注意事项

- - CSDN博客研发管理推荐文章
最重要的,story和task的tracker不能相同. 否则在taskboard中会将task和story并列显示,尽管它们是父子关系. 因此比较好的做法是,story使用redmine默认的tracker:Support, Bug 和Feature. 而另外创建一些tracker用来跟踪task.

SonarQube和Jenkins的集成

- - 研发管理 - ITeye博客
在Java软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷. Java 静态代码分析(static code analysis)工具能够在代码构建过程中帮助开发人员快速、有效的定位代码缺陷并及时纠正这些问题,从而极大地提高软件可靠性并节省软件开发和测试成 本. 目前市场上的 Java 静态代码分析工具种类繁多且各有千秋,因此本文将分别介绍现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),并从功能、特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码分析工具,并选择合适的工具应用到软件开发中.

Jenkins: 使用Jenkins搭建持续集成(CI)环境

- - CSDN博客研发管理推荐文章
首先从官网 http://jenkins-ci.org/下载 Java Web Archive (.war). 例如我保存到 D:\jenkins\jenkins.war. 运行Jenkins需要JRE的支持Java5 or later. 默认会运行在8080端口,正常启动完成如下图. 我们可以在浏览器输入127.0.0.1:8080来查看,如图我们的Jenkins已经跑起来了.

基于Jenkins的持续集成

- - ITeye博客
Jenkins是一个持续集成工具,前身叫做Hudson,在实际项目应用中非常重要,本文介绍这一工具的使用方法. 首先我们访问Jenkins的网站:. Jenkins 的网址是: http://jenkins-ci.org/. 从网站下载Jenkins: http://mirrors.jenkins-ci.org/war/latest/jenkins.war.

使用Jenkins 实现自动化构建

- - 研发管理 - ITeye博客
Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布. 意思是我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(这是我个人的称呼,在下边会用到,就是Jenkins的安装位置),进行编译、打包和发布到容器中.