# CI/CD: ibni l-images ta' PHP mill-ġdid awtomatikament

> Ibni l-images Docker mill-ġdid awtomatikament: builds skedati, verifika tal-verżjoni fil-pipeline u rollout permezz ta' digest, biex il-patches ta' PHP jaslu.

Sors: https://phpsos.de/mt/blog/php-images-in-ci-neu-bauen/  
Stat: 25/10/2026  
Fornitur: PHP SOS, Għajnuna ta' emerġenza għal PHP u sigurtà tas-server. Għajnuna immedjata fuq WhatsApp: https://wa.me/491736494914?text=Bongu%20PHP%20SOS%2C%20g%C4%A7andna%20b%C5%BConn%20g%C4%A7ajnuna%20bis-server%20tal-PHP%20tag%C4%A7na.%20Kumpanija%3A%20%E2%80%A6%20Websajt%3A%20%E2%80%A6

**Fil-qosor:** Image ta' Docker fih PHP fl-istat tal-mument tal-bini u jiskadi anke mingħajr bidla fil-kodiċi. Min jibni l-images mill-ġdid awtomatikament, skedat u f'avviżi tas-sigurtà, jivverifika l-verżjoni ta' PHP fil-pipeline u jroll-out-ja permezz ta' digest, iġib patches bħal dik kontra PHP2Shell fil-produzzjoni b'mod ippjanat. Build aħdar waħdu mhuwiex prova; jgħodd il-verżjoni fil-container li qed jaħdem.

## Għaliex images jiskadu mingħajr bidla fil-kodiċi

F'ħafna timijiet il-pipeline tal-build tibda biss meta xi ħadd ibiddel il-kodiċi. Għall-applikazzjoni dan huwa loġiku. Għas-sigurtà huwa problema, għax il-PHP fl-image ġej mill-image bażi mit-tag tal-aħħar build.

PHP2Shell għamel dan viżibbli. Il-verżjonijiet irranġati 8.5.12, 8.4.27, 8.3.36 u 8.2.35 dehru fil-21 ta' Ottubru 2026. Proġett li f'dawn il-jiem ħadd ma ħadem fuqu ma rċieva l-ebda build ġdid u baqa' jaħdem bil-PHP il-qadim, għalkemm l-image bażi kien ilu aġġornat. It-triq manwali minn din is-sitwazzjoni tiddeskriviha [Kif tippatcja PHP f'containers ta' Docker](https://phpsos.de/mt/php2shell/docker-container-patchen/). Dan l-artikolu juri kif timmekkanizzaha.

## Ibni l-images Docker mill-ġdid awtomatikament: tliet attivaturi

Proċess robust jgħaqqad diversi attivaturi, biex ebda wieħed ma jkollu jġorr waħdu.

| Attivatur | Implimentazzjoni | X'għandek tqis |
|---|---|---|
| Skeda | workflow skedat, pereżempju kull ġimgħa | jiġbor patches anke mingħajr bidla fil-kodiċi |
| Image bażi ġdid | għodda li tissorvelja images bażi u tipproponi bidliet | taħdem l-aktar f'tags fissi tal-verżjoni |
| Avviż tas-sigurtà | bidu manwali tal-pipeline mit-tim tal-operat | teħtieġ persuna responsabbli ċara |

F'GitHub Actions l-avveniment `schedule` jieħu ħsieb l-iskeda. Skont id-dokumentazzjoni ta' GitHub juża s-sintassi cron b'ħames oqsma, jaħdem f'UTC u biss fuq il-branch standard. Orarji jistgħu jibdew bi dewmien meta t-tagħbija hija għolja, u f'repositories pubbliċi GitHub jiddiżattivahom wara 60 jum mingħajr attività. Dan l-aħħar jolqot proprju proġetti kwieti, jiġifieri eżattament dawk li l-aktar għandhom bżonn il-bini awtomatiku mill-ġdid.

Għat-tieni attivatur Dependabot, skont id-dokumentazzjoni ta' GitHub, jappoġġja l-ekosistema `docker` u jipproponi stati ġodda ta' images bażi bħala pull request. Għandek tkun taf żewġ restrizzjonijiet. L-ewwel, xi ħadd irid jivverifika u jgħaqqad il-pull request, inkella jibqa' mimdud. It-tieni, f'tag ta' fergħa bħal `php:8.3-fpm` fid-Dockerfile ma jinbidel xejn meta l-image bażi jinbena mill-ġdid. Għodda li tipproponi bidliet fit-test mbagħad m'għandha xejn x'tipproponi. Eżattament għalhekk għandek bżonn addizzjonalment il-bini skedat mill-ġdid.

It-tielet attivatur jinstema banali, imma fil-prattika spiss jonqos fuq il-mistoqsija min jattivah. Iddeċiedi min isegwi l-avviżi tas-sigurtà dwar PHP u min jista' jibda l-pipeline, anke fil-weekend. F'PHP2Shell bejn l-avviż bil-quddiem u l-patch kien hemm jum wieħed biss.

## Pipeline li taqbad PHP skaduta

L-eżempju li ġej għal GitHub Actions jibni l-image kull ġimgħa u fuq talba, jivverifika l-verżjoni ta' PHP u jwaqqaf jekk tkun taħt l-istat irranġat. Registry, ismijiet u verżjoni minima adattahom.

```yaml
name: php-image-rebuild
on:
  schedule:
    - cron: "0 3 * * 1"      # it-Tnejn 03:00 UTC
  workflow_dispatch: {}      # bidu manwali f'avviżi tas-sigurtà

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Image ohne Cache und mit frischem Basis-Image bauen
        run: docker build --pull --no-cache -t app:${{ github.run_id }} .
      - name: PHP-Version prüfen (Mindeststand des Zweigs 8.3)
        run: |
          docker run --rm app:${{ github.run_id }} php -v
          docker run --rm app:${{ github.run_id }} \
            php -r 'exit(version_compare(PHP_VERSION, "8.3.36", ">=") ? 0 : 1);'
```

Il-verifika tal-verżjoni taħdem f'images uffiċjali ta' PHP, li n-numru tal-verżjoni tagħhom jindika l-istat reali. Jekk l-image tiegħek juża pakketti ta' PHP ta' distribuzzjoni, in-numru spiss jibqa' l-istess wara backport. Imbagħad minflok in-numru iċċekkja l-changelog tal-pakkett għan-numri CVE, kif deskritt fl-artikolu [Kif tipprova n-numri CVE fil-changelog tal-pakkett](https://phpsos.de/mt/blog/cve-im-changelog-nachweisen/).

Wara l-verifika, fil-prattika jsegwu tliet passi oħra: skennja l-image għal dgħufijiet magħrufa, imbuttah fir-registry bid-data u d-digest u għaddi d-digest lill-provvediment. Liema tags u varjanti jaqblu bħala bażi tispjegah [Images uffiċjali Docker ta' PHP](https://phpsos.de/mt/blog/offizielle-php-docker-images/).

## Mill-build sal-container li qed jaħdem

L-iżball l-aktar komuni tal-ħsieb: il-pipeline hija ħadra, allura kollox huwa ppatchjat. Fil-fatt l-image il-ġdid biss qiegħed fir-registry. Il-patch isir effettiv biss meta kull container jinħoloq mill-ġdid mill-image il-ġdid.

1. **Roll-out permezz ta' digest:** Il-provvediment jirreferi għad-digest tal-image il-ġdid, mhux għal tag li jimxi.
2. **L-ewwel staging, imbagħad produzzjoni:** Testijiet awtomatiċi fuq kopja jaqbdu ksur minn images bażi ġodda.
3. **Ivverifika fl-operat:** Wara r-rollout esegwixxi `php -v` fil-container li qed jaħdem u qabbel id-digest mal-build.
4. **Illimita t-triq lura:** L-image il-qadim jibqa' disponibbli għal triq qasira lura, imma fih il-PHP vulnerabbli.

F'Kubernetes japplikaw regoli proprji, pereżempju dwar il-pull policy; jinsabu taħt [Kif tippatcja PHP f'Kubernetes](https://phpsos.de/mt/server/kubernetes/).

## Lakuni tipiċi fil-katina

- **Cache tal-build fuq ir-runner:** Mingħajr `--pull` u `--no-cache` l-image bażi l-qadim terġa' tintuża.
- **Mirror tar-registry:** Cache intern għadu jservi l-istat l-antik tal-image bażi.
- **Builds b'diversi stadji:** Tgħodd il-verżjoni ta' PHP tal-aħħar stadju, imma spiss jiġi vverifikat biss l-ewwel.
- **Images sekondarji:** Queue workers, containers tal-cron u għodod interni għandhom pipelines proprji jew xejn.
- **Digests miktuba fissi:** Digest tal-image bażi miktub darba qatt ma jiġi aġġornat jekk l-ebda għodda ma tissorveljah.

> **Importanti:**
> Bini mill-ġdid jissostitwixxi PHP, mhux id-data. Kodiċi malizzjuż li daħal qabel il-patch f'volumes, folders tal-upload jew fid-database jibqa' u jrid jiġi vverifikat separatament.

## Min jirreaġixxi meta l-bini mill-ġdid jonqos?

Bini awtomatiku mill-ġdid huwa tajjeb daqs ir-reazzjoni għall-falliment tiegħu. Jekk il-verifika tal-verżjoni tindika jew il-build jinqata' minħabba image bażi mibdul, xi ħadd irid jinduna. F'ħafna timijiet messaġġi bħal dawn jispiċċaw f'kaxxa tal-posta li ħadd ma jaqra, jew f'kanal fejn builds ħomor ilhom parti mill-ħajja ta' kuljum.

Regola ċara taħdem tajjeb: bini mill-ġdid tas-sigurtà li jfalli huwa ticket b'persuna responsabbli u terminu, mhux avviż fost ħafna. Żomm ukoll għal kull image imwassal id-data, id-digest u l-verżjoni ta' PHP vverifikata. Din il-lista twieġeb fl-avviż li jmiss fi ftit minuti liema applikazzjonijiet huma affettwati, u isservi lil awdituri jew assiguraturi bħala prova. Kif minn dan joħroġ proċess permanenti jiddeskrivih [Ġestjoni tal-patches bħala proċess minflok tifi n-nar](https://phpsos.de/mt/blog/patch-management-prozess/).

## Kif tgħin PHP SOS b'mod konkret?

- **Niċċekkjaw il-pipelines:** Inħarsu lejn il-ktajjen tal-build u tar-rollout tagħkom u nuru fejn patch jista' jibqa' mwaqqaf.
- **Nimmekkanizzaw il-bini mill-ġdid:** Nissettjaw builds skedati, verifika tal-verżjoni u rollout permezz ta' digest.
- **Nirreġistraw l-images kollha:** Nassenjaw lil kull container li qed jaħdem il-pipeline tiegħu, anke images sekondarji u qodma.
- **Nieħdu ħsieb fit-tul:** Fil-[Kuntratt ta' manutenzjoni tas-sigurtà](https://phpsos.de/mt/leistungen/security-wartungsvertrag/) insegwu l-avviżi tas-sigurtà u nattivaw bini mill-ġdid.


## Mistoqsijiet frekwenti

**Kemm-il darba għandu jinbena mill-ġdid image ta' PHP?**  
Numru fiss ma jeżistix. Taħdem tajjeb build regolari skedat, pereżempju kull ġimgħa, flimkien ma' build immedjat f'avviżi tas-sigurtà. Deċiżiv huwa li patch ġdid ma jkollux bżonn jistenna l-bidla tal-kodiċi li jmiss.

**Build b'suċċess huwa biżżejjed bħala prova?**  
Le. Build jippruva biss li jeżisti image ġdid. Biss meta l-containers li qed jaħdmu jinħolqu mill-ġdid minn dan l-image u php -v fih juri l-verżjoni rranġata, il-patch ikun effettiv.

**Għaliex wara l-bini mill-ġdid xorta tidher il-verżjoni l-qadima ta' PHP?**  
Kawżi komuni huma cache tal-build li terġa' tuża l-image bażi l-qadim, mirror tar-registry b'stat qadim jew it-tieni linja FROM f'build b'diversi stadji. Ibni b'--pull u --no-cache u ivverifika kull stadju.

**Dependabot jista' jaġġorna images bażi?**  
Skont id-dokumentazzjoni ta' GitHub, Dependabot jappoġġja l-ekosistema Docker għal aġġornamenti tal-verżjonijiet u tas-sigurtà. Jipproponi bidliet fl-images bażi bħala pull request. Il-bini mill-ġdid b'tag li jibqa' l-istess dan ma jissostitwihx.

## Sorsi

- [GitHub Docs: Avvenimenti li jattivaw workflows (schedule)](https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows)
- [GitHub Docs: Ekosistemi appoġġati minn Dependabot](https://docs.github.com/en/code-security/dependabot/ecosystems-supported-by-dependabot/supported-ecosystems-and-repositories)
- [Docker Hub: Image uffiċjali ta' PHP](https://hub.docker.com/_/php)
- [PHP: Verżjonijiet appoġġati](https://www.php.net/supported-versions.php)
