我有一个带有 Jenkins 和 Artifactory for Java 的 CI 设置。我还想构建和部署 deb 包。为了构建 deb 包,我可能会使用 Maven 插件(从 Gradle 调用),例如 http://mojo.codehaus.org/deb-maven-plugin/ .
我现在正在调查 Debian 存储库的实现。我想部署一个私有(private) Debian 存储库来托管我的包 (http://wiki.debian.org/HowToSetupADebianRepository)。
Jenkins 中是否有任何插件可以更轻松地部署 deb 包?我应该使用哪个 debian 存储库实现?
最佳答案
只需将我的 2 美分加到这篇文章中。
在内部,我们使用 Freight (https://github.com/rcrowley/freight#readme) 作为我们的 Debian/Ubuntu 存储库。
我们中的很多人倾向于使用 Jordan Sissel 的 fpm (https://github.com/jordansissel/fpm#readme) 来创建供内部使用的 deb。
这可以很容易地在您的源存储库中编写脚本,就像我在这里所做的那样:
https://github.com/stuart-warren/logit/blob/master/make-deb
#!/bin/bash
# SET SOME VARS
installdir='/usr/lib/logit'
NAME='logit-java'
VERSION='0.5.8'
ITERATION='1'
WEBSITE='https://github.com/stuart-warren/logit'
REPO='http://nexus.stuartwarren.com/nexus'
# REMOVE PREVIOUS BUILD IF PRESENT
echo "Delete ${installdir}"
rm -rf .${installdir}
# CREATE FOLDER STRUCTURE
echo "create base dir ${installdir}"
mkdir -p .${installdir}
# PUT FILES IN THE CORRECT LOCATIONS
wget ${REPO}/content/repositories/releases/com/stuartwarren/logit/${VERSION}/logit-${VERSION}-tomcatvalve.jar -O .${installdir}/logit-${VERSION}-tomcatvalve.jar
wget ${REPO}/content/repositories/releases/com/stuartwarren/logit/${VERSION}/logit-${VERSION}-jar-with-dependencies.jar -O .${installdir}/logit-${VERSION}-jar-with-dependencies.jar
wget https://raw.github.com/stuart-warren/logit/master/LICENSE -O .${installdir}/LICENCE
wget https://raw.github.com/stuart-warren/logit/master/README.md -O .${installdir}/README.md
pushd .${installdir}
ln -sf logit-${VERSION}-tomcatvalve.jar logit-tomcatvalve.jar
ln -sf logit-${VERSION}-jar-with-dependencies.jar logit-jar-with-dependencies.jar
popd
# REMOVE OLD PACKAGES
echo "Delete old packages"
rm ${NAME}_*_all.deb
# CREATE THE DEB
echo "Build new package"
fpm \
-n $NAME \
-v $VERSION \
--iteration ${ITERATION} \
-a all \
-m "Stuart Warren <stuart@stuartwarren.com>" \
--description "Library to extend Log4J 1.2 (plus now Logback 1.0,
Java.util.logging and Tomcat AccessLog Valve) by providing
json layouts (for logstash/greylog) and a zeromq appender" \
--url $WEBSITE \
--license 'Apache License, Version 2.0' \
--vendor 'stuartwarren.com' \
-t deb \
-s dir \
${installdir:1}
echo "Delete ${installdir}"
rm -rf .${installdir}
echo "Done!"
显然,您可以直接复制任何已编译的文件,而不是从服务器下载,在我的例子中是 maven repo。
然后,您可以将 deb SCP 到存储库服务器上的某个“传入”目录。
关于jenkins - 我应该如何为 deb 包设置我的 CI (jenkins)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12324475/