برنامه نویسی

با اکشن های GitHub خطوط CI/CD را بیاموزید

توسعه نرم افزار بسیار تکامل یافته است و یکپارچه سازی مداوم و استقرار مداوم (CI/CD) نقش مهمی در آن ایفا می کند. وقتی در مورد CI/CD صحبت می کنیم، دو ابزار اصلی وجود دارد که در مورد آنها صحبت می کنیم. اول GitHub Actions و دوم جنکینز.

در این وبلاگ شما را با موارد زیر آشنا خواهم کرد:

  • درک CI/CD.
  • نحوه عملکرد GitHub Actions

درک CI/CD

CI/CD یکپارچه سازی مداوم و استقرار مداوم است. برای درک این اصطلاحات، به نمودار گردش کار زیر نگاه می کنیم:

CI/CD

این نمای چشم پرنده از خط لوله CI/CD است. برنامه نویس مقداری کد می نویسد و آن را به مخزن راه دور می فرستد، که در بیشتر موارد توسط GitHub مدیریت می شود. از GitHub، کد برنامه از طریق فرآیندهای ساخت و آزمایش در برخی از ماشین های راه دور می رود. فرآیندهای ساخت و آزمایش در یک فاز یکپارچه سازی مداوم می آیند. در مرحله استقرار پیوسته، کد ساخت و آزمایش برای ایجاد تصاویر داکر استفاده می شود که بعداً می توان از آنها برای ایجاد کانتینرهایی استفاده کرد که برای خوشه Kubernetes استفاده می شود.

نحوه استفاده از GitHub Actions برای CI/CD

GitHub Actions ابزاری است که اقدامات خاصی را بر روی وقوع یک نوع خاص از رویداد انجام می دهد. یک رویداد می تواند یک فشار به مخزن، یک مشکل مطرح شده، یک درخواست کشش، یک مشارکت اولیه و غیره باشد. هر رویدادی که توسط GitHub قابل شناسایی باشد می تواند برای راه اندازی برخی از اقدامات استفاده شود. برای دیدن همه رویدادهای ممکن، رویدادهای GitHub Action را بررسی کنید.

ما به GitHub Action می گوییم چه کاری انجام دهد و چه زمانی از فایل های YAML استفاده کند. در داخل فایل YAML، گردش کار را می نویسیم. Simply workflow مجموعه ای از تعاریف شغلی است که به صورت همزمان و متوالی اجرا می شود. یک کار شامل چندین مرحله است که به صورت متوالی اجرا می شوند. به‌طور پیش‌فرض، کارها به صورت موازی اجرا می‌شوند، اما می‌توانیم وابستگی یک کار به کار دیگر را مشخص کنیم، سپس کار وابسته تنها زمانی شروع می‌شود که کاری که به آن وابسته است کار خود را به پایان برساند.

برای درک بهتر گردش کار به نمودار زیر نگاه کنید:

وابستگی اقدامات GitHub

مکان ذخیره فایل YAML در GitHub

تمام فایل های YAML مربوط به گردش کار GitHub

نحوه نوشتن گردش کار در فایل YAML

نظرات:

می توانید با شروع خط با “#” نظر بنویسید.

نظرات YAML

نام:

می‌توانیم با دادن یک نام به گردش کار با استفاده از کلمه کلیدی «name» شروع کنیم، اگرچه داشتن آن الزامی نیست. اگر نامی برای گردش کار ارائه نکنید، نام آن به عنوان نام فایل YAML انتخاب می شود.

بر:

با استفاده از کلمه کلیدی «روشن» می‌توانیم نوع اقداماتی را که باید بر روی آنها انجام شود مشخص کنیم. ما فقط می‌توانیم این را فقط در یک مکان از کد مشخص کنیم، یعنی نمی‌توانید دو «روشن» در فایل داشته باشید.

روش های نوشتن محتوا در قسمت “رو”:

on: push

on: [push, pull_request]

# events on which actions should be triggered
on:
  push:
    branches: [ "main" ]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

راه های بیشتر نوشتن این را اینجا ببینید.

به طور کلی، درست پس از نام در فایل گردش کار آمده است.

env:

در قسمت env می‌توانید چند جفت کلید-مقدار را مشخص کنید که بعداً می‌توان از آنها در داخل فایل استفاده کرد. برای یک مقدار، نمی توانید از یک کلید در داخل بخش env استفاده کنید.

مثال:

env: 
    ARTIFACT_NAME: Shivam
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمانی که بیش از یک متغیر محیطی با یک نام وجود داشته باشد، GitHub از متغیر خاص تر استفاده می کند. در مثال بعدی خواهیم دید که این چگونه کار می کند.

شغل ها:

می توانیم یک یا چند کار را در داخل فایل گردش کار بنویسیم. به‌طور پیش‌فرض، کارها به صورت موازی اجرا می‌شوند، اما می‌توانیم برخی وابستگی‌ها را نیز بین کارها تنظیم کنیم، به طوری که اگر یک کار به دیگری وابسته باشد، تنها زمانی شروع به اجرا می‌کند که کاری که به آن وابسته است، کار خود را تمام کند.

روش نوشتن مشاغل:

jobs:
    job1:   # identifier
        name: Job1
    job2:
        name: Job2
    job3:
        name: Job3
        needs: [job2]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اسکریپت بالا سه کار با شناسه و نام مشخص کرده ایم. ما باید یک شناسه برای کار داشته باشیم اما نام همیشه مورد نیاز نیست. در job3 ذکر شده است که به job2 بستگی دارد، یعنی زمانی که job2 کار خود را تمام کند شروع به اجرا می کند.

در داخل کار به چند مورد دیگر مانند دویدن و استپ اشاره می کنیم. اجراها به گردش کار می‌گویند که این کار در کدام ماشین مجازی باید انجام شود و مراحل داخل بخش jobs مراحل انجام کار را نشان می‌دهد.

مراحل:

یک کار شامل دنباله ای از وظایف به نام مراحل است. Steps می‌تواند دستورات را اجرا کند، وظایف راه‌اندازی را اجرا کند، یا یک عمل را در مخزن شما، یک مخزن عمومی یا یک اقدام منتشر شده در رجیستری Docker اجرا کند.

“uses” و “run” در زیر jobs استفاده می‌شوند تا فرمان یا عملی را که باید انجام شود، بیان می‌کند.

ما همچنین می توانیم از “env” در زیر مشاغل استفاده کنیم.

steps:
      - name: Print a greeting
        env:
          MY_VAR: Hi there! My name is
          FIRST_NAME: Shivam
          MIDDLE_NAME: Kumar
          LAST_NAME: Pandey
        run: |
          echo $MY_VAR $FIRST_NAME $MIDDLE_NAME $LAST_NAME.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

از آنچه تاکنون آموخته‌ایم، اجازه دهید ببینیم چگونه می‌توانیم فایل‌هایی را برای ادغام مداوم بنویسیم.

ادغام مداوم با GitHub Action

بیایید نگاهی به فایل YAML زیر بیندازیم. من مثال زیر را از خود صفحه GitHub گرفته ام.

name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
on: [push]
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v3
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ github.workspace }}
- run: echo "🍏 This job's status is ${{ job.status }}."
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

بیایید به تمام کلمات کلیدی فایل اکشن GitHub فوق نگاه کنیم. شروع با

name با استفاده از نامی که به این گردش کاری GitHub به عنوان نسخه آزمایشی GitHub Actions نام می دهیم.

run-name با استفاده از run-name که به گردش کار یک نام می دهیم.

on با استفاده از روشن، به گردش کار می گوییم که چه زمانی باید برخی از اقدامات را آغاز کند.

jobs با استفاده از jobs، به گردش کار می گوییم که هر چیزی که در زیر کلمه کلیدی jobs قرار دارد برای تعیین نحوه و مکان انجام کار استفاده خواهد شد.

runs-on با استفاده از run-on، به گردش کار می گوییم که چه نوع ماشین مجازی باید استفاده شود.

steps شامل دنباله ای از دستوراتی است که باید اجرا شوند.

run برای تعیین یک فرمان واحد برای اجرا در ماشین مجازی استفاده می شود.

uses برای تعیین مکان و نسخه یک فایل گردش کار قابل استفاده مجدد برای اجرا به عنوان یک کار استفاده می شود.

امیدوارم این به شروع یادگیری اکشن GitHub شما کمک کند.

برای غواصی عمیق در اکشن GitHub، اسناد آنها را بررسی کنید.

با لایک دادن ازش حمایت کنید 😊.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا