שחרור משתני סביבת פעולה וסודות של GitHub Actions

אם אתה חדש למשתמשים במשתנים הסביבתיים של GitHub Actions, ייתכן שטרם למדת איך לאחסן אותם. אך האם זה אפשרי? כן!

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

מוכן? קרא הלאה כדי להתחיל!

דרישות מוקדמות

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

הגדרה של משתני סביבת GitHub Actions

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

1. צור ספרייה בשם .github/workflows שם תאחסן את קובץ העבודה שלך.

2. אחרי כך, יש ליצור קובץ בשם המועדף עליך בתיקיית .github/workflows. אך לדוגמה זו, הקובץ יקרא main.yml. יש להעתיק ולהדביק את הקוד לתוך הקובץ main.yml.

הקוד למטה מגדיר ומציג את משתנה הסביבה API_KEY כאשר הקוד מפעיל את תהליך העבודה (workflow).

name: env_tutorial
## מפעיל את התהליך כאשר יש push, או 
## pull request בסניף הראשי
on: [pull_request, push] 

env:
  ## מגדיר משתנה סביבה
  API_KEY: XXXXXXXXXXXX    

jobs:
  job1:
    ## סוג הקורא שהמשימה תרוץ עליו, 
    ## כאן הוא רץ על ubuntu latest
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## מתייחס למשתני הסביבה שלך
        run: echo "The API key is:${{env.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## דרך נוספת להפנות למשתני הסביבה שלך
        run: echo "The API key is:$API_KEY"

3. לשמור ולדחוף את הקוד אל מאגר ה-GitHub שלך.

git add .
git commit -m "update"
git push
Pushing updates to the GitHub Actions environment variables repository

4. כעת, פתח את דפדפן האינטרנט שלך ונווט לפרויקט שלך ב-GitHub. לחץ על לשונית Actions, ואז לחץ על ה-commit הנוכחי שלך.

תראה משהו דומה לדימוי המצורף, המראה שה-GitHub הפעיל את תהליך העבודה.

GitHub actions Environment variables for repository

5. לבסוף, לחץ על job1 או על job2, ותראה שהתייחסת בהצלחה למשתנה הסביבה שאתה איניציאלי.

Viewing Referenced Environment Variable (job1)
Viewing Referenced Environment Variable (job2)

הגדרת משתנה סביבה עבור עבודה

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

1. החלף את הקוד בקובץ ה- main.yml שלך עם הקוד למטה.

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

name: env_tutorial
## מפעיל את הזרימה כאשר יש דחיפה או 
## בקשת משיכה בגילגול הראשי
on: [pull_request, push] 

jobs:
  job1:
    ## סוג המבצע שבו העבודה תרוץ עליו
    runs-on: ubuntu-latest 
    env:
      ## משתנה סביבה
      API_KEY: XXXXXXXXXXXX    
    steps:
      - name: step 1
        ## התייחסות למשתני הסביבה שלך
        run: echo "The API key is:${{env.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## דרך נוספת להתייחס למשתני הסביבה שלך
        run: echo "The API key is:$API_KEY"  

2. צפו בשינויים שלך ודחפו עבודות מהקוד שלך לסביבת פעולת הפעולה ב-GitHub כמו שעשית במקטע הקודם.

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

  • עבודה 1 – תראה שהתייחסת למשתנה הסביבה בצורה מושלמת.
  • עבודה 2 – מפתח ה- API ריק.
Viewing Referenced Environment Variable (job1)
Viewing Referenced Environment Variable (job2)

הגדרת משתנה סביבתי עבור שלב

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

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

1. החלף את הקוד שיש לך בקובץ main.yml עם הקוד שלמטה.

בקוד שלמטה, אתה מציין את המשתנה הסביבתי ב־שלב 1 אך לא ב־שלב 2, ותראה את ההשפעה בשלבים הבאים.

name: env_tutorial
## מפעיל את תהליך העבודה כאשר יש push או 
## בקשת משיכה בסניף הראשי
on: [pull_request, push] 

jobs:
  job1:
    ## סוג הראנר שבו תרוץ העבודה
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        env:
          ## משתנה סביבתי עבור שלב 1
          API_KEY: XXXXXXXXXXXX    
        ## התייחס למשתני הסביבה שלך
        run: echo "The API key is:${{env.API_KEY}}"   
      - name: step 2
        ## התייחס למשתני הסביבה שלך
        run: echo "The API key is:${{env.API_KEY}}"   

2. כעת בצע את השינויים והעלה את הקוד ל־GitHub.

3. לבסוף, נווט אל הפרויקט שלך במשתני סביבה של GitHub Actions, ולחץ על עבודה 1.

אף על פי שאתה מתייחס לשני מפתחות API באותה עבודה (עבודה 1) בשני השלבים, שלב 2 לא יכול לבדוק את מפתח ה- API (ריק), כפי שמוצג למטה. למה? מכיוון שלא ציינת את משתנה הסביבה בתוך שלב 2 בקוד שלך.

Setting environment variables for steps

ניהול משתני סביבה דרך משתנים סביבתיים וסודות של GitHub Actions

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

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

כדי לאחסן את משתנה הסביבה שלך בסודות GitHub:

1. תחילה, העלה את הקוד שלך ל-GitHub כפי שעשית בסעיפים הקודמים.

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

לחץ על סודות בתוך הכרטיסייה למטה כדי להתחיל להוסיף סוד.

Storing environment variables in Secrets

3. לאחר מכן, לחץ על סוד חדש למאגר, ותראה טופס למילוי פרטי הסוד שאתה מוסיף.

Creating new repository secret

4. מלא את הטופס באופן תואם (שם ו־ערך) ולחץ על כפתור הוסף סוד כדי לשלוח. כעת ה-API_KEY נשמר בסודות GitHub. בטופס זה, GitHub מגדירה באופן מאובטח משתני סביבה כסודות שתוכל להפנות אליהם בעת עבודה עם GitHub Actions.

Filling name and value of the new secret

5. ערוך את קובץ ה־main.yml שלך והחלף את המילה המפתח env ב־secrets.

למטה, תראה שאתה מתייחס למפתח ה־API בפורמט זה ${{secrets.API_KEY}} במקום להכניס את מפתח ה־API ישירות.

name: env_tutorial
## מפעיל את זרימת העבודה כאשר יש push או 
## בקשת משיכה בענף הראשי
on: [pull_request, push] 

jobs:
  job1:
    ## סוג הרץ שבו המשימה תרוץ
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## התייחסות למשתני הסביבה שלך
        run: echo "The API key is:${{secrets.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## התייחסות למשתני הסביבה שלך
        run: echo "The API key is:${{secrets.API_KEY}}"  

6. לבסוף, העלה והגש את הקוד ל־GitHub, ונווט לפרוייקט שלך בסביבת המשימות של GitHub. התייחס לחלק הראשון.

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

Displaying API key from GitHub Actions environment variables secrets

מתייחס למשתנים הסביבתיים של GitHub ברירת מחדל

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

כמה מהנתיבים שניתן לקבל עם משתני הסביבה המוגדרים מראש הם:

  • GITHUB_JOB – מספק את ה־job_id של העבודה הנוכחית.
  • GITHUB_ACTION – מספק את ה־id של הפעולה הנוכחית
  • GITHUB_ACTION_PATH – מספק את הנתיב בו ממוקמת הפעולה שלך.
  • GITHUB_ACTOR – מספק את שם האדם או האפליקציה שהפעילו את הזרימה, כמו שם המשתמש שלך ב־GitHub.
  • GITHUB_RUN_ID – מספק את המספר הייחודי של פקודת run.

החלף את מה שיש לך בקובץ main.yml שלך בקוד למטה. הקוד מציג את משתני הסביבה הברירתיים המצויינים בקוד.

name: env_tutorial
## מפעיל את הזרימה כאשר יש push או 
## pull request בסניף הראשי
on: [pull_request, push] 

jobs:
  job1:
    ## סוג הראנר שבו תרוץ העבודה
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        run: |
          echo "The job_id is: $GITHUB_JOB"   # התייחס למשתני הסביבה הברירתיים
          echo "The id of this action is: $GITHUB_ACTION"   # התייחס למשתני הסביבה הברירתיים
          echo "The run id is: $GITHUB_RUN_ID" 
          echo "The GitHub Actor's username is: $GITHUB_ACTOR"
      - name: step 2
        run: |
          echo "The run id is: $GITHUB_RUN_ID"

בצע commit וpush לשנות את הקוד ב־GitHub, בדוק את הפעולות שלך בפרויקט משתני הסביבה של GitHub Actions שלך, ותראה משהו דומה לדימוי התמונה למטה.

Referencing the Default GitHub environment variables

סיכום

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

עכשיו איך אתה מתכוון לשבץ את הידע החדש שלך בעת עבודה עם פעולות github? אולי לשמור על מפתחות ה- api הנדרשים להפצה?

Source:
https://adamtheautomator.com/github-actions-environment-variables/