GNU/Linux >> Linux Esercitazione >  >> Linux

Imposta il flusso di lavoro CI/CD con le azioni GitHub

Imposta e configura il flusso di lavoro CI/CD con le azioni GitHub per distribuire il codice sorgente su un server remoto.

In questa guida imparerai come configurare le azioni GitHub per effettuare distribuzioni automatizzate sul server una volta eseguito un push. Imposteremo le chiavi SSH per l'autenticazione con il server.

Prerequisiti

Segui questa guida per creare un nuovo utente e configurare le chiavi SSH necessarie a GitHub per stabilire connessioni sicure con il tuo server.

Una volta completato il passaggio precedente, puoi procedere su GitHub per configurare le azioni.

Prendi nota dei seguenti dettagli dalla configurazione di cui sopra.

  1. Nome utente :il nuovo utente che hai creato usando adduser comando.
  2. Nome host :Questo è l'indirizzo IP del tuo server.
  3. Chiave privata :Questa chiave viene creata automaticamente utilizzando il ssh-keygen comando. Assicurati che la chiave sia nel formato RSA che inizia con -----BEGIN RSA PRIVATE KEY----- .

Questi 3 dettagli sono necessari per effettuare la connessione al server da GitHub.

Segreti di configurazione

Accedi al tuo account GitHub e vai al tuo repository.

Vai a Impostazioni>> Segreti .

Fai clic su Nuovo segreto del repository .

Nel Nome aggiungi SSH_HOST e in value inserisci l'indirizzo IP del tuo server.

Fai clic su Aggiungi segreto .

Fai nuovamente clic su Nuovo segreto del repository .

Nel Nome aggiungi SSH_USERNAME e in value inserisci il nome utente hai notato sopra che è stato creato nel post menzionato nella sezione dei prerequisiti.

Fai clic su Aggiungi segreto .

Fai nuovamente clic su Nuovo segreto del repository .

Nel Nome aggiungi SSH_KEY e in valore inserisci la chiave privata hai notato sopra che è stato creato nel post menzionato nella sezione dei prerequisiti.

Fai clic su Aggiungi segreto .

Ora dovresti avere i tuoi segreti come mostrato di seguito.

Una volta che i segreti sono a posto, puoi impostare le azioni.

Avvia flusso di lavoro azioni

Ora fai clic su Azioni scheda.

Verrà visualizzato un elenco di flussi di lavoro che possono essere configurati per impostazione predefinita.

Puoi fare clic su Imposta un flusso di lavoro tu stesso.

Qui vedrai alcune configurazioni predefinite.

Configura il flusso di lavoro delle azioni

Puoi nominare il file del flusso di lavoro secondo i tuoi desideri. Lo chiamerò deploy.yml .

Puoi rimuovere tutti i flussi di lavoro inclusi per impostazione predefinita.

Copia il flusso di lavoro seguente e aggiungilo.

name: Identifier Name
on:
  push:
    branches: [ branch-name ]

jobs:
  deploy:    
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
      - name: Deploy source-code
        uses: appleboy/[email protected]
        env:
          HOST: ${{ secrets.SSH_HOST }}
          USERNAME: ${{ secrets.SSH_USERNAME }}
          PORT: 22
          KEY: ${{ secrets.SSH_KEY }}
        with:
          source: "*"
          target: "/path/in/your/server"

Il codice sopra eseguirà una distribuzione sul tuo server quando viene effettuato un push a un ramo speck.

Distribuisce tutto il codice sorgente che si trova nella posizione principale del tuo repository. Se hai bisogno di distribuire una cartella specifica solo puoi configurarla nella direttiva di origine.

Assicurati che l'utente disponga delle autorizzazioni sul server per eseguire la distribuzione.

Ad esempio, se stai utilizzando il server Web Nginx o Apache che viene eseguito utilizzando l'utente www-data, hai bisogno delle autorizzazioni di configurazione e ripristina le autorizzazioni come mostrato di seguito.

name: Identifier Name
on:
  push:
    branches: [ branch-name ]

jobs:
  deploy:    
    runs-on: ubuntu-latest
    steps:
      - name: Reset Permissions before deployment
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_KEY }}
          port: 22
          script: |
            sudo chmod -R 755 /path/in/your/server
            sudo chown -R username:username /path/in/your/server
            sudo setfacl -R -m u:www-data:rwx /path/in/your/server 

      - uses: actions/[email protected]
      - name: Deploy source-code
        uses: appleboy/[email protected]
        env:
          HOST: ${{ secrets.SSH_HOST }}
          USERNAME: ${{ secrets.SSH_USERNAME }}
          PORT: 22
          KEY: ${{ secrets.SSH_KEY }}
        with:
          source: "*"
          target: "/path/in/your/server"

      - name: Reset Permissions after deployment
        uses: appleboy/[email protected]
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_KEY }}
          port: 22
          script: |
            sudo chmod -R 755 /path/in/your/server
            sudo chown -R www-data:www-data /path/in/your/server
            sudo setfacl -R -m u:username:rwx /path/in/your/server

La configurazione di distribuzione precedente configura l'utente in modo che abbia accesso completo alla cartella per la distribuzione e l'accesso di configurazione per l'utente www-data utilizzato da Apache e Nignx.

Al termine, fai clic su Avvia commit e fai clic su Conferma nuovo file per completare la configurazione.

Ora hai una distribuzione configurata per essere eseguita ogni volta che viene effettuato un push al ramo speicifc.

Conclusione

Ora hai imparato come impostare e configurare il flusso di lavoro delle azioni GitHub per CI/CD.

Grazie per il tuo tempo. In caso di problemi o feedback, si prega di lasciare un commento qui sotto.


Linux
  1. Sostituisci find con fd su Linux

  2. Proxy inverso con Nginx:una guida all'installazione passo passo

  3. Imposta il cluster Kubernetes con Rancher

  4. Unire 3 righe consecutive con lo scambio?

  5. File Linux mv con nome lungo

Sicurezza CI/CD - Come proteggere la pipeline CI/CD

Guida introduttiva a GitHub

Guida introduttiva ai Playbook Ansible

Come configurare il firewall con UFW su Linux

Configurazione iniziale del server con Ubuntu 18.04

Come configurare il server FTP con VSFTPD