Per creare una pipeline di integrazione e consegna continue (CICD) in vRealize Automation Code Stream, è possibile utilizzare il modello di pipeline smart CICD. Per pianificare la creazione CICD nativa, raccogliere le informazioni necessarie per compilare il modello di pipeline smart prima di utilizzarlo per creare la pipeline in questo piano di esempio.

Dopo avere immesso le informazioni nel modello di pipeline smart e averlo salvato, il modello crea una pipeline che include fasi e attività. Viene inoltre indicato dove distribuire l'immagine in base ai tipi di ambiente selezionati, ad esempio di sviluppo e di produzione. La pipeline pubblicherà l'immagine del Docker ed effettuerà le azioni necessarie per eseguirla. Dopo l'esecuzione della pipeline, è possibile monitorare le tendenze nelle esecuzioni.

Per creare una pipeline CICD, è necessario pianificare sia le fasi di integrazione continua (CI) che quelle di consegna continua (CD) della pipeline.

Quando una pipeline include un'immagine da Docker Hub, è necessario verificare che l'immagine disponga di cURL incorporato prima di eseguire la pipeline. Quando la pipeline viene eseguita, vRealize Automation Code Stream scarica un file binario che utilizza cURL per eseguire i comandi.

Pianificazione della fase di integrazione continua (CI)

Per pianificare la fase CI della pipeline, configurare i requisiti esterni e interni e stabilire le informazioni da immettere nella parte CI del modello di pipeline smart. Di seguito è riportato un riepilogo.

Endpoint e repository necessari:

  • Un repository del codice sorgente Git in cui gli sviluppatori archiviano il codice. vRealize Automation Code Stream estrae il codice più recente nella pipeline quando gli sviluppatori confermano le modifiche.
  • Un endpoint Git per il repository in cui si trova il codice sorgente dello sviluppatore.
  • Un endpoint Docker per l'host della build Docker che eseguirà i comandi di creazione all'interno di un contenitore.
  • Un endpoint Kubernetes che consente a vRealize Automation Code Stream di distribuire l'immagine in un cluster Kubernetes.
  • Un'immagine del generatore che crea il contenitore su cui vengono eseguiti i test di integrazione continua.
  • Un endpoint del registro immagini dal quale l'host della build Docker può estrarre l'immagine del generatore.

È necessario disporre di accesso a un progetto. Il progetto raggruppa tutto il lavoro, inclusi la pipeline, gli endpoint e i dashboard. Verificare di essere un membro di un progetto in vRealize Automation Code Stream. In caso contrario, chiedere a un amministratore di vRealize Automation Code Stream di essere aggiunti come membri di un progetto. Vedere Come aggiungere un progetto in vRealize Automation Code Stream.

È necessario un webhook Git che consenta a vRealize Automation Code Stream di utilizzare il trigger Git per attivare la pipeline quando gli sviluppatori eseguono il commit delle modifiche al codice. Vedere Come utilizzare il trigger Git in vRealize Automation Code Stream per eseguire una pipeline.

I set di strumenti di creazione:

  • Il tipo di build, ad esempio Maven.
  • Tutti gli strumenti di creazione post-elaborazione utilizzati, tra cui JUnit, JaCoCo, Checkstyle e FindBugs.

Lo strumento di pubblicazione:

  • Uno strumento come Docker che distribuirà il contenitore della build.
  • Un tag di immagine, ovvero l'ID del commit o il numero di build.

Area di lavoro della build:

  • Un host della build Docker, ovvero l'endpoint Docker.
  • Un registro immagini. La parte CI della pipeline estrae l'immagine dall'endpoint del registro selezionato. Il contenitore esegue le attività CI e distribuisce l'immagine. Se il registro richiede le credenziali, è innanzitutto necessario creare un endpoint del registro immagini, quindi selezionarlo qui in modo che l'host possa estrarre l'immagine dal registro.
  • URL dell'immagine del generatore che crea il contenitore su cui vengono eseguite le attività di integrazione continua.

Pianificazione della fase di consegna continua (CD)

Per pianificare la fase CD della pipeline, configurare i requisiti esterni e interni e stabilire le informazioni da immettere nella parte CD del modello di pipeline smart.

Endpoint necessari:

  • Un endpoint Kubernetes che consente a vRealize Automation Code Stream di distribuire l'immagine in un cluster Kubernetes.

File e tipi di ambiente:

  • Tutti i tipi di ambiente in cui vRealize Automation Code Stream distribuirà l'applicazione, ad esempio di sviluppo e di produzione. Il modello di pipeline smart crea le fasi e le attività nella pipeline in base ai tipi di ambiente selezionati.
    Tabella 1. Fasi della pipeline create dal modello di pipeline smart CICD
    Contenuto della pipeline Funzioni
    Fase di creazione-pubblicazione Crea e testa il codice, crea l'immagine del generatore e pubblica l'immagine nell'host Docker.
    Fase di sviluppo Utilizza un cluster di sviluppo Amazon Web Services (AWS) per creare e distribuire l'immagine. In questa fase è possibile creare uno spazio dei nomi nel cluster e una chiave segreta.
    Fase di produzione Utilizza una versione di produzione di VMware Tanzu Kubernetes Grid Integrated Edition (in precedenza denominato VMware Enterprise PKS) per distribuire l'immagine in un cluster Kubernetes di produzione.
  • Un file YAML Kubernetes selezionato nella sezione CD del modello di pipeline smart CICD.

    Il file YAML di Kubernetes include tre sezioni obbligatorie per Spazio dei nomi, Servizio e Distribuzione e una sezione facoltativa per Segreto. Se si intende creare una pipeline scaricando un'immagine da un repository di proprietà privata, è necessario includere una sezione con il segreto di configurazione di Docker. Se la pipeline creata utilizza solo immagini pubblicamente disponibili, non è necessario alcun segreto. Il seguente file YAML di esempio include quattro sezioni.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: codestream
      namespace: codestream
    ---  
    apiVersion: v1
    data:
      .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZ1234567890lci5pby92MS8iOnsidXNlcm5hbWUiOiJhdXRvbWF0aW9uYmV0YSIsInBhc3N3b3JkIjoiVk13YXJlQDEyMyIsImVtYWlsIjoiYXV0b21hdGlvbmJldGF1c2VyQGdtYWlsLmNvbSIsImF1dGgiOiJZWFYwYjIxaGRHbHZibUpsZEdFNlZrMTNZWEpsUURFeU13PT0ifX19
    kind: Secret
    metadata:
      name: dockerhub-secret
      namespace: codestream
    type: kubernetes.io/dockerconfigjson
    ---   
    apiVersion: v1
    kind: Service
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      ports:
        - port: 80
      selector:
        app: codestream-demo
        tier: frontend
      type: LoadBalancer 
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: codestream-demo
      namespace: codestream
      labels:
        app: codestream-demo
    spec:
      replicas: 10
      selector:
        matchLabels:
          app: codestream-demo
          tier: frontend
      template:
        metadata:
          labels:
            app: codestream-demo
            tier: frontend
        spec:
          containers:
          - name: codestream-demo
            image: automationbeta/codestream-demo:01
            ports:
            - containerPort: 80
              name: codestream-demo
          imagePullSecrets:
          - name: dockerhub-secret

    Per applicare il file nel modello smart, fare clic su Seleziona e selezionare il file YAML di Kubernetes. A questo punto, fare clic su Elabora. Il modello di pipeline smart consente di visualizzare gli ambienti di distribuzione e i servizi disponibili. Selezionare un servizio, l'endpoint del cluster e la strategia di distribuzione. Ad esempio, per utilizzare il modello di distribuzione Canary, selezionare Canary e immettere una percentuale per la fase di distribuzione.

    Il modello di pipeline smart può elaborare Canary, l'aggiornamento in sequenza e le distribuzioni di integrazione e consegna continue Blu-verde.

Come creare la pipeline CICD utilizzando il modello di pipeline smart

Dopo aver raccolto tutte le informazioni e aver configurato il necessario, ecco come verrà creata una pipeline dal modello di pipeline smart CICD.

Nelle pipeline selezionare Nuova pipeline > Modelli smart.

Quando si crea una pipeline, è possibile utilizzare un modello di pipeline smart.

Selezionare il modello di pipeline smart CICD.

È possibile creare una pipeline di integrazione e consegna continue facendo clic sulla scheda del modello di pipeline smart CICD.

Compilare il modello e salvare la pipeline con le fasi che vengono create. Se necessario, modificare la pipeline prima di salvarla.

Il modello di pipeline smart CICD crea la pipeline con fasi che creano e pubblicano l'applicazione e la consegnano agli ambienti di sviluppo e produzione.

Abilitare la pipeline ed eseguirla. Dopo l'esecuzione, eseguire le operazioni seguenti:

  • Verificare che la pipeline sia riuscita. Fare clic su Esecuzioni e cercare la pipeline. Se non è riuscita, correggere eventuali errori ed eseguirla di nuovo.
  • Verificare che il webhook Git funzioni correttamente. Nella scheda Attività di Git sono visualizzati gli eventi. Fare clic su Trigger > Git > Attività.
  • Osservare il dashboard della pipeline ed esaminare le tendenze. Fare clic su Dashboard e cercare il dashboard della pipeline. È possibile anche creare un dashboard personalizzato per creare report su indicatori KPI aggiuntivi.

Per un esempio dettagliato, vedere Come integrare il codice in modo continuativo dal repository GitHub o GitLab nella pipeline in vRealize Automation Code Stream.