Integrare PowerShell in Jenkins per l’automazione senza soluzione di continuità

Se hai gestito server Windows per un certo periodo di tempo, senza dubbio avrai molti script PowerShell per eseguire quelle attività noiose ma necessarie che fai regolarmente, come reimpostare le password, raccogliere dati di log o archiviare file di backup. Sai che PowerShell in Jenkins è possibile?

Potresti avere degli script che esegui regolarmente, magari hai persino impostato un evento pianificato nel task scheduler per automatizzare i tuoi script PowerShell.

C’è un modo migliore.

In questo articolo, imparerai come installare Jenkins su Windows ed eseguire uno script PowerShell semplice. Imparerai come installare Jenkins, configurare la sicurezza di base, abilitare il plugin PowerShell ed eseguire un job per creare un semplice file di testo con parametri che inseriremo.

Questo articolo è pensato come una semplice introduzione a Jenkins. La configurazione che imparerai non è necessariamente destinata a ambienti di produzione.

Prerequisiti

La maggior parte di questo articolo sarà una guida passo passo. Se hai intenzione di seguirla, assicurati di avere alcuni prerequisiti in atto.

I requisiti per eseguire Jenkins sono così minimi che qualsiasi computer moderno potrebbe farlo. Gli esempi in questo articolo si basano su Jenkins in esecuzione su:

  • Windows 10 Enterprise v.1903
  • PowerShell Core v6

Sebbene Jenkins possa essere eseguito su qualsiasi piattaforma, mi concentrerò su Windows 10 Enterprise per mantenere le cose semplici.

Installazione di Jenkins

Con i prerequisiti risolti, procediamo con l’installazione di Jenkins.

L’installazione di Jenkins è semplice e diretta. Accedi a https://www.jenkins.io/download/ e scarica la versione a supporto a lungo termine (LTS). Sono disponibili due versioni, la versione LTS e la versione “settimanale”. La versione “settimanale” viene aggiornata regolarmente ma può essere instabile. Per questo articolo, utilizzeremo la versione LTS. Questa è la versione più stabile.

Come puoi vedere dalla schermata sottostante, ci sono diverse opzioni tra cui scegliere. Seleziona la versione per Windows per avviare il download.

Installing the Windows package for Jenkins

Una volta scaricato l’installatore, estrai l’archivio zip ed esegui l’installazione accettando tutte le impostazioni predefinite. L’installazione è semplice.

Una volta completata l’installazione, Jenkins aprirà un browser con la pagina Getting Started. Questa pagina contiene la password amministratore iniziale per sbloccare Jenkins e continuare la configurazione. Come puoi vedere di seguito, Jenkins mi sta indicando di leggere un file di testo in C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword.

Providing the administrator password for Jenkins

Accedi al file indicato, aprilo, copia la password mostrata e utilizzala come password amministratore nella pagina Getting Started.

Installazione di plugin

Una volta effettuato il primo accesso, Jenkins completerà l’installazione finale e poi chiederà quali plugin installare. Ci sono un paio di scelte come puoi vedere nell’immagine sottostante.

Selezionando Installa i plugin suggeriti verrà installato il set raccomandato di plugin basato sugli scenari di utilizzo più comuni. Questi includono plugin per fornitori di autenticazione, interazioni con GitHub ed estensioni Java. Seleziona plugin da installare ti permette di installare solo quelli necessari da un elenco di tutti i plugin disponibili.

Evidenzia Installa i plugin suggeriti e clicca su OK. Questo processo richiederà alcuni minuti per installare i plugin iniziali, quindi adesso è il momento giusto per prenderti un caffè.

Installing plugins in Jenkins

Creazione dell’utente Admin

Una volta installati i plugin, il passo successivo è la creazione del nostro primo utente. Questo primo utente è l’amministratore di Jenkins e avrà permessi globali, molto simili all’Amministratore Enterprise per Windows Server. Puoi vedere sotto come sarà la pagina Crea il primo utente Admin.

Creating a Jenkins admin user

Da questo momento in poi, l’interfaccia di Jenkins sarà accessibile solo inserendo un nome utente e una password validi.

Impostazione dell’URL dell’Admin di Jenkins

L’ultimo passo è impostare l’URL per il servizio Jenkins. Questo URL è l’interfaccia per gestire il programma Jenkins e idealmente dovrebbe essere impostato su un Fully Qualified Domain Name (FQDN). Impostarlo su un FQDN permetterà l’accesso remoto come un sito web. Per questo articolo e per semplificare le cose, accetta l’URL predefinito.

The Jenkins URL

Impostazione della sicurezza

Con l’installazione completata, procediamo con la configurazione dell’autenticazione. Se non è già aperto, vai alla dashboard principale. Dalla dashboard principale, clicca su “Gestisci Jenkins”, poi su “Configura sicurezza globale” per aprire le impostazioni di sicurezza come mostrato di seguito.

Setting Global Security options

Nella pagina “Configura sicurezza globale” vedrai diverse opzioni tra cui scegliere. In questo articolo, utilizzeremo il database utenti di Jenkins per mantenere le cose semplici. È anche una buona idea deselezionare “Consenti agli utenti di registrarsi” come mostrato di seguito. Se lasciata selezionata, consentirà a qualsiasi utente di creare un account e ottenere l’accesso a Jenkins. .

Osservando lo screenshot qui sotto, ci sono altre opzioni per l’autenticazione.

  • Delega al contenitore servlet: viene utilizzato se hai già configurato i contenitori Docker con Jenkins e consente l’autenticazione tramite il contenitore.
  • LDAP: questa opzione viene utilizzata quando hai già un Active Directory che desideri utilizzare per l’autenticazione.

Successivamente, seleziona l’opzione “Gli utenti con accesso possono fare qualsiasi cosa”. In questa modalità, ogni utente con accesso avrà pieno controllo di Jenkins. Questo potrebbe non essere una buona idea per l’ambiente di produzione in quanto consente a qualsiasi utente di apportare modifiche alle impostazioni.

Configuring global security

Abilitazione del plugin PowerShell in Jenkins

Con la configurazione di base della sicurezza completata, è ora il momento di configurare il plugin PowerShell in Jenkins. Per installare il plugin PowerShell, vai alla dashboard principale, clicca su “Gestisci Jenkins” e poi su “Gestisci Plugin” come mostrato di seguito.

Installing the PowerShell plugin

Ci sono centinaia di plug-in, quindi il modo migliore per trovare il plug-in di PowerShell è cercarlo. Nella barra dei filtri, digita “PowerShell” e selezionalo dalla lista. Seleziona la casella, come mostrato di seguito, per abilitarlo. Ciò consentirà a Jenkins di scrivere direttamente comandi e script PowerShell nelle caselle di testo all’interno di Jenkins e di invocare PowerShell senza dover avviare una console PowerShell separata.

Puoi vedere di seguito come potrebbe apparire questo.

Finding the PowerShell plugin

Con il plug-in abilitato, Jenkins è pronto per eseguire lavori PowerShell.

Creazione di un lavoro PowerShell in Jenkins

L’installazione del plug-in PowerShell in Jenkins è completa. Ora passiamo alle cose divertenti. Creiamo un lavoro.

In Jenkins, un lavoro è definito come una serie di attività da completare. Uno scenario comune è un lavoro che avvierà la compilazione di un programma quando un sviluppatore effettua il check-in del codice. Molto simile al Task Manager in Windows Server.

Il lavoro che stiamo per configurare sarà quello di verificare la presenza della directory c:\temp e inserire un file di testo in quella directory con un messaggio personalizzato.

Jenkins ha diversi tipi di progetti, a volte chiamati pipelines, che si concentrano su obiettivi specifici. I diversi tipi di progetti avranno impostazioni, opzioni e parametri diversi a seconda del tipo di progetto scelto. Puoi trovare ulteriori informazioni sui tipi di progetti e quando usarli sul sito di Jenkins.

Dalla dashboard principale, fare clic su Nuovo elemento. Per il nome del lavoro, inserire creazione di un file di testo. Questo è arbitrario, ma è una buona idea etichettarlo in modo coerente.

In questo articolo useremo il progetto Freestyle. Questo offre la massima flessibilità per creare il nostro lavoro. Evidenziare il progetto Freestyle e scorrere fino in fondo e fare clic su OK.

Creating a Jenkins project

Questo lavoro sarà un progetto parametrizzato. Ciò significa che possiamo richiedere agli utenti un input e quell’input verrà passato al lavoro. Ad esempio, supponiamo di avere un lavoro PowerShell in Jenkins che copia i file di log in una directory specifica. Possiamo aggiungere una richiesta al lavoro che chiederà un nome file da includere nella compilazione quando eseguiamo il lavoro.

Selezionare l’opzione Questo progetto è un progetto parametrizzato dall’elenco a discesa. Fare clic sul menù a discesa Aggiungi parametro e scegliere Parametro stringa. Il parametro stringa è dove inserire il messaggio che si desidera includere nel file di testo.

Creating a parameterized Jenkins job

Successivamente, aggiungere un secondo Parametro di scelta. Dovrebbe apparire come nella schermata di cattura seguente. Questa opzione fornirà all’utente la possibilità di selezionare un elemento dall’elenco a discesa.

Adding parameters to the project

Le impostazioni del lavoro dovrebbero ora assomigliare all’immagine di schermata seguente.

Final job

Scorri verso il basso fino alla sezione Costruzione. Fai clic sulla piccola freccia e seleziona Windows PowerShell. In questo modo Jenkins sa che stiamo eseguendo uno script PowerShell. Qui inseriamo anche lo script PowerShell. Questo lavoro è pronto. Fai clic su Salva.

Windows PowerShell option

Per uno script di esempio per il nostro lavoro PowerShell in Jenkins, creiamo un file nella directory temp e aggiungiamo un messaggio semplice.

Questo è uno script semplice che creerà una directory temp sotto la radice, se non è già presente, e creerà un file di testo in quella directory.

# Creare una directory temp
if (-not(Test-Path -Path 'C:\temp'))
{
    New-Item -Path 'C:\temp' -ItemType directory
}

# Utilizzando le variabili di ambiente esposte dal lavoro Jenkins 
Set-Content -Path "C:\temp\$($env:Filename).txt" -Value $env:Message

Suggerimento: Scrivi prima il tuo script in VSCode o in un altro editor e poi incollalo nella casella.

Esecuzione del lavoro PowerShell in Jenkins

Infine, sei pronto per eseguire il tuo primo lavoro. Torniamo alla dashboard principale e vedrai il lavoro Crea file di testo elencato nella dashboard principale. Vedi sotto.

Our new Jenkins job

Fai clic sull’icona dell’orologio nella parte destra e apri il modulo del lavoro.

Setting parameters on Jenkins job

Nella casella di messaggio, inserisci il testo che desideri inserire nel file di testo e fai clic su Esegui. Una volta completata l’esecuzione, fai clic sull’output della console. L’output della console mostra lo stato del lavoro e se l’esecuzione del lavoro è stata eseguita correttamente.

Console output from job

Ora tutto ciò che resta da fare è aprire il file manager e controllare il file. Naviga fino alla directory temp e apri il file di testo. Avrà lo stesso testo che hai inserito nella casella di messaggio di creazione.

Final outcome of Jenkins job

Sommario

Ora hai una comprensione di base di PowerShell in Jenkins. È un potente strumento che può essere utilizzato per gestire i tuoi script PowerShell e automatizzare tutte le cose!

Source:
https://adamtheautomator.com/jenkins-powershell/