در دنیای پر سرعت توسعه نرم افزار ، ارائه برنامه های با کیفیت بالا به سرعت و با اطمینان بسیار مهم است. اینجاست CI/CD (ادغام مداوم و تحویل/استقرار مداوم) بازی می شود.

CI/CD مجموعه ای از شیوه ها و ابزارهایی است که برای خودکارسازی و ساده سازی آن طراحی شده است process از ادغام تغییرات کد ، آزمایش آنها و استقرار آنها به تولید. با اتخاذ CI/CD ، تیم شما می تواند خطاهای دستی را کاهش دهد ، چرخه های انتشار را تسریع کند و اطمینان حاصل کند که کد شما همیشه در حالت قابل اجرا قرار دارد.

در این آموزش ، ما تمرکز خواهیم کرد روی یک رویکرد دوستانه مبتدی برای تنظیم خط لوله اصلی CI/CD با استفاده از Bitbucket ، یک سرور لینوکس و پایتون با فلاسک. به طور خاص ، ما یک خودکار ایجاد خواهیم کرد process این آخرین تغییرات را از یک مخزن Bitbucket به سرور لینوکس شما منتقل می کند ، هر زمان که فشار یا ادغام به یک شاخه خاص شود.

این process توسط Webhooks Bitbucket و یک سرور ساده مبتنی بر Python مبتنی بر فلاسک که برای رویدادهای ورودی Webhook گوش می دهد و باعث استقرار آن می شود ، تأمین می شود.

توجه به این نکته حائز اهمیت است که CI/CD یک زمینه وسیع و پیچیده است و این آموزش به گونه ای طراحی شده است که به جای اینکه یک راهنمای جامع باشد ، درک بنیادی را فراهم می کند.

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

در پایان این آموزش ، نمونه ای از روش خودکار سازی استقرارها با استفاده از Bitbucket ، Linux و Python را خواهید داشت که می توانید با رشد راحت تر با مفاهیم CI/CD ، بر روی آنها بسازید.

فهرست مطالب:

  1. چرا CI/CD مهم است؟

  2. مرحله 1: یک وب سایت را در Bitbucket تنظیم کنید

  3. مرحله 2: شنونده Flask را تنظیم کنید روی سرور لینوکس شما

  4. مرحله 3: برنامه Flask را در معرض نمایش بگذارید (اختیاری)

  5. مرحله 4: تنظیمات را آزمایش کنید

  6. مرحله 5: ملاحظات امنیتی

  7. پیچیدن

چرا CI/CD مهم است؟

CI/CD به دلایل مختلف به سنگ بنای توسعه نرم افزار مدرن تبدیل شده است. اول و مهمتر از همه ، توسعه را تسریع می کند processبشر با خودکار کردن کارهای تکراری مانند آزمایش و استقرار ، توسعه دهندگان می توانند بیشتر تمرکز کنند روی نوشتن کد و کمتر روی فرآیندهای دستی. این منجر به تحویل سریعتر از ویژگی های جدید و رفع اشکال می شود ، که به ویژه در بازارهای رقابتی که سرعت می تواند یک تمایز دهنده باشد بسیار مهم است.

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

CI/CD همچنین همکاری بهتری بین اعضای تیم ایجاد می کند. در گردش کار توسعه سنتی ، ادغام تغییرات کد از چندین توسعه دهنده می تواند یک وقت گیر و مستعد خطا باشد processبشر با CI/CD ، کد به طور مکرر یکپارچه و آزمایش می شود ، اغلب چندین بار در روز. این بدان معنی است که درگیری ها زودتر شناسایی و حل می شوند و پایگاه کد در حالت پایدار باقی می ماند. در نتیجه ، تیم ها می توانند با اطمینان بیشتر و با اعتماد به نفس بیشتر کار کنند ، حتی اگر چندین همکار در حال کار باشند روی بخش های مختلف پروژه به طور همزمان.

سرانجام ، CI/CD از بهبود و نوآوری مداوم پشتیبانی می کند. با خودکار سازی استقرار process، تیم ها می توانند به روزرسانی های تولید را به طور مکرر و با خطر کمتری منتشر کنند. این امر آنها را قادر می سازد تا سریعتر بازخورد کاربران را جمع آوری کرده و تکرار کنند روی محصولات آنها به طور مؤثرتر.

آنچه در این آموزش پوشش خواهیم داد

در این آموزش ، ما از طریق process تنظیم یک خط لوله CI/CD ساده که به طور خودکار استقرار کد را از یک مخزن Bitbucket به یک سرور لینوکس تغییر می دهد. این چیزی است که شما یاد خواهید گرفت:

  1. روش پیکربندی یک مخزن Bitbucket برای ارسال اعلان های Webhook هر زمان که فشار یا ادغام در یک شاخه خاص وجود داشته باشد.

  2. روش تنظیم سرور پایتون مبتنی بر فلاسک روی سرور لینوکس شما برای گوش دادن به رویدادهای ورودی وب.

  3. روش نوشتن یک اسکریپت که آخرین تغییرات را از مخزن بیرون می کشد و آنها را به سرور مستقر می کند.

  4. روش آزمایش و عیب یابی استقرار خودکار خود processبشر

در پایان این آموزش ، شما یک نمونه کار از خط لوله اصلی CI/CD را خواهید داشت که می توانید در صورت لزوم سفارشی و گسترش دهید. بیایید شروع کنیم!

مرحله 1: یک وب سایت را در Bitbucket تنظیم کنید

قبل از شروع با تنظیم ، بیایید به طور خلاصه توضیح دهیم شبکه وب و چگونه در CI/CD ما قرار می گیرد processبشر

یک وب سایت مکانیسمی است که به یک سیستم اجازه می دهد تا سیستم دیگری را در مورد یک رویداد در زمان واقعی اعلام کند. در زمینه Bitbucket ، یک وب سایت می تواند پیکربندی شود تا درخواست HTTP (اغلب درخواست ارسال با داده بار) را به یک URL مشخص ارسال کند ، هر زمان که یک رویداد خاص در مخزن شما رخ دهد ، مانند فشار به شعبه یا ادغام درخواست کشش بشر

در مورد ما ، Webhook به سرور پایتون مبتنی بر فلاسک ما اطلاع می دهد (در حال اجرا روی سرور لینوکس شما) هر زمان که فشار یا ادغام در یک شاخه خاص وجود داشته باشد. این اعلان یک اسکریپت را تحریک می کند روی سرور برای بیرون کشیدن آخرین تغییرات از مخزن و به طور خودکار آنها را مستقر می کند. در اصل ، وب سایت به عنوان پلی بین Bitbucket و سرور شما عمل می کند و اتوماسیون یکپارچه استقرار را قادر می سازد processبشر

پیشنهاد می‌کنیم بخوانید:  حذف عنصر از یک آرایه در جاوا اسکریپت در جاوا اسکریپت، و درست مانند بسیاری از زبان های دیگر، در برخی مواقع به احتمال زیاد نیاز به حذف یک عنصر از آرایه خواهید داشت. بسته به روی مورد استفاده شما این می تواند به آسانی استفاده از دستورات داخلی ()shift یا pop() باشد، اما فقط در صورتی کار می کند که عنصر در ...

اکنون که نقش یک وب وب را درک کردید ، بیایید یکی را در Bitbucket تنظیم کنیم:

  1. وارد Bitbucket شوید و به مخزن خود بروید.

  2. در نوار کناری سمت چپ ، کلیک کنید روی تنظیماتبشر

  3. در زیر گردش کار بخش ، پیدا کردن و کلیک کنید روی سرفه های وببشر

  4. کلیک بر روی وب سایت اضافه کنید دکمه

  5. نامی را برای وب سایت خود وارد کنید (به عنوان مثال ، “کشش اتوماتیک”).

  6. در url فیلد ، URL را به سرور خود ارائه دهید که در آن Webhook درخواست را ارسال می کند. اگر شما یک برنامه فلاسک را به صورت محلی اجرا می کنید ، این چیزی شبیه خواهد بود http://your-server-ip/pull-repoبشر (برای محیط های تولید ، استفاده از HTTPS برای اطمینان از ارتباط بین Bitbucket و سرور خود بسیار توصیه می شود.)

  7. در محرک بخش ، رویدادهایی را که می خواهید به آنها گوش دهید انتخاب کنید. برای این مثال ، ما انتخاب خواهیم کرد فشار (و به صورت اختیاری ، درخواست ادغام شده اگر می خواهید بعد از ادغام نیز مستقر شوید).

  8. وب سایت را با نام خود توضیحی ذخیره کنید تا بعداً تشخیص آن آسان شود.

پس از تنظیم وب ، Bitbucket هر بار که رویداد انتخاب شده اتفاق می افتد ، درخواست پست را به URL مشخص شده ارسال می کند. در مراحل بعدی ، ما یک سرور Flask را برای رسیدگی به این درخواست های دریافتی تنظیم می کنیم و استقرار را تحریک می کنیم processبشر

در اینجا همان چیزی است که هنگام تنظیم وب سایت Bitbucket باید ببینید

صفحه نمایش BitBucket که ایجاد یک وب سایت را به کاربر نشان می دهد ، جایی که سرور شما هنگام فشار یا ادغام در reposiroty خود ، اصلاحات را بکشد.

مرحله 2: شنونده Flask را تنظیم کنید روی سرور لینوکس شما

در مرحله بعدی ، یک سرور وب ساده تنظیم خواهید کرد روی دستگاه لینوکس شما که از Bitbucket به وب سایت گوش می دهد. هنگامی که اعلان را دریافت می کند ، آن را اجرا می کند git pull یا کشش نیرو (در صورت تغییر محلی) برای به روزرسانی مخزن.

نصب فلاسک:

برای ایجاد برنامه Flask ، ابتدا Flask را با اجرا نصب کنید:

pip install flask

برنامه Flask را ایجاد کنید:

یک اسکریپت پایتون جدید ایجاد کنید (به عنوان مثال ، app_repo_pull.py) روی سرور خود را اضافه کنید و کد زیر را اضافه کنید:

from flask import Flask
import subprocess

app = Flask(__name__)

@app.route('/pull-repo', methods=['POST'])
def pull_repo():
    try:
        # Fetch the latest changes from the remote repository
        subprocess.run(["git", "-C", "/path/to/your/repository", "fetch"], check=True)
        # Force reset the local branch to match the remote 'test' branch
        subprocess.run(["git", "-C", "/path/to/your/repository", "reset", "--hard", "origin/test"], check=True)  # Replace 'test' with your branch name
        return "Force pull successful", 200
    except subprocess.CalledProcessError:
        return "Failed to force pull the repository", 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

در اینجا آنچه این کد انجام می دهد آورده شده است:

  • subprocess.run(["git", "-C", "/path/to/your/repository", "fetch"]): این دستور آخرین تغییرات را از مخزن از راه دور بدون تأثیر در فهرست کار محلی بدست می آورد.

  • subprocess.run(["git", "-C", "/path/to/your/repository", "reset", "--hard", "origin/test"]): این دستور تنظیم مجدد سخت را انجام می دهد و مخزن محلی را مجبور به مطابقت با ریموت می کند test شاخه تعویض کردن test با نام شاخه خود

حتماً جایگزین کنید /path/to/your/repository با مسیر واقعی مخزن محلی GIT خود.

مرحله 3: برنامه Flask را در معرض نمایش بگذارید (اختیاری)

اگر می خواهید برنامه Flask از خارج از سرور خود در دسترس باشد ، باید آن را به صورت عمومی افشا کنید. برای این کار ، می توانید یک پروکسی معکوس با NGINX تنظیم کنید. در اینجا روش انجام این کار آورده شده است:

ابتدا با اجرای این دستور ، nginx را نصب کنید:

sudo apt-get install nginx

در مرحله بعد ، شما باید NGINX را به درخواست های پروکسی به برنامه Flask خود پیکربندی کنید. پرونده پیکربندی NGINX را باز کنید:

sudo nano /etc/nginx/sites-available/default

پیکربندی را برای شامل این بلوک اصلاح کنید:

server {
    listen 80;
    server_name your-server-ip;

    location /pull-repo {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

اکنون فقط NGINX را بارگیری کنید تا تغییرات را اعمال کنید:

sudo systemctl reload nginx

مرحله 4: تنظیمات را آزمایش کنید

اکنون که همه چیز تنظیم شده است ، با اجرای این اسکریپت پایتون ، پیش بروید و برنامه Flask را شروع کنید:

python3 app_repo_pull.py

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

  1. متعهد شدن: یک تعهد را به test شاخه در مخزن Bitbucket خود را. این عمل باعث ایجاد وب سایت می شود.
  1. Webhook Trigger: Webhook درخواست پست را به سرور شما ارسال می کند. برنامه Flask این درخواست را دریافت می کند ، یک کشش نیرو را از test شاخه ، و مخزن محلی را به روز کنید.

  2. کشش را تأیید کنید: خروجی ورود به سیستم فلاسک خود را بررسی کنید یا از مخزن محلی بازرسی کنید تا تأیید کنید که تغییرات کشیده و با موفقیت اعمال شده است.

مرحله 5: ملاحظات امنیتی

هنگام قرار گرفتن یک برنامه فلاسک در اینترنت ، تأمین امنیت سرور و برنامه شما برای محافظت از آن در برابر دسترسی غیرمجاز ، نقض داده ها و حملات بسیار مهم است. در اینجا زمینه های کلیدی برای تمرکز وجود دارد روی:

1. از یک سرور ایمن با قوانین مناسب فایروال استفاده کنید

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

نمونه ای از تنظیم سرور ایمن:
  • نرم افزار حداقل: فقط نرم افزار مورد نیاز خود را نصب کنید (به عنوان مثال ، پایتون ، فلاسک ، NGINX) و خدمات غیر ضروری را حذف کنید.

  • به روزرسانی های سیستم عامل: اطمینان حاصل کنید که سیستم عامل سرور شما با جدیدترین تکه های امنیتی به روز است.

  • پیکربندی فایروال: از فایروال برای کنترل ترافیک ورودی و خروجی و محدود کردن دسترسی به سرور خود استفاده کنید.

به عنوان مثال ، یک اساسی UFW (فایروال بدون عارضه) پیکربندی روی اوبونتو ممکن است اینگونه به نظر برسد:

# Allow SSH (port 22) for remote access
sudo ufw allow ssh

# Allow HTTP (port 80) and HTTPS (port 443) for web traffic
sudo ufw allow http
sudo ufw allow https

# Enable the firewall
sudo ufw enable

# Check the status of the firewall
sudo ufw status

در این مورد:

  • فایروال به اتصالات SSH ورودی اجازه می دهد روی بندر 22 ، http روی بندر 80 ، و HTTPS روی بندر 443.

  • برای محدود کردن قرار گرفتن در معرض حملات ، هر پورت یا خدمات غیر ضروری باید به طور پیش فرض مسدود شود.

قوانین اضافی فایروال:
  • دسترسی به نقطه پایانی Webhook را محدود کنید: در حالت ایده آل ، فقط اجازه می دهد تا از آدرس های IP Bitbucket ، به نقطه پایانی Webhook Tovelt بروید تا از دسترسی خارجی جلوگیری شود. شما می توانید این کار را در فایروال خود تنظیم کنید یا با استفاده از سرور وب خود (به عنوان مثال NGINX) فقط با پذیرش درخواست های IP Bitbucket استفاده کنید.

  • تمام ترافیک های دریافتی دیگر را انکار کنید: برای هر خدمتی که نیازی به قرار گرفتن در معرض اینترنت ندارد (به عنوان مثال ، درگاه های پایگاه داده) ، اطمینان حاصل کنید که این پورت ها مسدود شده اند.

پیشنهاد می‌کنیم بخوانید:  نحوه استفاده از لینوکس در ماشین ویندوز - 5 رویکرد مختلف

2. احراز هویت را به برنامه Flask اضافه کنید

از آنجا که برنامه Flask شما از طریق URL Webhook در دسترس عموم خواهد بود ، باید در نظر بگیرید که تأیید اعتبار را برای اطمینان از فقط کاربران مجاز (مانند سرورهای Bitbucket) در نظر بگیرید.

مثال تأیید اعتبار اصلی:

می توانید از یک احراز هویت مبتنی بر توکن ساده برای ایمن سازی نقطه پایانی Webhook خود استفاده کنید. در اینجا مثالی از روش اصلاح برنامه فلاسک خود برای نیاز به یک نشانه تأیید اعتبار وجود دارد:

from flask import Flask, request, abort
import subprocess

app = Flask(__name__)

# Define a secret token for webhook verification
SECRET_TOKEN = 'your-secret-token'

@app.route('/pull-repo', methods=['POST'])
def pull_repo():
    # Check if the request contains the correct token
    token = request.headers.get('X-Hub-Signature')
    if token != SECRET_TOKEN:
        abort(403)  # Forbidden if the token is incorrect

    try:
        subprocess.run(["git", "-C", "/path/to/your/repository", "fetch"], check=True)
        subprocess.run(["git", "-C", "/path/to/your/repository", "reset", "--hard", "origin/test"], check=True)
        return "Force pull successful", 200
    except subprocess.CalledProcessError:
        return "Failed to force pull the repository", 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
چگونه کار می کند:
  • در X-Hub-Signature یک هدر سفارشی است که هنگام تنظیم Webhook در Bitbucket به درخواست اضافه می کنید.

  • فقط درخواست هایی با نشانه صحیح مجاز به کشش خواهد بود. اگر نشانه گم شده یا نادرست باشد ، درخواست با a رد می شود 403 Forbidden پاسخ

همچنین می توانید از اشکال پیچیده تر احراز هویت مانند OAUTH یا HMAC (کد تأیید اعتبار پیام مبتنی بر هش) استفاده کنید ، اما این رویکرد ساده توکن برای بسیاری از موارد کار می کند.

3 برای برقراری ارتباط ایمن از HTTPS استفاده کنید

رمزگذاری داده های منتقل شده بین برنامه Flask و وب سایت Bitbucket و همچنین هرگونه داده حساس (مانند نشانه ها یا رمزهای عبور) که از طریق شبکه منتقل می شوند ، بسیار مهم است. این تضمین می کند که مهاجمان نمی توانند داده ها را رهگیری یا اصلاح کنند.

چرا HTTPS؟
  • رمزهای: HTTPS ارتباطات را رمزگذاری می کند ، و اطمینان می دهد که داده های حساس مانند نشانه احراز هویت شما در معرض حملات میانه قرار نمی گیرند.

  • اعتماد و صداقت: HTTPS به اطمینان از داده های دریافت شده توسط سرور شما کمک می کند.

با استفاده از Encrypt برای ایمن کردن برنامه Flask خود با SSL:
  1. Certbot را نصب کنید (ابزاری برای دریافت گواهی نامه های رمزگذاری):
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

یک گواهی SSL رایگان برای دامنه خود بدست آورید:

sudo certbot --nginx -d your-domain.com
  • این دستور به طور خودکار NGINX را برای استفاده از HTTPS با گواهی SSL رایگان از Let’s Encrypt پیکربندی می کند.

  • اطمینان حاصل کنید که از HTTPS استفاده شده است: اطمینان حاصل کنید که برنامه Flask یا پیکربندی Nginx شما تمام ترافیک را برای استفاده از HTTPS مجبور می کند. شما می توانید این کار را با تنظیم یک قانون تغییر مسیر در nginx انجام دهید:

server {
    listen 80;
    server_name your-domain.com;

    # Redirect HTTP to HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

    # Other Nginx configuration...
}

تجدید خودکار: بیایید گواهینامه های رمزگذاری شده برای 90 روز معتبر باشند ، بنابراین تنظیم تجدید خودکار مهم است:

sudo certbot renew --dry-run

این فرمان تجدید را آزمایش می کند process برای اطمینان از اینکه همه چیز کار می کند.

4. ورود به سیستم و نظارت

برای ردیابی هرگونه تلاش ، خطاها یا فعالیت های غیرمعمول ، ورود به سیستم و نظارت برای برنامه Flask خود را پیاده سازی کنید:

  • درخواست های ورود به سیستم: تمام درخواست های دریافتی ، از جمله آدرس IP ، هدرهای درخواست و وضعیت پاسخ را وارد کنید ، بنابراین می توانید برای هرگونه فعالیت مشکوک نظارت کنید.

  • از ابزارهای نظارت استفاده کنید: ابزارهایی مانند حرصبا گرافانا، یا یادگار جدید برای نظارت بر عملکرد سرور و سلامت برنامه.

پیچیدن

در این آموزش ، ما روش تنظیم یک خط لوله ساده و مبتدی CI/CD را که به صورت خودکار استقرار را با استفاده از Bitbucket ، یک سرور لینوکس و پایتون با Flask انجام می دهد ، بررسی کردیم. در اینجا یک مقاله از آنچه آموخته اید آورده شده است:

  1. اصول CI/CD: ما در مورد اصول اولیه ادغام مداوم (CI) و تحویل/استقرار مداوم (CD) ، که روشهای اساسی برای خودکارسازی ادغام ، آزمایش و استقرار کد هستند ، بحث کردیم. شما آموخته اید که چگونه CI/CD به سرعت بخشیدن به توسعه ، کاهش خطاها و بهبود همکاری بین توسعه دهندگان کمک می کند.

  2. تنظیم وب سایت های Bitbucket: شما آموخته اید که چگونه یک Webhook Bitbucket را پیکربندی کنید تا هر زمان که فشار یا ادغام در یک شاخه خاص باشد ، به سرور خود اطلاع دهید. این وب سایت به عنوان محرک شروع استقرار عمل می کند process به طور خودکار

  3. ایجاد یک شنونده Webhook مبتنی بر فلاسک: ما به شما نشان دادیم که چگونه یک برنامه Flask را تنظیم کنید روی سرور لینوکس شما برای گوش دادن به درخواست های ورودی وب از Bitbucket. این برنامه Flask اعلان ها را دریافت می کند و دستورات GIT لازم را برای کشیدن و استقرار آخرین تغییرات اجرا می کند.

  4. خودکار سازی فرایند استقرار: با استفاده از پایتون و فلاسک ، ما به صورت خودکار process کشیدن تغییرات از مخزن Bitbucket و انجام یک کشش نیرو برای اطمینان از استقرار آخرین کد. شما همچنین یاد گرفتید که چگونه سرور را پیکربندی کنید تا برنامه Flask را در معرض نمایش قرار داده و درخواست ها را با اطمینان بپذیرید.

  5. ملاحظات امنیتی: ما مراحل مهم امنیتی را برای محافظت از استقرار شما پوشش دادیم process:

    • قوانین فایروال: ما در مورد پیکربندی قوانین فایروال برای محدود کردن قرار گرفتن در معرض و اطمینان از ترافیک مجاز (از Bitbucket) می توانیم به سرور شما دسترسی پیدا کنیم.

    • احراز هویت: ما تأیید هویت مبتنی بر نشانه را اضافه کردیم تا اطمینان حاصل شود که فقط درخواست های مجاز می توانند باعث استقرار شوند.

    • https: ما توضیح دادیم که چگونه می توان ارتباط بین سرور و Bitbucket خود را با استفاده از گواهینامه های SSL از Let’s Encrypt تضمین کرد.

    • ورود به سیستم و نظارتدر آخر اینکه ، ما برای پیگیری هرگونه فعالیت یا خطاهای غیرمعمول ، راه اندازی ورود و نظارت را توصیه می کنیم.

مراحل بعدی

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

  • خطوط لوله استقرار چند مرحله ای

  • ادغام با ابزارهای کانتینر مانند Docker

  • استراتژی های پیچیده تر آزمایش و استقرار

  • استفاده orchestration ابزارهایی مانند Kubernetes برای مقیاس گذاری

شیوه های CI/CD به طور مداوم در حال تحول است و با تسلط بر اصول اولیه ، خود را برای موفقیت در هنگام گسترش مهارت های خود در این زمینه تنظیم می کنید. خودکار و از خواندن شما متشکرم!

می توانید کد را از اینجا چنگ بزنید.