الـ variables في Actions¶
ملاحظة
تحتاج هذه الميزة إلى تفعيل Actions على الـ repository من Settings ← Advanced Settings ← Enable Repository Actions، وإلى runner متاح يوفّره مدير الخدمة. إن لم يظهر تبويب Actions في الـ repository فالميزة غير متاحة بعد، وكل ما هنا ينطبق «إن كانت مفعّلة».
الـ variable قيمة إعداد غير سرّية — اسم بيئة، أو رقم إصدار أداة، أو عنوان خادم — تحفظها مرة
واحدة في ليڤانت غيت (LevantGit) وتقرأها من أي workflow بالتعبير ${{ vars.NAME }}، بدل تكرارها
في كل ملف YAML. تظهر قيمتها في الواجهة ولا تُحجب من السجل؛ فما يجب إخفاؤه يوضع secret لا
variable.
الـ variable مقابل الـ secret¶
| الـ variable | الـ secret | |
|---|---|---|
| الغرض | قيم إعداد عادية | كلمات سر و tokens ومفاتيح |
| هل تُقرأ من الواجهة بعد الحفظ؟ | نعم | لا |
| هل تُحجب من السجل؟ | لا | نعم |
| السياق في YAML | ${{ vars.NAME }} |
${{ secrets.NAME }} |
القاعدة بسيطة: إن كان ظهور القيمة في السجل أو لشخص آخر مشكلةً، فهي secret لا variable. راجع صفحة الـ secrets.
مستويات الـ variables¶
تستطيع إنشاء الـ variable في ثلاثة مستويات، ويتحدّد المستوى بالمكان الذي تنشئه فيه:
- الـ repository: Settings ← Actions ← Variables. متاح لـ workflows هذا الـ repository فقط.
- الـ organization: إعدادات الـ organization ← Actions ← Variables. متاح لكل repositories الـ organization.
- المستخدم: Settings في حسابك ← Actions ← Variables. متاح لكل repositories الشخصية.
اضغط Add Variable واكتب الاسم والقيمة. انتبه: يُحوَّل الاسم إلى أحرف كبيرة عند الحفظ،
فإن سمّيته node_version يُخزَّن باسم NODE_VERSION، وعليك أن تكتبه بالأحرف الكبيرة في ملف
YAML.
قواعد التسمية¶
- حروف لاتينية (
a-z،A-Z) وأرقام (0-9) وشرطة سفلية (_) فقط، دون مسافات. - لا يبدأ بالسابقة
GITHUB_ولاGITEA_. - لا يبدأ بـ
CI. - لا يبدأ برقم.
- غير حسّاس لحالة الأحرف.
- فريد في مستواه (لا variableان بالاسم نفسه في الـ repository الواحد أو الـ organization الواحدة).
استخدام الـ variable في الـ workflow¶
بعد إنشائه يصبح الـ variable متاحًا تلقائيًا في السياق vars، ويُقرأ بالتعبير
${{ vars.VARIABLE_NAME }}. مثال يستخدم variable باسم NODE_VERSION لاختيار إصدار Node.js:
name: Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ vars.NODE_VERSION }}
- run: npm ci
- run: npm test
عندما تريد ترقية إصدار Node.js في كل repositories الـ organization، تغيّر قيمة الـ variable مرة واحدة على مستوى الـ organization، دون أن تلمس أي ملف YAML.
ماذا لو تكرّر الاسم في مستويين؟¶
إن وُجد variable بالاسم نفسه في أكثر من مستوى، فالأولوية للمستوى الأقرب إلى الـ repository: variable الـ repository يُختار دائمًا قبل variable الـ organization أو المستخدم. هذا يسمح بقيمة افتراضية عامة مع استثناء محلي في repository معيّن.
نصيحة
إن كان الـ variable يخصّ workflow واحدًا فقط، فقد يكون من الأبسط تعريفه في الملف نفسه تحت
env: على مستوى الـ workflow. استخدم variables الواجهة عندما تريد تغيير القيمة دون commit
جديد، أو مشاركتها بين عدة repositories.
ماذا بعد؟¶
- الـ secrets: للقيم الحسّاسة.
- الـ badge: اعرض حالة الـ workflow في README.
- أسئلة شائعة: السياقات والفروق عن GitHub.
هذه الصفحة مبنية على وثائق Gitea (رخصة MIT) بعد ترجمتها وتبسيطها.