משימה 2: ה‑pipeline, ריק

במשימה הזאת כותבים שלושה קובצי workflow, אחד לכל אירוע:

Workflowרץ עלהתפקיד שלו
Branchpush ל‑topic branchהלולאה של המפתח עצמו: משוב מהיר תוך כדי עבודה; הוא לא חוסם כלום
Pull requestpull request ל‑main, וכל commit חדש בוהשער: ה‑checks שלו והאישור מחליטים אם שינוי מגיע ל‑main
Mergemerge לתוך main‏delivery: מה שעבר את השער נעשה image ועולה ל‑deployment
  • ה‑workflow של ה‑pull request הוא השער היחיד. ה‑workflow של ה‑branch רץ בין אם בסוף נפתח pull request ובין אם לא.
  • אף אחד לא עושה push ל‑main אחרי שמשימה 3 מגינה עליו: הכתיבות היחידות ל‑main הן merges של pull requests מאושרים. GitHub רושם merge כ‑push, ולכן ה‑workflow של ה‑merge אומר on: push ל‑main.
  • ה‑workflow של ה‑merge לא מריץ tests שוב: ה‑pull request כבר בדק את הקוד הממוזג. הוא בודק רק שה‑deployment עובד.

אף אחד מהם עוד לא עושה עבודה אמיתית:

  • כל job רק מדפיס מה הוא יעשה.
  • לומדים איזה אירוע מריץ אילו jobs, ובאיזה סדר, כל עוד ה‑jobs לוקחים שניות.
  • משימות מאוחרות יותר מחליפות placeholder אחד בכל פעם בעבודה אמיתית.

רענון על workflows (באנגלית): GitHub Actions Workflows: the Structure of the File.

כתבו את ה‑workflow של ה‑branch

  • ‏.github/workflows/branch.yml, ‏on: push לכל branch חוץ מ‑main.
  • Jobs: ‏lint, ‏unit-tests. TODO: הקובץ.

כתבו את ה‑workflow של ה‑pull request

  • ‏.github/workflows/pr.yml, ‏on: pull_request ל‑main.
  • Jobs: ‏lint, ‏unit-tests, ‏integration-tests, ‏security, ‏image-build.
  • ‏needs: קובע את הסדר ביניהם: TODO: מי מחכה למי, והגרף שזה מצייר.

כתבו את ה‑workflow של ה‑merge

  • ‏.github/workflows/merge.yml, ‏on: push ל‑main: ‏merge, ממשימה 3.
  • Jobs: ‏image-push, ‏deploy, ‏smoke-test, בשרשרת של needs:.
    • ‏image-push בונה את ה‑image מה‑commit הממוזג ומתייג אותו ב‑SHA שלו.
    • ‏smoke-test קורא לאפליקציה שעלתה: ‏GET /healthz, ואז ספר אחד נוצר, נקרא ונמחק.

עשו push ל‑branch, וקראו את ה‑run שלו

  • פתחו issue, ‏"Try the pipeline": נניח שהוא #3.
  • צרו את ה‑branch שלו, ‏ci/3-try-the-pipeline, כמו ש התוכנית קוראת ל‑branches; שנו שורה, עשו commit ו‑push.
  • רק ה‑workflow של ה‑branch רץ. TODO: מה מראה הלשונית Actions.

פתחו pull request, וקראו את ה‑run שלו

  • ה‑workflow של ה‑pull request רץ; ה‑jobs שלו מופיעים כ‑checks על ה‑pull request.
  • עשו לו merge: עוד שום דבר לא עוצר אתכם. משימה 3 מוסיפה את השער.

קראו את ה‑run של ה‑merge

  • ה‑merge כותב ל‑main, ולכן ה‑workflow של ה‑merge רץ.
  • גרף ה‑jobs: ה‑image, אחריו ה‑deploy, ואחריו ה‑smoke test.

Translations: