כיצד פעולות GitHub הופך משימות פיתוח לאוטומטיות?

הושלמה

כאן, אנו מציגים פעולות וזרימות עבודה של GitHub. תלמד את סוגי הפעולות שבהן תוכל להשתמש והיכן למצוא אותן. בנוסף, אתה מעיין בדוגמאות של סוגים אלה של פעולות וכיצד הן משתלבות בזרימת עבודה.

GitHub מקטין את הזמן מה רעיון לפריסה

GitHub נועד לעזור לצוותים של מפתחים ומהנדסי DevOps לבנות ולפרוס אפליקציות במהירות. קיימות תכונות רבות ב- GitHub המאפשרות יעילות אלה, אך בדרך כלל הן משתי קטגוריות:

  • תקשורת: שקול את כל הדרכים שבהן GitHub מקל על צוות של מפתחים לתקשר על פרוייקט פיתוח התוכנה: ביקורות קוד בבקשות משיכה, בעיות GitHub, לוחות פרוייקטים, דפי Wiki, הודעות וכן הלאה.
  • אוטומציה: פעולות GitHub מאפשרות לצוות שלך להפוך זרימות עבודה לאוטומטיות בכל שלב בתהליך פיתוח התוכנה, החל משילוב וכלה בפריסה. הוא גם מאפשר לך להפוך את הוספת התוויות לאוטומטית כדי למשוך בקשות ולבדוק אם קיימים בעיות מיוישות ובקשות משיכה.

בשילוב, תכונות אלה אפשרו לאלפי צוותי פיתוח להפחית ביעילות את משך הזמן שנדרש מה רעיון הראשוני שלהם לפריסה.

שימוש באוטומציית זרימת עבודה כדי להפחית את זמן הפיתוח

במודול זה, אנו מתמקדים באוטומציה. נידרש כמה רגעים כדי להבין כיצד צוותים יכולים להשתמש באוטומציה כדי להפחית את משך הזמן שנדרש להשלמת זרימת עבודה טיפוסית של פיתוח ופריסה.

שקול את כל המשימות שיש לבצע לאחר הקוד נכתב, אך לפני שתוכל להשתמש בקוד באופן מהימן למטרתו המיועדת. בהתאם למטרות הארגון שלך, ייתכן שתצטרך לבצע אחת או יותר מהמשימות הבאות:

  • ודא שהקוד עובר את כל בדיקות היחידות.
  • בצע בדיקות איכות ותאימות של קוד כדי לוודא שקוד המקור עומד בתקני הארגון.
  • בדוק את הקוד ואת יחסי התלות שלו עבור בעיות אבטחה מוכרות.
  • בנה את הקוד על-ידי שילוב קוד מקור חדש ממשתתפים מרובים (פוטנציאלי).
  • ודא שהתוכנה עוברת בדיקות שילוב.
  • ציין את הגירסה של גירסת ה- Build החדשה.
  • העבר את הקבצים הבינאריים החדשים למיקום המתאים של מערכת הקבצים.
  • פרוס את הבינאריים החדשים בשרת אחד או יותר.
  • קבע אם אחת מפעילויות אלה לא תעבור, ודווח על הבעיה לבודד או לצוות המתאים לפתרון.

האתגר הוא לבצע משימות אלה בצורה מהימנה, עקבית ובצורה ברת-קיימא. תהליך זה הוא משימה אידיאלית לאוטומציית זרימת עבודה. אם אתה כבר מסתמכות על GitHub, ייתכן שתרצה להגדיר את אוטומציית זרימת העבודה באמצעות פעולות GitHub.

מהן פעולות GitHub?

GitHub הם קבצי Script ארוזים כדי להפוך משימות לאוטומטיות בזרימת עבודה של פיתוח תוכנה ב- GitHub. באפשרותך לקבוע את התצורה של פעולות GitHub כדי להפעיל זרימות עבודה מורכבות שעומדות בצרכים של הארגון שלך. הגורם המפעיל יכול להתרחש בכל פעם שמפתחים בודקים קוד מקור חדש לתוך ענף ספציפי, במרווחי זמן מתוזמנים או באופן ידני. התוצאה היא זרימת עבודה אוטומטית מהימנה וניתנת לקיום, המובילה לירידה משמעותית בזמן הפיתוח.

היכן תוכל למצוא פעולות GitHub?

פעולות GitHub הן קבצי Script המצייתים לתבנית נתוני yml. לכל מאגר יש כרטיסיה פעולות המספקת דרך מהירה וקלה להתחיל בהגדרת קובץ ה- Script הראשון שלך. אם אתה רואה זרימת עבודה שלדעתך היא נקודת התחלה נהדרת, פשוט בחר את לחצן קבע תצורה כדי להוסיף את קובץ ה- Script ולהחיל לערוך את yml המקור.

מסך של הכרטיסיה *פעולות* בפעולות GitHub המציג זרימת עבודה פשוטה ולחצן כדי להגדיר זרימת עבודה זו.

עם זאת, מעבר לפעולות GitHub המוצגות בכרטיסיה פעולות, באפשרותך:

  • חפש פעולות GitHub GitHub Marketplace. GitHub Marketplace מאפשר לך לגלות ולרכוש כלים שמרחיבים את זרימת העבודה שלך.
  • חפש פרוייקטים של קוד פתוח. לדוגמה, הפעולות GitHub מאגרי קוד פתוח פופולריים רבים המכילים פעולות GitHub שניתן להשתמש בהן.
  • כתוב פעולות GitHub משלך מאפס. באפשרותך להפוך אותם למקור פתוח, או אפילו לפרסם אותם ב- GitHub Marketplace.

שימוש בפעולות GitHub של קוד פתוח

פעולות GitHub רבות הן קוד פתוח וזמין לכל מי שרוצה להשתמש בהן. עם זאת, בדיוק כמו בכל תוכנה של קוד פתוח, עליך לבדוק אותן בקפידה לפני השימוש בהן בפרוייקט. בדומה לתקני קהילה מומלצים עם תוכנות קוד פתוח כגון README, קוד התנהגות, קובץ תורם ותבניות נושא, באפשרותך לפעול בהתאם להמלצות אלה בעת שימוש בפעולות GitHub:

  • סקור את קובץ ה- action.yml של הפעולה כדי לאתר יחידות קלט, פלטים, וודא שהקוד עושה מה שהוא אומר שהוא עושה.
  • בדוק אם הפעולה נמצאת ב- GitHub Marketplace. בדיקה זו כדאית, גם אם פעולה אינה חייבת להיכלל ב- GitHub Marketplace כדי להיות תקפה.
  • בדוק אם הפעולה מאומתת ב- GitHub Marketplace. אימות פירושו ש- GitHub אישר את השימוש בפעולה זו. עם זאת, עדיין עליך לסקור אותו לפני השימוש בו.
  • כלול את גירסת הפעולה שבה אתה משתמש על-ידי ציון Git ref, SHA או תגית.

סוגים של פעולות GitHub

קיימים שלושה סוגים של פעולות GitHub: פעולות גורם מכיל, פעולות JavaScript ופעולות מורכבות.

כאשר גורם מכיל, הסביבה מהווה חלק מקוד הפעולה. ניתן להפעיל פעולות אלה רק בסביבת Linux המארחת את GitHub. פעולות גורם מכיל תומכות בשפות רבות ושונות.

JavaScript אינן כוללות את הסביבה בקוד. עליך לציין את הסביבה לביצוע פעולות אלה. באפשרותך להפעיל פעולות אלה במחשב וירטואלי (מחשב וירטואלי) בענן או באופן מקומי. פעולות JavaScript תומכות בסביבות Linux, macOS ו- Windows.

שילובים מאפשרות לך לשלב שלבים מרובים של זרימת עבודה בתוך פעולה אחת. לדוגמה, באפשרותך להשתמש בתכונה זו כדי לאבץ יחד פקודות הפעלה מרובות לתוך פעולה, ולאחר מכן ליצור זרימת עבודה שמבצעת את הפקודות הכלולות בחבילה כצעד יחיד באמצעות פעולה זו.

האנטומיה של פעולת GitHub

להלן דוגמה לפעולה שמבצעת הוצאת קובץ של מאגר. פעולה זו, פעולות/checkout@v1, מהווה חלק משלב בזרימת עבודה. שלב זה גם בונה Node.js הקוד שהוצג. נדבר על זרימות עבודה, עבודות ועל שלבים בסעיף הבא.

steps:
  - uses: actions/checkout@v1
  - name: npm install and build webpack
    run: |
      npm install
      npm run build

נניח שברצונך להשתמש בפעולה של גורם מכיל להפעלת קוד המכיל. הפעולה שלך עשויה להיראות כך:

name: "Hello Actions"
description: "Greet someone"
author: "octocat@github.com"

inputs:
    MY_NAME:
      description: "Who to greet"
      required: true
      default: "World"

runs:
    uses: "docker"
    image: "Dockerfile"

branding:
    icon: "mic"
    color: "purple"

שים לב למקטע inputs זה. כאן, אתה מקבל את הערך של משתנה שנקרא MY_NAME. משתנה זה מוגדר בזרימת העבודה שמפעילה פעולה זו.

במקטע runs, שים לב docker בתכונה 'uses'. בעת הגדרת ערך זה, עליך לספק את הנתיב לקובץ התמונה של Docker. במקרה זה, Dockerfile. איננו מכסים את פרטי Docker כאן, אך אם אתה מעוניין במידע נוסף, עיין במודול מבוא לגורמים מכילים של Docker .

הסעיף האחרון, המיתוג, מותאם אישית את הפעולה שלך ב- GitHub Marketplace אם תחליט לפרסם אותו שם.

באפשרותך למצוא רשימה מלאה של מטה-נתונים של פעולה בתחביר נתונים עבור פעולות GitHub.

מהי זרימת עבודה של פעולות GitHub?

זרימת של פעולות GitHub היא תהליך שאתה מגדיר במאגר שלך כדי להפוך משימות מחזור חיים של פיתוח תוכנה לאוטומטיות, כולל פעולות GitHub. באמצעות זרימת עבודה, באפשרותך לבנות, לבדוק, לארוז, לשחרר ולפרוס כל פרוייקט ב- GitHub.

כדי ליצור זרימת עבודה, עליך להוסיף פעולות .yml במדריך .github/workflows שלך במאגר GitHub.

בתרגיל הבא, קובץ זרימת העבודה main.yml נראה כך:

name: A workflow for my Hello World file
on: push
jobs:
  build:
    name: Hello world action
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - uses: ./action-a
      with:
        MY_NAME: "Mona"

שים לב on: לתכונה, הערך שלה הוא גורם מפעיל המציין מתי זרימת עבודה זו מופעלת. כאן, הוא מפעיל ריצה כאשר יש אירוע דחיפה במאגר שלך. באפשרותך לציין אירועים יחידים כגון on: push, מערך של אירועים כגון on: [push, pull_request], או מפת תצורת אירוע המתזמן זרימת עבודה או מגביל את הביצוע של זרימת עבודה לקבצים, לתגיות או לשינויים ספציפיים בהסתעפות. המפה עשויה להיראות כך:

on:
  # Trigger the workflow on push or pull request,
  # but only for the main branch
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  # Also trigger on page_build, as well as release created events
  page_build:
  release:
    types: # This configuration doesn't affect the page_build event above
      - created

אירוע מפעיל את כל סוגי הפעילויות עבור האירוע, אלא אם תציין את הסוג או הסוגים. לקבלת רשימה מקיפה של אירועים וסוגי הפעילויות שלהם, ראה: שמפעילים זרימות עבודה בתיעוד של GitHub.

זרימת עבודה חייבת לכלול לפחות משימה אחת. משימה היא מקטע של זרימת העבודה המשויכת לרץ . רץ יכול להיות מתארח ב- GitHub או מתארח באופן עצמי, והמשימה יכולה לפעול במחשב או במרכיבים מכילים. עליך לציין את הרץ עם runs-on: התכונה. כאן, אתה אומר לזרימת העבודה להפעיל משימה זו ב- ubuntu-latest.

לכל משימה יש שלבים שיש להשלים. בדוגמה שלנו, השלב משתמש /checkout@v1 כדי להוציא את המאגר. מה שמעניין הוא ערך uses: ./action-a, שהוא הנתיב לפעולת הגורם המכיל שאתה בונה בקובץ action.yml חדש.

החלק האחרון של קובץ זרימת עבודה זה מגדיר את ערך MY_NAME עבור זרימת עבודה זו. אחזור פעולת הגורם המכיל צילם קלט שנקרא MY_NAME.

לקבלת מידע נוסף אודות תחביר זרימת עבודה, ראה זרימת עבודה עבור פעולות GitHub

הפניה לפעולות בזרימות עבודה

בעת יצירת זרימות עבודה בפעולות GitHub, באפשרותך להפנות לפעולות ממקורות שונים. ניתן להשתמש בפעולות אלה כדי להפוך משימות בזרימות העבודה שלך לאוטומטיות. להלן המקורות העיקריים שבהם זרימות עבודה יכולות להפנות לפעולות:

  1. תמונה של גורם מכיל של Docker שפורסמה ב-Docker Hub
    זרימות עבודה יכולות להפנות לפעולות שמתפרסמות כתמונות של גורמים מכילים של Docker ב-Docker Hub. פעולות אלה מאוחסנות בגורמים מכילים וכוללות את כל יחסי התלות הנדרשים לביצוע הפעולה. כדי להשתמש בפעולה כזו, יש לציין את תמונת ה-Docker בתכונה של שלב תהליך העבודה uses . לדוגמה:

    steps:
      - name: Run a Docker action
        uses: docker://<docker-image-name>:<tag>
    
  2. כל מאגר ציבורי
    ניתן להפנות ישירות לפעולות המתארחות במאגרים ציבוריים בזרימות העבודה שלך. פעולות אלה נגישות לכל אחד וניתן להשתמש בהן על ידי ציון שם המאגר והגרסה (Git ref, SHA או tag) בתכונה uses . לדוגמה:

    steps:
      - name: Use a public action
        uses: actions/checkout@v3
    

[! חשוב]

לאבטחה טובה יותר, השתמש ב-commit SHA מלא בעת הפניה לפעולות - לא רק בתגית כמו @v3.
פעולה זו מבטיחה שתהליך העבודה שלך ישתמש תמיד באותו קוד בדיוק, גם אם הפעולה מתעדכנת או משתנה מאוחר יותר.
דוגמהuses: actions/checkout@c2c1744e079e0dd11c8e0af4a96064ca4f6a2e9e

  1. אותו מאגר כמו קובץ זרימת העבודה שלך
    באפשרותך להפנות לפעולות המאוחסנות באותו מאגר כמו קובץ זרימת העבודה שלך. מאפיין זה שימושי לפעולות מותאמות אישית הספציפיות לפרויקט שלך. להפניה לפעולות כאלה, השתמש בנתיב יחסי לספריית הפעולה. לדוגמה:
    steps:
      - name: Use a local action
        uses: ./path-to-action
    

לקבלת פרטים נוספים, ראה הדרכה להקשחת אבטחה עבור פעולות GitHub.

  1. שוק ארגוני
    אם הארגון שלך משתמש ב- GitHub Enterprise, באפשרותך להפנות לפעולות מה- Marketplace הפרטי של הארגון שלך. פעולות אלה נאספות ומנוהלות על ידי הארגון שלך, ומבטיחות עמידה בתקנים פנימיים. לדוגמה:
    steps:
      - name: Use an enterprise marketplace action
        uses: enterprise-org/action-name@v1
    

הערה

  • ניתן גם להפנות לפעולות במאגרים פרטיים, אך הן דורשות אימות והרשאות מתאימים.
  • בעת הפניה לפעולות, ציין תמיד גרסה (Git ref, SHA או תג) כדי להבטיח עקביות ולהימנע משינויים בלתי צפויים.

לקבלת מידע נוסף, ראה הפניה לפעולות בזרימות עבודה.

GitHub-hosted לעומת רצים באירוח עצמי

הזכרנו בקצרה רצים כמשויכים לעבודה. רץ הוא פשוט שרת שבו מותקנת האפליקציה GitHub Actions Runner. בדוגמה הקודמת של זרימת העבודה, runs-on: ubuntu-latest היתה תכונה בבלוק המשימות, אשר אמרה לזרימת העבודה שהמשימה תרוץ באמצעות הרץ המתארח ב- ubuntu-latest GitHub שפועל בסביבה.

כשמדובר ברצים, קיימות שתי אפשרויות לבחירתן: רצים המתארחים ב- GitHub או רצים באירוח עצמי. אם אתה משתמש ברץ המתארח ב- GitHub, כל משימה פועלת במופע חדש של סביבה וירטואלית. סוג הרץ המתארח ב- GitHub שאתה מגדיר, runs-on: {operating system-version} מכן מציין סביבה זו. עם רצים באירוח עצמי, עליך להחיל את התווית המתארחת עצמית, את מערכת ההפעלה שלה ואת ארכיטקטורת המערכת. לדוגמה, רץ המתארח באופן עצמי עם מערכת הפעלה של Linux וארכיטקטורת ARM32 ייראה כמו המפרט הבא: runs-on: [self-hosted, linux, ARM32].

לכל סוג של רץ יש את היתרונות שלו, אך רצים המתארחים ב- GitHub מציעים דרך מהירה ופשוטה יותר להפעיל את זרימות העבודה שלך, אך עם אפשרויות מוגבלות. רצים באירוח עצמי הם דרך הניתנת להגדרה גבוהה להפעלת זרימות עבודה בסביבה המקומית המותאמת אישית שלך. באפשרותך להפעיל רצים באירוח עצמי באופן מקומי או בענן. באפשרותך גם להשתמש ברצים המתארחים באופן עצמי כדי ליצור תצורת חומרה מותאמת אישית עם יותר כוח עיבוד או זיכרון. סוג זה של תצורה עוזר להפעיל משימות גדולות יותר, להתקין תוכנה הזמינה ברשת המקומית ולבחור מערכת הפעלה שלא מוצעת על-ידי רצים המתארחים ב- GitHub.

לפעולות GitHub יכולות להיות מגבלות שימוש

לפעולות GitHub יש מגבלות שימוש מסוימות, בהתאם לתוכנית GitHub שלך ואם הרץ שלך מתארח או מתארח באופן עצמי. לקבלת מידע נוסף אודות מגבלות שימוש, עיין במגבלות שימוש, חיוב וניהול בתיעוד של GitHub.

GitHub ארח רצים גדולים יותר

GitHub מציע רצים גדולים יותר עבור זרימות עבודה הדורשות משאבים נוספים. רצים אלה מתארחת ב- GitHub ומספקים שטח מוגבר של המעבד, הזיכרון והדיסק בהשוואה לרצים רגילים. הן מיועדות לטפל בזרימות עבודה הצורשות משאבים רבים משאבים ביעילות, ומבטיחות ביצועים מיטביים עבור משימות תובעניות.

גדלים ותוויות של רץ

רצים גדולים יותר זמינים בתצורות מרובות, ומספקים יחידות VCPU משופרות, RAM ואחסון SSD כדי לעמוד בדרישות זרימת עבודה מגוונות. תצורות אלה אידיאליות לתרחישים כגון:

  • הידור מסדי קוד גדולים עם קבצי מקור נרחבים.
  • הפעלת סוויטות בדיקה מקיפות, כולל שילוב ומבחנים מקצה לקצה.
  • מעבד ערכות נתונים גדולות עבור משימות ניתוח נתונים או למידת מכונה.
  • בניית יישומים עם יחסי תלות מורכבים או פלט בינארי גדול.
  • ביצוע הדמיות או מידול חישובי בעל ביצועים גבוהים.
  • מבצע קידוד וידאו, עיבוד או זרימות עבודה אחרות של עיבוד מולטימדיה.

כדי להשתמש ברץ גדול יותר, ציין את תווית הרץ הרצויה בתכונה runs-on של קובץ זרימת העבודה שלך. לדוגמה, כדי להשתמש ברץ עם יחידות CPU של 16 v ו- 64 GB של RAM, עליך להגדיר runs-on: ubuntu-latest-16core.

jobs:
  build:
    runs-on: ubuntu-latest-16core
    steps:
      - uses: actions/checkout@v2
      - name: Build project
        run: make build

רצים גדולים אלה שומרים על תאימות עם זרימות עבודה קיימות על-ידי הכללת אותם כלים מותקנים מראש כמו רצים ubuntu-latest רגילים.

לקבלת מידע נוסף על גדלים של רצים גדולים יותר, עיין בתיעוד של GitHub

ניהול רצים גדולים יותר

GitHub מספק כלים לניהול יעיל של רצים גדולים יותר, ובכך מבטיח ניצול משאבים מיטבי וניהול עלויות. הנה כמה היבטים עיקריים של ניהול רצים גדולים יותר:

ניטור השימוש

באפשרותך לנטר את השימוש של רצים גדולים יותר באמצעות דף השימוש בפעולות GitHub במאגר או בהגדרות הארגון שלך. דף זה מספק תובנות לגבי מספר המשימות שהופעלו, זמן הריצה הכולל והעלויות המשויכות.

ניהול גישה

כדי לשלוט בגישה לרצים גדולים יותר, באפשרותך לקבוע תצורה של מדיניות ברמת הארגון או המאגר. תצורה זו מבטיחה שרק זרימות עבודה או צוותים מורשים יוכלו להשתמש ברצים בעלי משאבים גבוהים אלה.

ניהול עלויות

רצים גדולים יותר נצברו בעלויות נוספות בהתבסס על השימוש שלהם. כדי לנהל עלויות, שקול את ההצעות הבאות:

  • השתמש ברצים גדולים רק עבור זרימות עבודה הדורשות משאבים גבוהים.
  • צמצום זמן הריצה על-ידי מיטוב זרימות עבודה.
  • נטר את פרטי החיוב באופן קבוע כדי לעקוב אחר הוצאות.

שינוי קנה מידה של זרימות עבודה

אם זרימות העבודה שלך דורשות שימוש תכוף ברצים גדולים יותר, שקול להשתמש באסטרטגיות שינוי קנה מידה כגון:

  • שימוש ברצים באירוח עצמי עבור עומסי עבודה ניתנים לחיזוי.
  • פיצול זרימות עבודה למשימות קטנות יותר כדי להפיץ את העומס על פני רצים רגילים.