显示标签为“sbt”的博文。显示所有博文
显示标签为“sbt”的博文。显示所有博文

2013年3月26日星期二

jenkins使用git和sbt构建工程

简介

Jenkins, 以前叫做Hudson,是一款基于java的持续集成工具。

安装

安装非常简单,以RHEL6.x为例,直接下载jenkins的rpm安装文件,直接安装即可。
wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-1.480.3-1.1.noarch.rpm
rpm -ivh jenkins-1.480.3-1.1.noarch.rpm
service jenkins start
jenkins的配置文件在/etc/sysconfig/jenkins,可以从/etc/init.d/jenkins中读取到。这个配置文件可以修改jenkins的端口等配置信息。

集成git

首先在系统管理-》插件管理中安装git插件。
测试使用的git管理平台是gitlab。首先生成公钥文件,将公钥私钥都拷贝到目录/var/lib/jenkins/.ssh。并在gitlab中上传公钥。然后执行:
sudo -u jenkins git ls-remote -h git@10.10.139.177:root/tongji-app.git HEAD
确保可以通过ssh key进行安全访问。
然后在系统管理-》系统设置中配置git

集成sbt

首先在系统管理-》插件管理中安装sbt插件。
然后在系统管理-》系统设置中配置sbt。

配置一个任务

新建一个job,在版本工具处选择git,并填写git的repository地址,git@xx.xx.xx.xx:ab.git
在sbt处配置sbt,并设置sbt任务,最后设置发布的shell脚本。
此处的sudo可能会报错,大概意思是jenkins这个用户没有sudo的权限。
编辑/etc/sudoers,增加jenkins的sudo执行权限:
jenkins    ALL = NOPASSWD: /opt/sh/release_jetty.sh

然后点击保存,选择左侧的构建项目。可以在构建项目的时候查看日志,这时发现jenkins做了几件事情:
1. 克隆或更新git repository代码;
2. 执行sbt package
3. 以root权限执行release_jetty.sh脚本
此时,发现服务器中的web服务已经启动成功。

2013年2月16日星期六

Sbt从Sonatype中获取依赖和向Sonatype发布jar

获取依赖

在build.sbt中添加:
resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
向Sonatype发布jar
官方文档
publishTo <<= version { v: String =>
  val nexus = "https://oss.sonatype.org/"
  if (v.trim.endsWith("SNAPSHOT"))
    Some("snapshots" at nexus + "content/repositories/snapshots")
  else
    Some("releases" at nexus + "service/local/staging/deploy/maven2")
}

publishMavenStyle := true

publishArtifact in Test := false

pomIncludeRepository := { _ => false }

pomExtra := (
  <url>http://your.project.url</url>
  <licenses>
    <license>
      <name>BSD-style</name>
      <url>http://www.opensource.org/licenses/bsd-license.php</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <url>git@github.com:your-account/your-project.git</url>
    <connection>scm:git:git@github.com:your-account/your-project.git</connection>
  </scm>
  <developers>
    <developer>
      <id>you</id>
      <name>Your Name</name>
      <url>http://your.url</url>
    </developer>
  </developers>
)