Innhold
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:
Build target: Her skal du bruke uio-el6-free
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:
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.