Maven 帮助使用Hudson自动部署脚本

Maven 帮助使用Hudson自动部署脚本,maven,continuous-integration,hudson,continuous-deployment,Maven,Continuous Integration,Hudson,Continuous Deployment,我们正在开发一个自动部署脚本,该脚本需要在Hudson的“Execute Shell”步骤中运行 1.GroupId:ArctifactId:Version:Packaging(项目已专业化) 2.Servername:VahRoot:TcInstance 我需要从pom.xml中读取G:A:V:p参数,这是在Hudson作业配置中指定的。尽管Hudson提供了WORKSPACE env var,但在工作区中搜索pom.xml变得很困难,考虑到可能存在当前正在执行的pom名称为pom.xyz.x

我们正在开发一个自动部署脚本,该脚本需要在Hudson的“Execute Shell”步骤中运行 1.GroupId:ArctifactId:Version:Packaging(项目已专业化)
2.Servername:VahRoot:TcInstance

我需要从pom.xml中读取G:A:V:p参数,这是在Hudson作业配置中指定的。尽管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参数。

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

为什么不编写一个java程序来读取pom和所需的信息,或者编写一个Maven插件来完成这项工作,或者编写一个hudson插件来完成这项工作这样做…是的,我可以这样做。但是工作区可能包含多个pom,如pom.xyz.xml、pom.abc.xml等。我需要找到当前hudson作业使用的pom,然后检索所有GAVP参数。是否有一种方法可以读取hudson配置,在该配置中我无论如何都会指定pom位置?WORKSPACE变量指向正在执行的作业的工作空间。如果您为每个hudson作业构建1个,那么您将只有1个pom.xml.ok。我会试一试的。另一个问题是,有没有一种方法可以引用在“executeshell”步骤之前构建的工件?是的,这在引用要部署的工件方面非常有用。您对“构建工件”的确切含义是什么。maven工件的名称(~project name)或生成的jar文件的名称?工件所在的nexus存储库的URL。