مرحبا يا هبر. تتناول هذه المقالة كيفية إعداد البناء على جميع الأنظمة الأساسية باستخدام إجراءات github.
قبل التاريخ
لقد كتبت تطبيقًا بسيطًا على الإلكترون ، وأنا شخصياً استخدمت نظام لينكس ، لكن صديقي فضل الماكوس. عندما حاولت ترجمة ماكينتوش على جهاز الكمبيوتر الخاص بي وسلمت pkg إلى صديقي - لم يبدأ الأمر. نتيجة لذلك ، اتضح أن الخيار الوحيد لتجميع تطبيق لنظام macos هو تجميعه على macos. لتبسيط المهمة قدر الإمكان ، قمت بعمل ثلاثة برامج نصية: build: linux ، build: mac ، build: win. نتيجة لذلك ، بعد التحويل البرمجي ، تم الحصول على الملفات التالية: linux.deb ، linux.AppImage ، mac.pkg ، win.exe. ولكن ظلت هناك مشكلة واحدة تحتاج إلى تجميع على أنظمة مختلفة. ثم خلاص تصرفات جيهوب.
كيف يجب أن تعمل كل شيء
أضغط على زر الإصدار الجديد على جيثب ، ثم يبدأ السحر في سير العمل على إجراءات جيثب ، وهو يجمع على جميع أنظمة التشغيل ويضيف ثنائيات إلى الإصدار
لقد استخدمت https://github.com/JasonEtco/upload-to-releas لإضافة ملفات لإصدارها ، ولكن كان هناك ملف واحد مع هذا الإجراء. هذا إجراء حاوية ، وفي إجراءات github ، تتوفر إجراءات الحاوية فقط على نظام التشغيل linux. لذلك ، تقرر استخدام أربع وظائف ، 3 للتجميع وواحدة للتحميل. نظرًا لأن البيئة لا يتم حفظها لكل وظيفة ، وهذا هو السبب في استخدام القطع الأثرية للتبادل بينها
ممارسة
أولاً ، في المجلد .github / workflows / workflow.yml مع المحتويات
name: CI on: release
حسنًا ، أعتقد أنه من الواضح أن هذا هو سير عمل CI ويتم إطلاقه ، وهو الآن المهمة الأكثر أهمية
jobs: build-linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Install bluetooth run: sudo apt-get install -y build-essential libbluetooth-dev - name: Install dependencies run: npm install - name: Build linux run: npm run build:linux - name: Creating out run: | mkdir out cp dist/linux.AppImage out/ cp dist/linux.deb out/ - name: Upload build uses: actions/upload-artifact@master with: name: linux path: out
خطوات الوظائف: هذا هو كل العمل ، build-linux: هذا هو العمل الذي يحمل اسم build-linux ، يعمل على: أوبونتو- أحدث تقول أنك تحتاج إلى تشغيل كل شيء تحت أحدث أوبونتو
ثم الخطوات الأكثر إثارة للاهتمام: وكل ما تحته هو ما سيفعله عملنا
أولاً - الاستخدامات: يقوم ations / checkout @ v1 باستنساخ المستودع حتى نتمكن من استخدامه. في الخطوة التالية ، يقوم تثبيت bluetooth بتثبيت bluetooth لأن المشروع يستخدمه. بعد ذلك ، يتم إنشاء التبعيات ويحدث الإنشاء. لأنه بعد البناء ، لا يوجد في مجلد dist الثنائيات فقط ، ولكن أيضًا القمامة غير الضرورية ، وبالتالي فإن الخطوة التالية هي إنشاء مجلد آخر به ثنائيات فقط ، ثم تحميلها في الأعمال الفنية.
تقريبا نفس الشيء للفوز مع macos
build-mac: runs-on: macOS-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: node-version: '8.x' - name: Install dependencies run: npm install - name: Build mac run: npm run build:mac - name: Creating out run: | mkdir out cp dist/mac.pkg out/ - name: Upload build uses: actions/upload-artifact@master with: name: mac path: out build-win: runs-on: windows-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: node-version: '8.x' - name: Install dependencies run: npm install - name: Build win run: npm run build:win - name: Creating out run: | mkdir out copy dist\win.exe out\ - name: Upload build uses: actions/upload-artifact@master with: name: win path: out
ومع ذلك ، تجدر الإشارة إلى بعض الاختلافات. أولاً ، لا تحتاج إلى تثبيت البلوتوث ، لقد تم تثبيته بالفعل ، ومع ذلك ، تحتاج إلى تثبيت nodejs لهذا ، استخدم action / setup-node. أيضًا ، تستخدم windows أوامر أخرى في مرحلة الإنشاء.
وبالطبع المرحلة النهائية هي تحميل الملفات إلى الإصدار
upload: runs-on: ubuntu-latest needs: [build-linux, build-mac, build-win] steps: - uses: actions/checkout@v1 - name: Download linux artifact uses: actions/download-artifact@master with: name: linux - name: Download mac artifact uses: actions/download-artifact@master with: name: mac - name: Download win artifact uses: actions/download-artifact@master with: name: win - name: Upload to Release deb uses: JasonEtco/upload-to-release@v0.1.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: linux/linux.deb application/vnd.debian.binary-package - name: Upload to Release AppImage uses: JasonEtco/upload-to-release@v0.1.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: linux/linux.AppImage application/x-executable - name: Upload to Release pkg uses: JasonEtco/upload-to-release@v0.31.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: mac/mac.pkg application/x-xar - name: Upload to Release exe uses: JasonEtco/upload-to-release@v0.1.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: args: win/win.exe application/octet-stream
الجزء المهم للغاية هو أن الاحتياجات ، يقول هذا السطر أنك بحاجة إلى بدء العمل فقط بعد كل الإنشاءات (إذا كانت الإنشاءات متوازية) ، ثم نقوم أولاً بتنزيل القطع الأثرية ، ثم نضيف الثنائيات منها إلى الإصدار
مراجع
ينتج ملف workflow.yml
مستودع
المزيد عن الإجراءات جيثب
شكرا لاهتمامكم!