GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Richten Sie den CI/CD-Workflow mit GitHub-Aktionen ein

Richten Sie den CI/CD-Workflow mit GitHub-Aktionen ein und konfigurieren Sie ihn, um den Quellcode auf dem Remote-Server bereitzustellen.

In diesem Handbuch erfahren Sie, wie Sie GitHub-Aktionen konfigurieren, um automatisierte Bereitstellungen auf dem Server vorzunehmen, sobald ein Push erfolgt ist. Wir richten SSH-Schlüssel ein, um uns beim Server zu authentifizieren.

Voraussetzungen

Befolgen Sie diese Anleitung, um neue Benutzer zu erstellen und SSH-Schlüssel zu konfigurieren, die für GitHub erforderlich sind, um sichere Verbindungen mit Ihrem Server herzustellen.

Sobald Sie den obigen Schritt abgeschlossen haben, können Sie mit GitHub fortfahren, um Aktionen zu konfigurieren.

Beachten Sie die folgenden Details aus dem obigen Setup.

  1. Benutzername :Der neue Benutzer, den Sie mit adduser erstellt haben Befehl.
  2. Hostname :Dies ist die IP-Adresse Ihres Servers.
  3. Privater Schlüssel :Dieser Schlüssel wird automatisch mit dem ssh-keygen erstellt Befehl. Stellen Sie sicher, dass der Schlüssel im RSA-Format vorliegt, das mit -----BEGIN RSA PRIVATE KEY----- beginnt .

Diese 3 Details sind notwendig, um von GitHub aus eine Verbindung zum Server herzustellen.

Einrichtungsgeheimnisse

Melden Sie sich bei Ihrem GitHub-Konto an und gehen Sie zu Ihrem Repository.

Navigieren Sie zu Einstellungen>> Geheimnisse .

Klicken Sie auf Neues Repository-Secret .

Fügen Sie im Namen SSH_HOST hinzu und geben Sie als Wert die IP-Adresse ein Ihres Servers.

Klicken Sie auf Secret hinzufügen .

Klicken Sie erneut auf Neues Repository-Secret .

Fügen Sie im Namen SSH_USERNAME hinzu und geben Sie als Wert den Benutzernamen ein Sie haben oben bemerkt, was in dem Beitrag erstellt wurde, der im Abschnitt "Voraussetzungen" erwähnt wird.

Klicken Sie auf Secret hinzufügen .

Klicken Sie erneut auf Neues Repository-Secret .

Fügen Sie im Namen SSH_KEY hinzu und geben Sie als Wert den privaten Schlüssel ein Sie haben oben bemerkt, was in dem Beitrag erstellt wurde, der im Abschnitt "Voraussetzungen" erwähnt wird.

Klicken Sie auf Secret hinzufügen .

Jetzt sollten Sie Ihre Geheimnisse wie unten gezeigt haben.

Sobald die Geheimnisse vorhanden sind, können Sie Aktionen einrichten.

Initiieren Sie den Aktionsworkflow

Klicken Sie nun auf die Aktionen Registerkarte.

Sie sehen eine Liste von Workflows, die standardmäßig konfiguriert werden können.

Sie können selbst auf Workflow einrichten klicken.

Hier sehen Sie einige Standardkonfigurationen.

Aktionsworkflow konfigurieren

Sie können die Workflow-Datei nach Ihren Wünschen benennen. Ich nenne es deploy.yml .

Sie können alle standardmäßig enthaltenen Workflows entfernen.

Kopieren Sie den folgenden Workflow und fügen Sie ihn hinzu.

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"

Der obige Code führt eine Bereitstellung auf Ihrem Server durch, wenn ein Push an einen Speck-Zweig erfolgt.

Es stellt den gesamten Quellcode bereit, der sich im Stammverzeichnis Ihres Repositorys befindet. Wenn Sie nur einen bestimmten Ordner bereitstellen müssen, können Sie ihn in der Quelldirektive konfigurieren.

Stellen Sie sicher, dass der Benutzer auf dem Server über Berechtigungen zum Deployment verfügt.

Wenn Sie beispielsweise einen Nginx- oder Apache-Webserver verwenden, der mit dem Benutzer www-data ausgeführt wird, benötigen Sie Setup-Berechtigungen und setzen die Berechtigungen wie unten gezeigt zurück.

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

Die obige Bereitstellungskonfiguration konfiguriert den Benutzer so, dass er vollen Zugriff auf den Ordner für die Bereitstellung und den Konfigurationszugriff für den Benutzer www-data hat die von Apache und Nignx verwendet wird.

Wenn Sie fertig sind, klicken Sie auf Commit starten und klicken Sie auf Neue Datei übertragen, um die Einrichtung abzuschließen.

Jetzt haben Sie eine Bereitstellung konfiguriert, die ausgeführt wird, wenn ein Push an den bestimmten Zweig erfolgt.

Schlussfolgerung

Jetzt haben Sie gelernt, wie Sie den GitHub-Aktionsworkflow für CI/CD einrichten und konfigurieren.

Vielen Dank für Ihre Zeit. Wenn Sie auf ein Problem oder Feedback stoßen, hinterlassen Sie bitte unten einen Kommentar.


Linux
  1. So richten Sie LogAnalyzer mit Rsyslog und MySQL ein

  2. Kubernetes-Cluster mit Rancher einrichten

  3. So entfernen Sie Ordner mit einem bestimmten Namen

  4. Wie lösche ich eine Datei mit einem seltsamen Namen?

  5. ZFS-Einsteiger-Setup mit Laufwerken unterschiedlicher Größe

CI/CD-Sicherheit – So sichern Sie Ihre CI/CD-Pipeline

Erste Schritte mit GitHub

Erste Schritte mit Ansible Playbooks

So richten Sie eine Firewall mit UFW unter Linux ein

Ersteinrichtung des Servers mit Ubuntu 18.04

So richten Sie einen FTP-Server mit VSFTPD ein