C++ attālināta būvēšana caur VPN: paturiet rīku ķēdi uz resursdatora
Koplietotā mapes montēšana nav tas pats, kas būvēšana attālināti. Pārbaudiet, kurš resursdators atbild, kurš kompilators darbojas un kur dzīvo atkļūdotājs un tīkls.
Koplietotā mape tiek montēta, redaktors atver failu, un būvēšana joprojām notiek klēpjdatorā. Nekas neziņo par kļūdu, un tieši tas mulsina. Attālināts ceļš nav attālināta rīku ķēde, un redaktors, kas spēj lasīt failu caur montējumu, labprāt izsauks uz to vietējo kompilatoru. Risinājums ir pārvietot darbvietu, nevis tikai baitus.
Montēta mape nav darbvieta
Montēšana caur SSH vai SMB dod jums ceļu. Vai kompilators, būvēšanas sistēma un atkļūdotājs nāk no attālinātās puses, ir atkarīgs no tā, kur redaktors nolemj tos izpildīt. Daudzas konfigurācijas lasa attālinātus failus un kompilē tos lokāli, un tad cieš neveiksmi uz galvenes faila, kas pastāv tikai serverī.
Simptoms ir smalks: būvēšana izdodas ar daļējiem rezultātiem vai salūzt uz include ceļa, kas redaktorā izskatās pareizs.
Pierādiet, kurš resursdators atbild
Savienojieties ar īstu attālinātu sesiju, nevis montējumu, pēc tam izpildiet trīs tikai lasāmas komandas terminālī, ko šī sesija jums dod. VS Code SSH rokasgrāmata dokumentē, ka terminālis pievienotā attālinātā logā darbojas uz attālinātā resursdatora un ka tā pati sesija nes atkļūdošanu. Vispirms saņemiet atļauju attālinātajām komponentēm, ja organizācija tās ierobežo.
hostname nosauc mašīnu, kurā jūs esat, pwd parāda, kur darbvieta patiešām atrodas, un command -v c++ izdrukā kompilatoru, ko izpildītu čaula. Visām trim atbildēm būtu jāraksturo serveris, nevis klēpjdators.
Tās nepierāda, ka versija vai būvēšanas konfigurācija ir pareiza. Salīdziniet to ar paša projekta norādēm kā atsevišķu soli.
Izsekojiet vienai izmaiņai cauri būvēšanai un atkļūdošanai
Veiciet nelielu izmaiņu attālinātajā darbvietā un saglabājiet to tur. Palaidiet dokumentēto būvēšanu no tās pašas mapes un apstipriniet, ka izvade atspoguļo jūsu izmaiņu, nevis vecāku kopiju citur. Pēc tam palaidiet atkļūdotāju caur to pašu attālināto sesiju, binārā faila ceļam un darba mapei norādot uz servera būvēšanas koku. Avota ceļu atbilstība ir svarīga, jo atkļūdotājs, kas jūsu izmaiņu attiecina uz klēpjdatora ceļu, atkļūdo citu failu.
Ja atkļūdošanas mērķis ziņo par ceļiem, kas sākas ar jūsu lokālo mājas mapi, palaišanas konfigurācija joprojām domā lokāli.
Tīkla atkarības paliek uz resursdatora
Pakotnes iegūšana, git darbība vai testu palaišana, kas sākta uz būvēšanas resursdatora, izmanto tā resursdatora tīklu un akreditācijas datus, nevis jūsu klēpjdatora VPN sesiju. Tas, ka klēpjdators sasniedz privātu pakotņu spoguli, neko neizsaka par to, vai serveris to spēj. Ja būvēšanai nepieciešams reģistrs, serverim nepieciešams maršruts uz to, un tā ir ugunsmūra saruna, nevis redaktora iestatījums.
Pretēji tas pats attiecas uz testa lietotnēm. Sasniegt pakalpojumu uz servera no pārlūka ir atsevišķs savienojums, kam nepieciešams apstiprināts privāts ceļš vai ierobežota pāradresācija, nevis atvērts klausītājs.
Atvienojieties, nezaudējot darbu
Saglabājiet un commitējiet vai vismaz pierakstiet darba koku, pirms savienojums krīt. Attālināta rediģēšanas sesija nesola, ka darbojoša būvēšana vai nesaglabāts buferis pārdzīvos tīkla pārtraukumu. Visam, kam jādzīvo ilgāk par jūsu sesiju, izmantojiet projektā atbalstīto uzdevumu vai sesiju plūsmu.
Darba sadalījums tad ir skaidrs: klēpjdators ir saskarne, serveris pārvalda darbvietu un rīku ķēdi, un VPN nodrošina maršrutu. Failu pārvietošana un būvēšanas pārvietošana ir divi atsevišķi lēmumi.