Automaattinen rakennusjärjestelmä remixeille ilman Kojia

Tämä asiakirja kuvaa automatisoidun RPM- ja ISO-rakennusinfrastruktuurin luomisen prosessia pienemmille Fedora Remix projekteille, jotka eivät hyödynnä Fedoran Koji-ekosysteemiä.

Perusasetelma

Paras käytäntö on pitää web-palvelin ja rakentaja erillään.

Web-palvelin on CentOS-järjestelmä. Sen päätarkoitus on isännöidä julkista ISO-latausta ja pakettivarastoa. Linkki:../_attachments/playbook-builder.yml[playbook-mirror.yml] Ansible-pelikirja, joka sijaitsee tässä arkistossa, automatisoi web-palvelimen provisioinnin. CentOS:n valinta oli maksimoida tukiaika ja pysyä RHEL-perheessä. Se voisi yhtä hyvin olla Debian-palvelin, vaikka pelikirjaa pitäisi säätää.

Rakentaja on Fedora-järjestelmä, joka on toteutettu playbook-builder.yml Ansible-pelikirjan avulla. Rakentaja on Jenkins CI -palvelin, joka rakentaa kierroslukuja uudelleen, kun versionhallintaan tehdään muutoksia. Automaatio tulisi konfiguroida Jenkinsissä aktivoitumaan push-%master% -arvoon jokaiselle repo-kotelopakettilähteelle.

RPMs

Alla esitetty komentosarja havainnollistaa RPM-pakettien rakentamisprosessia Jenkinsillä.

sudo rm -rf /home/$USER/to-sign/
mkdir -p /home/$USER/to-sign/
copr-rpmbuild scm --clone-url [URL of git repo with package source] --chroot \
fedora-$(lsb_release -a | grep Release | cut -f2)-x86_64
sudo cp /var/lib/copr-rpmbuild/results/*.rpm /home/$USER/to-sign
rm -rf /var/lib/copr-rpmbuild/results

Kun RPM-rakennus on valmis, vastuullisen tiimin jäsenen täytyy yhdistää rakennuspalvelimeen SSH:n kautta allekirjoittaakseen valmiin RPM-paketin seuraavasti:

sudo rpmsign --addsign /path/to/to-sign/directory/*rpm

Työkalua kuten %rsync% tulisi käyttää uusien pakettien siirtämiseen peiliin. Kun olet varmistanut käyttöoikeuksien oikeellisuuden, suorita:

sudo createrepo_c --update /path/to/RPMs or SRPMs

peilissä, jotta oikea kierroslukuvarasto voidaan päivittää.

ISOs

ISO:t tulisi rakentaa tarpeen mukaan. ISO:n rakentamiseen tarvitaan kaksi edellytettä:

  1. Kickstart-tiedosto, jota Anaconda Installer käyttää

  2. The lorax-lmc-novirt and pykickstart Fedora packages

Alkuperäinen ISO-koonti

  1. Kloonaa Fedora Kickstarts -tietovarasto: %git clone https://pagure.io/fedora-kickstarts.git%

  2. Tule hakemistoon: %cd fedora-kickstarts/%

  3. Valitse kickstart, jota käytät pohjana remixillesi

  4. Litistä kickstart: %ksflatten --config [kickstartin nimi].ks -o flat-[kickstartin nimi].ks --versio [fedora-versio]%

  5. Muokkaa %%packages% -osiota flat kickstartissa, jos haluat lisätä tai poistaa peruspaketteja

  6. Aseta %SELinux% sallivaksi muodossa: %sudo setenforce 0%

  7. Aja livemedia-creator:

    sudo livemedia-creator --ks /path/to/flat/kickstart/file --no-virt \
    --resultdir /var/lmc --project [image name] --make-iso --volid [image name] \
    --iso-only --iso-name [image name].iso --releasever [fedora release] \
    --title [image name] --macboot
  8. Tuloksena oleva ISO on %/var/lib/lmc%.

  9. Lopuksi, aseta %SELinux% takaisin pakottamaan: %sudo setenforce 1%

Yleinen ISO-rakennus

Alkuperäisen ISO-version jälkeen uusi ISO voidaan luoda ajamalla:

setenforce 0
livemedia-creator --ks [kickstart-name].ks --no-virt --resultdir /var/lmc \
--project [remix name]-Live --make-iso --volid [remix name] \
--iso-only --iso-name [remix name].iso --releasever $vers \
--title [remix name]-live --macboot
setenforce 1

Saatat haluta harkita ISO-version automatisoimista Jenkinsin kanssa.