ساخت از راه دور C++ روی VPN: زنجیره ابزار را روی میزبان نگه دارید
سوار کردن اشتراک همان ساخت از راه دور نیست. بررسی کنید کدام میزبان پاسخ میدهد، کدام کامپایلر اجرا میشود و اشکالزدا و شبکه کجا هستند.
اشتراک سوار میشود، ویرایشگر فایل را باز میکند و ساخت هنوز روی لپتاپ اجرا میشود. هیچ خطایی رخ نمیدهد و همین موضوع گیجکننده است. یک مسیر راه دور، زنجیره ابزار راه دور نیست، و ویرایشگری که میتواند فایلی را از طریق یک سوارگاه بخواند، با کمال میل کامپایلر محلی را روی آن فراخوانی میکند. راهحل جابهجا کردن فضای کاری است، نه فقط بایتها.
پوشه سوارشده فضای کاری نیست
سوار کردن از طریق SSH یا SMB یک مسیر به شما میدهد. اینکه کامپایلر، سامانه ساخت و اشکالزدا از سمت دور بیایند به این بستگی دارد که ویرایشگر کجا تصمیم بگیرد آنها را اجرا کند. بسیاری از تنظیمات فایلهای دور را میخوانند و آنها را محلی کامپایل میکنند و سپس روی یک فایل سرصفحه که فقط روی سرور وجود دارد شکست میخورند.
نشانه ظریف است: ساخت با نتایج جزئی موفق میشود، یا روی مسیر include که در ویرایشگر درست به نظر میرسد میشکند.
اثبات کنید کدام میزبان پاسخ میدهد
بهجای سوارگاه با یک نشست واقعی راه دور وصل شوید، سپس سه فرمان فقط-خواندنی را در ترمینالی که آن نشست میدهد اجرا کنید. راهنمای SSH در VS Code مستند میکند که ترمینال در پنجره دور متصل روی میزبان دور اجرا میشود و همان نشست اشکالزدایی را نیز حمل میکند. اگر سازمان این مؤلفهها را محدود میکند، نخست تأییدیه بگیرید.
hostname نام ماشینی است که روی آن هستید، pwd نشان میدهد فضای کاری واقعاً کجاست، و command -v c++ کامپایلری را چاپ میکند که پوسته اجرا میکرد. هر سه پاسخ باید سرور را توصیف کنند، نه لپتاپ را.
اینها ثابت نمیکنند که نسخه یا پیکربندی ساخت درست است. آن را بهعنوان گامی جداگانه با دستورهای خود پروژه مقایسه کنید.
یک ویرایش را از ساخت و اشکالزدایی دنبال کنید
تغییری کوچک در فضای کاری دور بدهید و آن را همانجا ذخیره کنید. ساخت مستند را از همان پوشه اجرا کنید و تأیید کنید که خروجی ویرایش شما را بازتاب میدهد، نه نسخهای قدیمیتر در جایی دیگر. سپس اشکالزدا را از همان نشست دور اجرا کنید، بهگونهای که مسیر باینری و پوشه کار به درخت ساخت سرور اشاره کنند. همخوانی مسیرهای منبع مهم است، چون اشکالزدایی که ویرایش شما را به مسیری روی لپتاپ نسبت میدهد، فایل دیگری را اشکالزدایی میکند.
اگر هدف اشکالزدایی مسیرهایی را گزارش کند که با پوشه خانه محلی شما آغاز میشوند، پیکربندی اجرا هنوز محلی فکر میکند.
وابستگیهای شبکه با میزبان میمانند
دریافت بسته، عملیات git یا اجرای آزمون که روی میزبان ساخت آغاز شود، از شبکه و اعتبارنامههای همان میزبان استفاده میکند، نه از نشست VPN لپتاپ شما. اینکه لپتاپ به یک آینه بسته خصوصی میرسد چیزی درباره توانایی سرور نمیگوید. اگر ساخت به یک رجیستری نیاز دارد، سرور به مسیری به آن نیاز دارد، و این گفتوگوی دیوار آتش است نه تنظیم ویرایشگر.
همین موضوع برعکس هم برای برنامههای آزمون صادق است. رسیدن به سرویسی روی سرور از مرورگر شما اتصالی جداگانه است که به مسیر خصوصی تأییدشده یا ارسال محدود نیاز دارد، نه یک شنونده باز.
بدون از دست دادن کار، قطع کنید
پیش از افتادن اتصال ذخیره و commit کنید، یا دستکم درخت کار را ثبت کنید. نشست ویرایش دور تضمین نمیکند که ساخت در حال اجرا یا بافری ذخیرهنشده از قطع شبکه جان سالم ببرد. برای هر چیزی که باید بیش از نشست شما بماند، از گردش کار یا نشست پشتیبانیشده پروژه استفاده کنید.
تقسیم کار آنگاه روشن است: لپتاپ یک رابط است، سرور مالک فضای کاری و زنجیره ابزار است، و VPN مسیر را فراهم میکند. جابهجا کردن فایلها و جابهجا کردن ساخت دو تصمیم جداگانهاند.