下面给你一个比较常见、可落地的方案:用 Jenkins + Git + Debian build 工具(dpkg-buildpackage / debuild / cowbuilder) 来做 Debian 包(.deb)的自动打包。
代码仓库(Git)
↓
Jenkins 拉代码
↓
安装构建依赖(build deps)
↓
执行 Debian 打包命令
↓
产出 .deb 文件
↓
(可选)上传到 apt 仓库 / 归档
sudo apt update
sudo apt install -y git build-essential devscripts debhelper dpkg-dev lintian
可选(推荐):
sudo apt install -y cowbuilder pbuilder
你的代码仓库应至少包含:
project/
├── debian/
│ ├── control
│ ├── rules
│ ├── changelog
│ ├── compat
│ └── install
├── src/
└── Makefile / CMakeLists.txt
如果还没有 debian/ 目录:
debmake
# 或
dh_make --createorig
pipeline {
agent any
environment {
DEBEMAIL = "ci@company.com"
DEBFULLNAME = "Jenkins CI"
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/your/repo.git'
}
}
stage('Install Build Deps') {
steps {
sh 'sudo apt-get update'
sh 'sudo apt-get build-dep -y .'
}
}
stage('Build Debian Package') {
steps {
sh 'dpkg-buildpackage -us -uc -b'
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: '../*.deb', fingerprint: true
}
}
}
}
dpkg-buildpackage -us -uc -b
生成:
../xxx.deb../xxx.changes../xxx.buildinfo# 初始化(一次)
sudo cowbuilder --create
# 构建
sudo cowbuilder --build ../xxx.dsc
优点:
dch -i "Auto build by Jenkins"
可配合 Git commit / tag 自动生成版本。
repreproaptly示例:
reprepro includedeb stable ../xxx.deb
lintian ../*.deb
可在 Jenkins 中作为 构建失败条件。
sbuild 或 Docker + qemu尽量:
sudo 装依赖cowbuilder / pbuilder 避免污染sudo apt-get build-dep .
要求 debian/control 正确。
确保:
PATHDEBEMAIL / DEBFULLNAMEHOME| 场景 | 推荐 |
|---|---|
| 简单项目 | dpkg-buildpackage |
| CI 稳定 | cowbuilder / pbuilder |
| 多版本 | sbuild |
| 企业级 | Jenkins + aptly + lintian |
如果你愿意,我可以:
你现在是 源码项目 还是 已有 debian 目录?