[RUBY] [Circle CI] Verfahren für die automatische Bereitstellung beim Push auf GitHub

Bisher wurde bei der automatischen Bereitstellung "capistrano" verwendet, aber jedes Mal, wenn ich den Code änderte, beherrschte ich die Zusammenführung und Ausführung von "Bundle Exec Cap Production Deployment" lokal.

Dieses Mal habe ich circleCI verwendet und es implementiert, um automatisch SSH auf dem Server zu erstellen und den Code beim Zusammenführen des Masters bereitzustellen. Im Folgenden fasse ich den Ablauf der Implementierung und die Erklärung des verstopften Teils zusammen!

.circleci / config.yml Konfiguration

(1) Stellen Sie zunächst die in circleCI verwendete config.yml lokal ein. Erstellen Sie zum Festlegen von circleCI einen Ordner mit dem Namen .circleci direkt unter dem Stammverzeichnis des entsprechenden Repositorys und verwenden Sie darin config.yml.

config.yml


version: 2.1
orbs:
  ruby: circleci/[email protected] 

jobs:
  deploy:
    machine:
      enabled: true
    steps:
      - add_ssh_keys:
          fingerprints:
            - "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #Kopieren Sie nach der Registrierung des privaten Schlüssels des Servers bei SSH die gehashten Fingerabdrücke.
      - run: ssh -p $SSH_PORT $SSH_USER@$SSH_HOST "/var/www/Repository-Name/deploy.sh"

workflows:
  version: 2.1
  deploy:
    jobs:
      - deploy:
          filters:
            branches:
              only: master

deploy.sh


#!/bin/bash

cd /var/www/Repository-Name/ && git pull

Ich werde unten erklären. (1) Die automatische Bereitstellung wird hier festgelegt und nach dem Zusammenführen des Masters automatisch bereitgestellt. (2) Wenn Sie unter "-add_ssh_keys:" den HOST (IP-Adresse) und den privaten Schlüssel registrieren, kopieren Sie die in Hashes konvertierten Fingerabdrücke und fügen Sie sie ein. Auf diese Weise können Sie den privaten Schlüssel des SSH-Servers registrieren. ③ Mit "-run: ssh -p ~" ssh mit dem Set-Schlüssel + Set-Umgebungsvariable und melde dich beim Server an. Danach wird bei Pull-Anforderung von "/var/www/rails/soup/deploy.sh" git pull gesetzt. (4) Workflows Mit den folgenden Einstellungen wird die Bereitstellung nur für den Hauptzweig ausgeführt.

Installieren Sie das cirecleCI / Add-Repository, das Sie automatisch bereitstellen möchten

① Gehen Sie zunächst zur circleCI-Website (https://circleci.com) und registrieren Sie ein neues Konto (Anmeldung). Wenn Sie ein GitHub-Konto haben, können Sie sofort einen Link erstellen und sich für ein Konto registrieren.

(2) Wählen Sie nach dem Anmelden "Projekte hinzufügen" und fügen Sie das Repository der Anwendung oder Site hinzu, die Sie dieses Mal automatisch bereitstellen möchten. Klicken Sie zum Hinzufügen im entsprechenden Repository auf "Projekt einrichten".

③ Kopieren Sie die oben festgelegte Datei config.yml, fügen Sie sie ein und registrieren Sie sie bei "Manuell hinzufügen". Zu diesem Zeitpunkt wurde der private Schlüssel noch nicht registriert. Ich werde mich später registrieren. image.png

④ Wählen Sie "Build starten". Dieses Mal werden wir das Ziel-Repository hinzufügen. Nach dem Hinzufügen ist meines Erachtens ein Fehler aufgetreten, da der private Schlüssel und die Umgebungsvariablen nicht festgelegt wurden. Ich werde diese Informationen hinzufügen.

Registrierung des privaten Schlüssels

① Klicken Sie oben rechts im Dashboard "Pipelines" auf "Projekteinstellungen".

② Wählen Sie "SSH Keys". Da sich unten "Zusätzliche SSH-Schlüssel" befindet, registrieren wir hier die lokalen Informationen zum privaten Schlüssel.

③ Klicken Sie auf "SSH-Schlüssel HINZUFÜGEN". Geben Sie unter "Hostname" die IP-Adresse des Bereitstellungsziels ein.

④ Um den privaten Schlüssel in "Privater Schlüssel *" einzugeben, geben Sie das Verzeichnis ".ssh" lokal ein und bestätigen Sie mit dem Schlüssel ls, dass der private Schlüssel vorhanden ist (id_rsa usw.). Ich werde das mit Katze anschauen. Kopieren Sie alle angezeigten Informationen und fügen Sie sie in "Privater Schlüssel *" ein. Fügen Sie zu diesem Zeitpunkt alle "----- BEGIN RSA PRIVATE KEY -----" usw. hinzu.

⑤ Drücken Sie "Add SSH Key" und wenn es erfolgreich bestanden wurde, ist die Einstellung abgeschlossen. Wenn ein Fehler auftritt, ist es möglich, dass der private Schlüssel nicht im PEM-Format registriert wurde oder dass die Informationen zum privaten Schlüssel in einem neuen Format vorliegen und kein Zielfehler sind. In meinem Fall habe ich den letzteren Fehler bekommen.

https://blog.adachin.me/archives/11554 Hier ist eine Zusammenfassung dessen, was ich getan habe, nachdem ich meinen privaten Schlüssel auf veraltet aktualisiert habe. https://qiita.com/akk_ayy/items/61215e89cfcf680d1c94

⑥ Kopieren Sie abschließend die Hash-Fingerabdrücke und fügen Sie sie in den entsprechenden Teil von config.yml ein.

Umgebungsvariablen einstellen

① Wählen Sie unter "Projekteinstellungen" die Option "Umgebungsvariablen".

② Wählen Sie "Variable hinzufügen". Registrieren Sie die Portinformationen, den Benutzernamen und den Hostnamen des Bereitstellungsziels.

③ Stellen Sie sicher, dass Sie sich mit dem lokal festgelegten Inhalt SSH-anmelden können.

ssh -p port Benutzername@Hostname-i ~/.ssh/Name des privaten Schlüssels

Sie können sich jetzt anmelden

/var/www/Repository-Name/deploy.sh

Wenn Sie dies drücken und Git Pull ausführen, sind Sie bereit für die automatische Bereitstellung!

Mastar führt die Testdaten zusammen und prüft, ob sie automatisch bereitgestellt werden können. Wenn zu diesem Zeitpunkt circleCI ERFOLGREICH ist, ist es ein Erfolg! Danke für deine harte Arbeit!

Referenzseite https://blog.adachin.me/archives/10997 https://qiita.com/tatane616/items/8624e61473a9957d9a81 https://www.tweeeety.blog/entry/2018/02/09/195345

Recommended Posts

[Circle CI] Verfahren für die automatische Bereitstellung beim Push auf GitHub
Verfahren zum Veröffentlichen einer Anwendung mit AWS (7) Automatische Bereitstellung durch Capistrano
[EC2 / Vue / Rails] EC2-Bereitstellungsverfahren für Vue + Rails
CI für Maven-Projekt bei Github Actions