Linux中pack转jar,安装和使用Packit:将你的项目自动打包到Fedora中

Packit是一个CLI工具,可帮助你将上游项目自动打包到Fedora操作系统中,本文介绍安装和使用Packit的方法。

eac884e4eb4e56a4474a4d0039f58953.png

前言

作为开发人员,你可能希望在Fedora中添加或更新你的包,如果你以前做过,你知道这不是一件容易的事,如果你还没有让我重申:这不是一件容易的事。

这正是packit可以提供帮助的地方:只需在上游存储库中配置一个配置文件,packit就会自动将你的软件打包到Fedora中,并在上游更新源代码时更新它。

此外,packit可以将SPEC文件的下游更改同步回上游存储库,如果在Fedora存储库中更改了包的SPEC文件,并且你希望将其同步到上游项目中,这可能很有用。

Packit还提供了一种基于上游存储库检出来构建SRPM包的方法,该方法可用于在COPR中构建RPM包。

最后但并非最不重要的是,packit提供了一个状态命令,此命令提供有关上游和下游存储库的信息,如拉取请求,发布和其他更多。

Packit还提供了另外两个命令:build和create-update。

packit build命令在Fedora构建系统中执行项目的生成构建 - koji,你可以使用选项-dist-git-branch来构建Fedora版本,packit create-updates命令使用选项-dist-git-branch为特定分支创建Bodhi更新。

安装Packit

使用dnf在Fedora上安装packit,直接运行以下命令:

sudo dnf install -y packit

参考:dnf命令_Linux dnf命令使用详解:新一代的RPM软件包管理器。

Configuration

对于演示用例,我选择了colin的上游存储库,Colin(https://github.com/user-cont/colin)是一个检查容器,dockerfiles和容器映像的通用规则和最佳实践的工具。

首先,clone colin git存储库:

$ git clone https://github.com/user-cont/colin.git

$ cd colin

Packit希望在你的git存储库的根目录中运行。

Packit(https://github.com/packit-service/packit/)需要有关你的项目的信息,该信息必须存储在.packit.yaml文件的上游存储库中。

请参阅colin的packit配置文件:

$ cat .packit.yaml

specfile_path: colin.spec

synced_files:

-.packit.yaml

- colin.spec

upstream_project_name: colin

downstream_package_name: colins

说明:

specfile_path - 上游存储库中spec文件的相对路径(必需)。

synced_files - 上游仓库中文件的相对路径列表,用于在更新期间复制到dist-git。

upstream_project_name - 上游存储库的名称(例如,在PyPI中);这用于%prep部分。

downstream_package_name - Fedora中包的名称(必填)。

packit能做什么?

使用packit的先决条件是你在上游项目的git checkout的工作目录中。

在运行任何packit命令之前,你需要执行多个操作,这些操作对于将PR提交到上游或下游存储库以及访问Fedora dist-git存储库是必需的。

导出GitHub令牌取自 https://github.com/settings/tokens:

$ export GITHUB_TOKEN=

获取Fedora帐户系统(FAS)所需的Kerberos帐户:

$ kinit @FEDORAPROJECT.ORG

导出从 https://src.fedoraproject.org/settings#nav-api-tab 获取的Pagure API密钥:

$ export PAGURE_USER_TOKEN=

Packit还需要fork令牌来创建拉取请求,该令牌取自 https://src.fedoraproject.org/fork/YOU/rpms/PACKAGE/settings#apikeys-tab。

通过运行来做到:

$ export PAGURE_FORK_TOKEN=

或者将这些标记存储在~/.config/packit.yaml文件中:

$ cat ~/.config/packit.yaml

github_token:

pagure_user_token:

pagure_fork_token:

在Fedora中创建一个新的上游版本

第一个用例的命令称为proposal-update(https://github.com/jpopelka/packit/blob/master/docs/propose_update.md),该命令使用选定的或最新的上游版本在Fedora dist-git存储库中创建一个新的pull请求:

$ packit propose-update

INFO: Running 'anitya' versioneer

Version in upstream registries is '0.3.1'.

Version in spec file is '0.3.0'.

WARNING  Version in spec file is outdated

Picking version of the latest release from the upstream registry.

Checking out upstream version 0.3.1

Using 'master' dist-git branch

Copying /home/vagrant/colin/colin.spec to /tmp/tmptfwr123c/colin.spec.

Archive colin-0.3.0.tar.gz found in lookaside cache (skipping upload).

INFO: Downloading file from URL https://files.pythonhosted.org/packages/source/c/colin/colin-0.3.0.tar.gz

100%[===================>]     3.18M  eta 00:00:00

Downloaded archive: '/tmp/tmptfwr123c/colin-0.3.0.tar.gz'

About to upload to lookaside cache

won't be doing kinit, no credentials provided

PR created: https://src.fedoraproject.org/rpms/colin/pull-request/14

命令完成后,你可以在Fedora Pagure实例中看到基于最新上游版本的PR,一旦你查看它,它就可以合并。

4637f6253b66338ba1655f42b9ac583e.png

将下游更改同步回上游存储库

另一个用例是将下游更改同步到上游项目存储库。

用于此目的的命令称为sync-from-downstream(https://github.com/jpopelka/packit/blob/master/docs/sync-from-downstream.md),同步到上游存储库的文件在synced_files值下的packit.yaml配置文件中提到:

$ packit sync-from-downstream

upstream active branch master

using "master" dist-git branch

Copying /tmp/tmplvxqtvbb/colin.spec to /home/vagrant/colin/colin.spec.

Creating remote fork-ssh with URL git@github.com:phracek/colin.git.

Pushing to remote fork-ssh using branch master-downstream-sync.

PR created: https://github.com/user-cont/colin/pull/229

只要packit完成,你就可以看到上游存储库中Fedora dist-git存储库的最新更改,这可能是有用的,例如当Release Engineering执行批量重建时,他们会在Fedora dist-git存储库中更新你的SPEC文件。

3f33791dccea9f36f5a7496eca99e1cc.png

获取上游项目的状态

如果你是开发人员,你可能希望从上游和下游存储库获取有关最新版本,标记,拉取请求等的所有信息,Packit为此提供status命令:

$ packit status

Downstream PRs:

ID Title URL

14  Update to upstream release 0.3.1 https://src.fedoraproject.org//rpms/colin/pull-request/14

12  Upstream pr: 226 https://src.fedoraproject.org//rpms/colin/pull-request/12

11  Upstream pr: 226 https://src.fedoraproject.org//rpms/colin/pull-request/11

8  Upstream pr: 226 https://src.fedoraproject.org//rpms/colin/pull-request/8

Dist-git versions:

f27: 0.2.0

f28: 0.2.0

f29: 0.2.0

f30: 0.2.0

master: 0.2.0

GitHub upstream releases:

0.3.1

0.3.0

0.2.1

0.2.0

0.1.0

Latest builds:

f27: colin-0.2.0-1.fc27

f28: colin-0.3.1-1.fc28

f29: colin-0.3.1-1.fc29

f30: colin-0.3.1-2.fc30

Latest bodhi updates:

Update Karma status

colin-0.3.1-1.fc29 1 stable

colin-0.3.1-1.fc28 1 stable

colin-0.3.0-2.fc28 0 obsolete

创建SRPM

最后一个packit用例是基于上游项目的git checkout生成SRPM包,SRPM生成的packit命令是srpm:

$ packit srpm

Version in spec file is '0.3.1.37.g00bb80e'.

SRPM: /home/phracek/work/colin/colin-0.3.1.37.g00bb80e-1.fc29.src.rpm

Packit作为一个service

packit-service(https://github.com/packit-service/packit-service),在这种情况下,packit GitHub应用程序将安装到上游存储库中,packit将根据从GitHub或fedmsg收到的事件自动执行所有操作。

TAG:

除非注明,文章均由 Linux系统学习 整理发布,欢迎转载。如有版权争议,请联系删除。

文章评论

留言与评论(共有 0 条评论)

验证码:

b2afe5d1fe9f478fafeb0d6ac357ee2a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值