تشغيل متغيرات البيئة والأسرار في GitHub Actions

إذا كنت جديدًا على متغيرات البيئة في 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 عندما يتم تشغيل الكود المؤدي إلى سير العمل.

name: env_tutorial
## يُشغل سير العمل عند حدوث دفعة أو 
## طلب سحب في الفرع الرئيسي
on: [pull_request, push] 

env:
  ## يقوم بتعيين متغير البيئة
  API_KEY: XXXXXXXXXXXX    

jobs:
  job1:
    ## نوع العامل الذي ستعمل عليه المهمة، 
    ## هنا يتم تشغيله على آخر إصدار من أوبونتو
    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. انقر على علامة التبويب الإجراءات، ثم انقر على التزامك الحالي.

سترى شيئًا مشابهًا للصورة أدناه، والتي تُظهر أن GitHub قام بتشغيل سير العمل.

GitHub actions Environment variables for repository

5. أخيرًا ، انقر على إما العمل1 أو العمل2 ، وسترى أنك قمت بالإشارة بنجاح إلى المتغير البيئي الذي قمت بتهيئته.

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 ، ثم انقر على كل من العمل1 و العمل2 لرؤية مقارنتهما:

  • الوظيفة1 – سترى أنك قمت بالإشارة إلى المتغير البيئي بشكل مثالي.
  • الوظيفة2 – مفتاح الواجهة البرمجية فارغ.
Viewing Referenced Environment Variable (job1)
Viewing Referenced Environment Variable (job2)

تعريف متغير البيئة لخطوة

الآن بعد أن تعلمت كيفية تحديد متغيرات البيئة داخل وظيفة، قد تتساءل كيف يمكنك القيام بالشيء نفسه مع الخطوات.

بالنسبة للخطوات في وظيفة، تحدد متغير البيئة داخل الخطوة كما فعلت للوظيفة.

1. استبدل الكود الذي لديك على ملف main.yml بالكود أدناه.

في الكود أدناه، قم بتحديد المتغير البيئي في الخطوة 1 ولكن ليس في الخطوة 2، وسترى التأثير في الخطوات التالية.

name: env_tutorial
## يشغل سير العمل عندما يكون هناك دفعة، أو 
## طلب سحب في الفرع الرئيسي
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
## يشغل سير العمل عند حدوث دفعة، أو 
## طلب سحب في الفرع الرئيسي
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 – يوفر معرف الوظيفة الحالية.
  • GITHUB_ACTION – يوفر معرف الإجراء الحالي
  • GITHUB_ACTION_PATH – يوفر المسار الذي يوجد فيه إجراءك.
  • GITHUB_ACTOR – يوفر اسم الشخص أو التطبيق الذي بدأ سير العمل، مثل اسم مستخدمك في GitHub.
  • GITHUB_RUN_ID – يوفر الرقم الفريد لأمر run.

استبدل ما لديك في ملف main.yml بالكود أدناه. الكود أدناه يعرض المتغيرات البيئية الافتراضية المذكورة في الكود.

name: env_tutorial
## يشغل سير العمل عند حدوث دفعة أو
## طلب سحب على الفرع الرئيسي
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"

قم بتأكيد ودفع تغييرات الكود إلى GitHub، ثم قم بفحص الإجراءات في مشروع متغيرات البيئة في GitHub Actions الخاص بك، وسترى شيئًا مشابهًا للصورة أدناه.

Referencing the Default GitHub environment variables

الختام

طوال هذا البرنامج التعليمي، لقد تعلمت كيفية إدارة متغيرات البيئة في GitHub Actions. يجب أن تكون الآن لديك معرفة أساسية حول تخزين متغيرات البيئة بشكل آمن وكيفية استخدام تلك الافتراضية المقدمة من GitHub.

الآن كيف تخطط لدمج هذه المعرفة الجديدة عند العمل مع GitHub Actions؟ ربما حفظ مفاتيح الواجهة البرمجية المطلوبة للنشر؟

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