インフラ・DevOps
あなたには既にGitサーバーがある
You already have a Git server (gopeek-lovat.vercel.app)
要約
この記事は、SSHアクセス可能なサーバーがあれば、既存のGitリポジトリをGitサーバーとして利用できることを説明しています。DockerやCI/CDパイプラインのような複雑なツールなしに、SSHとGitだけでサーバー上のファイルを効率的に管理し、変更をプッシュして同期する方法を紹介しています。さらに、Gitフックを使ってプッシュ時にシェルスクリプトを自動実行し、デプロイや静的サイト生成を行うシンプルな自動デプロイワークフローも提案しています。
全文翻訳
SSHアクセス可能なサーバー上にGitリポジトリがある場合、それをクローンするだけで済みます: git clone ssh://username@hostname/path/to/repo それで終わりです。Dockerも不要。CIパイプラインも不要。サーバーレス関数も不要。47のインデントがあるYAMLファイルも不要です。SSHとGit、つまりあなたが既に持っている2つのツールだけで済みます。
作業を終えたら、変更をオリジンサーバーにプッシュできます。デフォルトでは、Gitは現在チェックアウトされているブランチへのプッシュを許可しませんが、これは簡単に変更できます。リモートサーバーで以下を実行してください。git config receive.denyCurrentBranch updateInstead これは、SSHの遅延やエラーを起こしやすいコピー作業なしに、サーバーサイドのファイルで作業するための良い方法です。ローカルで編集し、通常通りコミットし、git pushするだけでうまくいきます。ファイルはリポジトリにあるものと全く同じ状態でサーバーに配置されます。scpは不要。忘れてしまったrsyncフラグも不要。「間違ったファイルを上書きしてしまった」ということもありません。
フックを使った自動デプロイ ファイルサーバー以上のものが必要な場合、Gitは新しいプッシュを受け取ったときにシェルスクリプトを実行できます: cat > .git/hooks/post-update <#!/bin/sh set -euo pipefail cd /path/to/site /path/to/generator EOF chmod a+x .git/hooks/post-update スクリプトの出力はあなたのコンピューターのターミナルに返されます。そのため、静的サイトジェネレーターがエラーをスローした場合、すぐにそれを確認できます。ダッシュボードにタブを切り替えたり、ビルドログページを更新したりする必要はありません。私はこのブログのサイトジェネレーターのためにGitを設定しています。ローカルで記事をタイプアップし、サーバーにプッシュできるのは本当に素晴らしいことです。書く。コミットする。プッシュする。公開する。それが全体のワークフローです。