أدخلت ADAMANT Release Drafter تلقائية لإنشاء ملاحظات الإصدار عبر مستودعاتها. تجمع الأداة طلبات السحب المدمجة — بما في ذلك العناوين والوسوم والمؤلفون — وتُولّد إصدارًا مسودةً يصنّف التغييرات حسب الفئة مثل الميزات والتصليحات والمهام. ويؤدي ذلك إلى إنتاج ملاحظات إصدار واضحة وموحّدة بصيغة Markdown دون الحاجة إلى تحرير يدوي.
يعمل التصنيف من خلال آلتين متكاملتين. الأولى تعتمد على الوسوم، وتستخدم وسومًا مثل feature وfix وchore وbreaking. والثانية تستخدم بادئات في عنوان طلب السحب أو المهمة مثل [Bug] و[Feat] و[Chore]. ويمكن استخدام كلا النهجين معًا.
الملفات المضمنة
يتكون النظام من ملفين. يقع ملف سير العمل في .github/workflows/custom-release-draft.yml، ويقع نصّ توليد ملاحظات الإصدار في .github/scripts/release-notes.js. ويتم إدارة كلا الملفين في مستودع Adamant-im/.github.
تفعيله في مستودعك
لتفعيل Release Drafter، انسخ ملف سير العمل إلى مستودعك. يقوم سير العمل هذا بسحب المستودع المستهدف، وإعداد بيئة Node.js، وتثبيت تبعيات Octokit المطلوبة، ثم تنزيل نصّ release-notes.js من مستودع .github المشترك، وتشغيله باستخدام GITHUB_TOKEN الخاص بالمستودع.
name: Custom Release Draft
on:
workflow_call:
inputs:
target_branch:
required: false
type: string
default: master
push:
branches:
- master
- feat/release-drafter
workflow_dispatch:
jobs:
release-draft:
runs-on: ubuntu-latest
steps:
- name: Checkout target repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm install @octokit/rest @octokit/graphql
- name: Download release-notes.js
run: |
set -e
mkdir -p .github/scripts
echo "Trying to download release-notes.js from feat/release-drafter..."
if ! curl -fsSL "https://raw.githubusercontent.com/Adamant-im/.github/feat/release-drafter/.github/scripts/release-notes.js" -o .github/scripts/release-notes.js; then
echo "feat/release-drafter not found, downloading from master..."
curl -fsSL "https://raw.githubusercontent.com/Adamant-im/.github/master/.github/scripts/release-notes.js" -o .github/scripts/release-notes.js
fi
- name: Run release notes script
run: node .github/scripts/release-notes.js
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
بعد وضع سير العمل، قم بوضع وسوم أو بادئات على طلبات السحب الخاصة بك وفقًا الاتفاقيات الموصى بها. وبعد كل طلب سحب يتم دمجه، سيتم تحديث مسودة الإصدار تلقائيًا في علامة تبويب الإصدارات (Releases) الخاصة بالمستودع.
مثال للإخراج

