Collegati a Jenkins

Puoi avviare build automatiche con i trigger di Jenkins e i webhook di Secure Source Manager.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare trigger di build Jenkins, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Per informazioni sulla concessione dei ruoli Secure Source Manager, consulta Controllo dell'accesso con IAM e Concedere agli utenti l'accesso all'istanza.

Configurare un trigger webhook

Jenkins utilizza plug-in di trigger di build per abilitare l'automazione CI/CD. Puoi configurare gli attivatori in modo che rilevino gli eventi in entrata, ad esempio quando viene eseguito il push di un nuovo commit in un repository o quando viene avviata una richiesta pull, e poi eseguire automaticamente una build quando arrivano nuovi eventi. Puoi anche configurare trigger per creare build dal codice per ogni modifica al repository di codice sorgente o solo in caso di modifiche che soddisfano determinati criteri.

Per configurare un trigger webhook Jenkins generico:

  1. Installa i plug-in Jenkins Git Plugin, SSH Credential Plugin e Generic Webhook Trigger Plugin sul server Jenkins.

  2. Genera una coppia di chiavi SSH valida nel server Jenkins. Secure Source Manager supporta solo le chiavi di tipo RSA.

  3. Aggiungi il dominio dell'istanza Secure Source Manager al file SSH known_hosts del server Jenkins eseguendo il seguente comando:

    ssh -t git@INSTANCE_ID-INSTANCE_PROJECT_NUMBER-ssh.us-central1.sourcemanager.dev
    

    Dove:

    • INSTANCE_ID è il nome dell'istanza Secure Source Manager.
    • INSTANCE_PROJECT_NUMBER è il numero di progetto dell'istanza Secure Source Manager. Consulta Identificazione dei progetti per informazioni su dove trovare il numero del progetto.

    Ad esempio, il seguente comando aggiunge il dominio dell'istanza per un'istanza denominata prod-test-instance con un numero di progetto pari a 123456789.

    ssh -t git@prod-test-instance-123456789-ssh.us-central1.sourcemanager.dev
    

    Rispondi yes per aggiungere il dominio dell'istanza all'elenco di host noti.

  4. Nella pagina Manage Credentials (Gestisci credenziali) di Jenkins:

    1. Seleziona Nome utente SSH con chiave privata.
    2. Incolla la chiave SSH privata del server Jenkins.
    3. Nel menu a discesa Tipo, compila gli altri campi come richiesto.
  5. Fai clic su Crea.

  6. Nell'interfaccia web di Jenkins, crea un nuovo job Jenkins.

  7. Nella pagina di configurazione del job Jenkins, nella sezione Source Code Management (Gestione del codice sorgente), seleziona Git.

  8. Nella sezione Git, incolla l'URL SSH del repository Secure Source Manager come URL del repository, inserisci i rami di build (ad es. */main) e poi seleziona la credenziale della chiave SSH privata salvata che hai aggiunto in precedenza nella pagina Gestisci credenziali.

  9. Nella sezione Trigger di build, seleziona Trigger webhook generico.

    Se vuoi, puoi aggiungere un token in modo che il job venga attivato solo se questo token viene fornito durante la chiamata. Per aggiungere un token, nella sezione Attivatore webhook generico, puoi inserire un token nel campo Token.

  10. Nella sezione Build, fornisci uno script di build che vuoi utilizzare per questo job Jenkins. Ad esempio, puoi eseguire cat README.md per stampare i contenuti di README.md.

  11. Fai clic su Salva per creare il job Jenkins.

Configura un account di servizio e concedi le autorizzazioni richieste

  1. Se non hai ancora un account di servizio da utilizzare, creane uno.

    Assicurati di disporre dell'autorizzazione iam.serviceAccounts.actAs per il service account. Questa autorizzazione fa parte del ruolo Utente service account (roles/iam.serviceAccountUser).

  2. Nell'interfaccia web di Secure Source Manager, fai clic sul menu Altre opzioni.

  3. Fai clic su Chiavi SSH dell'account di servizio. Si apre la pagina Chiavi SSH del service account e viene visualizzato un elenco delle chiavi esistenti che hai aggiunto.

  4. Fai clic su Aggiungi chiave.

  5. Nella pagina Aggiungi chiave SSH, inserisci i seguenti valori per la chiave:

    1. Service account: l'email del account di servizio per il service account con cui vuoi utilizzare la chiave SSH nel formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com

      Dove

      • SA_NAME è il nome del account di servizio.
      • PROJECT_ID è l'ID progetto del progetto in cui è stato creato il service account.
    2. Chiave pubblica SSH: la chiave pubblica SSH di Jenkins.

Concedi le autorizzazioni all'agente di servizio Secure Source Manager

Se il account di servizio non si trova nello stesso progetto dell'istanza Secure Source Manager, devi concedere anche all'agente di servizio Secure Source Manager il ruolo Creatore token service account (roles/iam.serviceAccountTokenCreator) o l'autorizzazione iam.serviceAccounts.signJwt.

Se il account di servizio si trova nello stesso progetto dell'istanza Secure Source Manager, vai a Concedi al account di servizio un ruolo repository.

  1. Esegui questo comando per ottenere il criterio IAM esistente per il tuo account di servizio:

    gcloud iam service-accounts get-iam-policy SERVICE_ACCOUNT \
        --format json
    

    dove SERVICE_ACCOUNT è il account di servizio che vuoi utilizzare. L'account deve essere formattato come ID account di servizio numerico o come email, ad esempio: 123456789876543212345 o my-iam-account@somedomain.com.

    L'output include eventuali binding esistenti o, se non ne esistono, il valore etag simile al seguente:

    {
    "etag": "BwUjHYKJUiQ="
    }
    
  2. Copia l'output in un nuovo file denominato policy.json.

  3. Per concedere all'agente di servizio Secure Source Manager il ruolo Creatore token account di servizio (roles/iam.ServiceAccountTokenCreator), modifica policy.json per aggiungere quanto segue:

    {
        "role": "roles/iam.serviceAccountTokenCreator",
        "members": [
            "serviceAccount:service-INSTANCE_PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com"
        ]
    }
    

    Dove INSTANCE_PROJECT_NUMBER è il numero di progetto dell'istanza Secure Source Manager.

  4. Esegui questo comando per sostituire il criterio IAM esistente per ilaccount di serviziot:

    gcloud iam service-accounts set-iam-policy SERVICE_ACCOUNT POLICY_FILE
    

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT con l'ID o l'email del account di servizio.
    • POLICY_FILE con la posizione e il nome del file formattato in JSON, inclusa la nuova policy.

Concedi all'account di servizio un ruolo del repository

  1. Nell'interfaccia web di Secure Source Manager, vai al repository in cui vuoi concedere le autorizzazioni al account di servizio.
  2. Fai clic sulla scheda Autorizzazioni.
  3. Fai clic su Aggiungi utenti.
  4. Nel campo Aggiungi entità, inserisci l'indirizzo email del account di servizio.
  5. Nel menu a discesa Ruolo, seleziona Lettore repository Secure Source Manager.
  6. Assegna all'account di servizio il ruolo securesourcemanager.instanceAccessor eseguendo il seguente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SA_EMAIL \
        --role=roles/securesourcemanager.instanceAccessor
    

    Sostituisci quanto segue:

    • PROJECT_ID con l'ID progetto dell'istanza Secure Source Manager.
    • SA_EMAIL con l'email del account di servizio.

Configurare un webhook

  1. Nell'interfaccia web di Secure Source Manager, vai al repository per cui vuoi creare un webhook.
  2. Fai clic su Impostazioni.
  3. Fai clic su Webhook e poi su Aggiungi webhook.
  4. Nel campo ID hook, inserisci un ID per il webhook.

  5. Nel campo URL di destinazione, inserisci l'URL del trigger Jenkins.

  6. Se hai utilizzato il token facoltativo durante la configurazione del trigger Jenkins, l'URL del trigger Jenkins conterrà questo token alla fine. Per evitare la divulgazione del token, rimuovilo dalla fine dell'URL di destinazione e copialo nel campo Stringa di query sensibile.

    Per trovare il token nell'URL del trigger, cerca il testo che inizia con token=

    Ad esempio, se il tuo URL è simile al seguente: https://jenkins-server.com/generic-webhook-trigger/invoke?token=jenkins-job1

    Copia e rimuovi la parte che inizia con il punto interrogativo ?token=jenkins-job1 dal campo URL di destinazione. Poi rimuovi il punto interrogativo iniziale, sposta la parte rimanente token=jenkins-job1 nel campo Stringa di query sensibile.

  7. Nella sezione Attiva su, seleziona una delle seguenti opzioni:

    • Push: per attivare un push al repository.
    • Stato richiesta pull modificato: per attivare un evento in caso di modifica dello stato della richiesta pull.
  8. Se hai selezionato Push, puoi inserire un elenco consentito per gli eventi push nel campo Filtro ramo.

    Il campo Filtro ramificazioni utilizza il pattern glob e solo le operazioni sulle ramificazioni corrispondenti attiveranno una build. Se il campo è vuoto o *, vengono segnalati gli eventi push per tutti i rami.

  9. Fai clic su Aggiungi webhook.

  10. Il webhook viene visualizzato nella pagina Webhook.

Testare il webhook

  1. Nella pagina Webhook di Secure Source Manager, fai clic sul webhook che vuoi testare.
  2. Vai in fondo alla pagina e fai clic su Test di pubblicazione.

    Un evento falso viene aggiunto alla coda di pubblicazione. Potrebbero essere necessari alcuni secondi prima che venga visualizzato nella cronologia delle consegne.

  3. Puoi anche utilizzare un comando git per eseguire il push o unire una richiesta pull per testare il webhook.

  4. Nel progetto Jenkins, visualizza la build attivata dall'evento di test in Cronologia build.

  5. Puoi anche visualizzare la richiesta e la risposta al test di consegna nella sezione Consegne recenti della pagina del webhook di Secure Source Manager dopo aver inviato il primo test di consegna.

Passaggi successivi