jenkins - 我应该如何为 deb 包设置我的 CI (jenkins)?

标签 jenkins package-managers deb

我有一个带有 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/

相关文章:

Jenkins - 看不到 "Manage Jenkins"选项

git - 在 Gerrit 中,如何防止提交不是完全最新的补丁集?

jenkins - 错误:Jenkins Groovy脚本中的 “Expected named arguments”并行

java - 将 Maven Artifact 映射到 Debian 包

jenkins - 如何有条件地在环境指令中传递凭据绑定(bind)

npm - 如何在不更新其他软件包的情况下 `yarn add`?

python - 如何在 Windows 10 上安装特定 Python 版本的软件包?

dependencies - 咕噜声/bower/组件 : Handling dependencies?

macos - 如何在 Mac OS X 上创建 .deb 包

ros - 如何从 ROS 中的 catkin 工作区生成 .deb