使用Hudson帮助自动部署脚本

时间:2011-04-19 11:32:52

标签: maven continuous-integration hudson continuous-deployment

我们正在开发一个需要在Hudson的“执行Shell”步骤中运行的自动部署脚本。目前脚本读取参数
1. GroupId:ArctifactId:版本:包装(项目是Mavenized)
2. Servername:VahRoot:TcInstance

我需要阅读G:A:V:P都是来自pom.xml的param,它是在Hudson Job配置中指定的。虽然Hudson提供了WORKSPACE env-var,但是在工作空间中搜索pom.xml变得很困难,考虑到可能存在当前正在执行的pom名称为pom.xyz.xml的情况。

#!/bin/bash

usage()
{
echo "Usage: $0 -s-r-g-a-v-p-i";
exit 1;
}

if [ $# -lt 14 ] ; then
usage;
fi

# ":" decides which options require an argument
while getopts s:r:g:a:v:p:i: opt
do
case "$opt" in
s) echo "hello $OPTARG";
serverName=$OPTARG;;
r) echo "hello $OPTARG";
vahroot=$OPTARG;;
g) echo "hello $OPTARG";
groupid=$OPTARG;;
a) echo "hello $OPTARG";
artifactid=$OPTARG;;
v) echo "hello $OPTARG";
version=$OPTARG;;
p)echo "hello $OPTARG";
packagetype=$OPTARG;;
i)echo "hello $OPTARG";
tcinstance=$OPTARG;;
\?) usage;;
esac
done
cd $vahroot
echo "Now in $vahroot"
source $vahroot/admin/env/vahenv.sh
tcmgr.sh restart -t all
echo "$?"
if [ $? -ne 0 ]
then
echo "Exception occured"
exit 1;
fi
version_chk="SNAPSHOT"
if [[ $version =~ $version_chk ]]
then
echo "groupid is $groupid artifactid $artifactid version $version packagetype             $packagetype tcinstance $tcinstance"
tcmgr.sh deploy -w nexus://snapshots:$groupid:$artifactid:$version:$packagetype -i     $tcinstance
exit 0;
else
echo "groupid is $groupid artifactid $artifactid version $version packagetype     $packagetype tcinstance $tcinstance"
tcmgr.sh deploy -w nexus://releases:$groupid:$artifactid:$version:$packagetype -i     $tcinstance
exit 0;
fi   

我需要帮助阅读hudson配置,以便为我提供作业中指定的pom位置,这样我就不需要用户输入G:A:V:P param。

1 个答案:

答案 0 :(得分:0)

hudson(jenkins)有几种可以为你完成工作的部署插件。如果这不是您的选择:您可以将哈德森环境变量WORKSPACE传递给您的脚本,相对于它应该很容易在工作区中找到pom.xml。