زبان خود را انتخاب کنید

آموزش Git برای DevOps

به عنوان یک مهندس DevOps، یادگیری مفاهیم اصلی گیت بسیار ضروری است. در این وبلاگ، در مورد گیت برای DevOps و اینکه چرا گیت یک مهارت مهم برای یک مهندس DevOps است صحبت خواهم کرد. همچنین منابع مرتبط برای یادگیری صحیح گیت را فهرست کرده‌ام.

گیت (Git) چیست؟

گیت یک سیستم کنترل نسخه توزیع‌شده متن‌باز است. بسیار سبک است و تقریباً روی همه سیستم‌عامل‌ها کار می‌کند.

در سال ۲۰۰۵، لینوس توروالدز گیت را به عنوان یک سیستم کنترل نسخه توزیع‌شده ایجاد کرد، زمانی که تیم توسعه هسته لینوکس دیگر نمی‌توانست از BitKeeper به صورت رایگان استفاده کند.

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

نتایج نظرسنجی توسعه‌دهندگان StackOverflow که در زیر نشان داده شده است، نشان می‌دهد که ۹۳٪ از مهندسان از گیت استفاده می‌کنند و این یک ابزار اساسی برای آنهاست.

وقتی صحبت از گیت می‌شود، بیشتر زبان‌آموزان جدید امروزی به گیت‌هاب اشاره می‌کنند.

پلتفرم‌هایی مانند گیت‌هاب یا بیت‌باکت بر پایه گیت ساخته شده‌اند و قابلیت‌های اضافی دارند که به مهندسان و سازمان‌ها کمک می‌کند تا کد را در مخزن گیت از راه دور میزبانی و کنترل نسخه کنند. همچنین، این پلتفرم با ادغام‌های خوبی برای کار با سایر ابزارهای CI/CD متن‌باز ارائه می‌شود.

با GitHub Actions، می‌توانید کل خط لوله CI/CD را با استفاده از خود پلتفرم‌های گیت‌هاب و گیت‌لب راه‌اندازی کنید. این امر نیاز به مدیریت چندین ابزار برای CI/CD را از بین می‌برد.

گیت برای Devops

بیایید به عوامل کلیدی نیاز به گیت برای DevOps نگاهی بیندازیم.

۱. برای داشتن بحث‌های معنادار CI/CD با توسعه‌دهندگان

یکی از وظایف یک مهندس DevOps طراحی و توسعه خطوط لوله CI/CD است. گیت نقش کلیدی در CI/CD ایفا می‌کند. از تجربه کار در شرکت‌های مختلف می‌توانم بگویم که هیچ استاندارد واحدی برای شاخه‌بندی و گردش کار گیت وجود ندارد. گاهی اوقات، شما باید با توسعه‌دهندگان بنشینید و در مورد رویکرد صحیح برای شاخه‌بندی گیت در خط لوله CI/CD بحث کنید. این شامل برچسب‌گذاری گیت، نسخه‌بندی انتشار و غیره می‌شود.

در واقع، در اکثر سازمان‌ها، مهندسان DevOps مالک و گرداننده مخازن گیت هستند.

بنابراین، برای داشتن یک بحث معنادار با تیم‌های توسعه، باید دانش خوبی از گیت داشته باشید.

۲. برای زیرساخت به عنوان کد

همچنین، وقتی در مورد زیرساخت به عنوان کد صحبت می‌کنیم، تمام کدهای زیرساخت را در گیت توسعه و نگهداری می‌کنیم. چه یک خط لوله جنکینز، چه یک کتاب راهنمای Ansible یا یک ماژول Terraform باشد.

ما با کد infra همانطور رفتار می‌کنیم که با کد برنامه رفتار می‌شود. یعنی، کد infra قبل از استقرار در هر محیطی، از همان تست واحد و تست‌های یکپارچه‌سازی عبور می‌کند.

یعنی حتی کد زیرساخت نیز باید یک خط لوله CI/CD داشته باشد. این دوباره به گردش‌های کاری مبتنی بر git تبدیل می‌شود.

اکثر شرکت‌ها برای کد infra از توسعه مبتنی بر تست پیروی نمی‌کنند، اما این روش استاندارد توسعه کد زیرساخت است.

3. Gitops

با شیوه‌های فنی مانند GitOps، git به عنوان منبع حقیقت برای تمام پیکربندی‌های زیرساخت عمل می‌کند.

با Gitops، هرگونه تغییر در پیکربندی‌های مخزن git در زیرساخت مستقر می‌شود.

بنابراین ضروری است که مهندسان DevOps همه چیز را در مورد git بدانند.

همچنین، ابزارهایی مانند ArgoCD کل گردش‌های کاری پیرامون تمرین gitOps را دارند.


نقشه راه یادگیری Git

در اینجا نقشه راه نحوه یادگیری git آمده است.

Topic Resource
Understand Version Control System What is a version control system
Understand Distributed Version Control What is distributed Version Control
Git Installation Official Git Website Downloads
GUI Clients Git GUI Clients
Git basics Git basics Videos
Fundamental of Git Guided git tutorial
Advanced Git Atlassian Advanced Git Tutorial

 

بهترین منابع برای یادگیری گیت چیست؟

اگر به دنبال دوره‌های آموزشی برای یادگیری گیت هستید، من بهترین منابع زیر را برای یادگیری صحیح گیت انتخاب کرده‌ام.

  1. راهنمای گیت و کنترل نسخه [دوره تعاملی آموزشی]
  2. کنترل نسخه با گیت [دوره رایگان یوداسیتی]
  3. گیت کامل: راهنمای قطعی و گام به گام گیت [یودمی]
  4. کنترل نسخه با گیت [دوره رایگان یوداسیتی]

سوالات مصاحبه گیت دواپس

وقتی صحبت از سوالات مصاحبه دواپس می‌شود، بیشتر در مورد سناریوهای عملی است. بنابراین بیشتر سوالات مصاحبه گیت دواپس بر اساس سناریوهای بلادرنگ پروژه خاصی است که برای آن مصاحبه می‌شوید.

شما می‌توانید با استفاده از منابعی که در بالا ذکر کردم، در مورد قابلیت‌های عمومی گیت اطلاعات کسب کنید. شما باید بتوانید به تمام سوالات عمومی گیت پاسخ دهید.

با این حال، اگر تجربه کار با گیت در پروژه‌های بلادرنگ را ندارید، من یک راه حل برای شما دارم.

به تگ گیت استک‌اورفلو بروید و موضوعات خاص گیت را مرور کنید. به عنوان مثال، گیت ریبیس. این باید بسیاری از سناریوها و مسائلی را که مردم با آن روبرو هستند، همانطور که در تصویر زیر نشان داده شده است، در زمان واقعی (real-time) مطرح کند.

اطلاعات زیادی به دست خواهید آورد که می‌تواند در مصاحبه‌ها به شما کمک کند.

جای دیگری که می‌توانید به دنبال آن باشید، Reddit Git است. در اینجا نیز می‌توانید مکالمات زیادی در مورد گیت پیدا کنید که برای یادگیری و مصاحبه مفید خواهد بود.

در ادامه مفاهیم مهم گیت که باید برای مصاحبه‌های DevOps یاد بگیرید، آمده است.

Basic Git Concepts Other Concepts
1. Branching
2. Merging
3. Commits
4. Git Tagging
5. Pull Requests
6. Gitignore
7. Git Web Hooks
8. Forks
9. detached HEAD
10. Checkout a specific commit
11. Large File Handling
12. Managing Secrets and Sensitive Information
13. Remote Branches and Collaboration
1. Rebasing
2. Cherry Picking
3. Squashing
4. Stashing
Undetstand The Differences For CI/CD
1. Git Vs Github
2. git merge Vs git rebase
3. git pull vs fetch
4. git revert vs reset
5. Stashing and Checkouts
6. Submodules and Subtrees

Git Workflows
Trunk based development
Feature Driven Development

 

نتیجه‌گیری

گیت یک سیستم کنترل نسخه ساده است، اما ابزارهای قدرتمندی در اطراف گیت برای اتوماسیون DevOps وجود دارد.

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