Come impostare distribuzioni automatizzate sui tuoi server con Visual Studio e FTP

Visual Studio.

Visual Studio offre opzioni per pubblicare automaticamente la build di rilascio su server remoti tramite FTP. Questo può essere molto utile se distribuisci spesso le modifiche o esegui test in un ambiente remoto. Ti mostreremo come configurarlo e ti spiegheremo come funziona.

Pubblicazione tramite FTP

FTP è un vecchio protocollo generalmente non sicuro, ma finché il tuo server FTP supporta le moderne estensioni di FTPS, che utilizza la crittografia TLS, dovrebbe andare bene. Puoi anche eseguire il chroot dei tuoi utenti FTP in modo che possano scrivere solo nella directory di destinazione.

Puoi leggere la nostra guida alla configurazione di un server FTP per saperne di più. Dovrai assicurarti che FTPS sia impostato e che il normale FTP sia disabilitato.

RELAZIONATO: Come configurare un server FTP Linux per trasferimenti rapidi di file

Tuttavia, non tutti i tipi di build sono supportati. Le librerie di classi, ad esempio, non hanno opzioni per la pubblicazione. Le applicazioni ASP.NET Core sono supportate meglio e dispongono di opzioni per la pubblicazione in Azure e Docker.

Fortunatamente, per le applicazioni che non sono supportate, puoi collegarlo tu stesso, poiché Visual Studio offre anche opzioni per eseguire script PowerShell post-compilazione. Questi verranno eseguiti sulla build anziché sulla pubblicazione, ma puoi semplicemente impostare un profilo di build di “pubblicazione” personalizzato con le impostazioni di rilascio copiate.

Puoi utilizzare questi script post-compilazione per effettuare trasferimenti FTP o SCP o anche per connetterti a servizi esterni come AWS S3 o un registro Docker.

Configurazione di Visual Studio

In build, dovresti vedere un’opzione per pubblicare la tua soluzione. Se non lo vedi, dovrai passare all’opzione di backup dell’utilizzo di script post-compilazione.

In build, dovresti vedere un'opzione per pubblicare la tua soluzione.

Dovrai creare un nuovo profilo di pubblicazione o modificare quello predefinito. Seleziona Server FTPS, anche se puoi pubblicare in Azure, Docker, una cartella locale o la distribuzione Web IIS se questi funzionano meglio per te.

Seleziona Server FTPS, anche se puoi pubblicare in Azure, Docker, una cartella locale o la distribuzione Web IIS se questi funzionano meglio per te.

Inserisci i dettagli della connessione. Dovrai fornirgli un URL, un percorso per il caricamento e un nome utente/password.

Inserisci i dettagli della connessione.  Dovrai fornirgli un URL, un percorso per il caricamento e un nome utente/password.

Quindi, fai clic su Pubblica e dovresti vederlo trasferire nella console al termine della compilazione. In caso contrario, riceverai un errore o un file di registro in cui puoi risolverlo.

Configurazione di script post-compilazione per altre applicazioni

Le opzioni integrate di Visual Studio sono ottime, ma quando non funzionano, dovrai eseguire un po’ di script. Fare clic con il pulsante destro del mouse sul progetto e selezionare “Proprietà”:

  Visual Studio, fai clic con il pulsante destro del mouse sul progetto, fai clic su "Proprietà".

Quindi, in “Crea eventi”, puoi impostare un comando post-compilazione. Nota che questo è cmd, quindi dovrai chiamare manualmente PowerShell e questo è anche limitato alla cartella di output della build, quindi se stai archiviando lo script PowerShell nella radice del tuo progetto, potresti dover fare riferimento è un paio di directory con .......

Impostalo per l’esecuzione dopo la compilazione e puoi scegliere se eseguire lo script sempre, ogni volta che ha esito positivo o ogni volta che la build viene aggiornata. Se stai riavviando i server o qualcosa del genere, ti consigliamo di eseguire lo script solo quando viene aggiornato. Altrimenti, seleziona “in caso di compilazione riuscita” a meno che tu non abbia un motivo per eseguire lo script quando la compilazione fallisce.

Esecuzione di eventi di pre e post-compilazione.

PowerShell non ha il supporto integrato per FTP. Hai due opzioni: usa Comunicazione remota PowerShell su SSH per trasferire su un server Linux o utilizzare una libreria PowerShell per FTP.

$s = New-PSSession -HostName 123.123.123.123 -UserName ubuntu
Copy-Item .example.txt /home/ubuntu -ToSession $s

Se hai bisogno di usare FTP, WinSCP può gestire il trasferimento abbastanza facilmente.

Add-Type -Path "WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.ParseUrl("ftp://username:[email protected]/")

$session = New-Object WinSCP.Session
$session.Open($sessionOptions)

$session.PutFiles("c:source*", "/destination/").Check()

$session.Dispose()

In entrambi i casi, dovrai assicurarti che il tuo script abbia riferimenti corretti alle posizioni dei file corrette. Se fai clic su “Modifica post-compilazione”, vedrai una finestra che elenca tutte le variabili che puoi passare al tuo script.

  Variabili "Modifica post-costruzione".