SlideShare a Scribd company logo
1 of 15
Download to read offline
Continuous Integration and
Deployment
Cos’è il CI/CD
CI = lo sviluppo avviene attraverso un sistema di versionamento (ambiente
condiviso)
CD = automatizzare e aumentare la velocità delle fasi di build, di test e di
release, e rendere il software disponibile per l’utilizzo
Perchè il CICD
Non avere a che fare costantemente con i processi di build e deploy, ma una
volta configurato correttamente il sistema di CICD l’unica operazione che
bisogna fare è quella di integrare il codice.
Indice
- Pipelines
- Schedules Pipelines
- Esempio di impatto di un progetto sull’ambiente: modifica di un dato sensibile
- Continuous deployment
- L’esempio dei core-services
- CICD: considerazioni
Pipelines
stages:
  - build
  - test
  - deploy
build:
  stage: build
  script:
    - mvn clean package
test:
  stage: test
  script:
    - mvn verify
deploy:
    stage: deploy
    script:
      - mvn deploy
    only:
      - master
Pipelines: ricerca di un errore
Individuare il modulo che fallisce
per velocizzare il fix:
Schedules Pipelines
Avere sotto controllo lo stato complessivo dei progetti.
Schedules Pipelines
Concentrare lo sviluppo
nell’automazione:
●
Automatizzare i test
introducendo moduli ad-hoc
●
Sostituire i simulatori manuali
con progetti che fanno l’invio
schedulato di messaggi
Esempio: impatto di un progetto sull’ambiente:
modifica di un dato sensibile
Esempio: impatto di un progetto sull’ambiente:
modifica di un dato sensibile
Esempio di pipeline completa: i
core-services
●I core service sono dei componenti basati su entity mappate alle
tabelle dei nostri db
●Evitano di reimplementare le entity e la persistenza
●Fanno parte di un progetto in Gitlab, e gli artefatti sono gestiti da
un repository manager su una nostra macchina.
●CI/CD: poiche’ sono le basi di molti sviluppi, e’ fondamentale che
vengano rilasciate versioni stabili sull’ambiente
Esempio di pipeline completa: i
core-services
●
Chiunque può contribuire allo sviluppo del
progetto. Ogni sviluppatore lavora su un
proprio branch
●
Ogni branch ha una pipeline su cui sono
attive le fasi di build e test
●
Solo la pipeline del branch master (in
questo caso) ha la fase di deploy
●
Il software viene deployato dopo essere
stato mergiato nel master e dopo aver
passato le fasi di build e test
Esempio di pipeline
completa:CI/CD
Continuous Deployment
Il continuous deployment dovrebbe essere l’obiettivo principale dello sviluppo dei nostri prodotti.
●
 Gli errori bloccanti vengono intercettati nelle fasi precedenti al deploy
●
 Il deploy non può avvenire se ci sono errori nelle fasi di build e test
●
 Il deploy contiene il codice di tutti i contribuenti allo sviluppo (completezza)
●
 Il codice viene forzatamente sottoposto a review (collaborazione)
●
 Gli ambienti sono utilizzati in modo più efficiente
●
 Il software in produzione è sempre aggiornato, stabile, versionato
CI: Considerazioni
In base alla dinamica degli sviluppi, la CI/CD facilita lo sviluppatore perchè:
●
Isola il codice da integrare
●
Rende molto più facile il mantenimento di un progetto
●
Nel caso in cui lo sviluppatore deve modificare il codice di un progetto conosce lo stato del
progetto nell’avanzamento dell’ambiente in cui è integrato
●
Evidenzia gli errori all’istante e permette di operare senza dover cercare l’errore
●
Riduce il rischio nel modificare la configurazione delle piattaforme di storage, iot e big-data
●
Riduce il rischio di avere in produzione codice compromesso anticipando il fix di eventuali
errori

More Related Content

What's hot

Introduzione a Git (ITA - 2017)
Introduzione a Git (ITA - 2017)Introduzione a Git (ITA - 2017)
Introduzione a Git (ITA - 2017)Valerio Radice
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Natale Vinto
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 
Riccardo it starts_with_a_goal_DevOps_Heroes_Parma
Riccardo it starts_with_a_goal_DevOps_Heroes_ParmaRiccardo it starts_with_a_goal_DevOps_Heroes_Parma
Riccardo it starts_with_a_goal_DevOps_Heroes_ParmaRiccardo Porrini
 
Applicazioni Serverless con AWS
Applicazioni Serverless con AWSApplicazioni Serverless con AWS
Applicazioni Serverless con AWSsparkfabrik
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Mattia Milleri
 
Ttg 09 07_2015_debug_vs_2015
Ttg 09 07_2015_debug_vs_2015Ttg 09 07_2015_debug_vs_2015
Ttg 09 07_2015_debug_vs_2015Piero Sbressa
 
GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016Gaetano Paternò
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Mattia Milleri
 
m2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDEm2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDEMarcello Teodori
 
Git Flow - Un modello di branching che funziona
Git Flow - Un modello di branching che funzionaGit Flow - Un modello di branching che funziona
Git Flow - Un modello di branching che funzionaInnoteam Srl
 
DevOpsConf2021 - GitOps and best practices for cloud native CI/CD
DevOpsConf2021 - GitOps and best practices for cloud native CI/CDDevOpsConf2021 - GitOps and best practices for cloud native CI/CD
DevOpsConf2021 - GitOps and best practices for cloud native CI/CDAntonio Liccardi
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Marcello Teodori
 

What's hot (20)

Total Testing in DevOps
Total Testing in DevOpsTotal Testing in DevOps
Total Testing in DevOps
 
Introduzione a Git (ITA - 2017)
Introduzione a Git (ITA - 2017)Introduzione a Git (ITA - 2017)
Introduzione a Git (ITA - 2017)
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Git branching model
Git branching modelGit branching model
Git branching model
 
Riccardo it starts_with_a_goal_DevOps_Heroes_Parma
Riccardo it starts_with_a_goal_DevOps_Heroes_ParmaRiccardo it starts_with_a_goal_DevOps_Heroes_Parma
Riccardo it starts_with_a_goal_DevOps_Heroes_Parma
 
Applicazioni Serverless con AWS
Applicazioni Serverless con AWSApplicazioni Serverless con AWS
Applicazioni Serverless con AWS
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 
Lezione 1: I metodi agili
Lezione 1: I metodi agiliLezione 1: I metodi agili
Lezione 1: I metodi agili
 
Ttg 09 07_2015_debug_vs_2015
Ttg 09 07_2015_debug_vs_2015Ttg 09 07_2015_debug_vs_2015
Ttg 09 07_2015_debug_vs_2015
 
GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016GdG DevFestMed 2016 - 06/11/2016
GdG DevFestMed 2016 - 06/11/2016
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
 
m2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDEm2eclipse: integrazione maven2 in eclipse IDE
m2eclipse: integrazione maven2 in eclipse IDE
 
Introduzione a Git
Introduzione a GitIntroduzione a Git
Introduzione a Git
 
GitSlides
GitSlidesGitSlides
GitSlides
 
Git Flow - Un modello di branching che funziona
Git Flow - Un modello di branching che funzionaGit Flow - Un modello di branching che funziona
Git Flow - Un modello di branching che funziona
 
Controllo di versione e Git
Controllo di versione e GitControllo di versione e Git
Controllo di versione e Git
 
DevOpsConf2021 - GitOps and best practices for cloud native CI/CD
DevOpsConf2021 - GitOps and best practices for cloud native CI/CDDevOpsConf2021 - GitOps and best practices for cloud native CI/CD
DevOpsConf2021 - GitOps and best practices for cloud native CI/CD
 
Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5Streaming in Java e Flex con Red5
Streaming in Java e Flex con Red5
 

Similar to CI/CD - Presentazione Introduttiva

Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfFlorence Consulting
 
DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016Gaetano Paternò
 
CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeDotNetMarche
 
DevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessDevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessFelice Pescatore
 
Infrastructure as Code e metodologia DevOps
Infrastructure as Code e metodologia DevOpsInfrastructure as Code e metodologia DevOps
Infrastructure as Code e metodologia DevOpsPietro Ciotola
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2MageSpecialist
 
Milano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce IntegrationMilano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce IntegrationGonzalo Marcos Ansoain
 
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLIntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLmatteo_gentile
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineDavide Benvegnù
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOpsdotnetcode
 
Certificazioni VMware
Certificazioni VMwareCertificazioni VMware
Certificazioni VMwareVMUG IT
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationAlessandro Alpi
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioningNicolò Carandini
 

Similar to CI/CD - Presentazione Introduttiva (20)

Continuos Integration
Continuos IntegrationContinuos Integration
Continuos Integration
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
 
DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016
 
CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto reale
 
DevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessDevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del Business
 
Software Testing e TDD
Software Testing e TDDSoftware Testing e TDD
Software Testing e TDD
 
Infrastructure as Code e metodologia DevOps
Infrastructure as Code e metodologia DevOpsInfrastructure as Code e metodologia DevOps
Infrastructure as Code e metodologia DevOps
 
LARUS 10th - Rampado Omar
LARUS 10th - Rampado OmarLARUS 10th - Rampado Omar
LARUS 10th - Rampado Omar
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
Guida C++
Guida C++Guida C++
Guida C++
 
Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2
 
Milano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce IntegrationMilano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce Integration
 
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUMLIntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
IntroduzioneAllaGestioneDiUnProgettoSoftwareConUML
 
Webcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio OnlineWebcast - Introduzione a Visual Studio Online
Webcast - Introduzione a Visual Studio Online
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Webinar: "DevOps e Orchestrazione Bimodale dei Processi IT"
Webinar: "DevOps e Orchestrazione Bimodale dei Processi IT"Webinar: "DevOps e Orchestrazione Bimodale dei Processi IT"
Webinar: "DevOps e Orchestrazione Bimodale dei Processi IT"
 
Certificazioni VMware
Certificazioni VMwareCertificazioni VMware
Certificazioni VMware
 
PASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous IntegrationPASS Virtual Chapter - SQL Server Continuous Integration
PASS Virtual Chapter - SQL Server Continuous Integration
 
Web app slots and WebAPI versioning
Web app slots and WebAPI versioningWeb app slots and WebAPI versioning
Web app slots and WebAPI versioning
 

CI/CD - Presentazione Introduttiva

  • 2. Cos’è il CI/CD CI = lo sviluppo avviene attraverso un sistema di versionamento (ambiente condiviso) CD = automatizzare e aumentare la velocità delle fasi di build, di test e di release, e rendere il software disponibile per l’utilizzo
  • 3. Perchè il CICD Non avere a che fare costantemente con i processi di build e deploy, ma una volta configurato correttamente il sistema di CICD l’unica operazione che bisogna fare è quella di integrare il codice.
  • 4. Indice - Pipelines - Schedules Pipelines - Esempio di impatto di un progetto sull’ambiente: modifica di un dato sensibile - Continuous deployment - L’esempio dei core-services - CICD: considerazioni
  • 5. Pipelines stages:   - build   - test   - deploy build:   stage: build   script:     - mvn clean package test:   stage: test   script:     - mvn verify deploy:     stage: deploy     script:       - mvn deploy     only:       - master
  • 6. Pipelines: ricerca di un errore Individuare il modulo che fallisce per velocizzare il fix:
  • 7. Schedules Pipelines Avere sotto controllo lo stato complessivo dei progetti.
  • 8. Schedules Pipelines Concentrare lo sviluppo nell’automazione: ● Automatizzare i test introducendo moduli ad-hoc ● Sostituire i simulatori manuali con progetti che fanno l’invio schedulato di messaggi
  • 9. Esempio: impatto di un progetto sull’ambiente: modifica di un dato sensibile
  • 10. Esempio: impatto di un progetto sull’ambiente: modifica di un dato sensibile
  • 11. Esempio di pipeline completa: i core-services ●I core service sono dei componenti basati su entity mappate alle tabelle dei nostri db ●Evitano di reimplementare le entity e la persistenza ●Fanno parte di un progetto in Gitlab, e gli artefatti sono gestiti da un repository manager su una nostra macchina. ●CI/CD: poiche’ sono le basi di molti sviluppi, e’ fondamentale che vengano rilasciate versioni stabili sull’ambiente
  • 12. Esempio di pipeline completa: i core-services ● Chiunque può contribuire allo sviluppo del progetto. Ogni sviluppatore lavora su un proprio branch ● Ogni branch ha una pipeline su cui sono attive le fasi di build e test ● Solo la pipeline del branch master (in questo caso) ha la fase di deploy ● Il software viene deployato dopo essere stato mergiato nel master e dopo aver passato le fasi di build e test
  • 14. Continuous Deployment Il continuous deployment dovrebbe essere l’obiettivo principale dello sviluppo dei nostri prodotti. ●  Gli errori bloccanti vengono intercettati nelle fasi precedenti al deploy ●  Il deploy non può avvenire se ci sono errori nelle fasi di build e test ●  Il deploy contiene il codice di tutti i contribuenti allo sviluppo (completezza) ●  Il codice viene forzatamente sottoposto a review (collaborazione) ●  Gli ambienti sono utilizzati in modo più efficiente ●  Il software in produzione è sempre aggiornato, stabile, versionato
  • 15. CI: Considerazioni In base alla dinamica degli sviluppi, la CI/CD facilita lo sviluppatore perchè: ● Isola il codice da integrare ● Rende molto più facile il mantenimento di un progetto ● Nel caso in cui lo sviluppatore deve modificare il codice di un progetto conosce lo stato del progetto nell’avanzamento dell’ambiente in cui è integrato ● Evidenzia gli errori all’istante e permette di operare senza dover cercare l’errore ● Riduce il rischio nel modificare la configurazione delle piattaforme di storage, iot e big-data ● Riduce il rischio di avere in produzione codice compromesso anticipando il fix di eventuali errori