Bygging i Koji

Beskrivelse av prosessen for ? bygge en pakke i Koji, inkludert kommandoer som skal kj?res.

1???Forutsetninger

For at en bygging skal kunne fullf?re m? f?lgende v?re p? plass i pakkens Git-repo:

  • En spec-fil for pakken
  • En fil Makefile (se under)
  • Ev. patcher og andre kildekodefiler (spesifisert i spec-fil)

Uten dette vil byggingen feile.

1.1???Makefile for nedlasting av ekstern kildekode

Kildekoden lastes ned fra nettet, og det m? spesifiseres hvor og hvordan. Dette gj?res vha. en fil "Makefile" som har et target "sources". Et eksempel p? en slik er listet under:

# Makefile for Koji

sources:
        curl http://example.com/minpakke-1.0.tar.gz -o minpakke-1.0.tar.gz

Dersom pakken ikke skal bruke ekstern kildekode m? Makefile fremdeles eksistere, men den trenger ikke gj?re noe. Eksempel:

# Makefile for Koji

sources:
        @echo "Nothing to do here..."

Dette er aktuelt for pakker hvor all kildekode ligger i Git-repoet for pakken. Typisk vil dette gjelde programmer og script som er utviklet internt.

2???Bygging uten konsekvenser: scratch-build

Det er mulig ? bygge en pakke uten at det blir et ferdig produkt som tagges osv. Dette gj?res med opsjonen --scratch til build:

koji build --scratch <target> <scm-url>

Eksempel:

$ koji build --scratch uio-el6-free git://koji-git.uio.no/uio-app-sync#7bdbbda932fded81e050845e147f3c40f6b116e9
Created task: 37
...
37 build (uio-el6-free, /uio-app-sync:7bdbbda932fded81e050845e147f3c40f6b116e9) completed successfully

Det er ogs? mulig ? bygge fra en SRPM vha. "scratch build":

$ koji build --scratch uio-el6-free ./sympaadmin-1.8-1.src.rpm
Uploading srpm: ./sympaadmin-1.8-1.src.rpm
[====================================] 100% 00:00:00  23.48 KiB  51.38 KiB/sec
Created task: 40
...
40 build (uio-el6-free, sympaadmin-1.8-1.src.rpm) completed successfully

Slik kan man teste om en SRPM vil bygge hos oss. Merk at kun administrator kan gj?re ekte bygging (dvs. ikke scratch-build) fra SRPM, og dette er ikke noe vi ?nsker ? bruke. Man skal alltid bygge fra Git-repoet.

3???Vanlig bygging

For ? bygge en pakke brukes kommandoen koji build. Denne skal ha to argumenter:

  1. Build target: Her skal du bruke uio-el6-free

  2. SCM URL: Dette skal v?re en URL mot Git-repoet som vi bruker:

    git://koji-git.uio.no/<pakke>#<commit>
    

    <pakke> skal v?re pakkenavnet, mens <commit> er en commit-ID.

Eksempel:

$ koji build uio-el6-free git://koji-git.uio.no/uio-app-sync#b312930
Created task: 43
...
43 build (uio-el6-free, /uio-app-sync:b312930) completed successfully

Hvis byggingen g?r bra vil pakken bli tilgjengelig i "testing"-repoet.

4???Signering

Alle pakker m? signeres. Vi hadde tidligere automatikk for ? gj?re dette, men automatikken er foreldet og dette gj?res for tiden manuelt. Prosedyren er beskrevet p? internsidene til SSD:

Manuell signering av pakker

5???Sette i prod

Ved vanlig bygging blir den nybygde pakken tilgjengelig i repoet "uio-el6-free-testing". Man kan da teste den p? utvalgte maskiner. Man installerer/oppdaterer den slik:

yum --enablerepo=uio-free-testing clean expire-cache
yum --enablerepo=uio-free-testing install/update <pakke>

Det er opp til pakkens eier ? bestemme hvor lenge den skal testes og n?r den skal ut i produksjon, om i det hele tatt.

N?r pakken skal ut i produksjon, m? den flyttes. Dette gj?res slik:

koji move-build uio-el6-free-testing uio-el6-free <build>

Merk at "<build>" her skal v?re en unik NVR (name-version-release). Eksempel:

$ koji move-build uio-el6-free-testing uio-el6-free uio-thunderbird-3.1-3.el6
Created task 406, moving uio-thunderbird-3.1-3.el6
Watching tasks (this may be safely interrupted)...
406 tagBuild (noarch): free
406 tagBuild (noarch): free -> open (koji-el6-build01.uio.no)
406 tagBuild (noarch): open (koji-el6-build01.uio.no) -> closed
  0 free  0 open  1 done  0 failed

mens kun pakkenavnet vil ikke virke:

$ koji move-build uio-el6-free-testing uio-el6-free uio-thunderbird
GenericError: invalid format: uio-thunderbird

Bruk f.eks. koji list-tagged for ? liste opp pakker med full NVR for en tag. Eksempel:

$ koji list-tagged uio-el6-free-testing
Build                                     Tag                   Built by
----------------------------------------  --------------------  ----------------
bofh-0.9.7-2.el6                          uio-el6-free-testing  trondham
nedetid-1.0-2.el6                         uio-el6-free-testing  werner

Se ogs? output fra:

koji move-build --help

Det er kun den brukeren som bygget pakken (eller admin) som kan flytte pakken til produksjon.

Av Trond Hasle Amundsen
Publisert 21. mai 2013 13:18 - Sist endret 28. nov. 2022 12:57