פוסט
GitHub מאפס לגיבור: Actions, Pages ו-releases
חלק 4 במדריך ל-GitHub: workflow ראשון ב-Actions, secrets והרשאות, פרסום אתר עם GitHub Pages, releases עם הערות אוטומטיות, Codespaces ו-Copilot.
את ה-pull requests מחלק 2 מישהו צריך לבדוק, וספר המתכונים עדיין לא אתר. GitHub יכול לעשות את שניהם.
Actions: מניחים ל-GitHub להריץ את הבדיקות
GitHub Actions מריץ אוטומציה בתגובה למה שקורה בריפוזיטורי:
- Workflow הוא קובץ YAML ב-
.github/workflows/. בריפוזיטורי יכולים להיות הרבה. - Event מפעיל אותו: push, pull request, לוח זמנים, או כפתור ידני.
- ב-workflow יש jobs. הם רצים במקביל, אלא אם אחד מצהיר
needs: other-job. - כל job רץ על runner, מכונה חדשה (GitHub מארח כאלה ל-Linux, ל-macOS ול-Windows).
- job הוא רשימת steps: פקודת shell (
run:) או action לשימוש חוזר (uses:) מה-Marketplace.
workflow ראשון לפרויקט שלנו, שמור בתור .github/workflows/ci.yml:
name: CI
on:
pull_request:
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm test
בכל pull request ו-push ל-main הוא מרים מכונת Ubuntu חדשה, מוריד את הקוד, מתקין Node 24 ואת התלויות, ומריץ את הבדיקות. פותחים PR, ונקודה צהובה הופכת לוי ירוק או ל-X אדום. הלשונית Actions מראה את הלוגים של כל הרצה.
gh run list --limit 5 # הרצות אחרונות
gh run watch # לעקוב אחרי הרצה בזמן אמת
- נותנים לרובוט להיות קפדן (בדיקות, lint, טיפוסים) כדי שבני אדם ידברו על עיצוב.
- Secrets: שומרים סיסמאות וטוקנים ב-Settings → Secrets and variables → Actions ומשתמשים בהם בתור
${{ secrets.MY_TOKEN }}. לעולם לא כותבים אותם ב-YAML. - הרשאות: המפתח
permissions:מגביל מה הטוקן האוטומטי רשאי לעשות. מתחילים מ-contents: readומוסיפים רק מה ש-job צריך. - PRs מ-forks לא מקבלים את ה-secrets שלנו.
- מקבעים גרסאות של actions (
@v5), כדי ש-workflow לא ישתנה מתחת לרגליים. - לשימוש החינמי יש מגבלות שתלויות בתוכנית ובשאלה אם הריפוזיטורי ציבורי; בודקים את דף התמחור לפני בניות כבדות.
ל-matrix, מטמון, סביבות, פריסה עם OIDC ואבטחת workflows, ראו GitHub Actions מאפס לגיבור.
Pages: מפרסמים אתר מריפוזיטורי
GitHub Pages מגיש קבצים סטטיים (HTML, CSS, JS) בחינם בכתובת https://<user>.github.io/<repo>/. הבלוג הזה מתפרסם כך. יש שני מקורות פרסום, שבוחרים ב-Settings → Pages:
- מענף: Pages מגיש תיקייה (השורש או
/docs) של ענף שנבחר. הכי פשוט ל-HTML שכתוב ביד או לאתרי Jekyll. - מ-GitHub Actions: workflow בונה את האתר כפי שנגדיר ומעלה את התוצאה. הכי מתאים כשיש שלב build (הבלוג הזה הוא אפליקציית Angular שנבנית, נבדקת ועוברת prerender קודם).
דרך ה-Actions בונה, מעלה את הפלט בתור Pages artifact ופורסת אותו. הליבה של ה-workflow של הבלוג הזה:
permissions:
contents: read
pages: write
id-token: write
steps:
- uses: actions/checkout@v5
# ... התקנה ובנייה ...
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v4
with:
path: dist
- uses: actions/deploy-pages@v4
כל מיזוג ל-main מפרסם מחדש את האתר, כך שפרסום הופך ל"למזג PR". שתי מלכודות: אתר שמוגש מ-/<repo>/ צריך נתיב בסיס נכון בקישורים, ו-pushes שנעשים על ידי workflow עם GITHUB_TOKEN ברירת המחדל לא מפעילים בניית Pages נוספת.
Releases ו-tags
Tag נותן שם ל-commit אחד, ו-release הוא tag עם הערות וקבצים להורדה, שמוצג בדף הראשי של הריפוזיטורי.
git tag -a v1.0 -m "First release"
git push --tags
gh release create v1.0 --generate-notes
הדגל --generate-notes בונה את ה-changelog מה-PRs שמוזגו מאז ה-release הקודם, עוד סיבה לכותרות טובות ל-PRs. גרסאות כמו v1.4.2 בדרך כלל עוקבות אחרי semantic versioning: מעלים את המספר הראשון לשינויים שוברים, את השני לפיצ׳רים, ואת השלישי לתיקונים. כמו ב-commits וב-PRs, קטן ותכוף עדיף על גדול ונדיר.
Codespaces ו-Copilot
- Codespaces נותן סביבת פיתוח בענן, בדפדפן או ב-VS Code, עם הריפוזיטורי והכלים שלו מוכנים. נוח לקליטת אנשים חדשים בצוות או לתיקון מהיר ממחשב שאול. לוחצים
.בכל דף ריפוזיטורי לעורך אינטרנט קל, לעריכה בלבד. - GitHub Copilot הוא עוזר ה-AI של GitHub. הוא משלים קוד, עונה על שאלות על ריפוזיטורי, ויכול לקחת issue ולפתוח PR לביקורת. תוכניות ומגבלות משתנות לעתים קרובות, אז בודקים את דף התמחור של GitHub. בכל מקרה, ממזגים רק מה שהבנו.
כדי שהלולאה תיכנס לידיים, עושים אותה פעם אחת באמת: fork לפרויקט קוד פתוח קטן, תיקון שגיאת כתיב בתיעוד שלו, ופתיחת PR. דף העזר שלי ל-Git מכסה את הצד של Git. כדי לארוז אפליקציה כך שתרוץ אותו דבר בכל מקום (וגם על ה-runners של Actions), ראו Docker מאפס לגיבור. ה-Docs של GitHub והקורסים החינמיים ב-skills.github.com הם המשך טוב.