koji 用法

https://docs.pagure.org/koji/

一、常用的koji列表
测试你的koji是否能正常使用
koji moshimoshi

 

如下批量处理

导入软件包
koji import <pkg> [<pkg>]  

koji import  --link  centos-logos-70.0.6-3.el7.centos.src.rpm   #注意link 硬链接方式/mn/koji 不可以是软链接过来的目录

导入之后就是下面你这个样子

 ls -al /mnt/koji/work/cli-import/1592446224.561101.yLkQQGMn/centos-logos-70.0.6-3.el7.centos.src.rpm
lrwxrwxrwx 1 apache apache 95 Jun 17 22:10 /mnt/koji/work/cli-import/1592446224.561101.yLkQQGMn/centos-logos-70.0.6-3.el7.centos.src.rpm -> ../../../packages/centos-logos/70.0.6/3.el7.centos/src/centos-logos-70.0.6-3.el7.centos.src.rp

 此时在koji-web页面的packages是以centos-logos作为package_name(Name),点进去之后只有builds是NVR格式的centos-logos-70.0.6-3.el7.centos,此时packages页面下载tags是空的。需要添加标签:koji add-pkg --owner tag-name package_name

然后点击NVR到builds页面,此时Builds的Tags是空的,需要加标记。2中方法

1)koji tag-build  tag-name (NVR)centos-logos-70.0.6-3.el7.centos (效率低因为形成task)

2)   koji list-untagged | xargs -n 1 koji call tagBuildBypass tag-name (效率高只是单纯的标记没有task)

koji import的方式此时package和build都还没有tag,build状态时complete,无法koji build,需要执行1) koji add-pkg --owner  kojiadmin dist-s8 go-ovirt-engine-sdk(package_name) 2)koji call deleteBuild (NVR),3)koji call resetBuild <NVR>  4)koji build dist-nk5u8 xxxx.src.rpm。1步骤:给 package种加tag 才可以编译。2,3步是该状态complete为canceled

1)koji import engine-db-query-1.6.2-1.el8.src.rpm go-ovirt-engine-sdk4-4.4.1-1.el8.src.rpm

2)koji add-pkg --owner  kojiadmin dist-s8 go-ovirt-engine-sdk4

     koji add-pkg --owner  kojiadmin dist-s8 engine-db-query

3)koji call deleteBuild  engine-db-query-1.6.2-1.el8

   koji call deleteBuild  go-ovirt-engine-sdk4-4.4.1-1.el8

4)koji call resetBuild go-ovirt-engine-sdk4-4.4.1-1.el8

   koji call resetBuild engine-db-query-1.6.2-1.el8

5)koji build dist-s8-ovirt engine-db-query-1.6.2-1.el8.src.rpm 

 

go-ovirt-engine-sdk4-4.4.1-1.el8.src.rpm

package  name:go-ovirt-engine-sdk

package nvr:go-ovirt-engine-sdk4-4.4.1-1.el8

package version:4-4.4.1

package release:1

package dist:.el8

#!/bin/bash
koji import ovirt/*
koji add-pkg --owner  kojiadmin dist-s8 $(koji list-pkgs --quiet)  给package的name打标记dist-s8和拥有者kojiadmin
for i in $(koji list-builds --state=COMPLETE --quiet | awk '{print $1}');do koji call untagBuildBypass dist-s8  ${i} ;done  去除build中的NVR的标记
for i in $(koji list-builds --state=COMPLETE --quiet | awk '{print $1}');do koji call deleteBuild  ${i} ;done   删除build中的NVR 也就是该状态COMPLETE 改为DELETED
for i in $(koji list-builds --state=DELETED --quiet | awk '{print $1}');do koji call resetBuild  ${i} ;done    重新设置build中的NVR 也就是该状态DELETED改为canceled   

#koji build 的前提是 package中的name有标记以及build中的NCR无标记以及build中的状态是canceled 才可以

for i in $(ls ovirt/)
do
        koji build --nowait dist-s8-ovirt  ovirt/$i;  #不等待也就是并行了 和 koji chian-build不一样
#        if [[ "$?" == "0" ]];then
#               echo $i >> success.list
#       else
#               echo $i >> error.list
#       fi
done

 

 

 

或者直接编译也顺便导入了 不用特意导入

name:superred-logos

nvr:superred-logos-70.0.6-2.el7.centos

version:70.0.6

release:2

dist:el7

1.koji add-pkg --owner  kojiadmin dist-s7  superred-logos  给 package种加tag 才可以编译

2.koji build dist-s7-build superred-logos-70.0.6-2.el7.centos.src.rpm 此时也导入

 

添加tag
koji add-tag <tagname>

添加target
koji add-target <name> <build-tag> <desc-tag>

添加group
koji add-group <tag> <groupname>

往group中添加build所需的一些软件
koji add-group-pkg <tag> <group> <pkg> [pkg]

生成tag用的仓库
koji regen-repo <build-tag>

尝试构建(这个命令build成功后,包会保存到/mnt/koji/scratch下)
koji build --scratch <target> <srpm path or scm url>

往tag中添加包并为拥有者赋值
koji add-pkg --owner <name> <tag> <pkgname>  此时也只是加了一个报名。之后build以下就全了

 

从tag中删除软件包
koji remove-pkg <tag> <pkgname>

进行build(这个命令build成功后,包会存放在/mnt/koji/packages/相应的包名下)
koji build <target> <pkgname>

添加编译主机
koji add-host <hostname> <arch> [<arch>]

修改编译主机
koji edit-host <hostname> [--arches=ARCH]

添加编译主机到某个频道(有一些默认频道,注意要是在某个频道有任务时,至少要 分配一个编译机,默认频道有default,createrepo,maven,livecd,appliance,vm,可以 新生成频道,可以通过koji add-host-to-channel --list列出所有频道)
koji add-host-to-channel <hostname> <channelname>

从频道中删除主机
koji remove-host-to-channel <hostname> <channelname>

列出某个tag的分组及其中的软件包
koji list-groups <tag> [groupname]

列出所有导入的软件包
koji list-pkgs

增加外部仓库
koji add-exteranl-repo -t <tag> <name> <repo url>

列出外部仓库
koji list-external-repos [--tag=TAG]

删除外部仓库
koji remove-external-repo [--force] <external-repo-name> [tag]

停止某个编译机
koji disable-host <hostname>

启用某个编译机
koji enable-host <hostname>

重命名频道
koji rename-channel <oldname> <newname>

链式构建多个包
koji chain-build target <URL> [URL2 [:] URL3 [:] URL4 ...]

从源码构建一个maven包
koji maven-build target URL

从已有的rpm包制作成系统rpm包
koji wrapper-rpm <target> <build-id|n-v-r> <URL>

运行一系列有依赖顺序的maven构建
koji maven-chain <target> <config> ...

重新提交一个任务
koji resubmit <taskID>

执行一个任意的XML-RPC调用
koji call name [arg...]

生成一个mock配置
koji mock-config [opthions]

重启使能所有编译机
koji restart-hosts

从一个comps文件导入组或者包信息
koji import-comps <file> <tag>

导入签名进数据库
koji import-sig <pkg> [pkg]

写签过名的rpm到硬盘
koji write-signed-rpm <signature-key> n-v-r [n-v-r ...]

精简签名副本(不确定)
koji prune-sigs

移动一个build到不同的卷
koji set-build-volume n-v-r [n-v-r ...]

增加一个新的存储卷
koji add-volume <volume-name>

列出所有卷
koji list-volumes

列出用户权限
koji list-permissions

增加一个用户
koji add-user <username>

使能一个用户登录
koji enable-user <username>

不使能一个用户登陆
koji disable-user <username>

列出rpms的签名副本
koji list-signed

导入就绪的软件包
koji import-in-place <pkg> [pkg]

导入一个和build关联的存档文件
koji import-archive <build-id | n-v-r> /path/to/archive...

赋予一个用户某种权限
koji grant-permission <permission> <user> [<user> ...]

吊销一个用户某种权限
koji revoke-permission <permission> <user> [<user> ...]

打印一个tag的最近build
koji latest-build <tag> <package> [package]

列出XML-RPC API
koji list-api

列出在一个tag中的builds或者rpms
koji list-tagged <tag> [pkg]

列出一个buildroot中用到的rpms
koji list-buildroot buildroot-id

列出没有打标签的包
koji list-untagged [pkg]

从一组包列表中阻塞一个包
koji block-group-pkg <tag> <group> <pkg> [<pkg>...]

从一组包列表中取消阻塞一个包
koji unblock-group-pkg <tag> <group> <pkg> [<pkg>...]

增加一个组到目标组需求列表
koji add-group-req <tag> <target group> <required group>

阻塞一个组的需求列表
koji block-group-req [options] <tag> <group> <blocked req>

取消阻塞一个组的需求列表
koji block-group-req [options] <tag> <group> <blocked req>

查看一个软件包的基本信息
koji rpminfo <n-v-r.a> [<n-v-r.a> ...]

查看一个build的基本信息
koji buildinfo <n-v-r.a> [<n-v-r.a> ...]

复制一个tag
koji clone-tag <src-tag> <dst-tag>

编辑一个target
koji edit-target <targetname>

取消某次build
koji cancel <build-id>

命令行查看koji build logs(注意为+1,原因是kojira看到是 分配给kojira的,而这里要用到的则是分配给kojid的,所以默认看 的+1才是我们要查看的,更高级操作koji watch-logs -h)
koji watch-logs <build-id>

删除软件包的某次构建(记得先把包untagg)
koji call deleteBuild pkgname-version-release-xxx

=========================================================================

 

 

修改arch
1 koji edit-tag dist-nk5u8-build --arches  "i686 x86_64" //注意,arches是没有逗号的

 

koji edit-host --arches  "i386 x86_64" kojibuilder1 //一般不需要修改这个,如果32位一直free时,可以尝试使用该命令

2、增加tag

koji add-tag dist-nk5u6
2、编译源码
koji build dist-nk5u8 xxxx.src.rpm
(直接执行build,无需导入srpm,在编译过程中,koji会自动的导入上传srpm)
3、取消build
koji cancel <task_id>
4、删除BUILD
koji call untagBuildBypass dist-nk5u8 fake-1.0-6(NVR)
koji call deleteBuild fake-1.0-6(NVR)
5、重新编译
koji call resetBuild <NVR>
koji build dist-nk5u8 xxxx.src.rpm
 6、添加koji用户
koji add-user gq
7、在数据库中查看Host对应的ID
psql -U koji koji
select (id, name, capacity) from host;         // 查看Host对应的ID

8、查看host信息

koji list-hosts

 

创建客户端

1、安装KOJI软件包(在客户端安装软件包)

yum install  koji
         {1、添加koji用户(在服务器端)
            koji add-user XXX}//不需要添加用户,可以直接生产证书
2、生成证书(在服务器端用root执行)
./certgen.sh.sh XXX(CN)   //此处的XXX与创建的用户XXX(CN)一致
3、发送证书给客户端
将/etc/pki/koji目录下面生成XXX.tar.bz2证书发送给客户端
4、客户端解压
客户端解压XXX.tar.bz2
将 client.crt、clientca.crt、serverca.crt拷贝到~/.koji目录
5、客户端配置/etc/koji.conf
server = http://ip/kojihub
weburl = http://ip/koji
topurl = http://ip/packages
cert = ~/.koji/client.crt
ca = ~/.koji/clientca.crt
serverca = ~/.koji/serverca.crt

 

注意:koji编译成功后就不能在编译了,在编译就报错,只能删除重新编译

删除已经编译过的包(需在服务器上执行)
koji call untagBuildBypass dist-nk5u8 fake-1.0-6
koji call deleteBuild fake-1.0-6
koji call resetBuild <NVR>
重新编译(在客户端重新编译)

koji build dist-nk5u8 xxxx.src.rpm

1、package XXX not in list for tag dist-nk5u8

原因:是因为进行了多次错误的build,在build没有将包名上传至仓库

解决:可以手动执行以下命令之后,再重新执行build命令

koji add-pkg --owner kojiadmin dist-nk5u8 <package name>

 

=======================================

https://docs.pagure.org/koji/server_bootstrap/

koji import /path/to/package1.src.rpm /path/to/package2.src.rpm

如果文件与/ mnt / koji放在相同的卷上,则可以使用 ,将文件硬链接到适当的位置,从而避免了将它们上传到中心的麻烦,并且极大地提高了导入速度。使用时,必须以root用户身份运行。这是 强烈建议您使用。koji import --link--link--link

  • 使用与上述相同的方法导入所有二进制rpm

  • 创建一个新标签

koji add-tag dist-foo
  • 将所有刚刚导入的软件包标记为刚刚创建的标记

您可以使用获取刚刚导入的所有软件包的列表。koji list-untagged

$ koji list-pkgs --quiet | xargs koji add-pkg --owner <kojiuser> dist-foo
$ koji list-untagged | xargs -n 1 koji call tagBuildBypass dist-foo

我们之所以调用tagBuildBypass方法而不是使用 它,是因为它不需要构建器一次处理tagBuild任务,而是直接进行标记。这将节省大量时间,尤其是在标记大量程序包时。koji tag-build

创建具有所需拱门的构建标签,并将先前创建的标签作为父标签

koji add-tag --parent dist-foo --arches "i386 x86_64 ppc ppc64" dist-foo-build
  • 创建一个包含已创建标签的构建目标

$ koji add-target dist-foo dist-foo-build
  • 创建与您的构建标记关联的构建

$ koji add-group dist-foo-build build

 

  • 使用将安装到最小buildroot中的软件包填充构建

您可以通过 针对$ ARCH的Fedora Koji实例运行来了解Fedora的当前构建组 。对于最小的buildroot,这可能是一个很好的起点。koji -s https://$ARCH.koji.fedoraproject.org/kojihub list-groups f17-build

koji -s https://cbs.centos.org/kojihub list-groups el7-epel

$ koji add-group-pkg dist-foo-build build pkg1
$ koji add-group-pkg dist-foo-build build pkg2

 

如果您想为标签完全复制Fedora的组数据,则批量处理会更容易-导出Fedora的数据并将其导入到您的build标签。

$ koji -s https://$ARCH.koji.fedoraproject.org/kojihub show-groups --comps f17-build > comps.xml
$ koji import-comps comps.xml dist-foo-build

 

  • 重新生成仓库

$ koji regen-repo dist-foo-build

 

  • 等待存储库重新生成,您现在应该能够成功运行构建。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值