CI/CD in SAP BTP

In questo how-to vediamo come abilitare il servizio SAP CI/CD per automatizzare le fasi di build, test e deploy di un progetto CAP pubblicato in un repository GitHub.

SAP CONTINUOUS INTEGRATION & DELIVERY

Dopo aver effettuato l’accesso al trial account, navighiamo verso il Service Marketplace dal SAP BTP Cockpit e sottoscriviamo il service plan di SAP Continuous Integration & Delivery.
Selezionato il servizio in questione occorre creare un’istanza dello stesso, scegliendo lo specifico service plan, che in questo caso può essere trial:
A questo punto assegniamo la Role Collection “CICD Service Administrator” all’utente. Essa fornisce i massimi permessi all’utente sull’istanza che abbiamo appena creato. Per fare ciò, dal Cockpit, andiamo in “Security”, dunque in “Role Collections” e cerchiamo la Role Collection che ci interessa:
Clicchiamo su “CICD Service Administrator, andiamo in Edit e nella sezione ID digitiamo la mail dell’account SAP BTP dell’utente:
Clicchiamo su Save e proseguiamo con la procedura.

Configurazione dell’istanza del servizio

Poiché il servizio in questione è connesso ad un repository GitHub, bisogna configurare le credenziali per accedervi. Nel SAP BTP Cockpit navighiamo verso Instance and Subscription, clicchiamo sull’istanza del servizio e, se la repository GitHub è privata (è buona norma che lo sia), inseriamo le credenziali di Git:
È necessario configurare anche le credenziali di SAP BTP per poter effettuare il deploy:
SAP CICD è in grado di gestire più repository. Nella sezione Repositories possiamo creare diverse istanze, ognuna delle quali rappresenta un repository, di cui forniamo l’URL. Creata l’istanza, le assegniamo un nome e ne indichiamo le relative credenziali:

Configurazione di un Job CI/CD

Fino ad ora abbiamo attivato il servizio, ma quest’ultimo ancora non sta effettuando alcuna operazione. Per fare ciò necessitiamo di un “job”: esso rappresenta un’unità di lavoro specifica all’interno del flusso di CI/CD ed è responsabile di compiere una serie di attività ben definite.

Dalla sezione Jobs ne creiamo uno, indicando un nome univoco per il subaccount in questione e specificando il repository a cui esso si riferisce, nonché il branch e la Pipeline, ovvero la tipologia di applicazione da deployare (che può essere SAP Cloud Application Programming Model). Alla voce Stages selezioniamo Source Repository:

Il Job deve andare in esecuzione ogni qual volta il branch indicato subisce una modifica. Per recuperare questa informazione, si utilizza un Webhook Event Receiver, configurabile nello stesso servizio SAP BTP. Un webhook è una tecnologia utilizzata per consentire a due applicazioni o servizi web di comunicare tra loro in modo automatico. In sostanza, è un metodo per far sì che un’applicazione invii dati o notifiche a un’altra applicazione quando si verificano determinati eventi, inviando dei dati ad un URL (specificato in precedenza dal receiver) tramite il metodo POST del protocollo HTTP.


Inseriamo le informazioni che vediamo in questo popup nella sezione Settings del nostro repository:

Le informazioni che recuperiamo in questa fase sono quelle che ci consentono di registrare il Webhook, ovvero l’URL su cui ricevere l’HTTP POST, il content-type ed il secret (utile ai fini della sicurezza):
Queste informazioni le inseriamo all’interno della scheda Settings del nostro repository su GitHub:
Specifichiamo dunque l’URL, il secret ed il content-type precedentemente individuati, abilitando anche il protocollo SSL:
Tale Webhook notificherà al SAP CICD service che è avvenuto un cambiamento sul branch del repository configurato mediante un payload ed un secret.

Configurazione degli Stages di una CI/CD Pipeline

Abbiamo configurato un job che viene interpellato ogni qual volta il branch indicato subisce delle modifiche. Tuttavia, il job non è ancora a conoscenza delle operazioni da effettuare.

Le operazioni da effettuare vengono definite utilizzando una cosiddetta Pipeline.
All’interno del nostro progetto, daremo il comando cds add pipeline, il quale creerà una cartella .pipeline contenente un file config.yaml. In questo file andiamo a riempire i campi in modo coerente al nostro contesto (la documentazione completa del file si trova all’URL https://www.project-piper.io/configuration/):

Fatto ciò, aggiorniamo il nostro repository con le modifiche appena effettuate.

Verifica del Build Success

Non resta a questo punto che verificare che la build ed il deploy automatizzati del nostro progetto siano andati a buon fine. Per fare ciò, andiamo nell’istanza di SAP CICD e clicchiamo sul tab Jobs e visualizziamo la scheda Builds:
Se il job è stato correttamente eseguito, verrà mostrato un output simile al seguente:

Vuoi maggiori informazioni?

Cerchi sviluppatori SAP a supporto delle tue attività professionali? 

Compila i campi qui sotto, ti ricontatteremo quanto prima.