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.
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)
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".
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! ** ** **
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.
Als ich GitHub in der Entwicklung überprüft habe, war der Standardzweig ** "main" ** anstelle von "master"! !! !!
Ä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! !! !!
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