[Rails] Fehler, der bei der automatischen Bereitstellung durch Capistrano aufgetreten ist (schwerwiegend: kein gültiger Objektname: master)

Einführung

Derzeit wird ein Portfolio nach Abschluss der Programmierschule erstellt Veröffentlichen Sie den Fehler, der bei der automatischen Bereitstellung aufgetreten ist, und verwenden Sie Capistrano als Memorandum.

■ Entwicklungsumgebung

Über die Einführung von Capistrano

Ich habe es unter Bezugnahme auf den folgenden Artikel eingeführt. Wenn Sie nicht wissen, wie Sie es installieren sollen, beziehen Sie sich bitte wie ich darauf. So installieren Sie das automatische Bereitstellungstool (Capistrano)

Über den aufgetretenen Fehler

Als ich Capistrano gemäß dem obigen Artikel installiert und die automatische Bereitstellung ausgeführt habe, ist unterwegs ein Fehler aufgetreten.

Terminal (lokale Umgebung)


#Führen Sie den folgenden automatischen Bereitstellungsbefehl im Anwendungsverzeichnis aus.
$ bundle exec cap production deploy

Klicken Sie hier, um Details zum Fehler nach Ausführung des Befehls für die automatische Bereitstellung anzuzeigen.

Terminal (lokale Umgebung)


$ bundle exec cap production deploy
[Deprecation Notice] Future versions of Capistrano will not load the Git SCM
plugin by default. To silence this deprecation warning, add the following to
your Capfile after `require "capistrano/deploy"`:

    require "capistrano/scm/git"
    install_plugin Capistrano::SCM::Git

00:00 git:wrapper
      01 mkdir -p /tmp
    ✔ 01 [email protected] 0.239s
      Uploading /tmp/git-ssh-smot-production-nakayakouyuu.sh 100.0%
      02 chmod 700 /tmp/git-ssh-smot-production-nakayakouyuu.sh
    ✔ 02 [email protected] 0.291s
00:00 git:check
      01 git ls-remote [email protected]:nakaya-kousuke/smot.git HEAD
      01 5e943870f1583d9775b045f3c40d418324d8ad8a       HEAD
    ✔ 01 [email protected] 2.098s
00:02 deploy:check:directories
      01 mkdir -p /var/www/smot/shared /var/www/smot/releases
    ✔ 01 [email protected] 0.132s
00:03 deploy:check:linked_dirs
      01 mkdir -p /var/www/smot/shared/log /var/www/smot/shared/tmp/pids /var/www/smot/shared/tmp/cache /var/www/smot/shared/tmp/sockets /var/www/smot/sha…
    ✔ 01 [email protected] 0.224s
00:03 git:clone
      The repository mirror is at /var/www/smot/repo
00:03 git:update
      01 git remote set-url origin [email protected]:nakaya-kousuke/smot.git
    ✔ 01 [email protected] 0.237s
      02 git remote update --prune
      02 Fetching origin
    ✔ 02 [email protected] 2.093s
00:06 git:create_release
      01 mkdir -p /var/www/smot/releases/20201103133334
    ✔ 01 [email protected] 0.226s
      02 git archive master | /usr/bin/env tar -x -f - -C /var/www/smot/releases/20201103133334
      02 fatal: not a valid object name: master
      02 tar:
02 Dies scheint kein Teerarchiv zu sein
      02
      02 tar:
02 Beenden mit Fehlerstatus aufgrund eines vorherigen Fehlers
      02
#<Thread:0x00007f9e5507c1f0@/Users/nakaya-kousuke/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
        1: from /Users/nakaya-kousuke/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
/Users/nakaya-kousuke/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sshkit-1.21.0/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as [email protected]: git exit status: 2 (SSHKit::Runner::ExecuteError)
git stdout: Nothing written
git stderr: fatal: not a valid object name: master
tar:Dies scheint kein Teerarchiv zu sein
tar:Beenden Sie mit dem Fehlerstatus aufgrund eines vorherigen Fehlers
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: git exit status: 2
git stdout: Nothing written
git stderr: fatal: not a valid object name: master
tar:Dies scheint kein Teerarchiv zu sein
tar:Beenden Sie mit dem Fehlerstatus aufgrund eines vorherigen Fehlers


Caused by:
SSHKit::Command::Failed: git exit status: 2
git stdout: Nothing written
git stderr: fatal: not a valid object name: master
tar:Dies scheint kein Teerarchiv zu sein
tar:Beenden Sie mit dem Fehlerstatus aufgrund eines vorherigen Fehlers

Tasks: TOP => git:create_release
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as [email protected]: git exit status: 2
git stdout: Nothing written
git stderr: fatal: not a valid object name: master
tar:Dies scheint kein Teerarchiv zu sein
tar:Beenden Sie mit dem Fehlerstatus aufgrund eines vorherigen Fehlers

Wenn Sie den obigen Fehlerinhalt überprüfen, können Sie feststellen, dass der Fehler im Teil ** git: create_release ** aufgetreten ist.

Terminal (lokale Umgebung) * Auszug aus dem Fehlertext


00:06 git:create_release
      01 mkdir -p /var/www/smot/releases/20201103133334
    ✔ 01 [email protected] 0.226s
      02 git archive master | /usr/bin/env tar -x -f - -C /var/www/smot/releases/20201103133334
      02 fatal: not a valid object name: master
      02 tar:
02 Dies scheint kein Teerarchiv zu sein
      02
      02 tar:
02 Beenden mit Fehlerstatus aufgrund eines vorherigen Fehlers
      02

fatal: not a valid object name: master Dieser Inhalt scheint die Ursache für diesen Fehler zu sein Es heißt "Master ist kein gültiger Objektname".

Finden Sie heraus, wie Sie fatale Probleme lösen können: kein gültiger Objektname: master!

Als ich nach ** fatal: kein gültiger Objektname: master ** gesucht habe, habe ich viele Artikel wie den folgenden gefunden.

Abhilfe für Git-Fehler "fatal: Kein gültiger Objektname: 'master'."

[Git] fatal: Kein gültiger Objektname: 'master'. Lösung

fatal: Kein gültiger Objektname: 'master'. Was ist passiert, als mir gesagt wurde?

[Git] fatal: Kein gültiger Objektname: 'master' war wütend [im Allgemeinen so etwas]

Wenn ich diesen Artikel lese, scheint ** fatal: kein gültiger Objektname: master ** ein Fehler zu sein, der in Git auftritt.

In den meisten Artikeln wird empfohlen, sich für den Hauptzweig zu engagieren. Gehen Sie daher wie folgt vor:

Terminal (lokale Umgebung)


#Wählen Sie alle Dateien aus, die Sie festschreiben möchten
$ git add . 

#Commit zum Master-Zweig
$ git commit -m "fatal: not a valid object name:Um Masterfehler zu beseitigen"

#Führen Sie den automatischen Bereitstellungsbefehl aus
$ bundle exec cap production deploy

** Das schwerwiegende Problem wurde jedoch immer noch nicht behoben: kein gültiger Objektname: Master-Fehler! ** ** **

Machen wir eine Hypothese darüber, was sonst noch die Ursache ist!

In Capistrano habe ich keine Artikel mit ** fatal: kein gültiger Objektname: master ** Fehler erhalten, also habe ich eine Hypothese aufgestellt.

Mir wurde gesagt, dass "master kein gültiger Objektname ist" und ich wusste, dass es ein Git-Fehler war. Ich verwende Git an erster Stelle und warum kann ich den Master-Zweig pushen, festschreiben und ziehen? ??

Als ich in der Fehleranweisung nach ** dies scheint kein Teerarchiv ** zu suchen, fand ich den folgenden Artikel:

capistrano error tar: Dies sieht nicht wie ein Teerarchiv aus

Die beste Antwort in diesem Artikel lautet ** "Ich ziehe einen Zweig, der nicht in git vorhanden ist" **. Vielleicht wird eine Fehlermeldung angezeigt, weil der Hauptzweig in git nicht vorhanden ist. Ich machte eine Hypothese und untersuchte sie.

Fehlerbehebung! !!

Als ich GitHub in der Entwicklung überprüft habe, war der Standardzweig ** "main" ** anstelle von "master"! !! !! git

Ändern Sie daher den Git-Zweig von Capistrano in "main".

config/deploy.rb


# config valid only for current version of Capistrano
#Beschrieb die Version von Capistrano. Verwenden Sie weiterhin die feste Version und vermeiden Sie Probleme aufgrund von Versionsänderungen
lock '3.14.1'

#Wird zum Anzeigen von Capistrano-Protokollen verwendet
set :application, 'smot'

#Geben Sie an, aus welchem Repository die App abgerufen werden soll
set :repo_url,  '[email protected]:nakaya-kousuke/smot.git'

----------Nachtrag----------
#Geben Sie einen Zweig an
set :branch, "main"
--------------------------

#Geben Sie ein Verzeichnis an, auf das häufig verwiesen wird, auch wenn sich die Version ändert
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads')

set :rbenv_type, :user
set :rbenv_ruby, '2.5.1' #Wenn Sie gemäß dem Lehrplan vorgehen, 2.5.1 oder 2.3.Ist 1

#Welcher öffentliche Schlüssel für die Bereitstellung verwendet werden soll
set :ssh_options, auth_methods: ['publickey'],
                  keys: ['~/.ssh/smot.pem'] 

#Speicherort der Datei mit der Prozessnummer
set :unicorn_pid, -> { "#{shared_path}/tmp/pids/unicorn.pid" }

#Speicherort der Unicorn-Konfigurationsdatei
set :unicorn_config_path, -> { "#{current_path}/config/unicorn.rb" }
set :keep_releases, 5

# secrets.Symbolischer Link für yml hinzugefügt
set :linked_files, %w{ config/secrets.yml }

#Ursprünglich beschrieben nach "'deploy:publishing', 'deploy:restart'Löschen Sie Folgendes und schreiben Sie es wie folgt neu
after 'deploy:publishing', 'deploy:restart'
namespace :deploy do
  task :restart do
    invoke 'unicorn:restart'
  end

  desc 'upload secrets.yml'
  task :upload do
    on roles(:app) do |host|
      if test "[ ! -d #{shared_path}/config ]"
        execute "mkdir -p #{shared_path}/config"
      end
      upload!('config/secrets.yml', "#{shared_path}/config/secrets.yml")
    end
  end
  before :starting, 'deploy:upload'
  after :finishing, 'deploy:cleanup'
end

Terminal (lokale Umgebung)


#Führen Sie den automatischen Bereitstellungsbefehl aus
$ bundle exec cap production deploy

Sie haben jetzt erfolgreich automatisch bereitgestellt! !! !!

Zusatzinformationen

Warum wurde der Standardzweig von GitHub auf "main" gesetzt? ?? ?? Ich überprüfte.

■ Referenzartikel GitHub, der Standardzweigname des zu erstellenden Repositorys ist "main". Wechsel von "master" zu "main"

** Der Standardzweig von GitHub wurde von "master" in "main" geändert! ** ** **

Diese Änderung basiert auf der Menschenrechtsbewegung, die durch den Vorfall in Minneapolis, Minnesota, USA, am 25. Mai 2020 ausgelöst wurde.

Ich habe gelernt, dass solche Vorfälle auch die IT-Branche betreffen können.

Übrigens scheint es, dass der Standardzweigname des neu erstellten Repositorys durch Festlegen von GitHub willkürlich geändert werden kann.

Recommended Posts

[Rails] Fehler, der bei der automatischen Bereitstellung durch Capistrano aufgetreten ist (schwerwiegend: kein gültiger Objektname: master)
[Git] fatal: Kein gültiger Objektname: 'master'.
Überprüfungswertfehler, der in der Clusterumgebung aufgetreten ist
Informationen zu dem Fehler, der beim Hinzufügen eines Spaltennamens in Rails aufgetreten ist (Rails DB: Migrieren, Rails DB: Rollback, Hinzufügen).
[Schienen] Über den Fehler, dass das Bild nicht in der Produktionsumgebung angezeigt wird