On 12/04/2014 01:57 PM, Otto Han wrote:
This last sentence is very important for me. We are using Koji as
sort
of Package-MgtSystem (package repository). We are building rpm from
srpm in a Jenkins environment. When Jenkins is done and no error was
noted we import all built packages in Koji and tag them.
The source code is maintained in a perforce CMS. When developers reach
a stable phase they generate SRPM from the source code and then run a
Jenkins job to generate the RPM. The result is a temporary local
repository containing all SRPM and RPM of the build.
I know that folks have wired Jenkins to trigger builds inside of a Koji
instance. I wonder if that would work for you.
These packages
are then imported in Koji and appropriately tagged:
- koji import *.rpm
- for all untagged: koji call tagBuildBypass tag package
For us importing is a very common practice.
If I were doing this sort of mass import all the time. I would first
generate a list of the srpms these rpms were generated from (which
determines the build they will be associated with upon import). E.g.
# rpm --nosignature --nodigest -qp --qf '%{sourcepackage} %{sourcerpm}
%{n}-%{v}-%{r}\n' *.rpm |awk '{if ($1=="1") { print $3 } else {print
gensub(".src.rpm$", "", "", $2)} }'
(The complication above is to deal with the srpm case (just use that
nvr) vs the non-srpm case (use the sourcerpm value).
Anyway, I would save that list and then tag those nvrs after import.
Using list-untagged is not very reliable here, as there are lots of
reasons that a build might become untagged. You might end up tagging
something that you don't mean to.
Having said all this what is your advice and what do you think of
this
way using Koji ?
Well you're not really using most of koji, and you're losing many of the
advantages. With this approach you have very little build metadata in
koji. Garbage collection will be much less intelligent.
Rarely we have a brand new package which does not exist yet in Koji.
Import *.rpm will insert it in Koji but how can I detect I must run
add-pkg for it before tagging?
You could use the koji list-pkgs command to check for it. Or you could
just run koji add-pkg every time. If the package is already present, it
is a no-op (though it will print a warning).