Esempio di pipeline Java

Nel diagramma riportato di seguito viene illustrato un esempio dell'aspetto di una creazione concettuale per una pipeline Java mediante gli strumenti Oracle e Open Source. L'uso di un processo di creazione più efficace può garantire maggiore qualità e sicurezza.
Segue la descrizione di cicd-process-pipeline.png
Descrizione dell'immagine cicd-process-pipeline.png

L'orchestratore pipeline guida il processo di pipeline in questo esempio di pipeline Java illustrato utilizzando alcuni strumenti comunemente utilizzati. Di seguito sono riportati i passi del processo.

  1. Codice modifica

    Esegue i controlli Git di base per le credenziali utilizzando Static Application Security Testing (SAST) e avvia la pipeline. Utilizza l'approccio Gitflow per gestire il repository di codici in base alla struttura del codice mediante strumenti quali GitLab o GithHub. Il codice può essere strutturato in modo da avere diramazione, unione e rilascio delle versioni per controllare le modifiche all'origine. Il codice viene mappato ad ambienti quali sviluppo, test, preproduzione e produzione. I commit nelle diverse parti del repository attivano le azioni Sast.

    • Ad esempio, GitHub incorpora la scansione statica della sicurezza per cercare i pattern che riconosceranno password e token all'interno del codice e dei file di configurazione.
  2. Codice generazione

    Genera un file JAR/WAR/EAR ed esegue il pull delle dipendenze richieste. Puoi utilizzare strumenti quali Java Apache Maven per compilare e creare il file JAR (o i file di archivio distribuibili correlati) e firmare l'artifact.

    • Gestire le dipendenze di terze parti: gestisce le dipendenze di codice e le librerie di terze parti utilizzando strumenti come Snyk. Synk controlla e garantisce che le dipendenze siano corrette, da un'origine accettata, e cerca contenuti dannosi. Recupera, ispeziona, approva e memorizza gli artifact delle dipendenze esterne. La gestione delle dipendenze di terze parti consente di memorizzare le nostre dipendenze in locale utilizzando strumenti quali Archiva, Nexus OSS e così via. È inoltre possibile controllare le dipendenze per assicurarsi che abbiano origini attendibili. Ciò può garantire che la dipendenza non sia stata compromessa con contenuti dannosi utilizzando strumenti come Snyk, Nexus o scanOS.
  3. Controlla qualità e conformità

    Scansione per OWASP Primi 10 problemi e verifica la conformità agli standard di codifica utilizzando strumenti come Sonarcube o Lint.

  4. Esegui test unità

    Esegui test delle unità e acquisisci dati sulla copertura del codice utilizzando JACOCO e JUnit. JACOCO fornisce la raccolta di copertura, ad esempio cerca quali linee di codice sono state eseguite e quanta parte del codice è stata testata in modo statistico. JUnit esegue i test di unità. È possibile scegliere di espandere la descrizione se si ritiene utile.

  5. Esegui test API

    Esegue il test delle API con dati aggiornati e client di test utilizzando strumenti quali Dredd, Apiary o Swagger Hub.

  6. Test componenti e UX

    Testare i componenti del riquadro nero e qualsiasi elemento dell'interfaccia utente. Misura le prestazioni per garantire che non vi siano problemi di base. Raccoglie le metriche di copertura dei test utilizzando strumenti quali Selenium e JMeter. JMeter esegue test della user experience e delle performance e verifica i flussi di lavoro degli utenti. Selenium guida l'esercizio degli elementi dell'interfaccia utente.

  7. Sicurezza test

    Test di codice per vulnerabilità come, ad esempio, il modo in cui gestisce le chiamate API illegali, i payload in eccesso, gli attacchi di iniezione e così via utilizzando Zap. Esegui test di sicurezza controllando la presenza di codice ridondante e istruzioni SQL preparate.

  8. Package per distribuzione

    Raggruppa la soluzione come container, convalida i package e verifica la presenza di problemi e best practice relative ai container utilizzando strumenti come Docker Snyk.

  9. Genera documentazione

    Generare documentazione utile e renderla disponibile per l'utilizzo. Firma gli artefatti utilizzando strumenti come Pandoc o Doxygen. Pandoc passa il progetto alla fase successiva e lo aggiunge all'archivio attendibile, ad esempio un registro, da utilizzare nella fase successiva.

Se uno di questi passi non riesce o il processo identifica troppe avvertenze, la build non riesce. Le build possono avere esito negativo in qualsiasi punto del processo e impedire che i passi successivi continuino. Una build non riuscita impedisce la creazione di promozioni del codice automatizzate configurate. È possibile utilizzare alcuni degli strumenti consigliati per le build con più fasi per supportare l'esecuzione dei test in ciascuna fase. Ad esempio, i test a livello di sistema possono utilizzare strumenti di test API per interagire con il sistema come servizio esterno anziché simulare le azioni di un altro componente all'interno della soluzione aziendale.