מבוא
GitLab CI היא מערכת אינטגרציה רציפה חזקה, אך ניהול runners על שרתים יכול להיות מורכב. Podman Quadlets ו-systemd מספקים פתרון אלגנטי: ה-runner פועל כיחידת systemd, מופעל מחדש אוטומטית ומנוהל עם כלים סטנדרטיים.
Podman Quadlets
Quadlets הם תכונה חדשה יחסית ב-Podman שמאפשרת לתאר קונטיינרים בפורמט יחידות systemd. קובץ .container ממוקם ב-~/.config/containers/systemd/ ומומר אוטומטית לשירות systemd.
אינטגרציית Systemd
לאחר יצירת קובץ ה-quadlet, systemd מייצר אוטומטית שירות. הניהול משתמש בפקודות סטנדרטיות: daemon-reload, start, enable, status — אותו תהליך עבודה כמו כל שירות systemd.
תצורת Runner
תצורת GitLab Runner נמצאת ב-config.toml ומותקנת לקונטיינר. המפתח הוא הגדרת ה-executor — עבור Podman, משתמשים ב-executor docker אך עם סוקט Podman במקום.
דוגמאות צינורות
צינור CI טיפוסי לפרויקט Python כולל שלבים: lint (ruff), test (pytest), build (podman build) ו-deploy (דחיפה לרגיסטרי). כל שלב רץ בקונטיינר מבודד.
שיקולי אבטחה
Podman ללא root מספק שכבת אבטחה נוספת. ה-runner רץ כמשתמש ללא הרשאות, קונטיינרי CI מבודדים על ידי user namespaces.
ניטור ולוגים
לוגי runner נגישים דרך journalctl --user. ניטור מצב השירות משתמש ב-systemctl --user is-active, שמשתלב עם מערכות ניטור קיימות.
סיכום
Podman Quadlets הופכים קונטיינרים לשירותי systemd מלאים עם הפעלה אוטומטית, הפעלה מחדש וניהול סטנדרטי. עבור GitLab Runner, זה אומר תשתית CI אמינה, מאובטחת וקלה לתחזוקה.